@atlas-viewer/atlas 2.2.2 → 2.2.3

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 CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var ln=Object.create;var Gt=Object.defineProperty;var dn=Object.getOwnPropertyDescriptor;var cn=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,mn=Object.prototype.hasOwnProperty;var fn=(r,e,t)=>e in r?Gt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var gn=(r,e)=>{for(var t in e)Gt(r,t,{get:e[t],enumerable:!0})},li=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of cn(e))!mn.call(r,n)&&n!==t&&Gt(r,n,{get:()=>e[n],enumerable:!(i=dn(e,n))||i.enumerable});return r};var q=(r,e,t)=>(t=r!=null?ln(un(r)):{},li(e||!r||!r.__esModule?Gt(t,"default",{value:r,enumerable:!0}):t,r)),pn=r=>li(Gt({},"__esModule",{value:!0}),r);var h=(r,e,t)=>(fn(r,typeof e!="symbol"?e+"":e,t),t);var Un={};gn(Un,{Atlas:()=>Ze,AtlasAuto:()=>An,AtlasContext:()=>ct,BoundsContext:()=>Pt,Box:()=>rt,BrowserEventManager:()=>Ot,CanvasRenderer:()=>Jt,CompositeRenderer:()=>Tt,CompositeResource:()=>Zt,DebugRenderer:()=>te,DrawBox:()=>Mn,GridBuilder:()=>je,HTMLPortal:()=>Ie,ImageService:()=>Fn,ImageTexture:()=>xt,ModeContext:()=>dt,ModeProvider:()=>Sn,OverlayRenderer:()=>_t,ReactAtlas:()=>Ht,RegionHighlight:()=>In,ResizeWorldItem:()=>ti,Runtime:()=>lt,SingleImage:()=>H,StaticRenderer:()=>he,Text:()=>pt,TileSet:()=>ii,TiledImage:()=>tt,WebGLRenderer:()=>se,World:()=>et,WorldObject:()=>ht,Zone:()=>He,activateEvents:()=>Ve,applyProps:()=>$e,bounceOut:()=>Kt,canDrag:()=>Hn,createDefaultEventMap:()=>ze,defaultConfig:()=>Ei,defaultPreset:()=>ae,easingFunctions:()=>st,fromImage:()=>yn,getId:()=>ni,getTileFromCanvas:()=>Ji,getTileFromImageService:()=>De,getTiles:()=>Dn,getTilesFromManifest:()=>tn,mergeStyles:()=>jn,popmotionController:()=>ee,presets:()=>Ge,staticPreset:()=>Xe,supportedEventAttributes:()=>Ft,supportedEventMap:()=>nt,unmountComponentAtNode:()=>zt,useAfterFrame:()=>Ye,useAfterPaint:()=>Bn,useAtlas:()=>de,useAtlasImage:()=>Wn,useBeforeFrame:()=>Nn,useCanvas:()=>Qe,useControlledAnnotationList:()=>zn,useFrame:()=>Mt,useMode:()=>ie,useResizeWorldItem:()=>Je,useRuntime:()=>X,useWorldEvent:()=>Le});module.exports=pn(Un);var Ft=["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 ze(){return Ft.reduce((r,e)=>(r[e]=[],r),{})}var nt=Ft.reduce((r,e)=>(r[e.slice(2).toLowerCase()]=e,r[e]=e,r),{});var Z=require("@atlas-viewer/dna");var vt=require("@atlas-viewer/dna");var di="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var ot=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r));for(;r--;)e+=di[t[r]&63];return e};var W=class{constructor(){h(this,"__id");h(this,"__revision",0);h(this,"__host");h(this,"__onCreate");h(this,"__parent");h(this,"__owner",{value:void 0});h(this,"__state",{});h(this,"eventHandlers");h(this,"scale",1);h(this,"layers",[]);h(this,"time",[]);h(this,"_crop");h(this,"cropData");h(this,"id");h(this,"addEventListener",(e,t,i)=>{let n=nt[e];if(!this.eventHandlers[n])throw new Error(`Unknown event ${n}`);this.eventHandlers[n].indexOf(t)===-1&&this.eventHandlers[n].push(t)});h(this,"removeEventListener",(e,t)=>{let i=nt[e];if(!this.eventHandlers[i]){console.warn(`Unknown event ${i}`);return}this.eventHandlers[i].indexOf(t)!==-1&&(this.eventHandlers[i]=this.eventHandlers[i].filter(n=>n!==t))});this.id=this.__id=ot(),this.eventHandlers=ze()}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],n=i?i.length:0,s=!1;if(n)for(let o=0;o<n;o++)try{i[o](t),s=!0}catch(a){console.error(e,a)}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,vt.mutate)(this.points,(0,vt.translate)(e,t))}atScale(e){(0,vt.mutate)(this.points,(0,vt.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,vt.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};var H=class r extends W{constructor(t){super();h(this,"type","spacial-content");h(this,"id");h(this,"uri");h(this,"display");h(this,"points");h(this,"priority");h(this,"style",{opacity:1});if(!t)this.id="",this.uri="",this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,Z.dna)(5)},this.points=(0,Z.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=Z.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:Z.DnaFactory.singleBox(t.width/i,t.height/i),rotation:t?.rotation}}}applyProps(t){let i=t.display?t.display.width:t.target.width,n=t.target.width/i;if(this.id=t.id||t.uri,this.uri=t.uri,this.points.set(Z.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=Z.DnaFactory.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);(0,Z.mutate)(s,(0,Z.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(s):this.crop=(0,Z.dna)(s)}t.display?(this.display.scale=n,this.display.width=t.display.width,this.display.height=t.display.height,this.display.rotation=t.display.rotation,this.display.points=Z.DnaFactory.singleBox(t.display.width,t.display.height)):(this.display.scale=n,this.display.width=t.target.width/n,this.display.height=t.target.height/n,this.display.points=Z.DnaFactory.singleBox(t.target.width/n,t.target.height/n))}getAllPointsAt(t,i,n){return[[this,this.crop||this.points,i]]}static fromSvg(t,i,n,s){return r.fromImage("data:image/svg+xml;base64,"+btoa(t),i,n,s)}static fromImage(t,i,n,s){let o=new r;return o.applyProps({uri:t,id:s,display:n,target:i}),o}getImageUrl(){return this.uri}};var wt=require("@atlas-viewer/dna");var xt=class extends W{constructor(t){super();h(this,"type","spacial-content");h(this,"id");h(this,"uri");h(this,"display");h(this,"points");h(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,wt.dna)(5)},this.points=(0,wt.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=wt.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?wt.DnaFactory.singleBox(t.width/i,t.height/i):this.points}}}applyProps(t){let i=t.display?t.display.width:t.target.width,n=t.target.width/i;this.id=t.id,this.points.set(wt.DnaFactory.singleBox(t.target.width,t.target.height)),this.display.scale=n,this.display.width=t.target.width/n,this.display.height=t.target.height/n,this.getTexture=t.getTexture,this.display.points=n!==1?wt.DnaFactory.singleBox(t.target.width/n,t.target.height/n):this.points}getAllPointsAt(t,i,n){return[[this,this.points,i]]}};var G=require("@atlas-viewer/dna");function ui(r,e,t=1){let i=e.length;if(i===0)throw new Error("No resources passed in.");let n=0;for(let s=0;s<i&&!(!e[s]||!e[s].display);s++)n=Math.abs(e[s].display.scale-r)*t<Math.abs(e[n].display.scale-r)?s:n;return n}function ci(r,e){return Math.abs(r-e)}function Rt(r,e){let t=ci(r.x,e.x),i=ci(r.y,e.y);return Math.sqrt(Math.pow(t,2)+Math.pow(i,2))}function mi(r){let e=r.length;return r.indexOf("/info.json")===e-10?r.slice(0,-10):r}function me(r,e,t){return Math.min(Math.max(r,e),t)}var tt=class r extends W{constructor(t){super();h(this,"id");h(this,"type","spacial-content");h(this,"display");h(this,"tileWidth");h(this,"style",{opacity:1});h(this,"points");h(this,"service");h(this,"format","jpg");h(this,"crop2");h(this,"tileUrl");this.tileUrl=mi(t.url),this.id=t.id||`${this.tileUrl}--${t.scaleFactor}`,this.points=t.displayPoints?t.displayPoints:(0,G.transform)(t.points,(0,G.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,G.dna)([...this.points]),n=i.length/5,s=t.crop.x||0,o=t.crop.y||0,a=t.crop.x+t.crop.width,l=t.crop.y+t.crop.height;for(let u=0;u<n;u++){let d=u*5;i[d+1]<a&&i[d+3]>s&&i[d+2]<l&&i[d+4]>o?(i[d+1]=me(i[d+1],s,a),i[d+3]=me(i[d+3],s,a),i[d+2]=me(i[d+2],o,l),i[d+4]=me(i[d+4],o,l)):i[d]=0}(0,G.mutate)(i,(0,G.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(i):this.crop=i}}static fromTile(t,i,n,s,o,a){n.height=n.height?n.height:n.width;let l=Math.ceil(i.width/s),u=Math.ceil(i.height/s),d=Math.ceil(l/n.width),c=Math.ceil(u/n.height),m=G.DnaFactory.grid(d,c),b=G.DnaFactory.grid(d,c);for(let P=0;P<c;P++)for(let x=0;x<d;x++){let f=x*n.width,g=P*n.height;b.addPoints(f*s,g*s,x===d-1?i.width:(f+n.width)*s,P===c-1?i.height:(g+n.height)*s),m.addPoints(f,g,x===d-1?l:f+n.width,P===c-1?u:g+n.height)}let w=new r({url:t,scaleFactor:s,points:m.build(),displayPoints:b.build(),width:i.width,height:i.height,tileWidth:n.width,format:a});return w.applyProps({service:o}),w}getImageUrl(t){let i=this.points.slice(t*5,t*5+5),n=i[3]-i[1],s=i[4]-i[2],o=Math.ceil(n/this.display.scale);return`${this.tileUrl}/${i[1]},${i[2]},${n},${s}/${o>this.tileWidth?this.tileWidth:o},/0/default.${this.format||"jpg"}`}getAllPointsAt(t,i,n){let s=(0,G.hidePointsOutsideRegion)(this.crop||this.points,t);return[[this,s,i]]}transform(t){(0,G.mutate)(this.points,t)}getScheduledUpdates(t,i){return[]}};var at=require("@atlas-viewer/dna");var fe=class extends W{constructor(){super(...arguments);h(this,"type","spacial-content")}getAllPointsAt(t,i,n){return[[this,this.points,i]]}};var Zt=class extends fe{constructor(t){super();h(this,"id");h(this,"display");h(this,"points");h(this,"images",[]);h(this,"allImages",[]);h(this,"scaleFactors",[]);h(this,"aggregateBuffer",(0,at.dna)(9));h(this,"lazyLoader");h(this,"isFullyLoaded",!1);h(this,"maxScaleFactor",0);h(this,"renderOptions");h(this,"_scheduleSortByScales",!1);h(this,"_sortByScales",()=>{this._scheduleSortByScales=!1,this.allImages.sort((i,n)=>n.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)});h(this,"loadFullResource",async()=>{if(!this.isFullyLoaded&&this.lazyLoader){this.isFullyLoaded=!0;let t=await this.lazyLoader();this.addImages(t)}});h(this,"fallback",[this.loadFullResource]);this.id=t.id,this.points=at.DnaFactory.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:at.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,n){if(this.images.length===0)return[];let s=ui(1/(n||1)/(window.devicePixelRatio||1),this.images,this.renderOptions.quality),o=this.images.length,a=i?(0,at.compose)(i,(0,at.translate)(this.x,this.y)):(0,at.translate)(this.x,this.y);if(s!==this.images.length-1&&this.images[s+1]){let l=[];for(let c=o-1;c>=s;c--)l.push(c);let u=l[0];this.renderOptions.renderLayers&&(l=l.slice(-Math.min(l.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&l.indexOf(u)===-1&&l.unshift(u);let d=[];for(let c=0;c<l.length;c++)d.push(...this.images[l[c]].getAllPointsAt(t,a,n));return d}return this.images[s].getAllPointsAt(t,a,n)}};var A=require("@atlas-viewer/dna");var T=require("@atlas-viewer/dna");function ge(r,e,t,i,n){let s=Math.PI/180*n,o=Math.cos(s),a=Math.sin(s),l=o*(t-r)+a*(i-e)+r,u=o*(i-e)-a*(t-r)+e;return[l,u]}var ht=class r extends W{constructor(t,i){super();h(this,"id");h(this,"type","world-object");h(this,"scale");h(this,"layers");h(this,"points");h(this,"worldPoints");h(this,"intersectionBuffer",(0,T.dna)(5));h(this,"aggregateBuffer",(0,T.dna)(9));h(this,"invertedBuffer",(0,T.dna)(9));h(this,"rotation",0);h(this,"filteredPointsBuffer");h(this,"_updatedList",[]);h(this,"geometry");let{x:n=0,y:s=0}=i||{};t?(this.id=t.id||"",this.scale=1,this.layers=t.layers,this.points=(0,T.dna)([1,n,s,n+t.width,s+t.height]),this.worldPoints=(0,T.dna)([1,n,s,n+t.width,s+t.height]),this.filteredPointsBuffer=(0,T.dna)(t.layers.length*5)):(this.id="",this.scale=1,this.layers=[],this.points=(0,T.dna)(5),this.worldPoints=(0,T.dna)(5),this.filteredPointsBuffer=(0,T.dna)(5))}static createWithProps(t){let i=new r;return i.applyProps(t),i}applyProps(t){let i=t.x||0,n=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]=n,this.points[3]=i+t.width,this.points[4]=n+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,T.dna)(this.layers.length*5)}insertBefore(t,i){let n=this.layers.indexOf(i);if(n===-1||this.layers.indexOf(t)!==-1)return;let s=this.layers.slice(0,n),o=this.layers.slice(n);this.layers=[...s,t,...o]}hideInstance(){console.warn("hideInstance: not yet implemented")}getObjectsAt(t,i){if(this.rotation&&(t=this.applyRotation(t)),(0,T.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer)[0]===0)return[];let s=this.layers.length,o=[];for(let a=0;a<s;a++){let l=this.layers[a];if(i&&l.isShape){let d=(0,T.transform)(l.points,(0,T.translate)(this.x,this.y));if(!l.intersects([t[1]-d[1],t[2]-d[2]]))continue}if((0,T.hidePointsOutsideRegion)((0,T.transform)(l.points,(0,T.translate)(this.x,this.y)),t,this.filteredPointsBuffer)[0]!==0&&o.push(l),i){let d=l;o.push(...d.getObjectsAt(t,i))}}return o}applyRotation(t){if(this.rotation){let i={x:t[1],y:t[2]},n={x:t[1],y:t[4]},s={x:t[3],y:t[2]},o={x:t[3],y:t[4]},a=this.points[1]+(this.points[3]-this.points[1])/2,l=this.points[2]+(this.points[4]-this.points[2])/2,[u,d]=ge(a,l,i.x,i.y,this.rotation),[c,m]=ge(a,l,n.x,n.y,this.rotation),[b,w]=ge(a,l,s.x,s.y,this.rotation),[P,x]=ge(a,l,o.x,o.y,this.rotation),f=Math.min(u,c,b,P),g=Math.max(u,c,b,P),I=Math.min(d,m,w,x),_=Math.max(d,m,w,x);return(0,T.dna)([t[0],f,I,g,_])}return t}getAllPointsAt(t,i,n){let s=(0,T.compose)((0,T.translate)(this.x,this.y),(0,T.scale)(this.scale),this.aggregateBuffer);this.rotation&&(t=this.applyRotation(t));let o=(0,T.getIntersection)(t,this.points,this.intersectionBuffer),a=this.layers.length,l=[],u=(0,T.transform)(o,(0,T.compose)((0,T.scale)(1/this.scale),(0,T.translate)(-this.x,-this.y),this.invertedBuffer)),d=i?(0,T.compose)(i,s,this.aggregateBuffer):s,c=n*this.scale;for(let m=0;m<a;m++)l.push(...this.layers[m].getAllPointsAt(u,d,c));return l}addLayers(t){let i=[];for(let n of t)this.layers.indexOf(n)===-1&&(i.push(n),n.points.length===5&&(n.points[1]<this.worldPoints[1]/this.scale||n.points[2]<this.worldPoints[2]/this.scale||n.points[3]>this.worldPoints[3]/this.scale||n.points[4]>this.worldPoints[4]/this.scale)&&(n.crop=n.crop||(0,T.dna)([1,Math.max(this.worldPoints[1]/this.scale,n.points[1]),Math.max(this.worldPoints[2]/this.scale,n.points[2]),Math.min(this.worldPoints[3]/this.scale,n.points[3]),Math.min(this.worldPoints[4]/this.scale,n.points[4])])));this.layers=this.layers.concat(i),this.filteredPointsBuffer=(0,T.dna)(this.layers.length*5)}getScheduledUpdates(t,i){let n=this.layers.length;this._updatedList=[];let s=i*this.scale;for(let o=0;o<n;o++){let a=this.layers[o].getScheduledUpdates(t,s);a&&this._updatedList.push(...a)}return this._updatedList}};var et=class r extends W{constructor(t=0,i=0,n=100,s="left-to-right"){super();h(this,"id","world");h(this,"_width");h(this,"_height");h(this,"aspectRatio");h(this,"viewingDirection");h(this,"aggregateBuffer",(0,A.dna)(9));h(this,"isDirty",!1);h(this,"zones",[]);h(this,"filteredPointsBuffer");h(this,"selectedZone");h(this,"triggerQueue",[]);h(this,"activatedEvents",[]);h(this,"_updatedList",[]);h(this,"translationBuffer",(0,A.dna)(9));h(this,"needsRecalculate",!0);h(this,"emptyPaintables",[]);h(this,"renderOrder",[]);h(this,"points");h(this,"objects",[]);h(this,"subscriptions",[]);h(this,"_propagateEventTargets",[]);h(this,"_alreadyFlushed",[]);this._width=t,this._height=i,this.aspectRatio=Number.isNaN(t/i)?1:t/i,this.viewingDirection=s,this.points=(0,A.dna)(n*5),this.filteredPointsBuffer=(0,A.dna)(n*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 r;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,n){let s=[];for(let o of n)if(o.x&&o.y){let a=A.DnaFactory.singleBox(1,1,o.x,o.y);s.push(this.getObjectsAt(a,!0).reverse())}return s.map(o=>this.propagateEvent(t,i,o,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,i,n,s,o={}){let a=A.DnaFactory.singleBox(1,1,n,s),l=this.getObjectsAt(a,!0).reverse();return this.propagateEvent(t,i,l,o)}propagateEvent(t,i,n,{bubbles:s=!1,cancelable:o=!1}={}){i.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let a=!1;i.stopPropagation=()=>{a=!0};let l=n.length;for(let c=l-1;c>=0;c--){this._propagateEventTargets.unshift(n[c][0]);let m=n[c][1].length;if(m)for(let b=0;b<m;b++)this._propagateEventTargets.unshift(n[c][1][b])}let u=this._propagateEventTargets.length,d=!1;for(let c=0;c<u&&(i.atlasTarget=this._propagateEventTargets[c],i.atlasWorld=this,d=this._propagateEventTargets[c].dispatchEvent(t,i)||d,!a);c++);return d&&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 n of this.objects)if(n&&n.id===t.id){this.removeChild(n);return}return}this.objects[i]=null,this.renderOrder=this.renderOrder.filter(n=>n!==i),this.points[i*5]=0,this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(t,i){let n=this.objects.indexOf(i);if(n===-1)return;let s=this.appendWorldObject(t);this.renderOrder.splice(n-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 n=0;n<i;n++)if(this.zones[n].id===t){this.selectedZone=n,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,A.dnaLength)(this.points)===this.objects.length){let t=this.points,i=(0,A.dna)(this.points.length*2);i.set(t,0),this.points=i}}appendWorldObject(t){this.checkResizeInternalBuffer();let i=this.objects.length*5,n=t.points;return t.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),t.points[1]=n[1],t.points[2]=n[2],t.points[3]=n[3],t.points[4]=n[4],this.objects.push(t),this.filteredPointsBuffer=(0,A.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),n=new Int32Array(this.objects.length),s=this.renderOrder.length;for(let l=0;l<s;l++){let u=this.renderOrder[l];this.objects[u]&&(i[l]=this.points[u*5+3],n[l]=this.points[u*5+4])}let o=Math.max(...i);o!==this._width&&(this._width=o,t=!0);let a=Math.max(...n);a!==this._height&&(this._height=a,t=!0),t&&this.trigger("recalculate-world-size",{width:o,height:a}),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:n,x:s,y:o}=i,a=n/t.width;this.checkResizeInternalBuffer(),this.points.set(A.DnaFactory.singleBox(t.width,t.height,0,0),this.objects.length*5);let l=new ht(t);return l.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(l),this.scaleWorldObject(this.objects.length-1,a),this.translateWorldObject(this.objects.length-1,s,o),this.filteredPointsBuffer=(0,A.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,l}scaleWorldObject(t,i){(0,A.mutate)(this.points.subarray(t*5,t*5+5),(0,A.scaleAtOrigin)(i,this.points[t*5+1],this.points[t*5+2]));let n=this.objects[t];n&&(n.atScale(i),this.triggerRepaint())}translateWorldObject(t,i,n){(0,A.mutate)(this.points.subarray(t*5,t*5+5),(0,A.translate)(i,n));let s=this.objects[t];s&&(s.translate(i,n),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 n=A.DnaFactory.singleBox(t.width,t.height,t.x,t.y);return this.getPointsAt(n,i,t.scale)}addLayoutSubscriber(t){return this.subscriptions.push(t),()=>{this.subscriptions.splice(this.subscriptions.indexOf(t),1)}}getScheduledUpdates(t,i){let n=(0,A.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),s=this.objects.length;this._updatedList=[];for(let o=0;o<s;o++)if(n[o*5]!==0){if(!this.objects[o])continue;this._updatedList.push(...this.objects[o].getScheduledUpdates(t,i))}return this._updatedList}getObjectsAt(t,i=!1){let n=this.getActiveZone(),s=(0,A.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),o=this.renderOrder.length,a=[];for(let l=0;l<o;l++){let u=this.renderOrder[l];if(s[u*5]!==0){let d=this.objects[u];if(!d||n&&n.objects.indexOf(d)===-1)continue;if(d.type!=="world-object"){a.push([d,[d]]);continue}i?a.push([d,d.getObjectsAt(t,i)]):a.push([d,this.emptyPaintables])}}return a}getPointsAt(t,i,n=1){let s=this.getObjectsAt(t),o=(0,A.compose)((0,A.scale)(n),(0,A.translate)(-t[1],-t[2]),this.translationBuffer),a=i?(0,A.compose)(i,o,this.aggregateBuffer):o,l=s.length,u=[];for(let d=0;d<l;d++)s[d]&&u.push(...s[d][0].getAllPointsAt(t,a,n));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 n=this.subscriptions.length;for(let s=0;s<n;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,n){this.trigger("zoom-to",{point:i,factor:t,stream:n})}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 yn(r){let{src:e,target:t}=r,i=t?t.width:r.width,n=t?t.height:r.height;return new ht({id:e,height:n,width:i,layers:[H.fromImage(e,{height:n,width:i},{width:r.width,height:r.height})]})}var fi=require("@atlas-viewer/dna");var bn={margin:0},He=class{constructor(e,t={}){h(this,"id");h(this,"config");h(this,"points");h(this,"objects");this.id=e.map(i=>i.id).join("$$"),this.config={...bn,...t},this.points=(0,fi.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 Bt=require("@atlas-viewer/dna");var pe=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,ye={},vn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],rt=class extends W{constructor(){super();h(this,"id");h(this,"type","spacial-content");h(this,"points");h(this,"hoverEvents",!1);h(this,"activeEvents",!1);h(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,Bt.dna)(5)});h(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});h(this,"hovering");h(this,"pressing");h(this,"props",{});h(this,"addHover",()=>{this.hovering=!0,this.__revision++});h(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});h(this,"addPress",()=>{this.pressing=!0,this.__revision++});h(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ot(12),this.points=(0,Bt.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 n=t.border||t.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=ye[n]||pe.exec(n)||pe.exec(n);s&&(this._parsed.border.id=n,this._parsed.border.match=ye[n]=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=ye[t.style.outline]||pe.exec(t.style.outline)||pe.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=ye[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 vn)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=Bt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Bt.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 Yt=require("@atlas-viewer/dna");var pt=class extends W{constructor(){super();h(this,"type","spacial-content");h(this,"id");h(this,"points");h(this,"color","#000");h(this,"backgroundColor");h(this,"hovering");h(this,"pressing");h(this,"text","");h(this,"display",{x:0,y:0,scale:1,width:100,height:100,points:(0,Yt.dna)(5)});h(this,"className");h(this,"html");h(this,"interactive",!1);h(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,Yt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps({id:t,target:i,text:n,color:s,backgroundColor:o,fontSize:a=18,interactive:l,fontFamily:u="Arial, sans-serif",...d}){d.font=`${a}px ${u}`,this.interactive=l||!1,typeof n<"u"&&(this.text=n||""),s&&(this.color=s),o&&(this.backgroundColor=o),t&&(this.id=t),i&&(this.points=Yt.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,...d},this.__revision++}};var M=require("@atlas-viewer/dna");var St=require("@atlas-viewer/dna");var B=Math.pow,be=Math.sqrt,Qt=Math.sin,gi=Math.cos,qt=Math.PI,we=1.70158,ve=we*1.525,pi=we+1,yi=2*qt/3,bi=2*qt/4.5,Kt=function(r){return r<1/2.75?7.5625*r*r:r<2/2.75?7.5625*(r-=1.5/2.75)*r+.75:r<2.5/2.75?7.5625*(r-=2.25/2.75)*r+.9375:7.5625*(r-=2.625/2.75)*r+.984375},st={linear:r=>r,easeInQuad:function(r){return r*r},easeOutQuad:function(r){return 1-(1-r)*(1-r)},easeInOutQuad:function(r){return r<.5?2*r*r:1-B(-2*r+2,2)/2},easeInCubic:function(r){return r*r*r},easeOutCubic:function(r){return 1-B(1-r,3)},easeInOutCubic:function(r){return r<.5?4*r*r*r:1-B(-2*r+2,3)/2},easeInQuart:function(r){return r*r*r*r},easeOutQuart:function(r){return 1-B(1-r,4)},easeInOutQuart:function(r){return r<.5?8*r*r*r*r:1-B(-2*r+2,4)/2},easeInQuint:function(r){return r*r*r*r*r},easeOutQuint:function(r){return 1-B(1-r,5)},easeInOutQuint:function(r){return r<.5?16*r*r*r*r*r:1-B(-2*r+2,5)/2},easeInSine:function(r){return 1-gi(r*qt/2)},easeOutSine:function(r){return Qt(r*qt/2)},easeInOutSine:function(r){return-(gi(qt*r)-1)/2},easeInExpo:function(r){return r===0?0:B(2,10*r-10)},easeOutExpo:function(r){return r===1?1:1-B(2,-10*r)},easeInOutExpo:function(r){return r===0?0:r===1?1:r<.5?B(2,20*r-10)/2:(2-B(2,-20*r+10))/2},easeInCirc:function(r){return 1-be(1-B(r,2))},easeOutCirc:function(r){return be(1-B(r-1,2))},easeInOutCirc:function(r){return r<.5?(1-be(1-B(2*r,2)))/2:(be(1-B(-2*r+2,2))+1)/2},easeInBack:function(r){return pi*r*r*r-we*r*r},easeOutBack:function(r){return 1+pi*B(r-1,3)+we*B(r-1,2)},easeInOutBack:function(r){return r<.5?B(2*r,2)*((ve+1)*2*r-ve)/2:(B(2*r-2,2)*((ve+1)*(r*2-2)+ve)+2)/2},easeInElastic:function(r){return r===0?0:r===1?1:-B(2,10*r-10)*Qt((r*10-10.75)*yi)},easeOutElastic:function(r){return r===0?0:r===1?1:B(2,-10*r)*Qt((r*10-.75)*yi)+1},easeInOutElastic:function(r){return r===0?0:r===1?1:r<.5?-(B(2,20*r-10)*Qt((20*r-11.125)*bi))/2:B(2,-20*r+10)*Qt((20*r-11.125)*bi)/2+1},easeInBounce:function(r){return 1-Kt(1-r)},easeOutBounce:Kt,easeInOutBounce:function(r){return r<.5?(1-Kt(1-2*r))/2:(1+Kt(2*r-1))/2}};var xe=class{constructor(e){h(this,"runtime");h(this,"pendingTransition");this.runtime=e,this.pendingTransition={from:(0,St.dna)(5),to:(0,St.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:st.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,St.dna)(this.runtime.target),this.pendingTransition.to=(0,St.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,n=i.total_time===0?0:(i.elapsed_time+t)/i.total_time,s=i.total_time===0?1:n===0?0:i.timingFunction(n);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:st.easeOutExpo}}))}}zoomTo(e,{origin:t,stream:i=!1,transition:n}={}){let s=this.runtime.getZoomedPosition(e,{origin:t}),o=Math.abs(1-e);this.applyTransition(s,n,{duration:2e3*o,easing:st.easeOutExpo,constrain:!0},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){let[i,n]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});i&&(this.applyTransition(n,e,{duration:500,easing:st.easeOutQuart,constrain:!1}),this.runtime.updateNextFrame())}applyTransition(e,t,i,{stream:n}={}){this.pendingTransition.from=(0,St.dna)(this.runtime.target),this.pendingTransition.to=e,n||(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||st.easeInOutSine}goToRegion(e,{transition:t}={}){let i=this.runtime.clampRegion(e);this.applyTransition(St.DnaFactory.singleBox(i.width,i.height,i.x,i.y),t,{duration:1e3,easing:st.easeOutExpo,constrain:!0}),this.runtime.updateNextFrame()}};var cs=Number.MIN_VALUE+1,lt=class{constructor(e,t,i,n=[],s){h(this,"id",ot());h(this,"ready",!1);h(this,"renderer");h(this,"world");h(this,"target");h(this,"homePosition");h(this,"manualHomePosition");h(this,"manualFocalPosition");h(this,"focalPosition");h(this,"transitionManager");h(this,"aggregate");h(this,"transformBuffer",(0,M.dna)(500));h(this,"lastTarget",(0,M.dna)(5));h(this,"zoomBuffer",(0,M.dna)(5));h(this,"logNextRender",!1);h(this,"pendingUpdate",!0);h(this,"isCommitting",!1);h(this,"firstRender",!0);h(this,"lastTime");h(this,"stopId");h(this,"mode","explore");h(this,"controllers",[]);h(this,"controllersRunning",!1);h(this,"controllerStopFunctions",[]);h(this,"maxScaleFactor",1);h(this,"_viewerToWorld",{x:0,y:0});h(this,"_lastGoodScale",1);h(this,"hooks",{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]});h(this,"fpsLimit");h(this,"options");h(this,"hookOptions",{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}});h(this,"_viewport",{x:0,y:0,width:0,height:0});h(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});h(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,n=this.renderer.pendingUpdate();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,this.updateControllerPosition()),!this.firstRender&&!i&&!n&&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(),o=this.renderer.getPointsAt(this.world,this.target,this.aggregate,s),a=o.length;for(let d=0;d<a;d++){let c=o[d][0],m=o[d][1],b=o[d][2],w=b?(0,M.transform)(m,b,this.transformBuffer):m;this.renderer.prepareLayer(c,c.__parent&&b?(0,M.transform)(c.__parent.crop||c.__parent.points,b):w);let P=w.length/5;for(let x=0;x<P;x++){let f=x*5;w[f]!==0&&(this.renderer.paint(c,x,w[f+1],w[f+2],w[f+3]-w[f+1],w[f+4]-w[f+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 l=this.world.getScheduledUpdates(this.target,s),u=l.length;if(u>0)for(let d=0;d<u;d++){let c=l[u-d-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=M.DnaFactory.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=M.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new xe(this),this.aggregate=(0,M.scale)(1),this.world.addLayoutSubscriber(o=>{o==="repaint"&&(this.pendingUpdate=!0),o==="recalculate-world-size"&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=n,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(M.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]},n=this.width*t,s=this.height*t,o=i.width/n,a=i.height/s,l=n/s;if(e.cover?o>a:o<a){let u=l*i.height,d=(u-i.width)/2;this.target[1]=Math.round(-d+i.x),this.target[2]=Math.round(i.y),this.target[3]=Math.round(u-d+i.x),this.target[4]=Math.round(i.height+i.y)}else{let u=i.width/l,d=(u-i.height)/2;this.target[1]=Math.round(i.x),this.target[2]=Math.round(i.y-d),this.target[3]=Math.round(i.x+i.width),this.target[4]=Math.round(i.y+u-d)}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,i,n){this.updateFocalPosition(e-t,i-n);let s=t/e,o=n/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])*o,this.goHome({position:this.focalPosition}),this.renderer.resize(t,n),this.pendingUpdate=!0}updateFocalPosition(e,t){if(!this.manualFocalPosition){let i=this.width,n=this.height,s=Math.min(i,n),o=0,a=0,l=this.x+o,u=this.y+a;if(i<n){let d=this.height-this.width;this.focalPosition=M.DnaFactory.projection({x:l,y:u+d/2,width:s-o*2,height:s-a*2}),this.pendingUpdate=!0}else{let d=this.width-this.height;this.focalPosition=M.DnaFactory.projection({x:l+d/2,y:u,width:s-o*2,height:s-a*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:n,maxX:s,minY:o,maxY:a}=this.getBounds({target:e,padding:t}),l=!1,u=i?e:(0,M.dna)(e),d=Math.round(e[3]-e[1]),c=Math.round(e[4]-e[2]);return n>e[1]&&(l=!0,u[1]=n,u[3]=n+d),o>e[2]&&(l=!0,u[2]=o,u[4]=o+c),s<e[1]&&(l=!0,u[1]=s,u[3]=s+d),a<e[2]&&(l=!0,u[2]=a,u[4]=a+c),[l,u]}getBounds(e){let t=e.target||this.target,i=e.padding,n=this.options.visibilityRatio,s=Math.abs(1-n);if(this.world.hasActiveZone()){let g=this.world.getActiveZone();if(g){let I=t[3]-t[1]<g.points[3]-g.points[1],_=t[4]-t[2]<g.points[4]-g.points[2];return{minX:I?g.points[1]-i:g.points[1]+(g.points[3]-g.points[1])/2-(t[3]-t[1])/2,maxX:_?g.points[2]-i:g.points[2]+(g.points[4]-g.points[2])/2-(t[4]-t[2])/2,minY:I?g.points[3]+i:g.points[1]+(g.points[3]-g.points[1])/2-(t[3]-t[1])/2,maxY:_?g.points[4]+i:g.points[2]+(g.points[4]-g.points[2])/2-(t[4]-t[2])/2}}}let o=t[3]-t[1],a=this.world.width,l=-o*s,u=a-o-l,d=t[4]-t[2],c=this.world.height,m=-d*s,b=c-d-m,w=Math.round(Math.max(l,u)),P=Math.round(Math.min(l,u)),x=Math.round(Math.max(m,b)),f=Math.round(Math.min(m,b));return{minX:P,maxX:w,minY:f,maxY:x}}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 n=i?{width:i[3]-i[1],height:i[4]-i[2]}:void 0,s=n?this.renderer.getScale(n.width,n.height):this.getScaleFactor(),o=n?n.width:this.width,a=n?n.height:this.height,l=this.getRendererScreenPosition()?.width,u=this.world.width,d=l?l/u:1,c=this.options.maxUnderZoom,m=Math.max(d||1,this.options.maxOverZoom),b=1/e,w=s*b;if(b<1){let f=o*s,g=a*s,I=this.world.width/f,_=this.world.height/g;if(I>_){let S=this.world.width*w,p=~~(o*s)*c;S<p&&(e=this.world.width*s/(o*s*c))}else{let S=this.world.height*w,p=~~(a*s)*c;S<p&&(e=this.world.height*s/(a*s*c))}}else w>m&&(e=s/m);let x=(0,M.transform)(this.target,(0,M.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(x,{ref:!0,panPadding:100}),x}clampRegion({x:e,y:t,width:i,height:n,padding:s=0}){let o=this.width,a=this.height,l=i/o<n/a,u=e-s,d=t-s,c=i+s*2,m=n+s*2;if(l){let w=m/a*o;return{x:u-(w-c)/2,y:d,width:w,height:m}}let b=c/o*a;return{x:u,y:d-(b-m)/2,width:c,height:b}}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,n){let s=M.DnaFactory.singleBox(i,n,e,t);return(0,M.mutate)(s,(0,M.compose)((0,M.scale)(this.getScaleFactor()),(0,M.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,M.mutate)(this.target,(0,M.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 n=0;n<i;n++)this.hooks[e][n](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 xi=q(require("lru-cache"),1);var Wt=require("@atlas-viewer/dna");var Se=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Pe={},wn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],Nt=class extends W{constructor(){super();h(this,"id");h(this,"type","spacial-content");h(this,"isShape",!0);h(this,"points");h(this,"hoverEvents",!1);h(this,"activeEvents",!1);h(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,Wt.dna)(5)});h(this,"boundingBox",null);h(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});h(this,"hovering");h(this,"pressing");h(this,"props",{});h(this,"shape",{type:"none"});h(this,"addHover",()=>{this.hovering=!0,this.__revision++});h(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});h(this,"addPress",()=>{this.pressing=!0,this.__revision++});h(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ot(12),this.points=(0,Wt.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(a=>a[0])),n=Math.min(...t.map(a=>a[1])),s=Math.max(0,...t.map(a=>a[0])),o=Math.max(0,...t.map(a=>a[1]));this.boundingBox={x:i,y:n,width:s-i,height:o-n};return}this.boundingBox=null}intersects(t){if(!t||this.shape.type==="none")return!1;let[i,n]=t,s=this.shape.points,o=this.boundingBox;if(o||(this.updateBoundingBox(),o=this.boundingBox),!o||i<o.x||i>o.x+o.width||n<o.y||n>o.height+o.y)return!1;let a=!1;for(let l=0,u=s.length-1;l<s.length;u=l++)s[l][1]>n!=s[u][1]>n&&i<(s[u][0]-s[l][0])*(n-s[l][1])/(s[u][1]-s[l][1])+s[l][0]&&(a=!a);return a}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 n=!1,s=t.points.length;for(let o=0;o<s;o++)if(t.points[o][0]!==this.shape.points[o][0]||t.points[o][1]!==this.shape.points[o][1]){n=!0;break}n&&(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 n=t.border||t.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=Pe[n]||Se.exec(n)||Se.exec(n);s&&(this._parsed.border.id=n,this._parsed.border.match=Pe[n]=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=Pe[t.style.outline]||Se.exec(t.style.outline)||Se.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Pe[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 wn)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=Wt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Wt.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 vi=/(-?[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,wi={},xn=typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes("firefox"),Ee={};var Jt=class{constructor(e,t){h(this,"canvas");h(this,"ctx");h(this,"options");h(this,"imagesPending",0);h(this,"imagesLoaded",0);h(this,"frameIsRendering",!1);h(this,"pendingDrawCall",!1);h(this,"firstMeaningfulPaint",!1);h(this,"parallelTasks",8);h(this,"frameTasks",0);h(this,"loadingQueueOrdered",!0);h(this,"loadingQueue",[]);h(this,"currentTask",Promise.resolve());h(this,"tasksRunning",0);h(this,"stats");h(this,"averageJobTime",64);h(this,"lastKnownScale",1);h(this,"visible",[]);h(this,"previousVisible",[]);h(this,"rendererPosition");h(this,"dpi");h(this,"drawCalls",[]);h(this,"lastPaintedObject");h(this,"hostCache");h(this,"invalidated",[]);h(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--}))}});h(this,"_scheduled",0);h(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 xi.default({maxSize:1024*512*512,dispose:(i,n,s)=>{this.invalidated.push(n),i.width=0,i.height=0},sizeCalculation:(i,n)=>i.width*i.height}):{store:{},get(i){return this.store[i]},set(i,n){this.store[i]=n}}}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=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 n=this.getCanvasDims(),s=n.width/e,o=n.height/t,a=(s<o?o:s)*(i&&this.dpi||1);return Number.isNaN(a)||(this.lastKnownScale=a),this.lastKnownScale}beforeFrame(e,t,i,n){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),n.enableFilters&&(n.filters.brightness||n.filters.contrast||n.filters.grayscale||n.filters.invert||n.filters.sepia||n.filters.saturate||n.filters.hueRotate||n.filters.blur)){let o="";n.filters.brightness&&(o+=`brightness(${~~(100+n.filters.brightness*100)}%) `),n.filters.contrast&&(o+=`contrast(${~~(100+n.filters.contrast*100)}%) `),n.filters.grayscale&&(o+=`grayscale(${~~(n.filters.grayscale*100)}%) `),n.filters.invert&&(o+=`invert(${~~(n.filters.invert*100)}%) `),n.filters.sepia&&(o+=`sepia(${~~(n.filters.sepia*100)}%) `),n.filters.saturate&&(o+=`saturate(${~~(100+n.filters.saturate*100)}%) `),n.filters.hueRotate&&(o+=`hue-rotate(${n.filters.hueRotate}deg) `),n.filters.blur&&(o+=`blur(${n.filters.blur}px) `),this.ctx.filter=o}else this.ctx.filter="none"}applyTransform(e,t,i,n,s){let o=e.__owner.value;if(o&&o.rotation){this.ctx.save();let a=t+n/2,l=i+s/2;this.ctx.translate(a,l),this.ctx.rotate(o.rotation*Math.PI/180),this.ctx.translate(-a,-l),this.lastPaintedObject=o}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}paint(e,t,i,n,s,o){let a=this.ctx.globalAlpha;if(e instanceof H||e instanceof tt){if(e.display.rotation){this.ctx.save();let d=i+s/2,c=n+o/2;e.crop&&(d-=e.crop[t*5+1],c-=e.crop[t*5+2]),this.ctx.translate(d,c),this.ctx.rotate(e.display.rotation*Math.PI/180),this.ctx.translate(-d,-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 d=e.__host.canvas,c=this.getCanvasDims();if((d.indices.indexOf(t)===-1||this.invalidated.indexOf(d.canvases[t])!==-1)&&this.schedulePaintToCanvas(d,e,t,Rt({x:i+s/2,y:n+s/2},{x:c.width/2,y:c.height/2})),!this.firstMeaningfulPaint)return;let m=this.hostCache.get(d.canvases[t]);if(m)if(e.crop&&e.cropData){if(e.crop[t*5]){let b=[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];b[0]+=e.cropData.x/e.display.scale,b[1]+=e.cropData.y/e.display.scale;let w=e.x*this.lastKnownScale,P=e.y*this.lastKnownScale,x=[i+w,n+P,s,o];x[0]+=w,x[1]+=P,this.ctx.drawImage(m,b[0],b[1],b[2],b[3],x[0],x[1],x[2]+1,x[3]+1)}}else xn?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,n,s+1,o+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,n,s+Number.MIN_VALUE+.5,o+Number.MIN_VALUE+.5)}catch{}e.display.rotation&&this.ctx.restore()}let l=e instanceof rt&&this.options.box,u=e instanceof Nt&&this.options.polygon;if((l||u)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let d=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),c=e.props.relativeStyle?1:s/e.width;typeof d.opacity<"u"&&(this.ctx.globalAlpha=d.opacity);let m=0;typeof d.borderWidth<"u"&&(m=parseInt(d.borderWidth,10)*c);let b=0;typeof d.outlineWidth<"u"&&(b=parseInt(d.outlineWidth,10)*c);let w=0;if(typeof d.outlineOffset<"u"&&(w=parseInt(d.outlineOffset,10)*c),d.borderColor&&(this.ctx.strokeStyle=d.borderColor),d.boxShadow){let P=d.boxShadow.split(/,(?![^(]*\))/);for(let x of P){let f=wi[x]||vi.exec(x)||vi.exec(x);wi[x]=f,f&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(f[1])*this.dpi*c,this.ctx.shadowOffsetY=parseInt(f[3])*this.dpi*c,this.ctx.shadowBlur=parseInt(f[5])*this.dpi*c,this.ctx.shadowColor=f[9],this.ctx.fillStyle="rgba(0,0,0,1)",this.ctx.fillRect(i+m,n+m,s,o),this.ctx.restore())}}if(this.ctx.fillStyle=d.backgroundColor||"transparent",this.ctx.lineWidth=m,u){let P=e.shape,x=P.points||[],f=x.length;this.ctx.beginPath();for(let g=0;g<f;g++)this.ctx.lineTo(i+x[g][0]*this.lastKnownScale,n+x[g][1]*this.lastKnownScale);P.open||this.ctx.closePath(),m&&this.ctx.stroke(),P.open||this.ctx.fill()}else m&&this.ctx.strokeRect(i+m/2,n+m/2,s+m,o+m),this.ctx.fillRect(i+m,n+m,s,o);b&&(d.outlineColor&&(this.ctx.strokeStyle=d.outlineColor),this.ctx.lineWidth=b,this.ctx.strokeRect(i-b/2-w,n-b/2-w,s+m*2+b+w*2,o+m*2+b+w*2))}this.ctx.globalAlpha=a}}loadImage(e,t,i,n=!1){if(Ee[e]&&Ee[e].naturalWidth>0){t(Ee[e]);return}try{let s=!1;n||setTimeout(()=>{s||this.loadImage(e,t,i,!0)},3e3);let o=document.createElement("img");o.decoding="auto",o.onload=function(){s=!0,t(o),Ee[e]=o,o.onload=null},this.options.crossOrigin&&(o.crossOrigin="anonymous"),o.src=e,o.complete&&o.onload({}),o.width}catch(s){console.log("image error",s),i(s)}}schedulePaintToCanvas(e,t,i,n){this.imagesPending++,e.indices.push(i);let s=`${t.id}--${t.display.scale}-${i}`,o=this.invalidated.indexOf(s);o!==-1&&this.invalidated.splice(o,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:n,task:()=>new Promise(a=>{if(this.visible.indexOf(t)===-1){this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),a();return}let l=t.getImageUrl(i);this.loadImage(l,u=>{this.loadingQueue.push({id:s,scale:t.display.scale,distance:n,task:()=>new Promise(d=>{this.imagesLoaded++,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"),b=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(()=>{b.drawImage(u,0,0,c[3]-c[1],c[4]-c[2]),d()})})}),a()},u=>{this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),a()})})})}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 tt)&&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,n){return e.getPointsAt(t,i,n)}getViewportBounds(e,t,i){let n=e.getActiveZone();if(n){let s=t[3]-t[1]<n.points[3]-n.points[1],o=t[4]-t[2]<n.points[4]-n.points[2];return{x1:s?n.points[1]-i:n.points[1]+(n.points[3]-n.points[1])/2-(t[3]-t[1])/2,y1:o?n.points[2]-i:n.points[2]+(n.points[4]-n.points[2])/2-(t[4]-t[2])/2,x2:s?n.points[3]+i:n.points[1]+(n.points[3]-n.points[1])/2-(t[3]-t[1])/2,y2:o?n.points[4]+i:n.points[2]+(n.points[4]-n.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 Tt=class{constructor(e){h(this,"renderers",[]);h(this,"length");for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,i,n){for(let s=0;s<this.length;s++)this.renderers[s].afterFrame(e,t,i,n)}afterPaintLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].afterPaintLayer(e,t)}beforeFrame(e,t,i,n){for(let s=0;s<this.length;s++)this.renderers[s].beforeFrame(e,t,i,n)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,i,n){return this.renderers[0].getPointsAt(e,t,i,n)}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,n,s,o){for(let a=0;a<this.length;a++)this.renderers[a].paint(e,t,i,n,s,o)}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 Ce=require("@atlas-viewer/dna");var te=class{constructor(e){h(this,"canvas");h(this,"context");h(this,"heightRatio",1);h(this,"widthRatio",1);h(this,"target",new Float32Array(5));h(this,"initialWidth");h(this,"initialHeight");h(this,"bounds");h(this,"aggregate");h(this,"delta",0);h(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,Ce.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 n=this.initialWidth/e.width,s=this.initialHeight/e.height,o=this.widthRatio>this.heightRatio?n:s;if(this.target=i,this.bounds){let a=e.getPointsAt(this.bounds,this.aggregate,o);for(let[l,u]of a)if(l instanceof H&&l.__host.canvas){let d=u.length/5;for(let c=0;c<d;c++)if(l.__host.canvas.canvases[c]){let b={x1:u[c+1]*o,y1:u[c+2]*o,width:(u[c+3]-u[c+1])*o,height:(u[c+4]-u[c+2])*o}}}}e.getPoints().forEach((a,l,u)=>{if(l%5===0&&a){let d={x1:u[l+1]*o,y1:u[l+2]*o,x2:u[l+3]*o,y2:u[l+4]*o,width:(u[l+3]-u[l+1])*o,height:(u[l+4]-u[l+2])*o};this.context.strokeStyle="red",this.context.strokeRect(d.x1,d.y1,d.width,d.height)}}),i&&(this.context.strokeStyle="red",this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(i[1]*o,i[2]*o,(i[3]-i[1])*o,(i[4]-i[2])*o))}}getActiveZone(e){return null}getPointsAt(e,t,i,n){return e.getPointsAt(t,i,n)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=Ce.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,i,n,s,o){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 je=class{constructor(){h(this,"autoWidth",!1);h(this,"autoHeight",!0);h(this,"width");h(this,"height");h(this,"world");h(this,"content",[]);h(this,"viewingDirection","left-to-right");h(this,"rows");h(this,"columns",4);h(this,"spacing",20);h(this,"reversed",!1);h(this,"padding",20);this.world=et.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 a=e>this.rows?this.rows:e;return{columns:Math.ceil(e/a),rows:a}}if(this.autoHeight&&this.columns){let a=e>this.columns?this.columns:e;return{columns:a,rows:Math.ceil(e/a)}}throw new Error("Something went wrong.")},{columns:i,rows:n}=t(),s=this.autoWidth?-1:this.width-this.padding*2,o=this.autoWidth?-1:(s-this.spacing*(i-1))/i;if(this.autoHeight&&!this.autoWidth){let a=0,l=this.padding;for(let u=0;u<n&&a!==e;u++){let d=0,c=[];for(let m=0;m<i;m++){let b=this.reversed?e-a:a;if(a===e)break;let w=this.content[b],P=w.width,x=w.width/w.height,f=o/x;c.push([a,o,f,o/P]),f>d&&(d=f),a++}for(let m=0;m<i&&c[m];m++){let b=this.world.getPoints(),w=c[m][0],P=c[m][1],x=c[m][2],f=c[m][3],g=this.padding+m*(this.spacing+P),I=l+(d-x)/2,_=this.reversed?e-w:w,S=b[_*5+1],v=b[_*5+2];this.world.scaleWorldObject(w,f),(S!==g||v!==I)&&this.world.translateWorldObject(_,g-S,I-v)}l+=d+this.spacing}this.height=l+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};var Pi=q(require("normalize-wheel"),1);var Q=require("@atlas-viewer/dna");function Si(r){return{x:r[1],y:r[2],width:r[3]-r[1],height:r[4]-r[2]}}var Ei={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:!1,onPanInSketchMode:()=>{}},ee=(r={})=>({start:function(e){let{zoomWheelConstant:t,enableWheel:i,enableClickToZoom:n}={...Ei,...r},s={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","onPointerUp","onPointerDown","onPointerMove");let o=[],a=[],l=-1;function u(p){for(let E=0;E<o.length;E++)if(o[E].pointerId==p.pointerId){o.splice(E,1),a.splice(E,1);break}}function d(p){o.push(p),a.push({...p.atlas||{}})}function c(p){for(let E=0;E<o.length;E++)if(p.pointerId==o[E].pointerId){o[E]=p,a[E]={...p.atlas||{}};break}if(o.length==2){let E=Math.abs(o[0].clientX-o[1].clientX),O=a[0].x>a[1].x?a[0].x-a[1].x:a[1].x-a[0].x,L=a[0].y>a[1].y?a[0].y-a[1].y:a[1].y-a[0].y;l>0&&(E>l&&e.world.zoomTo(.95,{x:O/2,y:L/2},!0),E<l&&e.world.zoomTo(1.05,{x:O/2,y:L/2},!0)),l=E}}function m(p){u(p),o.length<2&&(l=-1)}function b(){e.world.constraintBounds(),x=0}function w(p){if(p.which>1){s.isPressing=!1;return}e.mode==="explore"&&(p.preventDefault(),s.pointerStart.x=p.atlas.x,s.pointerStart.y=p.atlas.y,e.transitionManager.stopTransition(),s.isPressing=!0)}function P(){s.isPressing&&(e.mode==="explore"&&e.world.constraintBounds(),s.isPressing=!1)}let x=0;function f(p){if(e.mode==="explore"){if(p.atlasTouches.length===1&&(p.preventDefault(),s.pointerStart.x=p.atlasTouches[0].x,s.pointerStart.y=p.atlasTouches[0].y),p.atlasTouches.length===2){p.preventDefault();let E=p.atlasTouches[0].x,O=p.atlasTouches[1].x;s.pointerStart.x=(E+O)/2;let L=p.atlasTouches[0].y,k=p.atlasTouches[1].y;s.pointerStart.y=(L+k)/2,x=Rt({x:p.touches[0].clientX,y:p.touches[0].clientY},{x:p.touches[1].clientX,y:p.touches[1].clientY})}e.transitionManager.stopTransition(),s.isPressing=!0}}function g(p){let E=null,O=null,L=!1,k=0;if(s.isPressing&&p.touches.length===2){let $=p.touches[0].clientX,kt=p.touches[1].clientX;E=($+kt)/2;let Dt=p.touches[0].clientY,Vt=p.touches[1].clientY;O=(Dt+Vt)/2,k=Rt({x:p.touches[0].clientX,y:p.touches[0].clientY},{x:p.touches[1].clientX,y:p.touches[1].clientY}),L=!0}if(s.isPressing&&p.touches.length===1){let $=p.touches[0];E=$.clientX,O=$.clientY}if(E!==null&&O!==null){let $=e.getRendererScreenPosition();if($){let{x:kt,y:Dt}=e.viewerToWorld(E-$.x,O-$.y),Vt=k&&x?k/x:1;e.transitionManager.customTransition(V=>{V.from=(0,Q.dna)(e.target),V.to=(0,Q.transform)(V.from,(0,Q.compose)((0,Q.translate)(s.pointerStart.x-kt,s.pointerStart.y-Dt),(0,Q.scaleAtOrigin)(1/Vt,kt,Dt)),s.mousemoveBuffer),V.elapsed_time=0,V.total_time=0,V.timingFunction=st.easeInOutExpo,V.done=!1})}x=k}}function I(p){if(s.isPressing){let E=e.getRendererScreenPosition();if(E){let{x:O,y:L}=e.viewerToWorld(p.clientX-E.x,p.clientY-E.y);e.transitionManager.customTransition(k=>{k.from=(0,Q.dna)(e.target),k.to=(0,Q.transform)(k.from,(0,Q.translate)(s.pointerStart.x-O,s.pointerStart.y-L),s.mousemoveBuffer),k.elapsed_time=0,k.total_time=0,k.timingFunction=st.easeInOutExpo,k.done=!1})}}}function _(p){e.mode==="explore"&&e.world.zoomIn(p.atlas)}function S(p){let O=1+(0,Pi.default)(p).spinY/t;e.world.zoomTo(O,p.atlas,!0)}e.world.addEventListener("mouseup",b),e.world.addEventListener("touchend",b),e.world.addEventListener("touchstart",f),e.world.addEventListener("mousedown",w),window.addEventListener("touchend",P),window.addEventListener("mouseup",P),window.addEventListener("mousemove",I),window.addEventListener("touchmove",g),n&&(e.world.activatedEvents.push("onClick"),e.world.addEventListener("click",_)),i&&(e.world.activatedEvents.push("onWheel"),e.world.addEventListener("wheel",S));let v=e.world.addLayoutSubscriber((p,E)=>{if(p==="zone-changed"&&e.transitionManager.constrainBounds({transition:{duration:0}}),p==="zoom-to"&&E&&e.transitionManager.zoomTo(E.factor,{origin:E.point,stream:E.stream}),p==="go-home"){let O=E.immediate?{duration:0}:void 0;e.transitionManager.goToRegion(Si(e.homePosition),{transition:O})}if(p==="goto-region"&&E){let O=E.immediate?{duration:0}:{};e.transitionManager.goToRegion(E,{transition:O})}p==="constrain-bounds"&&e.transitionManager.constrainBounds({transition:E?.immediate?{duration:0}:void 0})});return()=>{e.world.removeEventListener("mouseup",b),e.world.removeEventListener("touchend",b),e.world.removeEventListener("touchstart",f),e.world.removeEventListener("mousedown",w),window.removeEventListener("touchend",P),window.removeEventListener("mouseup",P),e.world.removeEventListener("mousemove",I),e.world.removeEventListener("touchmove",I),n&&e.world.removeEventListener("click",_),i&&e.world.removeEventListener("wheel",S),v()}},updatePosition(){}});var F=require("react");var Re=q(require("react"),1),Ci=require("react/jsx-runtime"),dt=Re.default.createContext("explore");dt.displayName="Mode";var ie=()=>(0,Re.useContext)(dt);function Sn(r){return(0,Ci.jsx)(dt.Provider,{value:r.mode,children:r.children})}var Wi=q(require("react-use-measure"),1);var Ue=q(require("react"),1),ct=Ue.default.createContext(null);ct.displayName="Atlas";var Pt=Ue.default.createContext(null);Pt.displayName="Bounds";var ut=q(require("react"),1);var _i=q(require("react-reconciler"),1);var ne,Pn=typeof performance=="object"&&typeof performance.now=="function";if(Pn){let r=performance;ne=()=>r.now()}else{let r=Date,e=r.now();ne=()=>r.now()-e}var Oi=require("react");var En=16;function Ri(r,e){r&&r.appendChild&&e&&r.appendChild(e)}function Ai(r,e){r&&r.removeChild&&e&&r.removeChild(e)}function Cn(r,e){return Ai(r.world,e)}function Rn(r,e,t){return Mi(r.world,e,t)}function Mi(r,e,t){r&&r instanceof lt&&(r=r.world),r&&r.insertBefore&&r.insertBefore(e,t)}function $e(r,e,t){if(t&&(r.applyProps&&r.applyProps(t),r instanceof W))for(let i of Ft){let n=i.slice(2).toLowerCase();t[i]!==e[i]&&(e[i]&&r.removeEventListener(n,e[i]),r.addEventListener(n,t[i]))}}function Ve(r,e){let t=Object.keys(e),i=!1;for(let n of t)if(Ft.indexOf(n)!==-1){let s=nt[n];if(s){if(r.activatedEvents.indexOf(s)!==-1)continue;i=!0,r.activatedEvents.push(s)}}i&&r.triggerEventActivation()}var Te=new Map,Ti={};function Tn(r,{args:e=[],...t},i,n,s){if(!(i instanceof lt)&&s){let l=u=>u.return?l(u.return):u.stateNode&&u.stateNode.containerInfo;i=l(s)}let o,a=i.world;switch(r){case"world":o=et.withProps({width:t.width,height:t.height,viewingDirection:"left-to-right"}),o.activatedEvents=a.activatedEvents,o.eventHandlers=a.eventHandlers,o.subscriptions=a.subscriptions,o.triggerEventActivation(),a=o;break;case"box":o=new rt;break;case"shape":o=new Nt;break;case"worldObject":case"world-object":o=new ht;break;case"worldImage":case"world-image":o=new H;break;case"texture":o=new xt;break;case"compositeImage":case"composite-image":o=new Zt({id:t.id,width:t.width,height:t.height,images:[],renderOptions:t.renderOptions});break;case"tiledImage":case"tiled-image":o=tt.fromTile(t.uri,t.display,t.tile,t.scaleFactor,void 0,t.format);break;case"paragraph":o=new pt,o.text=t.children;break;default:return}return Ve(a,t),$e(o,{},t),o}function _n(r,e){if(e instanceof et)r.world=e;else if(e instanceof ht)r.world.appendChild(e);else if(e)throw new Error("Invalid root")}var re=(0,_i.default)({unstable_now:ne,now:ne,createInstance:Tn,removeChild:Ai,appendChild:Ri,appendInitialChild:Ri,insertBefore:Mi,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:_n,removeChildFromContainer:Cn,createTextInstance(){},insertInContainerBefore:Rn,prepareUpdate(r,e,t,i,n){return Ve(n.world,i),i},commitUpdate(r,e,t,i,n,s){r.applyProps&&e&&$e(r,i,e)},finalizeInitialChildren(r){return r?.__handlers},getChildHostContext(){return Ti},getRootHostContext(){return Ti},prepareForCommit(r){return r.isCommitting=!0,null},preparePortalMount(){},hideInstance(r){r&&r.points&&(r.points[0]=0)},unhideInstance(r,e){r&&r.points&&(r.points[0]=1)},getPublicInstance(r){return r},hideTextInstance(){throw new Error("Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.")},resetAfterCommit(r){r.isCommitting=!1,r.pendingUpdate=!0,r.world&&r.world.needsRecalculate&&(r.world.recalculateWorldSize(),r.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(r){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return console.log("getCurrentEventPriority"),En},getInstanceFromNode(r){throw console.log("getInstanceFromNode",r),new Error("Not implemented")},getInstanceFromScope(r){throw console.log("getInstanceFromScope",r),new Error("Not implemented")},prepareScopeUpdate(r,e){throw console.log("prepareScopeUpdate",r,e),new Error("Not implemented")},logRecoverableError(){},requestPostPaintCallback(){}});re.injectIntoDevTools({bundleType:0,version:Oi.version,rendererPackageName:"@atlas-viewer/atlas"});function zt(r,e){let t=Te.get(r);t&&re.updateContainer(null,t,null,()=>{Te.delete(r),e&&e(r)})}var Ht={render(r,e){let t=Te.get(e);if(t)re.updateContainer(r,t,null);else{let i=re.createContainer(e,0,null,!1,null,"",()=>{},null);re.updateContainer(r,i,null),Te.set(e,i)}},unmountComponentAtNode(r,e){zt(r,e)}};var _e=q(require("react"),1),K=typeof window<"u"&&(window.document?.createElement||window.navigator?.product==="ReactNative")?_e.useLayoutEffect:_e.useEffect;var jt=require("react/jsx-runtime"),Ii=ut.default.memo(({children:r,setIsReady:e,onCreated:t,bounds:i,preset:n,mode:s="explore"})=>{let o=(0,ut.useCallback)(function(l){let u=(0,ut.useRef)(!1),d=()=>{e(!0)};return(0,ut.useEffect)(()=>{if(n&&!u.current){n.runtime.goHome();let c=t&&t(n);return void(c&&c.then?c.then(d):d())}return()=>{}},[]),(0,ut.useEffect)(()=>{u.current=!0},[]),l.children},[n]);return K(()=>{if(n){let a=n.runtime;s!==a.mode&&(a.mode=s),Ht.render((0,jt.jsx)(ut.default.StrictMode,{children:(0,jt.jsx)(o,{children:(0,jt.jsx)(Pt.Provider,{value:i,children:(0,jt.jsx)(dt.Provider,{value:s,children:(0,jt.jsx)(ct.Provider,{value:n,children:r})})})})}),a)}},[n,s,r]),K(()=>{if(n){let a=n.runtime;return()=>{Ht.unmountComponentAtNode(a)}}return()=>{}},[n]),null});var se=class{constructor(e,t){h(this,"canvas");h(this,"gl");h(this,"program");h(this,"fragmentShader");h(this,"vertexShader");h(this,"rectBuffer");h(this,"fragmentShaderSource",`
1
+ "use strict";var ln=Object.create;var Gt=Object.defineProperty;var dn=Object.getOwnPropertyDescriptor;var cn=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,mn=Object.prototype.hasOwnProperty;var gn=(r,e,t)=>e in r?Gt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var fn=(r,e)=>{for(var t in e)Gt(r,t,{get:e[t],enumerable:!0})},li=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of cn(e))!mn.call(r,n)&&n!==t&&Gt(r,n,{get:()=>e[n],enumerable:!(i=dn(e,n))||i.enumerable});return r};var q=(r,e,t)=>(t=r!=null?ln(un(r)):{},li(e||!r||!r.__esModule?Gt(t,"default",{value:r,enumerable:!0}):t,r)),pn=r=>li(Gt({},"__esModule",{value:!0}),r);var a=(r,e,t)=>(gn(r,typeof e!="symbol"?e+"":e,t),t);var Un={};fn(Un,{Atlas:()=>Ze,AtlasAuto:()=>An,AtlasContext:()=>ct,BoundsContext:()=>Pt,Box:()=>rt,BrowserEventManager:()=>Ot,CanvasRenderer:()=>Jt,CompositeRenderer:()=>Tt,CompositeResource:()=>Zt,DebugRenderer:()=>te,DrawBox:()=>Mn,GridBuilder:()=>je,HTMLPortal:()=>Ie,ImageService:()=>Fn,ImageTexture:()=>xt,ModeContext:()=>dt,ModeProvider:()=>Sn,OverlayRenderer:()=>_t,ReactAtlas:()=>Ht,RegionHighlight:()=>In,ResizeWorldItem:()=>ti,Runtime:()=>lt,SingleImage:()=>H,StaticRenderer:()=>he,Text:()=>pt,TileSet:()=>ii,TiledImage:()=>tt,WebGLRenderer:()=>se,World:()=>et,WorldObject:()=>ht,Zone:()=>He,activateEvents:()=>Ve,applyProps:()=>$e,bounceOut:()=>Kt,canDrag:()=>Hn,createDefaultEventMap:()=>ze,defaultConfig:()=>Ei,defaultPreset:()=>ae,easingFunctions:()=>st,fromImage:()=>yn,getId:()=>ni,getTileFromCanvas:()=>Ji,getTileFromImageService:()=>De,getTiles:()=>Dn,getTilesFromManifest:()=>tn,mergeStyles:()=>jn,popmotionController:()=>ee,presets:()=>Ge,staticPreset:()=>Xe,supportedEventAttributes:()=>Ft,supportedEventMap:()=>nt,unmountComponentAtNode:()=>zt,useAfterFrame:()=>Ye,useAfterPaint:()=>Bn,useAtlas:()=>de,useAtlasImage:()=>Wn,useBeforeFrame:()=>Nn,useCanvas:()=>Qe,useControlledAnnotationList:()=>zn,useFrame:()=>Mt,useMode:()=>ie,useResizeWorldItem:()=>Je,useRuntime:()=>X,useWorldEvent:()=>Le});module.exports=pn(Un);var Ft=["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 ze(){return Ft.reduce((r,e)=>(r[e]=[],r),{})}var nt=Ft.reduce((r,e)=>(r[e.slice(2).toLowerCase()]=e,r[e]=e,r),{});var Z=require("@atlas-viewer/dna");var vt=require("@atlas-viewer/dna");var di="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var ot=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r));for(;r--;)e+=di[t[r]&63];return e};var W=class{constructor(){a(this,"__id");a(this,"__revision",0);a(this,"__host");a(this,"__onCreate");a(this,"__parent");a(this,"__owner",{value:void 0});a(this,"__state",{});a(this,"eventHandlers");a(this,"scale",1);a(this,"layers",[]);a(this,"time",[]);a(this,"_crop");a(this,"cropData");a(this,"id");a(this,"addEventListener",(e,t,i)=>{let n=nt[e];if(!this.eventHandlers[n])throw new Error(`Unknown event ${n}`);this.eventHandlers[n].indexOf(t)===-1&&this.eventHandlers[n].push(t)});a(this,"removeEventListener",(e,t)=>{let i=nt[e];if(!this.eventHandlers[i]){console.warn(`Unknown event ${i}`);return}this.eventHandlers[i].indexOf(t)!==-1&&(this.eventHandlers[i]=this.eventHandlers[i].filter(n=>n!==t))});this.id=this.__id=ot(),this.eventHandlers=ze()}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],n=i?i.length:0,s=!1;if(n)for(let o=0;o<n;o++)try{i[o](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,vt.mutate)(this.points,(0,vt.translate)(e,t))}atScale(e){(0,vt.mutate)(this.points,(0,vt.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,vt.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};var H=class r extends W{constructor(t){super();a(this,"type","spacial-content");a(this,"id");a(this,"uri");a(this,"display");a(this,"points");a(this,"priority");a(this,"style",{opacity:1});if(!t)this.id="",this.uri="",this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,Z.dna)(5)},this.points=(0,Z.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=Z.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:Z.DnaFactory.singleBox(t.width/i,t.height/i),rotation:t?.rotation}}}applyProps(t){let i=t.display?t.display.width:t.target.width,n=t.target.width/i;if(this.id=t.id||t.uri,this.uri=t.uri,this.points.set(Z.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=Z.DnaFactory.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);(0,Z.mutate)(s,(0,Z.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(s):this.crop=(0,Z.dna)(s)}t.display?(this.display.scale=n,this.display.width=t.display.width,this.display.height=t.display.height,this.display.rotation=t.display.rotation,this.display.points=Z.DnaFactory.singleBox(t.display.width,t.display.height)):(this.display.scale=n,this.display.width=t.target.width/n,this.display.height=t.target.height/n,this.display.points=Z.DnaFactory.singleBox(t.target.width/n,t.target.height/n))}getAllPointsAt(t,i,n){return[[this,this.crop||this.points,i]]}static fromSvg(t,i,n,s){return r.fromImage("data:image/svg+xml;base64,"+btoa(t),i,n,s)}static fromImage(t,i,n,s){let o=new r;return o.applyProps({uri:t,id:s,display:n,target:i}),o}getImageUrl(){return this.uri}};var wt=require("@atlas-viewer/dna");var xt=class extends W{constructor(t){super();a(this,"type","spacial-content");a(this,"id");a(this,"uri");a(this,"display");a(this,"points");a(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,wt.dna)(5)},this.points=(0,wt.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=wt.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?wt.DnaFactory.singleBox(t.width/i,t.height/i):this.points}}}applyProps(t){let i=t.display?t.display.width:t.target.width,n=t.target.width/i;this.id=t.id,this.points.set(wt.DnaFactory.singleBox(t.target.width,t.target.height)),this.display.scale=n,this.display.width=t.target.width/n,this.display.height=t.target.height/n,this.getTexture=t.getTexture,this.display.points=n!==1?wt.DnaFactory.singleBox(t.target.width/n,t.target.height/n):this.points}getAllPointsAt(t,i,n){return[[this,this.points,i]]}};var G=require("@atlas-viewer/dna");function ui(r,e,t=1){let i=e.length;if(i===0)throw new Error("No resources passed in.");let n=0;for(let s=0;s<i&&!(!e[s]||!e[s].display);s++)n=Math.abs(e[s].display.scale-r)*t<Math.abs(e[n].display.scale-r)?s:n;return n}function ci(r,e){return Math.abs(r-e)}function Rt(r,e){let t=ci(r.x,e.x),i=ci(r.y,e.y);return Math.sqrt(Math.pow(t,2)+Math.pow(i,2))}function mi(r){let e=r.length;return r.indexOf("/info.json")===e-10?r.slice(0,-10):r}function me(r,e,t){return Math.min(Math.max(r,e),t)}var tt=class r extends W{constructor(t){super();a(this,"id");a(this,"type","spacial-content");a(this,"display");a(this,"tileWidth");a(this,"style",{opacity:1});a(this,"points");a(this,"service");a(this,"format","jpg");a(this,"crop2");a(this,"tileUrl");this.tileUrl=mi(t.url),this.id=t.id||`${this.tileUrl}--${t.scaleFactor}`,this.points=t.displayPoints?t.displayPoints:(0,G.transform)(t.points,(0,G.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,G.dna)([...this.points]),n=i.length/5,s=t.crop.x||0,o=t.crop.y||0,h=t.crop.x+t.crop.width,l=t.crop.y+t.crop.height;for(let u=0;u<n;u++){let d=u*5;i[d+1]<h&&i[d+3]>s&&i[d+2]<l&&i[d+4]>o?(i[d+1]=me(i[d+1],s,h),i[d+3]=me(i[d+3],s,h),i[d+2]=me(i[d+2],o,l),i[d+4]=me(i[d+4],o,l)):i[d]=0}(0,G.mutate)(i,(0,G.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(i):this.crop=i}}static fromTile(t,i,n,s,o,h){n.height=n.height?n.height:n.width;let l=Math.ceil(i.width/s),u=Math.ceil(i.height/s),d=Math.ceil(l/n.width),c=Math.ceil(u/n.height),m=G.DnaFactory.grid(d,c),b=G.DnaFactory.grid(d,c);for(let P=0;P<c;P++)for(let x=0;x<d;x++){let g=x*n.width,f=P*n.height;b.addPoints(g*s,f*s,x===d-1?i.width:(g+n.width)*s,P===c-1?i.height:(f+n.height)*s),m.addPoints(g,f,x===d-1?l:g+n.width,P===c-1?u:f+n.height)}let w=new r({url:t,scaleFactor:s,points:m.build(),displayPoints:b.build(),width:i.width,height:i.height,tileWidth:n.width,format:h});return w.applyProps({service:o}),w}getImageUrl(t){let i=this.points.slice(t*5,t*5+5),n=i[3]-i[1],s=i[4]-i[2],o=Math.ceil(n/this.display.scale);return`${this.tileUrl}/${i[1]},${i[2]},${n},${s}/${o>this.tileWidth?this.tileWidth:o},/0/default.${this.format||"jpg"}`}getAllPointsAt(t,i,n){let s=(0,G.hidePointsOutsideRegion)(this.crop||this.points,t);return[[this,s,i]]}transform(t){(0,G.mutate)(this.points,t)}getScheduledUpdates(t,i){return[]}};var at=require("@atlas-viewer/dna");var ge=class extends W{constructor(){super(...arguments);a(this,"type","spacial-content")}getAllPointsAt(t,i,n){return[[this,this.points,i]]}};var Zt=class extends ge{constructor(t){super();a(this,"id");a(this,"display");a(this,"points");a(this,"images",[]);a(this,"allImages",[]);a(this,"scaleFactors",[]);a(this,"aggregateBuffer",(0,at.dna)(9));a(this,"lazyLoader");a(this,"isFullyLoaded",!1);a(this,"maxScaleFactor",0);a(this,"renderOptions");a(this,"_scheduleSortByScales",!1);a(this,"_sortByScales",()=>{this._scheduleSortByScales=!1,this.allImages.sort((i,n)=>n.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)});a(this,"loadFullResource",async()=>{if(!this.isFullyLoaded&&this.lazyLoader){this.isFullyLoaded=!0;let t=await this.lazyLoader();this.addImages(t)}});a(this,"fallback",[this.loadFullResource]);this.id=t.id,this.points=at.DnaFactory.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:at.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,n){if(this.images.length===0)return[];let s=ui(1/(n||1)/(window.devicePixelRatio||1),this.images,this.renderOptions.quality),o=this.images.length,h=i?(0,at.compose)(i,(0,at.translate)(this.x,this.y)):(0,at.translate)(this.x,this.y);if(s!==this.images.length-1&&this.images[s+1]){let l=[];for(let c=o-1;c>=s;c--)l.push(c);let u=l[0];this.renderOptions.renderLayers&&(l=l.slice(-Math.min(l.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&l.indexOf(u)===-1&&l.unshift(u);let d=[];for(let c=0;c<l.length;c++)d.push(...this.images[l[c]].getAllPointsAt(t,h,n));return d}return this.images[s].getAllPointsAt(t,h,n)}};var A=require("@atlas-viewer/dna");var T=require("@atlas-viewer/dna");function fe(r,e,t,i,n){let s=Math.PI/180*n,o=Math.cos(s),h=Math.sin(s),l=o*(t-r)+h*(i-e)+r,u=o*(i-e)-h*(t-r)+e;return[l,u]}var ht=class r extends W{constructor(t,i){super();a(this,"id");a(this,"type","world-object");a(this,"scale");a(this,"layers");a(this,"points");a(this,"worldPoints");a(this,"intersectionBuffer",(0,T.dna)(5));a(this,"aggregateBuffer",(0,T.dna)(9));a(this,"invertedBuffer",(0,T.dna)(9));a(this,"rotation",0);a(this,"filteredPointsBuffer");a(this,"_updatedList",[]);a(this,"geometry");let{x:n=0,y:s=0}=i||{};t?(this.id=t.id||"",this.scale=1,this.layers=t.layers,this.points=(0,T.dna)([1,n,s,n+t.width,s+t.height]),this.worldPoints=(0,T.dna)([1,n,s,n+t.width,s+t.height]),this.filteredPointsBuffer=(0,T.dna)(t.layers.length*5)):(this.id="",this.scale=1,this.layers=[],this.points=(0,T.dna)(5),this.worldPoints=(0,T.dna)(5),this.filteredPointsBuffer=(0,T.dna)(5))}static createWithProps(t){let i=new r;return i.applyProps(t),i}applyProps(t){let i=t.x||0,n=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]=n,this.points[3]=i+t.width,this.points[4]=n+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,T.dna)(this.layers.length*5)}insertBefore(t,i){let n=this.layers.indexOf(i);if(n===-1||this.layers.indexOf(t)!==-1)return;let s=this.layers.slice(0,n),o=this.layers.slice(n);this.layers=[...s,t,...o]}hideInstance(){console.warn("hideInstance: not yet implemented")}getObjectsAt(t,i){if(this.rotation&&(t=this.applyRotation(t)),(0,T.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer)[0]===0)return[];let s=this.layers.length,o=[];for(let h=0;h<s;h++){let l=this.layers[h];if(i&&l.isShape){let d=(0,T.transform)(l.points,(0,T.translate)(this.x,this.y));if(!l.intersects([t[1]-d[1],t[2]-d[2]]))continue}if((0,T.hidePointsOutsideRegion)((0,T.transform)(l.points,(0,T.translate)(this.x,this.y)),t,this.filteredPointsBuffer)[0]!==0&&o.push(l),i){let d=l;o.push(...d.getObjectsAt(t,i))}}return o}applyRotation(t){if(this.rotation){let i={x:t[1],y:t[2]},n={x:t[1],y:t[4]},s={x:t[3],y:t[2]},o={x:t[3],y:t[4]},h=this.points[1]+(this.points[3]-this.points[1])/2,l=this.points[2]+(this.points[4]-this.points[2])/2,[u,d]=fe(h,l,i.x,i.y,this.rotation),[c,m]=fe(h,l,n.x,n.y,this.rotation),[b,w]=fe(h,l,s.x,s.y,this.rotation),[P,x]=fe(h,l,o.x,o.y,this.rotation),g=Math.min(u,c,b,P),f=Math.max(u,c,b,P),I=Math.min(d,m,w,x),_=Math.max(d,m,w,x);return(0,T.dna)([t[0],g,I,f,_])}return t}getAllPointsAt(t,i,n){let s=(0,T.compose)((0,T.translate)(this.x,this.y),(0,T.scale)(this.scale),this.aggregateBuffer);this.rotation&&(t=this.applyRotation(t));let o=(0,T.getIntersection)(t,this.points,this.intersectionBuffer),h=this.layers.length,l=[],u=(0,T.transform)(o,(0,T.compose)((0,T.scale)(1/this.scale),(0,T.translate)(-this.x,-this.y),this.invertedBuffer)),d=i?(0,T.compose)(i,s,this.aggregateBuffer):s,c=n*this.scale;for(let m=0;m<h;m++)l.push(...this.layers[m].getAllPointsAt(u,d,c));return l}addLayers(t){let i=[];for(let n of t)this.layers.indexOf(n)===-1&&(i.push(n),n.points.length===5&&(n.points[1]<this.worldPoints[1]/this.scale||n.points[2]<this.worldPoints[2]/this.scale||n.points[3]>this.worldPoints[3]/this.scale||n.points[4]>this.worldPoints[4]/this.scale)&&(n.crop=n.crop||(0,T.dna)([1,Math.max(this.worldPoints[1]/this.scale,n.points[1]),Math.max(this.worldPoints[2]/this.scale,n.points[2]),Math.min(this.worldPoints[3]/this.scale,n.points[3]),Math.min(this.worldPoints[4]/this.scale,n.points[4])])));this.layers=this.layers.concat(i),this.filteredPointsBuffer=(0,T.dna)(this.layers.length*5)}getScheduledUpdates(t,i){let n=this.layers.length;this._updatedList=[];let s=i*this.scale;for(let o=0;o<n;o++){let h=this.layers[o].getScheduledUpdates(t,s);h&&this._updatedList.push(...h)}return this._updatedList}};var et=class r extends W{constructor(t=0,i=0,n=100,s="left-to-right"){super();a(this,"id","world");a(this,"_width");a(this,"_height");a(this,"aspectRatio");a(this,"viewingDirection");a(this,"aggregateBuffer",(0,A.dna)(9));a(this,"isDirty",!1);a(this,"zones",[]);a(this,"filteredPointsBuffer");a(this,"selectedZone");a(this,"triggerQueue",[]);a(this,"activatedEvents",[]);a(this,"_updatedList",[]);a(this,"translationBuffer",(0,A.dna)(9));a(this,"needsRecalculate",!0);a(this,"emptyPaintables",[]);a(this,"renderOrder",[]);a(this,"points");a(this,"objects",[]);a(this,"subscriptions",[]);a(this,"_propagateEventTargets",[]);a(this,"_alreadyFlushed",[]);this._width=t,this._height=i,this.aspectRatio=Number.isNaN(t/i)?1:t/i,this.viewingDirection=s,this.points=(0,A.dna)(n*5),this.filteredPointsBuffer=(0,A.dna)(n*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 r;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,n){let s=[];for(let o of n)if(o.x&&o.y){let h=A.DnaFactory.singleBox(1,1,o.x,o.y);s.push(this.getObjectsAt(h,!0).reverse())}return s.map(o=>this.propagateEvent(t,i,o,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,i,n,s,o={}){let h=A.DnaFactory.singleBox(1,1,n,s),l=this.getObjectsAt(h,!0).reverse();return this.propagateEvent(t,i,l,o)}propagateEvent(t,i,n,{bubbles:s=!1,cancelable:o=!1}={}){i.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let h=!1;i.stopPropagation=()=>{h=!0};let l=n.length;for(let c=l-1;c>=0;c--){this._propagateEventTargets.unshift(n[c][0]);let m=n[c][1].length;if(m)for(let b=0;b<m;b++)this._propagateEventTargets.unshift(n[c][1][b])}let u=this._propagateEventTargets.length,d=!1;for(let c=0;c<u&&(i.atlasTarget=this._propagateEventTargets[c],i.atlasWorld=this,d=this._propagateEventTargets[c].dispatchEvent(t,i)||d,!h);c++);return d&&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 n of this.objects)if(n&&n.id===t.id){this.removeChild(n);return}return}this.objects[i]=null,this.renderOrder=this.renderOrder.filter(n=>n!==i),this.points[i*5]=0,this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(t,i){let n=this.objects.indexOf(i);if(n===-1)return;let s=this.appendWorldObject(t);this.renderOrder.splice(n-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 n=0;n<i;n++)if(this.zones[n].id===t){this.selectedZone=n,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,A.dnaLength)(this.points)===this.objects.length){let t=this.points,i=(0,A.dna)(this.points.length*2);i.set(t,0),this.points=i}}appendWorldObject(t){this.checkResizeInternalBuffer();let i=this.objects.length*5,n=t.points;return t.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),t.points[1]=n[1],t.points[2]=n[2],t.points[3]=n[3],t.points[4]=n[4],this.objects.push(t),this.filteredPointsBuffer=(0,A.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),n=new Int32Array(this.objects.length),s=this.renderOrder.length;for(let l=0;l<s;l++){let u=this.renderOrder[l];this.objects[u]&&(i[l]=this.points[u*5+3],n[l]=this.points[u*5+4])}let o=Math.max(...i);o!==this._width&&(this._width=o,t=!0);let h=Math.max(...n);h!==this._height&&(this._height=h,t=!0),t&&this.trigger("recalculate-world-size",{width:o,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:n,x:s,y:o}=i,h=n/t.width;this.checkResizeInternalBuffer(),this.points.set(A.DnaFactory.singleBox(t.width,t.height,0,0),this.objects.length*5);let l=new ht(t);return l.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(l),this.scaleWorldObject(this.objects.length-1,h),this.translateWorldObject(this.objects.length-1,s,o),this.filteredPointsBuffer=(0,A.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,l}scaleWorldObject(t,i){(0,A.mutate)(this.points.subarray(t*5,t*5+5),(0,A.scaleAtOrigin)(i,this.points[t*5+1],this.points[t*5+2]));let n=this.objects[t];n&&(n.atScale(i),this.triggerRepaint())}translateWorldObject(t,i,n){(0,A.mutate)(this.points.subarray(t*5,t*5+5),(0,A.translate)(i,n));let s=this.objects[t];s&&(s.translate(i,n),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 n=A.DnaFactory.singleBox(t.width,t.height,t.x,t.y);return this.getPointsAt(n,i,t.scale)}addLayoutSubscriber(t){return this.subscriptions.push(t),()=>{this.subscriptions.splice(this.subscriptions.indexOf(t),1)}}getScheduledUpdates(t,i){let n=(0,A.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),s=this.objects.length;this._updatedList=[];for(let o=0;o<s;o++)if(n[o*5]!==0){if(!this.objects[o])continue;this._updatedList.push(...this.objects[o].getScheduledUpdates(t,i))}return this._updatedList}getObjectsAt(t,i=!1){let n=this.getActiveZone(),s=(0,A.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),o=this.renderOrder.length,h=[];for(let l=0;l<o;l++){let u=this.renderOrder[l];if(s[u*5]!==0){let d=this.objects[u];if(!d||n&&n.objects.indexOf(d)===-1)continue;if(d.type!=="world-object"){h.push([d,[d]]);continue}i?h.push([d,d.getObjectsAt(t,i)]):h.push([d,this.emptyPaintables])}}return h}getPointsAt(t,i,n=1){let s=this.getObjectsAt(t),o=(0,A.compose)((0,A.scale)(n),(0,A.translate)(-t[1],-t[2]),this.translationBuffer),h=i?(0,A.compose)(i,o,this.aggregateBuffer):o,l=s.length,u=[];for(let d=0;d<l;d++)s[d]&&u.push(...s[d][0].getAllPointsAt(t,h,n));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 n=this.subscriptions.length;for(let s=0;s<n;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,n){this.trigger("zoom-to",{point:i,factor:t,stream:n})}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 yn(r){let{src:e,target:t}=r,i=t?t.width:r.width,n=t?t.height:r.height;return new ht({id:e,height:n,width:i,layers:[H.fromImage(e,{height:n,width:i},{width:r.width,height:r.height})]})}var gi=require("@atlas-viewer/dna");var bn={margin:0},He=class{constructor(e,t={}){a(this,"id");a(this,"config");a(this,"points");a(this,"objects");this.id=e.map(i=>i.id).join("$$"),this.config={...bn,...t},this.points=(0,gi.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 Bt=require("@atlas-viewer/dna");var pe=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,ye={},vn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],rt=class extends W{constructor(){super();a(this,"id");a(this,"type","spacial-content");a(this,"points");a(this,"hoverEvents",!1);a(this,"activeEvents",!1);a(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,Bt.dna)(5)});a(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});a(this,"hovering");a(this,"pressing");a(this,"props",{});a(this,"addHover",()=>{this.hovering=!0,this.__revision++});a(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});a(this,"addPress",()=>{this.pressing=!0,this.__revision++});a(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ot(12),this.points=(0,Bt.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 n=t.border||t.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=ye[n]||pe.exec(n)||pe.exec(n);s&&(this._parsed.border.id=n,this._parsed.border.match=ye[n]=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=ye[t.style.outline]||pe.exec(t.style.outline)||pe.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=ye[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 vn)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=Bt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Bt.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 Yt=require("@atlas-viewer/dna");var pt=class extends W{constructor(){super();a(this,"type","spacial-content");a(this,"id");a(this,"points");a(this,"color","#000");a(this,"backgroundColor");a(this,"hovering");a(this,"pressing");a(this,"text","");a(this,"display",{x:0,y:0,scale:1,width:100,height:100,points:(0,Yt.dna)(5)});a(this,"className");a(this,"html");a(this,"interactive",!1);a(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,Yt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps({id:t,target:i,text:n,color:s,backgroundColor:o,fontSize:h=18,interactive:l,fontFamily:u="Arial, sans-serif",...d}){d.font=`${h}px ${u}`,this.interactive=l||!1,typeof n<"u"&&(this.text=n||""),s&&(this.color=s),o&&(this.backgroundColor=o),t&&(this.id=t),i&&(this.points=Yt.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,...d},this.__revision++}};var M=require("@atlas-viewer/dna");var St=require("@atlas-viewer/dna");var B=Math.pow,be=Math.sqrt,Qt=Math.sin,fi=Math.cos,qt=Math.PI,we=1.70158,ve=we*1.525,pi=we+1,yi=2*qt/3,bi=2*qt/4.5,Kt=function(r){return r<1/2.75?7.5625*r*r:r<2/2.75?7.5625*(r-=1.5/2.75)*r+.75:r<2.5/2.75?7.5625*(r-=2.25/2.75)*r+.9375:7.5625*(r-=2.625/2.75)*r+.984375},st={linear:r=>r,easeInQuad:function(r){return r*r},easeOutQuad:function(r){return 1-(1-r)*(1-r)},easeInOutQuad:function(r){return r<.5?2*r*r:1-B(-2*r+2,2)/2},easeInCubic:function(r){return r*r*r},easeOutCubic:function(r){return 1-B(1-r,3)},easeInOutCubic:function(r){return r<.5?4*r*r*r:1-B(-2*r+2,3)/2},easeInQuart:function(r){return r*r*r*r},easeOutQuart:function(r){return 1-B(1-r,4)},easeInOutQuart:function(r){return r<.5?8*r*r*r*r:1-B(-2*r+2,4)/2},easeInQuint:function(r){return r*r*r*r*r},easeOutQuint:function(r){return 1-B(1-r,5)},easeInOutQuint:function(r){return r<.5?16*r*r*r*r*r:1-B(-2*r+2,5)/2},easeInSine:function(r){return 1-fi(r*qt/2)},easeOutSine:function(r){return Qt(r*qt/2)},easeInOutSine:function(r){return-(fi(qt*r)-1)/2},easeInExpo:function(r){return r===0?0:B(2,10*r-10)},easeOutExpo:function(r){return r===1?1:1-B(2,-10*r)},easeInOutExpo:function(r){return r===0?0:r===1?1:r<.5?B(2,20*r-10)/2:(2-B(2,-20*r+10))/2},easeInCirc:function(r){return 1-be(1-B(r,2))},easeOutCirc:function(r){return be(1-B(r-1,2))},easeInOutCirc:function(r){return r<.5?(1-be(1-B(2*r,2)))/2:(be(1-B(-2*r+2,2))+1)/2},easeInBack:function(r){return pi*r*r*r-we*r*r},easeOutBack:function(r){return 1+pi*B(r-1,3)+we*B(r-1,2)},easeInOutBack:function(r){return r<.5?B(2*r,2)*((ve+1)*2*r-ve)/2:(B(2*r-2,2)*((ve+1)*(r*2-2)+ve)+2)/2},easeInElastic:function(r){return r===0?0:r===1?1:-B(2,10*r-10)*Qt((r*10-10.75)*yi)},easeOutElastic:function(r){return r===0?0:r===1?1:B(2,-10*r)*Qt((r*10-.75)*yi)+1},easeInOutElastic:function(r){return r===0?0:r===1?1:r<.5?-(B(2,20*r-10)*Qt((20*r-11.125)*bi))/2:B(2,-20*r+10)*Qt((20*r-11.125)*bi)/2+1},easeInBounce:function(r){return 1-Kt(1-r)},easeOutBounce:Kt,easeInOutBounce:function(r){return r<.5?(1-Kt(1-2*r))/2:(1+Kt(2*r-1))/2}};var xe=class{constructor(e){a(this,"runtime");a(this,"pendingTransition");this.runtime=e,this.pendingTransition={from:(0,St.dna)(5),to:(0,St.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:st.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,St.dna)(this.runtime.target),this.pendingTransition.to=(0,St.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,n=i.total_time===0?0:(i.elapsed_time+t)/i.total_time,s=i.total_time===0?1:n===0?0:i.timingFunction(n);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:st.easeOutExpo}}))}}zoomTo(e,{origin:t,stream:i=!1,transition:n}={}){let s=this.runtime.getZoomedPosition(e,{origin:t}),o=Math.abs(1-e);this.applyTransition(s,n,{duration:2e3*o,easing:st.easeOutExpo,constrain:!0},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){let[i,n]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});i&&(this.applyTransition(n,e,{duration:500,easing:st.easeOutQuart,constrain:!1}),this.runtime.updateNextFrame())}applyTransition(e,t,i,{stream:n}={}){this.pendingTransition.from=(0,St.dna)(this.runtime.target),this.pendingTransition.to=e,n||(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||st.easeInOutSine}goToRegion(e,{transition:t}={}){let i=this.runtime.clampRegion(e);this.applyTransition(St.DnaFactory.singleBox(i.width,i.height,i.x,i.y),t,{duration:1e3,easing:st.easeOutExpo,constrain:!0}),this.runtime.updateNextFrame()}};var cs=Number.MIN_VALUE+1,lt=class{constructor(e,t,i,n=[],s){a(this,"id",ot());a(this,"ready",!1);a(this,"renderer");a(this,"world");a(this,"target");a(this,"homePosition");a(this,"manualHomePosition");a(this,"manualFocalPosition");a(this,"focalPosition");a(this,"transitionManager");a(this,"aggregate");a(this,"transformBuffer",(0,M.dna)(500));a(this,"lastTarget",(0,M.dna)(5));a(this,"zoomBuffer",(0,M.dna)(5));a(this,"logNextRender",!1);a(this,"pendingUpdate",!0);a(this,"isCommitting",!1);a(this,"firstRender",!0);a(this,"lastTime");a(this,"stopId");a(this,"mode","explore");a(this,"controllers",[]);a(this,"controllersRunning",!1);a(this,"controllerStopFunctions",[]);a(this,"maxScaleFactor",1);a(this,"_viewerToWorld",{x:0,y:0});a(this,"_lastGoodScale",1);a(this,"hooks",{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]});a(this,"fpsLimit");a(this,"options");a(this,"hookOptions",{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}});a(this,"_viewport",{x:0,y:0,width:0,height:0});a(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});a(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,n=this.renderer.pendingUpdate();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,this.updateControllerPosition()),!this.firstRender&&!i&&!n&&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(),o=this.renderer.getPointsAt(this.world,this.target,this.aggregate,s),h=o.length;for(let d=0;d<h;d++){let c=o[d][0],m=o[d][1],b=o[d][2],w=b?(0,M.transform)(m,b,this.transformBuffer):m;this.renderer.prepareLayer(c,c.__parent&&b?(0,M.transform)(c.__parent.crop||c.__parent.points,b):w);let P=w.length/5;for(let x=0;x<P;x++){let g=x*5;w[g]!==0&&(this.renderer.paint(c,x,w[g+1],w[g+2],w[g+3]-w[g+1],w[g+4]-w[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 l=this.world.getScheduledUpdates(this.target,s),u=l.length;if(u>0)for(let d=0;d<u;d++){let c=l[u-d-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=M.DnaFactory.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=M.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new xe(this),this.aggregate=(0,M.scale)(1),this.world.addLayoutSubscriber(o=>{o==="repaint"&&(this.pendingUpdate=!0),o==="recalculate-world-size"&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=n,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(M.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]},n=this.width*t,s=this.height*t,o=i.width/n,h=i.height/s,l=n/s;if(e.cover?o>h:o<h){let u=l*i.height,d=(u-i.width)/2;this.target[1]=Math.round(-d+i.x),this.target[2]=Math.round(i.y),this.target[3]=Math.round(u-d+i.x),this.target[4]=Math.round(i.height+i.y)}else{let u=i.width/l,d=(u-i.height)/2;this.target[1]=Math.round(i.x),this.target[2]=Math.round(i.y-d),this.target[3]=Math.round(i.x+i.width),this.target[4]=Math.round(i.y+u-d)}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,i,n){this.updateFocalPosition(e-t,i-n);let s=t/e,o=n/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])*o,this.goHome({position:this.focalPosition}),this.renderer.resize(t,n),this.pendingUpdate=!0}updateFocalPosition(e,t){if(!this.manualFocalPosition){let i=this.width,n=this.height,s=Math.min(i,n),o=0,h=0,l=this.x+o,u=this.y+h;if(i<n){let d=this.height-this.width;this.focalPosition=M.DnaFactory.projection({x:l,y:u+d/2,width:s-o*2,height:s-h*2}),this.pendingUpdate=!0}else{let d=this.width-this.height;this.focalPosition=M.DnaFactory.projection({x:l+d/2,y:u,width:s-o*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:n,maxX:s,minY:o,maxY:h}=this.getBounds({target:e,padding:t}),l=!1,u=i?e:(0,M.dna)(e),d=Math.round(e[3]-e[1]),c=Math.round(e[4]-e[2]);return n>e[1]&&(l=!0,u[1]=n,u[3]=n+d),o>e[2]&&(l=!0,u[2]=o,u[4]=o+c),s<e[1]&&(l=!0,u[1]=s,u[3]=s+d),h<e[2]&&(l=!0,u[2]=h,u[4]=h+c),[l,u]}getBounds(e){let t=e.target||this.target,i=e.padding,n=this.options.visibilityRatio,s=Math.abs(1-n);if(this.world.hasActiveZone()){let f=this.world.getActiveZone();if(f){let I=t[3]-t[1]<f.points[3]-f.points[1],_=t[4]-t[2]<f.points[4]-f.points[2];return{minX:I?f.points[1]-i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxX:_?f.points[2]-i:f.points[2]+(f.points[4]-f.points[2])/2-(t[4]-t[2])/2,minY:I?f.points[3]+i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxY:_?f.points[4]+i:f.points[2]+(f.points[4]-f.points[2])/2-(t[4]-t[2])/2}}}let o=t[3]-t[1],h=this.world.width,l=-o*s,u=h-o-l,d=t[4]-t[2],c=this.world.height,m=-d*s,b=c-d-m,w=Math.round(Math.max(l,u)),P=Math.round(Math.min(l,u)),x=Math.round(Math.max(m,b)),g=Math.round(Math.min(m,b));return{minX:P,maxX:w,minY:g,maxY:x}}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 n=i?{width:i[3]-i[1],height:i[4]-i[2]}:void 0,s=n?this.renderer.getScale(n.width,n.height):this.getScaleFactor(),o=n?n.width:this.width,h=n?n.height:this.height,l=this.getRendererScreenPosition()?.width,u=this.world.width,d=l?l/u:1,c=this.options.maxUnderZoom,m=Math.max(d||1,this.options.maxOverZoom),b=1/e,w=s*b;if(b<1){let g=o*s,f=h*s,I=this.world.width/g,_=this.world.height/f;if(I>_){let S=this.world.width*w,p=~~(o*s)*c;S<p&&(e=this.world.width*s/(o*s*c))}else{let S=this.world.height*w,p=~~(h*s)*c;S<p&&(e=this.world.height*s/(h*s*c))}}else w>m&&(e=s/m);let x=(0,M.transform)(this.target,(0,M.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(x,{ref:!0,panPadding:100}),x}clampRegion({x:e,y:t,width:i,height:n,padding:s=0}){let o=this.width,h=this.height,l=i/o<n/h,u=e-s,d=t-s,c=i+s*2,m=n+s*2;if(l){let w=m/h*o;return{x:u-(w-c)/2,y:d,width:w,height:m}}let b=c/o*h;return{x:u,y:d-(b-m)/2,width:c,height:b}}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,n){let s=M.DnaFactory.singleBox(i,n,e,t);return(0,M.mutate)(s,(0,M.compose)((0,M.scale)(this.getScaleFactor()),(0,M.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,M.mutate)(this.target,(0,M.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 n=0;n<i;n++)this.hooks[e][n](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 xi=q(require("lru-cache"),1);var Wt=require("@atlas-viewer/dna");var Se=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Pe={},wn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],Nt=class extends W{constructor(){super();a(this,"id");a(this,"type","spacial-content");a(this,"isShape",!0);a(this,"points");a(this,"hoverEvents",!1);a(this,"activeEvents",!1);a(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,Wt.dna)(5)});a(this,"boundingBox",null);a(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});a(this,"hovering");a(this,"pressing");a(this,"props",{});a(this,"shape",{type:"none"});a(this,"addHover",()=>{this.hovering=!0,this.__revision++});a(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});a(this,"addPress",()=>{this.pressing=!0,this.__revision++});a(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ot(12),this.points=(0,Wt.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])),n=Math.min(...t.map(h=>h[1])),s=Math.max(0,...t.map(h=>h[0])),o=Math.max(0,...t.map(h=>h[1]));this.boundingBox={x:i,y:n,width:s-i,height:o-n};return}this.boundingBox=null}intersects(t){if(!t||this.shape.type==="none")return!1;let[i,n]=t,s=this.shape.points,o=this.boundingBox;if(o||(this.updateBoundingBox(),o=this.boundingBox),!o||i<o.x||i>o.x+o.width||n<o.y||n>o.height+o.y)return!1;let h=!1;for(let l=0,u=s.length-1;l<s.length;u=l++)s[l][1]>n!=s[u][1]>n&&i<(s[u][0]-s[l][0])*(n-s[l][1])/(s[u][1]-s[l][1])+s[l][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 n=!1,s=t.points.length;for(let o=0;o<s;o++)if(t.points[o][0]!==this.shape.points[o][0]||t.points[o][1]!==this.shape.points[o][1]){n=!0;break}n&&(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 n=t.border||t.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=Pe[n]||Se.exec(n)||Se.exec(n);s&&(this._parsed.border.id=n,this._parsed.border.match=Pe[n]=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=Pe[t.style.outline]||Se.exec(t.style.outline)||Se.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Pe[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 wn)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=Wt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Wt.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 vi=/(-?[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,wi={},xn=typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes("firefox"),Ee={};var Jt=class{constructor(e,t){a(this,"canvas");a(this,"ctx");a(this,"options");a(this,"imagesPending",0);a(this,"imagesLoaded",0);a(this,"imageIdsLoaded",[]);a(this,"frameIsRendering",!1);a(this,"pendingDrawCall",!1);a(this,"firstMeaningfulPaint",!1);a(this,"parallelTasks",8);a(this,"frameTasks",0);a(this,"loadingQueueOrdered",!0);a(this,"loadingQueue",[]);a(this,"currentTask",Promise.resolve());a(this,"tasksRunning",0);a(this,"stats");a(this,"averageJobTime",64);a(this,"lastKnownScale",1);a(this,"visible",[]);a(this,"previousVisible",[]);a(this,"rendererPosition");a(this,"dpi");a(this,"drawCalls",[]);a(this,"lastPaintedObject");a(this,"hostCache");a(this,"invalidated",[]);a(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--}))}});a(this,"_scheduled",0);a(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 xi.default({maxSize:1024*512*512,dispose:(i,n,s)=>{this.invalidated.push(n),i.width=0,i.height=0},sizeCalculation:(i,n)=>i.width*i.height}):{store:{},get(i){return this.store[i]},set(i,n){this.store[i]=n}}}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.min(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 n=this.getCanvasDims(),s=n.width/e,o=n.height/t,h=(s<o?o:s)*(i&&this.dpi||1);return Number.isNaN(h)||(this.lastKnownScale=h),this.lastKnownScale}beforeFrame(e,t,i,n){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),n.enableFilters&&(n.filters.brightness||n.filters.contrast||n.filters.grayscale||n.filters.invert||n.filters.sepia||n.filters.saturate||n.filters.hueRotate||n.filters.blur)){let o="";n.filters.brightness&&(o+=`brightness(${~~(100+n.filters.brightness*100)}%) `),n.filters.contrast&&(o+=`contrast(${~~(100+n.filters.contrast*100)}%) `),n.filters.grayscale&&(o+=`grayscale(${~~(n.filters.grayscale*100)}%) `),n.filters.invert&&(o+=`invert(${~~(n.filters.invert*100)}%) `),n.filters.sepia&&(o+=`sepia(${~~(n.filters.sepia*100)}%) `),n.filters.saturate&&(o+=`saturate(${~~(100+n.filters.saturate*100)}%) `),n.filters.hueRotate&&(o+=`hue-rotate(${n.filters.hueRotate}deg) `),n.filters.blur&&(o+=`blur(${n.filters.blur}px) `),this.ctx.filter=o}else this.ctx.filter="none"}applyTransform(e,t,i,n,s){let o=e.__owner.value;if(o&&o.rotation){this.ctx.save();let h=t+n/2,l=i+s/2;this.ctx.translate(h,l),this.ctx.rotate(o.rotation*Math.PI/180),this.ctx.translate(-h,-l),this.lastPaintedObject=o}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}paint(e,t,i,n,s,o){let h=this.ctx.globalAlpha;if(e instanceof H||e instanceof tt){if(e.display.rotation){this.ctx.save();let d=i+s/2,c=n+o/2;e.crop&&(d-=e.crop[t*5+1],c-=e.crop[t*5+2]),this.ctx.translate(d,c),this.ctx.rotate(e.display.rotation*Math.PI/180),this.ctx.translate(-d,-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 d=e.__host.canvas,c=this.getCanvasDims();if((d.indices.indexOf(t)===-1||this.invalidated.indexOf(d.canvases[t])!==-1)&&this.schedulePaintToCanvas(d,e,t,Rt({x:i+s/2,y:n+s/2},{x:c.width/2,y:c.height/2})),!this.firstMeaningfulPaint)return;let m=this.hostCache.get(d.canvases[t]);if(m)if(e.crop&&e.cropData){if(e.crop[t*5]){let b=[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];b[0]+=e.cropData.x/e.display.scale,b[1]+=e.cropData.y/e.display.scale;let w=e.x*this.lastKnownScale,P=e.y*this.lastKnownScale,x=[i+w,n+P,s,o];x[0]+=w,x[1]+=P,this.ctx.drawImage(m,b[0],b[1],b[2],b[3],x[0],x[1],x[2]+1,x[3]+1)}}else xn?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,n,s+1,o+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,n,s+Number.MIN_VALUE+.5,o+Number.MIN_VALUE+.5)}catch{}e.display.rotation&&this.ctx.restore()}let l=e instanceof rt&&this.options.box,u=e instanceof Nt&&this.options.polygon;if((l||u)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let d=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),c=e.props.relativeStyle?1:s/e.width;typeof d.opacity<"u"&&(this.ctx.globalAlpha=d.opacity);let m=0;typeof d.borderWidth<"u"&&(m=parseInt(d.borderWidth,10)*c);let b=0;typeof d.outlineWidth<"u"&&(b=parseInt(d.outlineWidth,10)*c);let w=0;if(typeof d.outlineOffset<"u"&&(w=parseInt(d.outlineOffset,10)*c),d.borderColor&&(this.ctx.strokeStyle=d.borderColor),d.boxShadow){let P=d.boxShadow.split(/,(?![^(]*\))/);for(let x of P){let g=wi[x]||vi.exec(x)||vi.exec(x);wi[x]=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,n+m,s,o),this.ctx.restore())}}if(this.ctx.fillStyle=d.backgroundColor||"transparent",this.ctx.lineWidth=m,u){let P=e.shape,x=P.points||[],g=x.length;this.ctx.beginPath();for(let f=0;f<g;f++)this.ctx.lineTo(i+x[f][0]*this.lastKnownScale,n+x[f][1]*this.lastKnownScale);P.open||this.ctx.closePath(),m&&this.ctx.stroke(),P.open||this.ctx.fill()}else m&&this.ctx.strokeRect(i+m/2,n+m/2,s+m,o+m),this.ctx.fillRect(i+m,n+m,s,o);b&&(d.outlineColor&&(this.ctx.strokeStyle=d.outlineColor),this.ctx.lineWidth=b,this.ctx.strokeRect(i-b/2-w,n-b/2-w,s+m*2+b+w*2,o+m*2+b+w*2))}this.ctx.globalAlpha=h}}loadImage(e,t,i,n=!1){if(Ee[e]&&Ee[e].naturalWidth>0){t(Ee[e]);return}try{let s=!1;n||setTimeout(()=>{s||this.loadImage(e,t,i,!0)},3e3);let o=document.createElement("img");o.decoding="auto",o.onload=function(){s=!0,t(o),Ee[e]=o,o.onload=null},this.options.crossOrigin&&(o.crossOrigin="anonymous"),o.src=e,o.complete&&o.onload({}),o.width}catch(s){console.log("image error",s),i(s)}}schedulePaintToCanvas(e,t,i,n){this.imagesPending++,e.indices.push(i);let s=`${t.id}--${t.display.scale}-${i}`,o=this.invalidated.indexOf(s);o!==-1&&this.invalidated.splice(o,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:n,task:()=>new Promise(h=>{if(this.visible.indexOf(t)===-1){this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),h();return}let l=t.getImageUrl(i);this.loadImage(l,u=>{this.loadingQueue.push({id:s,scale:t.display.scale,distance:n,task:()=>new Promise(d=>{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"),b=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(()=>{b.drawImage(u,0,0,c[3]-c[1],c[4]-c[2]),d()})})}),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 tt)&&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,n){return e.getPointsAt(t,i,n)}getViewportBounds(e,t,i){let n=e.getActiveZone();if(n){let s=t[3]-t[1]<n.points[3]-n.points[1],o=t[4]-t[2]<n.points[4]-n.points[2];return{x1:s?n.points[1]-i:n.points[1]+(n.points[3]-n.points[1])/2-(t[3]-t[1])/2,y1:o?n.points[2]-i:n.points[2]+(n.points[4]-n.points[2])/2-(t[4]-t[2])/2,x2:s?n.points[3]+i:n.points[1]+(n.points[3]-n.points[1])/2-(t[3]-t[1])/2,y2:o?n.points[4]+i:n.points[2]+(n.points[4]-n.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 Tt=class{constructor(e){a(this,"renderers",[]);a(this,"length");for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,i,n){for(let s=0;s<this.length;s++)this.renderers[s].afterFrame(e,t,i,n)}afterPaintLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].afterPaintLayer(e,t)}beforeFrame(e,t,i,n){for(let s=0;s<this.length;s++)this.renderers[s].beforeFrame(e,t,i,n)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,i,n){return this.renderers[0].getPointsAt(e,t,i,n)}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,n,s,o){for(let h=0;h<this.length;h++)this.renderers[h].paint(e,t,i,n,s,o)}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 Ce=require("@atlas-viewer/dna");var te=class{constructor(e){a(this,"canvas");a(this,"context");a(this,"heightRatio",1);a(this,"widthRatio",1);a(this,"target",new Float32Array(5));a(this,"initialWidth");a(this,"initialHeight");a(this,"bounds");a(this,"aggregate");a(this,"delta",0);a(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,Ce.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 n=this.initialWidth/e.width,s=this.initialHeight/e.height,o=this.widthRatio>this.heightRatio?n:s;if(this.target=i,this.bounds){let h=e.getPointsAt(this.bounds,this.aggregate,o);for(let[l,u]of h)if(l instanceof H&&l.__host.canvas){let d=u.length/5;for(let c=0;c<d;c++)if(l.__host.canvas.canvases[c]){let b={x1:u[c+1]*o,y1:u[c+2]*o,width:(u[c+3]-u[c+1])*o,height:(u[c+4]-u[c+2])*o}}}}e.getPoints().forEach((h,l,u)=>{if(l%5===0&&h){let d={x1:u[l+1]*o,y1:u[l+2]*o,x2:u[l+3]*o,y2:u[l+4]*o,width:(u[l+3]-u[l+1])*o,height:(u[l+4]-u[l+2])*o};this.context.strokeStyle="red",this.context.strokeRect(d.x1,d.y1,d.width,d.height)}}),i&&(this.context.strokeStyle="red",this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(i[1]*o,i[2]*o,(i[3]-i[1])*o,(i[4]-i[2])*o))}}getActiveZone(e){return null}getPointsAt(e,t,i,n){return e.getPointsAt(t,i,n)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=Ce.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,i,n,s,o){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 je=class{constructor(){a(this,"autoWidth",!1);a(this,"autoHeight",!0);a(this,"width");a(this,"height");a(this,"world");a(this,"content",[]);a(this,"viewingDirection","left-to-right");a(this,"rows");a(this,"columns",4);a(this,"spacing",20);a(this,"reversed",!1);a(this,"padding",20);this.world=et.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:n}=t(),s=this.autoWidth?-1:this.width-this.padding*2,o=this.autoWidth?-1:(s-this.spacing*(i-1))/i;if(this.autoHeight&&!this.autoWidth){let h=0,l=this.padding;for(let u=0;u<n&&h!==e;u++){let d=0,c=[];for(let m=0;m<i;m++){let b=this.reversed?e-h:h;if(h===e)break;let w=this.content[b],P=w.width,x=w.width/w.height,g=o/x;c.push([h,o,g,o/P]),g>d&&(d=g),h++}for(let m=0;m<i&&c[m];m++){let b=this.world.getPoints(),w=c[m][0],P=c[m][1],x=c[m][2],g=c[m][3],f=this.padding+m*(this.spacing+P),I=l+(d-x)/2,_=this.reversed?e-w:w,S=b[_*5+1],v=b[_*5+2];this.world.scaleWorldObject(w,g),(S!==f||v!==I)&&this.world.translateWorldObject(_,f-S,I-v)}l+=d+this.spacing}this.height=l+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};var Pi=q(require("normalize-wheel"),1);var Q=require("@atlas-viewer/dna");function Si(r){return{x:r[1],y:r[2],width:r[3]-r[1],height:r[4]-r[2]}}var Ei={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:!1,onPanInSketchMode:()=>{}},ee=(r={})=>({start:function(e){let{zoomWheelConstant:t,enableWheel:i,enableClickToZoom:n}={...Ei,...r},s={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","onPointerUp","onPointerDown","onPointerMove");let o=[],h=[],l=-1;function u(p){for(let E=0;E<o.length;E++)if(o[E].pointerId==p.pointerId){o.splice(E,1),h.splice(E,1);break}}function d(p){o.push(p),h.push({...p.atlas||{}})}function c(p){for(let E=0;E<o.length;E++)if(p.pointerId==o[E].pointerId){o[E]=p,h[E]={...p.atlas||{}};break}if(o.length==2){let E=Math.abs(o[0].clientX-o[1].clientX),O=h[0].x>h[1].x?h[0].x-h[1].x:h[1].x-h[0].x,L=h[0].y>h[1].y?h[0].y-h[1].y:h[1].y-h[0].y;l>0&&(E>l&&e.world.zoomTo(.95,{x:O/2,y:L/2},!0),E<l&&e.world.zoomTo(1.05,{x:O/2,y:L/2},!0)),l=E}}function m(p){u(p),o.length<2&&(l=-1)}function b(){e.world.constraintBounds(),x=0}function w(p){if(p.which>1){s.isPressing=!1;return}e.mode==="explore"&&(p.preventDefault(),s.pointerStart.x=p.atlas.x,s.pointerStart.y=p.atlas.y,e.transitionManager.stopTransition(),s.isPressing=!0)}function P(){s.isPressing&&(e.mode==="explore"&&e.world.constraintBounds(),s.isPressing=!1)}let x=0;function g(p){if(e.mode==="explore"){if(p.atlasTouches.length===1&&(p.preventDefault(),s.pointerStart.x=p.atlasTouches[0].x,s.pointerStart.y=p.atlasTouches[0].y),p.atlasTouches.length===2){p.preventDefault();let E=p.atlasTouches[0].x,O=p.atlasTouches[1].x;s.pointerStart.x=(E+O)/2;let L=p.atlasTouches[0].y,k=p.atlasTouches[1].y;s.pointerStart.y=(L+k)/2,x=Rt({x:p.touches[0].clientX,y:p.touches[0].clientY},{x:p.touches[1].clientX,y:p.touches[1].clientY})}e.transitionManager.stopTransition(),s.isPressing=!0}}function f(p){let E=null,O=null,L=!1,k=0;if(s.isPressing&&p.touches.length===2){let $=p.touches[0].clientX,kt=p.touches[1].clientX;E=($+kt)/2;let Dt=p.touches[0].clientY,Vt=p.touches[1].clientY;O=(Dt+Vt)/2,k=Rt({x:p.touches[0].clientX,y:p.touches[0].clientY},{x:p.touches[1].clientX,y:p.touches[1].clientY}),L=!0}if(s.isPressing&&p.touches.length===1){let $=p.touches[0];E=$.clientX,O=$.clientY}if(E!==null&&O!==null){let $=e.getRendererScreenPosition();if($){let{x:kt,y:Dt}=e.viewerToWorld(E-$.x,O-$.y),Vt=k&&x?k/x:1;e.transitionManager.customTransition(V=>{V.from=(0,Q.dna)(e.target),V.to=(0,Q.transform)(V.from,(0,Q.compose)((0,Q.translate)(s.pointerStart.x-kt,s.pointerStart.y-Dt),(0,Q.scaleAtOrigin)(1/Vt,kt,Dt)),s.mousemoveBuffer),V.elapsed_time=0,V.total_time=0,V.timingFunction=st.easeInOutExpo,V.done=!1})}x=k}}function I(p){if(s.isPressing){let E=e.getRendererScreenPosition();if(E){let{x:O,y:L}=e.viewerToWorld(p.clientX-E.x,p.clientY-E.y);e.transitionManager.customTransition(k=>{k.from=(0,Q.dna)(e.target),k.to=(0,Q.transform)(k.from,(0,Q.translate)(s.pointerStart.x-O,s.pointerStart.y-L),s.mousemoveBuffer),k.elapsed_time=0,k.total_time=0,k.timingFunction=st.easeInOutExpo,k.done=!1})}}}function _(p){e.mode==="explore"&&e.world.zoomIn(p.atlas)}function S(p){let O=1+(0,Pi.default)(p).spinY/t;e.world.zoomTo(O,p.atlas,!0)}e.world.addEventListener("mouseup",b),e.world.addEventListener("touchend",b),e.world.addEventListener("touchstart",g),e.world.addEventListener("mousedown",w),window.addEventListener("touchend",P),window.addEventListener("mouseup",P),window.addEventListener("mousemove",I),window.addEventListener("touchmove",f),n&&(e.world.activatedEvents.push("onClick"),e.world.addEventListener("click",_)),i&&(e.world.activatedEvents.push("onWheel"),e.world.addEventListener("wheel",S));let v=e.world.addLayoutSubscriber((p,E)=>{if(p==="zone-changed"&&e.transitionManager.constrainBounds({transition:{duration:0}}),p==="zoom-to"&&E&&e.transitionManager.zoomTo(E.factor,{origin:E.point,stream:E.stream}),p==="go-home"){let O=E.immediate?{duration:0}:void 0;e.transitionManager.goToRegion(Si(e.homePosition),{transition:O})}if(p==="goto-region"&&E){let O=E.immediate?{duration:0}:{};e.transitionManager.goToRegion(E,{transition:O})}p==="constrain-bounds"&&e.transitionManager.constrainBounds({transition:E?.immediate?{duration:0}:void 0})});return()=>{e.world.removeEventListener("mouseup",b),e.world.removeEventListener("touchend",b),e.world.removeEventListener("touchstart",g),e.world.removeEventListener("mousedown",w),window.removeEventListener("touchend",P),window.removeEventListener("mouseup",P),e.world.removeEventListener("mousemove",I),e.world.removeEventListener("touchmove",I),n&&e.world.removeEventListener("click",_),i&&e.world.removeEventListener("wheel",S),v()}},updatePosition(){}});var F=require("react");var Re=q(require("react"),1),Ci=require("react/jsx-runtime"),dt=Re.default.createContext("explore");dt.displayName="Mode";var ie=()=>(0,Re.useContext)(dt);function Sn(r){return(0,Ci.jsx)(dt.Provider,{value:r.mode,children:r.children})}var Wi=q(require("react-use-measure"),1);var Ue=q(require("react"),1),ct=Ue.default.createContext(null);ct.displayName="Atlas";var Pt=Ue.default.createContext(null);Pt.displayName="Bounds";var ut=q(require("react"),1);var _i=q(require("react-reconciler"),1);var ne,Pn=typeof performance=="object"&&typeof performance.now=="function";if(Pn){let r=performance;ne=()=>r.now()}else{let r=Date,e=r.now();ne=()=>r.now()-e}var Oi=require("react");var En=16;function Ri(r,e){r&&r.appendChild&&e&&r.appendChild(e)}function Ai(r,e){r&&r.removeChild&&e&&r.removeChild(e)}function Cn(r,e){return Ai(r.world,e)}function Rn(r,e,t){return Mi(r.world,e,t)}function Mi(r,e,t){r&&r instanceof lt&&(r=r.world),r&&r.insertBefore&&r.insertBefore(e,t)}function $e(r,e,t){if(t&&(r.applyProps&&r.applyProps(t),r instanceof W))for(let i of Ft){let n=i.slice(2).toLowerCase();t[i]!==e[i]&&(e[i]&&r.removeEventListener(n,e[i]),r.addEventListener(n,t[i]))}}function Ve(r,e){let t=Object.keys(e),i=!1;for(let n of t)if(Ft.indexOf(n)!==-1){let s=nt[n];if(s){if(r.activatedEvents.indexOf(s)!==-1)continue;i=!0,r.activatedEvents.push(s)}}i&&r.triggerEventActivation()}var Te=new Map,Ti={};function Tn(r,{args:e=[],...t},i,n,s){if(!(i instanceof lt)&&s){let l=u=>u.return?l(u.return):u.stateNode&&u.stateNode.containerInfo;i=l(s)}let o,h=i.world;switch(r){case"world":o=et.withProps({width:t.width,height:t.height,viewingDirection:"left-to-right"}),o.activatedEvents=h.activatedEvents,o.eventHandlers=h.eventHandlers,o.subscriptions=h.subscriptions,o.triggerEventActivation(),h=o;break;case"box":o=new rt;break;case"shape":o=new Nt;break;case"worldObject":case"world-object":o=new ht;break;case"worldImage":case"world-image":o=new H;break;case"texture":o=new xt;break;case"compositeImage":case"composite-image":o=new Zt({id:t.id,width:t.width,height:t.height,images:[],renderOptions:t.renderOptions});break;case"tiledImage":case"tiled-image":o=tt.fromTile(t.uri,t.display,t.tile,t.scaleFactor,void 0,t.format);break;case"paragraph":o=new pt,o.text=t.children;break;default:return}return Ve(h,t),$e(o,{},t),o}function _n(r,e){if(e instanceof et)r.world=e;else if(e instanceof ht)r.world.appendChild(e);else if(e)throw new Error("Invalid root")}var re=(0,_i.default)({unstable_now:ne,now:ne,createInstance:Tn,removeChild:Ai,appendChild:Ri,appendInitialChild:Ri,insertBefore:Mi,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:_n,removeChildFromContainer:Cn,createTextInstance(){},insertInContainerBefore:Rn,prepareUpdate(r,e,t,i,n){return Ve(n.world,i),i},commitUpdate(r,e,t,i,n,s){r.applyProps&&e&&$e(r,i,e)},finalizeInitialChildren(r){return r?.__handlers},getChildHostContext(){return Ti},getRootHostContext(){return Ti},prepareForCommit(r){return r.isCommitting=!0,null},preparePortalMount(){},hideInstance(r){r&&r.points&&(r.points[0]=0)},unhideInstance(r,e){r&&r.points&&(r.points[0]=1)},getPublicInstance(r){return r},hideTextInstance(){throw new Error("Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.")},resetAfterCommit(r){r.isCommitting=!1,r.pendingUpdate=!0,r.world&&r.world.needsRecalculate&&(r.world.recalculateWorldSize(),r.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(r){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return console.log("getCurrentEventPriority"),En},getInstanceFromNode(r){throw console.log("getInstanceFromNode",r),new Error("Not implemented")},getInstanceFromScope(r){throw console.log("getInstanceFromScope",r),new Error("Not implemented")},prepareScopeUpdate(r,e){throw console.log("prepareScopeUpdate",r,e),new Error("Not implemented")},logRecoverableError(){},requestPostPaintCallback(){}});re.injectIntoDevTools({bundleType:0,version:Oi.version,rendererPackageName:"@atlas-viewer/atlas"});function zt(r,e){let t=Te.get(r);t&&re.updateContainer(null,t,null,()=>{Te.delete(r),e&&e(r)})}var Ht={render(r,e){let t=Te.get(e);if(t)re.updateContainer(r,t,null);else{let i=re.createContainer(e,0,null,!1,null,"",()=>{},null);re.updateContainer(r,i,null),Te.set(e,i)}},unmountComponentAtNode(r,e){zt(r,e)}};var _e=q(require("react"),1),K=typeof window<"u"&&(window.document?.createElement||window.navigator?.product==="ReactNative")?_e.useLayoutEffect:_e.useEffect;var jt=require("react/jsx-runtime"),Ii=ut.default.memo(({children:r,setIsReady:e,onCreated:t,bounds:i,preset:n,mode:s="explore"})=>{let o=(0,ut.useCallback)(function(l){let u=(0,ut.useRef)(!1),d=()=>{e(!0)};return(0,ut.useEffect)(()=>{if(n&&!u.current){n.runtime.goHome();let c=t&&t(n);return void(c&&c.then?c.then(d):d())}return()=>{}},[]),(0,ut.useEffect)(()=>{u.current=!0},[]),l.children},[n]);return K(()=>{if(n){let h=n.runtime;s!==h.mode&&(h.mode=s),Ht.render((0,jt.jsx)(ut.default.StrictMode,{children:(0,jt.jsx)(o,{children:(0,jt.jsx)(Pt.Provider,{value:i,children:(0,jt.jsx)(dt.Provider,{value:s,children:(0,jt.jsx)(ct.Provider,{value:n,children:r})})})})}),h)}},[n,s,r]),K(()=>{if(n){let h=n.runtime;return()=>{Ht.unmountComponentAtNode(h)}}return()=>{}},[n]),null});var se=class{constructor(e,t){a(this,"canvas");a(this,"gl");a(this,"program");a(this,"fragmentShader");a(this,"vertexShader");a(this,"rectBuffer");a(this,"fragmentShaderSource",`
2
2
  precision mediump float;
3
3
 
4
4
  uniform sampler2D u_image;
@@ -7,7 +7,7 @@
7
7
  void main() {
8
8
  gl_FragColor = texture2D(u_image, v_texCoord);
9
9
  }
10
- `);h(this,"vertexShaderSource",`
10
+ `);a(this,"vertexShaderSource",`
11
11
  attribute vec2 a_position;
12
12
  uniform vec2 u_resolution;
13
13
  varying vec4 v_color;
@@ -31,14 +31,14 @@
31
31
 
32
32
  v_texCoord = a_texCoord;
33
33
  }
34
- `);h(this,"attributes");h(this,"uniforms");h(this,"buffers");h(this,"rendererPosition");h(this,"dpi");h(this,"lastResize",0);h(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 tt)&&this.createImageHost(e),e instanceof xt&&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 n;if(e instanceof xt){let s=e.getTexture();s.source&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,s.source),n=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:n}}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,n)=>{let s=this.gl,o=this.gl.createTexture();s.bindTexture(s.TEXTURE_2D,o),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,n),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]=o,e.__host.webgl.loaded.push(i)}}}paint(e,t,i,n,s,o){if(e.type==="spacial-content"&&e.__host&&e.__host.webgl){if(e.getTexture){let l=e?.getTexture();if(l&&e.__host.webgl.lastImage!==l.hash&&l.source&&!e.__host.webgl.error)try{let d=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,d,c,m,l.source),e.__host.webgl.lastImage=l.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 l=document.createElement("img");l.decoding="async",l.crossOrigin="anonymous",l.src=e.getImageUrl(t),l.onload=()=>(l.onload=null,e.__host.webgl.onLoad(t,l))}let a=e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures[t];a&&(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,a),this.gl.uniform1i(this.uniforms.texture,0),this.setRectangle(i,n,s,o),this.gl.drawArrays(this.gl.TRIANGLES,0,6))}}afterPaintLayer(e,t){}pendingUpdate(){return!0}getPointsAt(e,t,i,n){return e.getPointsAt(t,i,n)}afterFrame(){}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let n=this.getCanvasDims(),s=n.width/e,o=n.height/t,a=(s<o?o:s)*(i&&this.dpi||1);return Number.isNaN(a)||(this.lastKnownScale=a),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,n=e.width!==t||e.height!==i;return n&&(e.width=t,e.height=i),n}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,n){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,i,n),this.gl.STATIC_DRAW)}getRectangle(e,t,i,n){let s=e,o=e+i,a=t,l=t+n;return this.rectBuffer.set([s,a,o,a,s,l,s,l,o,a,o,l]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}};function oe(r,e){let t=e?r:JSON.stringify(r),i=5381,n=t.length;for(;n;)i=i*33^t.charCodeAt(--n);let o=(i>>>0).toString(16);return o.length%2?"0"+o:o}var Ut=class{constructor(e){h(this,"$element");h(this,"stylesheetClasses");h(this,"activeStylesheetClasses");h(this,"sheetsDidUpdate");h(this,"sheetPrefix");h(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+oe(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+oe(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 _t=class{constructor(e,t){h(this,"htmlContainer");h(this,"visible",[]);h(this,"previousVisible",[]);h(this,"htmlIds",[]);h(this,"firstMeaningfulPaint",!1);h(this,"rendererPosition");h(this,"stylesheet");h(this,"options");h(this,"paintTx",1);h(this,"zIndex",0);h(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 Ut({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
34
+ `);a(this,"attributes");a(this,"uniforms");a(this,"buffers");a(this,"rendererPosition");a(this,"dpi");a(this,"lastResize",0);a(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 tt)&&this.createImageHost(e),e instanceof xt&&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 n;if(e instanceof xt){let s=e.getTexture();s.source&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,s.source),n=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:n}}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,n)=>{let s=this.gl,o=this.gl.createTexture();s.bindTexture(s.TEXTURE_2D,o),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,n),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]=o,e.__host.webgl.loaded.push(i)}}}paint(e,t,i,n,s,o){if(e.type==="spacial-content"&&e.__host&&e.__host.webgl){if(e.getTexture){let l=e?.getTexture();if(l&&e.__host.webgl.lastImage!==l.hash&&l.source&&!e.__host.webgl.error)try{let d=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,d,c,m,l.source),e.__host.webgl.lastImage=l.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 l=document.createElement("img");l.decoding="async",l.crossOrigin="anonymous",l.src=e.getImageUrl(t),l.onload=()=>(l.onload=null,e.__host.webgl.onLoad(t,l))}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,n,s,o),this.gl.drawArrays(this.gl.TRIANGLES,0,6))}}afterPaintLayer(e,t){}pendingUpdate(){return!0}getPointsAt(e,t,i,n){return e.getPointsAt(t,i,n)}afterFrame(){}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let n=this.getCanvasDims(),s=n.width/e,o=n.height/t,h=(s<o?o: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,n=e.width!==t||e.height!==i;return n&&(e.width=t,e.height=i),n}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,n){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,i,n),this.gl.STATIC_DRAW)}getRectangle(e,t,i,n){let s=e,o=e+i,h=t,l=t+n;return this.rectBuffer.set([s,h,o,h,s,l,s,l,o,h,o,l]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}};function oe(r,e){let t=e?r:JSON.stringify(r),i=5381,n=t.length;for(;n;)i=i*33^t.charCodeAt(--n);let o=(i>>>0).toString(16);return o.length%2?"0"+o:o}var Ut=class{constructor(e){a(this,"$element");a(this,"stylesheetClasses");a(this,"activeStylesheetClasses");a(this,"sheetsDidUpdate");a(this,"sheetPrefix");a(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+oe(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+oe(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 _t=class{constructor(e,t){a(this,"htmlContainer");a(this,"visible",[]);a(this,"previousVisible",[]);a(this,"htmlIds",[]);a(this,"firstMeaningfulPaint",!1);a(this,"rendererPosition");a(this,"stylesheet");a(this,"options");a(this,"paintTx",1);a(this,"zIndex",0);a(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 Ut({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
- `),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 n=e.__host.element,s=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?n.style.pointerEvents="all":s.push(this.classes.interactive):this.options.inlineStyles?n.style.pointerEvents="none":s.push(this.classes.nonInteractive),e.props.href){n.style.display="block",n.href=e.props.href;let l=e.props.hrefTarget||"_blank";n.target=l,l!=="_self"?n.rel="noopener noreferrer":n.rel=""}else n.href&&n.removeAttribute("href");if(e.props.title&&(n.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?(n.style.width=`${t||e.width}px`,n.style.height=`${i||e.height}px`):(n.style.width=`${e.width}px`,n.style.height=`${e.height}px`),e.props.style){Object.assign(n.style,e.props.style||{},e.hovering?e.props.hoverStyles||{}:{},e.pressing?e.props.pressStyles||{}:{});return}if(this.options.text&&e instanceof pt){e.text&&(n.innerText=e.text),e.backgroundColor&&(n.style.backgroundColor=e.backgroundColor),e.color&&(n.style.color=e.color),e.props.font&&(n.style.font=e.props.font),e.props.textAlign&&(n.style.textAlign=e.props.textAlign),e.__host.revision=e.__revision;let l=s.join(" ");n.className=l,n.part=l}e instanceof rt&&(this.options.box||e.props.className||e.props.html)&&(e.props.backgroundColor&&(n.style.backgroundColor=e.props.backgroundColor),e.props.border!==n.style.border&&(n.style.border=e.props.border));let a=s.join(" ");n.className=a,n.part=a}}afterFrame(e,t,i){this.stylesheet.updateSheet();for(let n of this.previousVisible)this.visible.indexOf(n)===-1&&this.htmlContainer&&n.__id&&this.htmlIds.indexOf(n.__id)!==-1&&this.htmlContainer.removeChild(n.__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,n){return e.getPointsAt(t,i,n)}getScale(e,t){let i=this.rendererPosition.width/e,n=this.rendererPosition.height/t;return i<n?n:i}getViewportBounds(e,t,i){return null}isReady(){return!1}paint(e,t,i,n,s,o){if(this.zIndex++,(this.options.text&&e instanceof pt||e instanceof rt&&(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,o);let a=s/e.width,l=e.__host.element;l.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?l.style.transform=`translate(${Math.round(i)}px, ${Math.round(n)}px)`:l.style.transform=`translate(${Math.round(i)}px, ${Math.round(n)}px) scale(${a})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(l),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof pt||e instanceof rt)&&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 $t=class $t{constructor(e,t,i){h(this,"element");h(this,"runtime");h(this,"unsubscribe");h(this,"activatedEvents",[]);h(this,"eventHandlers",[]);h(this,"bounds");h(this,"pointerMoveEvent");h(this,"pointerEventState",{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]});h(this,"options");h(this,"_realPointerMove",e=>{this.pointerMoveEvent=e});h(this,"onWheelEvent",e=>{e.preventDefault(),this.onPointerEvent(e)});h(this,"onTouchEvent",e=>{let t=nt[e.type],i=[],n=e.touches.length;for(let s=0;s<n;s++){let o=e.touches.item(s);if(!o)continue;let{x:a,y:l}=this.runtime.viewerToWorld(o.clientX-this.bounds.left,o.clientY-this.bounds.top),u={id:o.identifier,x:a,y:l};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=[])});h(this,"onPointerEvent",e=>{let t=nt[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:i,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,i,n),this.runtime.world.propagatePointerEvent(t,e,i,n)}});h(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)});h(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)});h(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 n=this.runtime.world.propagatePointerEvent("onMouseMove",e,t,i),s=[],o=[];for(let a of n)s.push(a.id),o.push(a),this.pointerEventState.mousedOver.indexOf(a)===-1&&(a.dispatchEvent("onMouseEnter",e),a.dispatchEvent("onPointerEnter",e),a.dispatchEvent("onMouseOver",e),a.dispatchEvent("onPointerOver",e));for(let a of this.pointerEventState.mousedOver)s.indexOf(a.id)===-1&&(a.dispatchEvent("onMouseLeave",e),a.dispatchEvent("onPointerLeave",e),a.dispatchEvent("onMouseOut",e),a.dispatchEvent("onPointerOut",e));if(this.pointerEventState.isDragging)for(let a of this.pointerEventState.itemsBeingDragged)a.dispatchEvent("onDrag",e);if(this.pointerEventState.isPressed&&!this.pointerEventState.isDragging&&Rt(this.pointerEventState.mouseDownStart,{x:e.clientX,y:e.clientY})>50){let a=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:a.x,y:a.y}},a.x,a.y)}this.pointerEventState.mousedOver=o});this.element=e,this.runtime=t,this.unsubscribe=t.world.addLayoutSubscriber(this.layoutSubscriber.bind(this)),this.bounds=e.getBoundingClientRect(),this.options={simulationRate:0,...i||{}};let n=0;t.registerHook("useFrame",s=>{n+=s,n>this.options.simulationRate&&this.pointerMoveEvent&&(n=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.activateEvents()}assignToEvent(e,t,i){$t.eventPool.atlas.x=t,$t.eventPool.atlas.y=i,e.atlas=$t.eventPool.atlas}activateEvents(){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.unsubscribe();for(let[e,t]of this.eventHandlers)this.element.removeEventListener(this.normalizeEventName(e),t)}};h($t,"eventPool",{atlas:{x:0,y:0}});var Ot=$t;function ae({interactive:r=!0,viewport:e,forceRefresh:t,canvasElement:i,overlayElement:n,controllerConfig:s,unstable_webglRenderer:o,dpi:a,debug:l,canvasBox:u=!0,polygon:d=!0,navigatorElement:c,background:m,runtimeOptions:b}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let w=r?ee({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,...s||{}}):void 0,P=new Tt([o?new se(i,{dpi:a}):new Jt(i,{dpi:a,debug:l,box:u,polygon:d,background:m}),n?new _t(n,{box:o||!u,text:!0,triggerResize:t}):void 0,c?new te(c):void 0]),x=new lt(P,new et(1024,1024),e,w?[w]:[],b),f=new Ot(i,x);return{name:"default-preset",em:f,runtime:x,renderer:P,controller:w,canvas:i,navigator:c,unmount(){zt(x),x.stopControllers(),x.stop(),x.reset(),f&&f.stop()}}}var Et=1+Number.MIN_VALUE,he=class{constructor(e,t){h(this,"container");h(this,"width");h(this,"height");h(this,"pending",!0);h(this,"options");h(this,"stylesheet");h(this,"zIndex",0);h(this,"lastKnownScale",1);h(this,"rendererPosition");h(this,"currentlyVisible",[]);h(this,"previouslyVisible",[]);this.container=e,this.rendererPosition=e.getBoundingClientRect();let{width:i,height:n}=this.rendererPosition;this.width=i,this.height=n,this.options={addPart:!1,setDraggableFalse:!1,imageClass:"",widthStylesheet:!1,sheetPrefix:"position-",background:"#000",...t||{}},this.stylesheet=new Ut({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
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 n=e.__host.element,s=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?n.style.pointerEvents="all":s.push(this.classes.interactive):this.options.inlineStyles?n.style.pointerEvents="none":s.push(this.classes.nonInteractive),e.props.href){n.style.display="block",n.href=e.props.href;let l=e.props.hrefTarget||"_blank";n.target=l,l!=="_self"?n.rel="noopener noreferrer":n.rel=""}else n.href&&n.removeAttribute("href");if(e.props.title&&(n.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?(n.style.width=`${t||e.width}px`,n.style.height=`${i||e.height}px`):(n.style.width=`${e.width}px`,n.style.height=`${e.height}px`),e.props.style){Object.assign(n.style,e.props.style||{},e.hovering?e.props.hoverStyles||{}:{},e.pressing?e.props.pressStyles||{}:{});return}if(this.options.text&&e instanceof pt){e.text&&(n.innerText=e.text),e.backgroundColor&&(n.style.backgroundColor=e.backgroundColor),e.color&&(n.style.color=e.color),e.props.font&&(n.style.font=e.props.font),e.props.textAlign&&(n.style.textAlign=e.props.textAlign),e.__host.revision=e.__revision;let l=s.join(" ");n.className=l,n.part=l}e instanceof rt&&(this.options.box||e.props.className||e.props.html)&&(e.props.backgroundColor&&(n.style.backgroundColor=e.props.backgroundColor),e.props.border!==n.style.border&&(n.style.border=e.props.border));let h=s.join(" ");n.className=h,n.part=h}}afterFrame(e,t,i){this.stylesheet.updateSheet();for(let n of this.previousVisible)this.visible.indexOf(n)===-1&&this.htmlContainer&&n.__id&&this.htmlIds.indexOf(n.__id)!==-1&&this.htmlContainer.removeChild(n.__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,n){return e.getPointsAt(t,i,n)}getScale(e,t){let i=this.rendererPosition.width/e,n=this.rendererPosition.height/t;return i<n?n:i}getViewportBounds(e,t,i){return null}isReady(){return!1}paint(e,t,i,n,s,o){if(this.zIndex++,(this.options.text&&e instanceof pt||e instanceof rt&&(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,o);let h=s/e.width,l=e.__host.element;l.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?l.style.transform=`translate(${Math.round(i)}px, ${Math.round(n)}px)`:l.style.transform=`translate(${Math.round(i)}px, ${Math.round(n)}px) scale(${h})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(l),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof pt||e instanceof rt)&&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 $t=class $t{constructor(e,t,i){a(this,"element");a(this,"runtime");a(this,"unsubscribe");a(this,"activatedEvents",[]);a(this,"eventHandlers",[]);a(this,"bounds");a(this,"pointerMoveEvent");a(this,"pointerEventState",{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]});a(this,"options");a(this,"_realPointerMove",e=>{this.pointerMoveEvent=e});a(this,"onWheelEvent",e=>{e.preventDefault(),this.onPointerEvent(e)});a(this,"onTouchEvent",e=>{let t=nt[e.type],i=[],n=e.touches.length;for(let s=0;s<n;s++){let o=e.touches.item(s);if(!o)continue;let{x:h,y:l}=this.runtime.viewerToWorld(o.clientX-this.bounds.left,o.clientY-this.bounds.top),u={id:o.identifier,x:h,y:l};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=[])});a(this,"onPointerEvent",e=>{let t=nt[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:i,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,i,n),this.runtime.world.propagatePointerEvent(t,e,i,n)}});a(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)});a(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)});a(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 n=this.runtime.world.propagatePointerEvent("onMouseMove",e,t,i),s=[],o=[];for(let h of n)s.push(h.id),o.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&&Rt(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=o});this.element=e,this.runtime=t,this.unsubscribe=t.world.addLayoutSubscriber(this.layoutSubscriber.bind(this)),this.bounds=e.getBoundingClientRect(),this.options={simulationRate:0,...i||{}};let n=0;t.registerHook("useFrame",s=>{n+=s,n>this.options.simulationRate&&this.pointerMoveEvent&&(n=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.activateEvents()}assignToEvent(e,t,i){$t.eventPool.atlas.x=t,$t.eventPool.atlas.y=i,e.atlas=$t.eventPool.atlas}activateEvents(){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.unsubscribe();for(let[e,t]of this.eventHandlers)this.element.removeEventListener(this.normalizeEventName(e),t)}};a($t,"eventPool",{atlas:{x:0,y:0}});var Ot=$t;function ae({interactive:r=!0,viewport:e,forceRefresh:t,canvasElement:i,overlayElement:n,controllerConfig:s,unstable_webglRenderer:o,dpi:h,debug:l,canvasBox:u=!0,polygon:d=!0,navigatorElement:c,background:m,runtimeOptions:b}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let w=r?ee({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,...s||{}}):void 0,P=new Tt([o?new se(i,{dpi:h}):new Jt(i,{dpi:h,debug:l,box:u,polygon:d,background:m}),n?new _t(n,{box:o||!u,text:!0,triggerResize:t}):void 0,c?new te(c):void 0]),x=new lt(P,new et(1024,1024),e,w?[w]:[],b),g=new Ot(i,x);return{name:"default-preset",em:g,runtime:x,renderer:P,controller:w,canvas:i,navigator:c,unmount(){zt(x),x.stopControllers(),x.stop(),x.reset(),g&&g.stop()}}}var Et=1+Number.MIN_VALUE,he=class{constructor(e,t){a(this,"container");a(this,"width");a(this,"height");a(this,"pending",!0);a(this,"options");a(this,"stylesheet");a(this,"zIndex",0);a(this,"lastKnownScale",1);a(this,"rendererPosition");a(this,"currentlyVisible",[]);a(this,"previouslyVisible",[]);this.container=e,this.rendererPosition=e.getBoundingClientRect();let{width:i,height:n}=this.rendererPosition;this.width=i,this.height=n,this.options={addPart:!1,setDraggableFalse:!1,imageClass:"",widthStylesheet:!1,sheetPrefix:"position-",background:"#000",...t||{}},this.stylesheet=new Ut({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 n of this.previouslyVisible)this.currentlyVisible.indexOf(n)===-1&&this.container.removeChild(n);for(let n of this.currentlyVisible)this.previouslyVisible.indexOf(n)===-1&&this.container.appendChild(n);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[]}afterPaintLayer(e,t){}beforeFrame(e,t,i){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,i,n){return e.getPointsAt(t,i,n)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let i=this.width/e,n=this.height/t,s=i<n?n: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,n,s,o){if(this.pending=!1,this.zIndex++,e instanceof H){if(!e.__host){let l=this.createImage();l.src=e.uri,e.__host=l,this.container.appendChild(e.__host)}let a=e.__host;this.currentlyVisible.push(a),a.style.zIndex=`${this.zIndex}`,a.style.opacity=`${e.style.opacity}`,this.options.widthStylesheet?a.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Et).toFixed(2)}px;height:${(o+Et).toFixed(2)}px;`):(a.style.width=`${s+Et}px`,a.style.height=`${o+Et}px`),a.style.transform=`translate(${i}px, ${n}px)`}if(e instanceof tt){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let l=e.getImageUrl(t),u=this.createImage();u.src=l,e.__host.images[t]=u,this.container.appendChild(u)}let a=e.__host.images[t];a.style.zIndex=`${this.zIndex}`,a.style.opacity=`${e.style.opacity}`,this.currentlyVisible.push(a),this.options.widthStylesheet?a.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Et).toFixed(2)}px;height:${(o+Et).toFixed(2)}px;`):(a.style.width=`${s+Et}px`,a.style.height=`${o+Et}px`),a.style.transform=`translate(${i}px, ${n}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){}};function Xe({interactive:r,viewport:e,forceRefresh:t,containerElement:i,overlayElement:n,controllerConfig:s,background:o}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let a=r?ee({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,...s||{}}):void 0,l=new he(i,{addPart:!1,setDraggableFalse:!1,imageClass:"atlas-static-image",background:o}),u=n?new Tt([l,new _t(n,{box:!0,text:!0,triggerResize:t})]):l,d=new lt(u,new et(1024,1024),e,a?[a]:[]),c=new Ot(i,d);return{name:"static-preset",em:c,runtime:d,renderer:u,controller:a,container:i,overlay:n,unmount(){zt(d),d.stopControllers(),d.stop(),c&&c.stop()}}}var Ge={"default-preset":ae,"static-preset":Xe};var it=require("react"),On={};function Oe(r,e){let t=(0,it.useRef)(),i=(0,it.useRef)(),n=(0,it.useRef)(),s=(0,it.useRef)(),o=(0,it.useRef)({width:e.width,height:e.height,didUpdate:!0}),[a="default-preset",l=On]=Array.isArray(r)?r||[]:[r],[u,d]=(0,it.useState)(null);(0,it.useLayoutEffect)(()=>{let m=i.current,b=s.current,w=t.current,P=n.current,f=(Ge[a]||ae)({containerElement:b,canvasElement:m,overlayElement:w,navigatorElement:P,viewport:o.current,dpi:window.devicePixelRatio||1,forceRefresh:e.forceRefresh,unstable_webglRenderer:e.unstable_webglRenderer,...l||{}});return d(f),()=>{f&&(f.unmount(),m&&(m.height=0,m.width=0),w&&(w.innerHTML=""),P&&(P.height=0,P.width=0))}},[a,l]);let c=(0,it.useMemo)(()=>({canvas:i,overlay:t,container:s,navigator:n}),[]);return[a,u,o,c]}var Li=require("react");function ki(r){return(0,Li.useMemo)(()=>oe(r),r)}var Di=q(require("react"),1),Fi=require("react/jsx-runtime"),At=Di.default.forwardRef((r,e)=>(0,Fi.jsx)("div",{...r,ref:e,part:r.className}));var Y=require("react/jsx-runtime"),Bi=["brightness","contrast","grayscale","hueRotate","invert","saturate","sepia","blur"],Ze=({htmlChildren:r,renderPreset:e,onCreated:t,mode:i="explore",resetWorldOnChange:n=!0,unstable_webglRenderer:s=!1,unstable_noReconciler:o=!1,hideInlineStyle:a=!1,controllerConfig:l,children:u,overlayStyle:d,containerStyle:c,enableNavigator:m,className:b,containerProps:w={},homePosition:P,homeOnResize:x,homeCover:f,background:g,runtimeOptions:I,debug:_,filters:S,...v})=>{let[p,E]=(0,F.useState)(g),[O,L]=(0,F.useState)(i),[k,$]=(0,F.useState)(!1),kt=(0,F.useRef)(!1),Dt=(0,F.useMemo)(()=>(typeof e=="string"&&(e=[e,{}]),p||_?e?[e[0],{debug:_,background:p,...e[1]||{}}]:["default-preset",{background:p,debug:_}]:e||"default-preset"),[e,p,_]),[Vt,V,rn]=(0,Wi.default)({scroll:!0}),We=(0,F.useRef)(),sn=C=>{We.current=C,Vt(C)},[si,y,N,ue]=Oe(Dt,{width:v.width,height:v.height,forceRefresh:rn,unstable_webglRenderer:s}),[on,oi]=(0,F.useState)("");(0,F.useEffect)(()=>{L(i)},[i]),(0,F.useEffect)(()=>{y&&y.em&&y.em.updateBounds()},[y,V]),(0,F.useEffect)(()=>{y?.runtime.setOptions(I||{})},[I]),(0,F.useEffect)(()=>{y&&y.runtime&&(y.runtime.mode=O),k&&y&&(y.ready=!0)},[y,k,O]),(0,F.useEffect)(()=>{y&&(f||(y.runtime.manualHomePosition=!!P,y.runtime.setHomePosition(P)))},[y,f,P]),(0,F.useEffect)(()=>{if(y){let C=y.runtime;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}},[y,v.width,v.height]),(0,F.useEffect)(()=>{if(S&&y){let C=y.runtime,R=!1;C.hookOptions.enableFilters=!0;for(let D of Bi)S[D]?S[D]!==y.runtime.hookOptions.filters[D]&&(C.hookOptions.filters[D]=S[D],R=!0):C.hookOptions.filters[D]&&(C.hookOptions.filters[D]=0,R=!0);R&&C.updateNextFrame()}else if(y){let C=y.runtime;for(let R of Bi)C.hookOptions.filters[R]=0;C.hookOptions.enableFilters=!1,C.updateNextFrame()}},[y,S]),K(()=>{if(y&&(y.overlay&&(y.overlay.style.width=`${V.width}px`,y.overlay.style.height=`${V.height}px`),y.container&&(y.container.style.width=`${V.width}px`,y.container.style.height=`${V.height}px`),f)){let C=y.runtime.world.width,R=y.runtime.world.height,D=C/R,J=N.current.width,Xt=N.current.height,bt=J/Xt;if(D>bt){bt=Xt/J,y.runtime.manualHomePosition=!0;let Ct=(C-R/bt)/2;f==="start"&&(Ct=0),f==="end"&&(Ct=C-R/bt),y.runtime.setHomePosition({x:Ct,y:0,width:R/bt,height:R})}else{let Ct=(R-C/bt)/2;f==="start"&&(Ct=0),f==="end"&&(Ct=R-C/bt),y.runtime.manualHomePosition=!0,y.runtime.setHomePosition({x:0,y:Ct,width:C,height:C/bt})}x&&y.runtime.goHome({})}},[y,V.height,V.width,f]),K(()=>{let C=()=>{if(y){let R=y.runtime;N.current.width!==v.width&&N.current.height!==v.height&&(R.resize(N.current.width,v.width,N.current.height,v.height),N.current.width=v.width,N.current.height=v.height,R.updateNextFrame(),N.current.didUpdate=!0)}};return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[y,v.height,v.width]);let ai={width:120},hi=()=>{if(y&&y.navigator){let C=y.runtime.world.height,R=y.runtime.world.width,D=window.devicePixelRatio||1,J=ai.width,Xt=ai.width/R*C;y.navigator.width=J*D,y.navigator.height=Xt*D,y.navigator.style.width=J+"px",y.navigator.style.height=Xt+"px"}};K(()=>{if(y){hi();let C=y.runtime;return C.world.addLayoutSubscriber(R=>{R==="recalculate-world-size"&&(hi(),C.resize(N.current.width,v.width,N.current.height,v.height))})}return()=>{}},[y,v.width,v.height]);let an=(0,F.useCallback)(function(R){let D=()=>{$(!0)};return(0,F.useEffect)(()=>{if(y){y.runtime.goHome();let J=t&&t(y);return void(J&&J.then?J.then(D):D())}else throw new Error("Invalid configuration - no runtime found")},[]),R.children},[y]);(0,F.useEffect)(()=>{if(y){let C=y.runtime;if(n)return C.world.addLayoutSubscriber(R=>{R==="recalculate-world-size"&&C.goHome()})}return()=>{}},[y,n]),(0,F.useEffect)(()=>y?y.runtime.registerHook("useBeforeFrame",()=>{if(N.current.didUpdate&&y.canvas){let R=window.devicePixelRatio||1,D=N.current.width,J=N.current.height;y.canvas.width=D*R,y.canvas.height=J*R,y.canvas.style.width=D+"px",y.canvas.style.height=J+"px",y.canvas.getContext("2d")?.scale(R,R),y&&y.em&&y.em.updateBounds(),N.current.didUpdate=!1}}):()=>{},[y,n]),(0,F.useEffect)(()=>{let C=()=>{y&&(L("sketch"),oi("mode-sketch")),window.removeEventListener("keyup",C)},R=D=>{if(D.code==="Space"&&y&&y.runtime.mode==="sketch"){if(D.target&&D.target.tagName&&D.target.tagName.toLowerCase()==="input")return;D.preventDefault(),L("explore"),oi("mode-explore"),window.addEventListener("keyup",C)}};return window.addEventListener("keydown",R),()=>{window.removeEventListener("keydown",R),window.removeEventListener("keyup",C)}},[y]),K(()=>{if(We.current&&!p){let R=getComputedStyle(We.current).getPropertyValue("--atlas-background");R&&E(R)}},[p]),kt.current=!0;let{height:$n,width:Vn,...hn}=v,Ne=ki([v.width,v.height]);return(0,Y.jsxs)(At,{ref:sn,className:["atlas",a?"":`atlas-width-${Ne}`,on,b,`atlas-${si}`].filter(Boolean).join(" ").trim(),style:{...c,...a?{}:{width:v.width,height:v.height}},children:[si==="static-preset"?(0,Y.jsx)(At,{className:"atlas-static-container",style:y&&y.controller?void 0:{pointerEvents:"none"},ref:ue.container,tabIndex:0,...w}):(0,Y.jsx)("canvas",{className:"atlas-canvas",part:"atlas-canvas",tabIndex:0,...hn,...w,ref:ue.canvas}),(0,Y.jsx)(At,{className:"atlas-overlay",style:{...d||{}},ref:ue.overlay,children:o?(0,Y.jsx)(an,{children:(0,Y.jsx)(Pt.Provider,{value:V,children:(0,Y.jsx)(dt.Provider,{value:O,children:(0,Y.jsx)(ct.Provider,{value:y,children:u})})})}):(0,Y.jsx)(Ii,{bounds:V,preset:y,mode:O,setIsReady:$,onCreated:t,children:u})}),m?(0,Y.jsx)(At,{className:"atlas-navigator",children:(0,Y.jsx)("canvas",{className:"atlas-navigator-canvas",part:"atlas-navigator-canvas",ref:ue.navigator})}):null,a?(0,Y.jsx)("style",{children:`.atlas-width-${Ne} { width: ${v.width}px; height: ${v.height}px; }`}):(0,Y.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 n of this.previouslyVisible)this.currentlyVisible.indexOf(n)===-1&&this.container.removeChild(n);for(let n of this.currentlyVisible)this.previouslyVisible.indexOf(n)===-1&&this.container.appendChild(n);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[]}afterPaintLayer(e,t){}beforeFrame(e,t,i){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,i,n){return e.getPointsAt(t,i,n)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let i=this.width/e,n=this.height/t,s=i<n?n: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,n,s,o){if(this.pending=!1,this.zIndex++,e instanceof H){if(!e.__host){let l=this.createImage();l.src=e.uri,e.__host=l,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+Et).toFixed(2)}px;height:${(o+Et).toFixed(2)}px;`):(h.style.width=`${s+Et}px`,h.style.height=`${o+Et}px`),h.style.transform=`translate(${i}px, ${n}px)`}if(e instanceof tt){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let l=e.getImageUrl(t),u=this.createImage();u.src=l,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+Et).toFixed(2)}px;height:${(o+Et).toFixed(2)}px;`):(h.style.width=`${s+Et}px`,h.style.height=`${o+Et}px`),h.style.transform=`translate(${i}px, ${n}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){}};function Xe({interactive:r,viewport:e,forceRefresh:t,containerElement:i,overlayElement:n,controllerConfig:s,background:o}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let h=r?ee({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,...s||{}}):void 0,l=new he(i,{addPart:!1,setDraggableFalse:!1,imageClass:"atlas-static-image",background:o}),u=n?new Tt([l,new _t(n,{box:!0,text:!0,triggerResize:t})]):l,d=new lt(u,new et(1024,1024),e,h?[h]:[]),c=new Ot(i,d);return{name:"static-preset",em:c,runtime:d,renderer:u,controller:h,container:i,overlay:n,unmount(){zt(d),d.stopControllers(),d.stop(),c&&c.stop()}}}var Ge={"default-preset":ae,"static-preset":Xe};var it=require("react"),On={};function Oe(r,e){let t=(0,it.useRef)(),i=(0,it.useRef)(),n=(0,it.useRef)(),s=(0,it.useRef)(),o=(0,it.useRef)({width:e.width,height:e.height,didUpdate:!0}),[h="default-preset",l=On]=Array.isArray(r)?r||[]:[r],[u,d]=(0,it.useState)(null);(0,it.useLayoutEffect)(()=>{let m=i.current,b=s.current,w=t.current,P=n.current,g=(Ge[h]||ae)({containerElement:b,canvasElement:m,overlayElement:w,navigatorElement:P,viewport:o.current,dpi:window.devicePixelRatio||1,forceRefresh:e.forceRefresh,unstable_webglRenderer:e.unstable_webglRenderer,...l||{}});return d(g),()=>{g&&(g.unmount(),m&&(m.height=0,m.width=0),w&&(w.innerHTML=""),P&&(P.height=0,P.width=0))}},[h,l]);let c=(0,it.useMemo)(()=>({canvas:i,overlay:t,container:s,navigator:n}),[]);return[h,u,o,c]}var Li=require("react");function ki(r){return(0,Li.useMemo)(()=>oe(r),r)}var Di=q(require("react"),1),Fi=require("react/jsx-runtime"),At=Di.default.forwardRef((r,e)=>(0,Fi.jsx)("div",{...r,ref:e,part:r.className}));var Y=require("react/jsx-runtime"),Bi=["brightness","contrast","grayscale","hueRotate","invert","saturate","sepia","blur"],Ze=({htmlChildren:r,renderPreset:e,onCreated:t,mode:i="explore",resetWorldOnChange:n=!0,unstable_webglRenderer:s=!1,unstable_noReconciler:o=!1,hideInlineStyle:h=!1,controllerConfig:l,children:u,overlayStyle:d,containerStyle:c,enableNavigator:m,className:b,containerProps:w={},homePosition:P,homeOnResize:x,homeCover:g,background:f,runtimeOptions:I,debug:_,filters:S,...v})=>{let[p,E]=(0,F.useState)(f),[O,L]=(0,F.useState)(i),[k,$]=(0,F.useState)(!1),kt=(0,F.useRef)(!1),Dt=(0,F.useMemo)(()=>(typeof e=="string"&&(e=[e,{}]),p||_?e?[e[0],{debug:_,background:p,...e[1]||{}}]:["default-preset",{background:p,debug:_}]:e||"default-preset"),[e,p,_]),[Vt,V,rn]=(0,Wi.default)({scroll:!0}),We=(0,F.useRef)(),sn=C=>{We.current=C,Vt(C)},[si,y,N,ue]=Oe(Dt,{width:v.width,height:v.height,forceRefresh:rn,unstable_webglRenderer:s}),[on,oi]=(0,F.useState)("");(0,F.useEffect)(()=>{L(i)},[i]),(0,F.useEffect)(()=>{y&&y.em&&y.em.updateBounds()},[y,V]),(0,F.useEffect)(()=>{y?.runtime.setOptions(I||{})},[I]),(0,F.useEffect)(()=>{y&&y.runtime&&(y.runtime.mode=O),k&&y&&(y.ready=!0)},[y,k,O]),(0,F.useEffect)(()=>{y&&(g||(y.runtime.manualHomePosition=!!P,y.runtime.setHomePosition(P)))},[y,g,P]),(0,F.useEffect)(()=>{if(y){let C=y.runtime;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}},[y,v.width,v.height]),(0,F.useEffect)(()=>{if(S&&y){let C=y.runtime,R=!1;C.hookOptions.enableFilters=!0;for(let D of Bi)S[D]?S[D]!==y.runtime.hookOptions.filters[D]&&(C.hookOptions.filters[D]=S[D],R=!0):C.hookOptions.filters[D]&&(C.hookOptions.filters[D]=0,R=!0);R&&C.updateNextFrame()}else if(y){let C=y.runtime;for(let R of Bi)C.hookOptions.filters[R]=0;C.hookOptions.enableFilters=!1,C.updateNextFrame()}},[y,S]),K(()=>{if(y&&(y.overlay&&(y.overlay.style.width=`${V.width}px`,y.overlay.style.height=`${V.height}px`),y.container&&(y.container.style.width=`${V.width}px`,y.container.style.height=`${V.height}px`),g)){let C=y.runtime.world.width,R=y.runtime.world.height,D=C/R,J=N.current.width,Xt=N.current.height,bt=J/Xt;if(D>bt){bt=Xt/J,y.runtime.manualHomePosition=!0;let Ct=(C-R/bt)/2;g==="start"&&(Ct=0),g==="end"&&(Ct=C-R/bt),y.runtime.setHomePosition({x:Ct,y:0,width:R/bt,height:R})}else{let Ct=(R-C/bt)/2;g==="start"&&(Ct=0),g==="end"&&(Ct=R-C/bt),y.runtime.manualHomePosition=!0,y.runtime.setHomePosition({x:0,y:Ct,width:C,height:C/bt})}x&&y.runtime.goHome({})}},[y,V.height,V.width,g]),K(()=>{let C=()=>{if(y){let R=y.runtime;N.current.width!==v.width&&N.current.height!==v.height&&(R.resize(N.current.width,v.width,N.current.height,v.height),N.current.width=v.width,N.current.height=v.height,R.updateNextFrame(),N.current.didUpdate=!0)}};return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[y,v.height,v.width]);let ai={width:120},hi=()=>{if(y&&y.navigator){let C=y.runtime.world.height,R=y.runtime.world.width,D=window.devicePixelRatio||1,J=ai.width,Xt=ai.width/R*C;y.navigator.width=J*D,y.navigator.height=Xt*D,y.navigator.style.width=J+"px",y.navigator.style.height=Xt+"px"}};K(()=>{if(y){hi();let C=y.runtime;return C.world.addLayoutSubscriber(R=>{R==="recalculate-world-size"&&(hi(),C.resize(N.current.width,v.width,N.current.height,v.height))})}return()=>{}},[y,v.width,v.height]);let an=(0,F.useCallback)(function(R){let D=()=>{$(!0)};return(0,F.useEffect)(()=>{if(y){y.runtime.goHome();let J=t&&t(y);return void(J&&J.then?J.then(D):D())}else throw new Error("Invalid configuration - no runtime found")},[]),R.children},[y]);(0,F.useEffect)(()=>{if(y){let C=y.runtime;if(n)return C.world.addLayoutSubscriber(R=>{R==="recalculate-world-size"&&C.goHome()})}return()=>{}},[y,n]),(0,F.useEffect)(()=>y?y.runtime.registerHook("useBeforeFrame",()=>{if(N.current.didUpdate&&y.canvas){let R=window.devicePixelRatio||1,D=N.current.width,J=N.current.height;y.canvas.width=D*R,y.canvas.height=J*R,y.canvas.style.width=D+"px",y.canvas.style.height=J+"px",y.canvas.getContext("2d")?.scale(R,R),y&&y.em&&y.em.updateBounds(),N.current.didUpdate=!1}}):()=>{},[y,n]),(0,F.useEffect)(()=>{let C=()=>{y&&(L("sketch"),oi("mode-sketch")),window.removeEventListener("keyup",C)},R=D=>{if(D.code==="Space"&&y&&y.runtime.mode==="sketch"){if(D.target&&D.target.tagName&&D.target.tagName.toLowerCase()==="input")return;D.preventDefault(),L("explore"),oi("mode-explore"),window.addEventListener("keyup",C)}};return window.addEventListener("keydown",R),()=>{window.removeEventListener("keydown",R),window.removeEventListener("keyup",C)}},[y]),K(()=>{if(We.current&&!p){let R=getComputedStyle(We.current).getPropertyValue("--atlas-background");R&&E(R)}},[p]),kt.current=!0;let{height:$n,width:Vn,...hn}=v,Ne=ki([v.width,v.height]);return(0,Y.jsxs)(At,{ref:sn,className:["atlas",h?"":`atlas-width-${Ne}`,on,b,`atlas-${si}`].filter(Boolean).join(" ").trim(),style:{...c,...h?{}:{width:v.width,height:v.height}},children:[si==="static-preset"?(0,Y.jsx)(At,{className:"atlas-static-container",style:y&&y.controller?void 0:{pointerEvents:"none"},ref:ue.container,tabIndex:0,...w}):(0,Y.jsx)("canvas",{className:"atlas-canvas",part:"atlas-canvas",tabIndex:0,...hn,...w,ref:ue.canvas}),(0,Y.jsx)(At,{className:"atlas-overlay",style:{...d||{}},ref:ue.overlay,children:o?(0,Y.jsx)(an,{children:(0,Y.jsx)(Pt.Provider,{value:V,children:(0,Y.jsx)(dt.Provider,{value:O,children:(0,Y.jsx)(ct.Provider,{value:y,children:u})})})}):(0,Y.jsx)(Ii,{bounds:V,preset:y,mode:O,setIsReady:$,onCreated:t,children:u})}),m?(0,Y.jsx)(At,{className:"atlas-navigator",children:(0,Y.jsx)("canvas",{className:"atlas-navigator-canvas",part:"atlas-navigator-canvas",ref:ue.navigator})}):null,h?(0,Y.jsx)("style",{children:`.atlas-width-${Ne} { width: ${v.width}px; height: ${v.height}px; }`}):(0,Y.jsx)("style",{children:`
42
42
  .atlas { position: relative; user-select: none; display: flex; background: var(--atlas-background, #000); z-index: var(--atlas-z-index, 10); touch-action: none; }
43
43
  .atlas-width-${Ne} { width: ${v.width}px; height: ${v.height}px; }
44
44
  .atlas-canvas { flex: 1 1 0px; }
@@ -50,11 +50,11 @@
50
50
  .atlas-static-image { position: absolute; pointer-events: none; user-select: none; transform-origin: 0px 0px; }
51
51
  .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
52
  .atlas-navigator-canvas { width: 100%; }
53
- `}),r]})};var Ae=require("react"),zi=q(require("react-use-measure"),1);function Ni(r){return Number(r)==r?`${r}px`:r}var le=require("react/jsx-runtime"),An=({resizeHash:r,aspectRatio:e,containerProps:t={},...i})=>{let[n,s,o]=(0,zi.default)(),{height:a,width:l,...u}=i;(0,Ae.useEffect)(()=>{o()},[l,a,r,o]);let d=(0,Ae.useMemo)(()=>e?{width:s.width,height:s.width*(1/e)}:s,[s,e]);return(0,le.jsxs)(At,{ref:n,className:"atlas-container",...t,children:[d.width?(0,le.jsx)(Ze,{width:d.width||100,height:d.height||100,...u,children:i.children}):null,i.hideInlineStyle?null:(0,le.jsx)("style",{children:`
53
+ `}),r]})};var Ae=require("react"),zi=q(require("react-use-measure"),1);function Ni(r){return Number(r)==r?`${r}px`:r}var le=require("react/jsx-runtime"),An=({resizeHash:r,aspectRatio:e,containerProps:t={},...i})=>{let[n,s,o]=(0,zi.default)(),{height:h,width:l,...u}=i;(0,Ae.useEffect)(()=>{o()},[l,h,r,o]);let d=(0,Ae.useMemo)(()=>e?{width:s.width,height:s.width*(1/e)}:s,[s,e]);return(0,le.jsxs)(At,{ref:n,className:"atlas-container",...t,children:[d.width?(0,le.jsx)(Ze,{width:d.width||100,height:d.height||100,...u,children:i.children}):null,i.hideInlineStyle?null:(0,le.jsx)("style",{children:`
54
54
  .atlas-container {
55
55
  display: var(--atlas-container-display, block);
56
56
  flex: var(--atlas-container-flex, none);
57
57
  width: var(--atlas-container-width, ${l?`${l}px`:"100%"});
58
- height: var(--atlas-container-height, ${Ni(a||(e?d.height:512))})
58
+ height: var(--atlas-container-height, ${Ni(h||(e?d.height:512))})
59
59
  }
60
- `}),i.htmlChildren]})};var mt=require("react");var Hi=require("react");var de=()=>(0,Hi.useContext)(ct);var X=()=>{let r=de();return r?r.runtime:void 0};var ji=require("react"),Ye=(r,e=[])=>{let t=X();(0,ji.useEffect)(()=>t?t.registerHook("useAfterFrame",r):()=>{},e)};var Ui=require("react"),Mt=(r,e=[])=>{let t=X();(0,Ui.useEffect)(()=>t?t.registerHook("useFrame",r):()=>{},e)};var Qe=()=>{let r=de();return r&&r.canvas?r.canvas:void 0};var $i=require("react");function Me(){return(0,$i.useContext)(Pt)}var Mn=({onCreate:r})=>{let e=(0,mt.useRef)({x:0,y:0}),t=Qe(),i=Me(),n=X(),[s,o]=(0,mt.useState)(),[a,l]=(0,mt.useState)(),u=ie();return Mt(()=>{n&&s&&!a&&(n.pendingUpdate=!0)},[s,a]),Ye(()=>{if(s&&t&&n){let d=t.getContext("2d");if(d){let{x:c,y:m,width:b,height:w}=n.worldToViewer(s.x,s.y,(a?a.x:e.current.x)-s.x,(a?a.y:e.current.y)-s.y);d.lineWidth=a?3:1,d.strokeStyle="#fff",d.strokeRect(c,m,b,w),d.lineWidth=a?3:1,d.strokeStyle="#000",d.strokeRect(c+1,m+1,b-2,w-2)}}},[s,a]),(0,mt.useEffect)(()=>{let d=c=>{if(i&&n){let{x:m,y:b}=n.viewerToWorld(c.clientX-i.left,c.clientY-i.top);e.current.x=~~m,e.current.y=~~b}};return t?(t.addEventListener("mousemove",d),()=>t.removeEventListener("mousemove",d)):()=>{}},[i,t,n]),(0,mt.useEffect)(()=>{let d=c=>{u==="sketch"&&(o({x:Math.round(e.current.x),y:Math.round(e.current.y)}),l(void 0))};return t?(t.addEventListener("mousedown",d),()=>t.removeEventListener("mousedown",d)):()=>{}},[t,u]),(0,mt.useEffect)(()=>{let d=c=>{s&&!a&&l({x:Math.round(e.current.x),y:Math.round(e.current.y)})};return t?(t.addEventListener("mouseup",d),()=>t.removeEventListener("mouseup",d)):()=>{}},[t,s,a]),(0,mt.useEffect)(()=>{s&&a&&r({x:Math.min(s.x,a.x),y:Math.min(s.y,a.y),width:Math.abs(a.x-s.x),height:Math.abs(a.y-s.y)})},[s,r,a]),null};var ft=q(require("react"),1);var Vi=require("react");async function Xi(r,e,t){if(Vi.version.startsWith("18.")){let i=await import("react-dom/client"),n=i.default?i.default.createRoot:i.createRoot;t.current||(t.current=n(r)),t.current.render(e)}else if(typeof ReactDOM<"u"){let{render:i,unmountComponentAtNode:n}=ReactDOM;i(e,r),t.current={unmount(){n(r)}}}else{let i=await import("react-dom"),n=i.default?i.default.render:i.render,s=i.default?i.default.unmountComponentAtNode:i.unmountComponentAtNode;n(e,r),t.current={unmount(){s(r)}}}}var Ke=require("react/jsx-runtime"),Ie=ft.default.forwardRef(({children:r,...e},t)=>{let i=(0,ft.useRef)(),n=X(),s=(0,ft.useRef)(0),o=(0,ft.useRef)(),a=(0,ft.useRef)();return Mt(()=>{if(e.relative){let l=i.current;if(l&&n){let u=n.getScaleFactor();s.current!==u&&(s.current=u,l.style.transformOrigin="0 0",l.style.transform=`scale(${1/s.current})`,l.style.width=`${s.current*100}%`,l.style.height=`${s.current*100}%`,i.current&&o.current?.__owner.value?.rotation&&(l.style.transform=`scale(${1/s.current}) translate(50%, 50%) rotate(${o.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[e.relative]),(0,ft.useLayoutEffect)(()=>{let l=o.current;t&&l&&(typeof t=="function"?t(l):t.current=l);async function u(){if(l&&l.__host){let d=e.relative?(0,Ke.jsx)("div",{ref:i,children:r}):r;await Xi(l.__host.element,d,a)}}l&&l.__host?u():l&&(l.__onCreate=u)},[t,r,o,e.relative]),(0,ft.useLayoutEffect)(()=>()=>{a.current&&setTimeout(()=>{a.current.unmount()},0)},[]),(0,Ke.jsx)("box",{html:!0,...e,ref:o})});Ie.displayName="HTMLPortal";var Yi=require("react");var gt=require("react");var j=require("react");var Gi=require("react");var Le=(r,e,t=[])=>{let i=X(),n=i?i.world:void 0;(0,Gi.useEffect)(()=>{if(i){let s=e,o=nt[r];i.world.activatedEvents.push(o);let a=o.slice(2).toLowerCase();return i.world.addEventListener(a,s),()=>{i.world.removeEventListener(a,s)}}return()=>{}},[n,r,...t])};function qe(r,e){if(r===0)return[0,1];if(e===0)return[1,0];let t=Math.abs(r)/Math.abs(e);return[t,1-t]}var ke=require("react");function Zi(){let r=(0,ke.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,ke.useLayoutEffect)(()=>{function e(i){i.key==="Shift"&&(r.current.shift=!0),i.key==="Control"&&(r.current.ctrl=!0),i.key==="Alt"&&(r.current.alt=!0)}function t(i){i.key==="Shift"&&(r.current.shift=!1),i.key==="Control"&&(r.current.ctrl=!1),i.key==="Alt"&&(r.current.alt=!1)}return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),r}var Je=(r,e)=>{let t=ie(),i=X(),n=Me(),s=(0,j.useRef)(),o=(0,j.useRef)(null),a=(0,j.useRef)(),[l,u]=(0,j.useState)(!1),d=(0,j.useRef)(!1),c=(0,j.useRef)({north:0,south:0,east:0,west:0}),m=Zi(),b=(0,j.useCallback)(g=>I=>{if(d.current=!0,u(!0),n&&i){let{top:_,left:S}=n,v=i.viewerToWorld(I.pageX-S,I.pageY-_);a.current={x:v.x,y:v.y},s.current=g}},[n,i]),w=(0,j.useMemo)(()=>r.width/r.height,[r.width,r.height]),P=(0,j.useCallback)(g=>{if(!Math.abs(g.north-g.south+(g.east-g.west)))return;let _=-g.west+g.east,S=-g.north+g.south,v=r.width+_,p=r.height+S;if(v/p>=w){let O=p*w,L=v-O,[k,$]=qe(g.east,g.west);g.west=g.west+L*$,g.east=g.east-L*k}else{let O=v/w,L=p-O,[k,$]=qe(g.north,g.south);g.north=g.north+L*k,g.south=g.south-L*$}},[r.width,r.height,w]);Mt(()=>{a&&i&&i.updateNextFrame()}),(0,j.useEffect)(()=>{i&&i.updateNextFrame()},[i,l]);let x=(0,j.useCallback)(g=>{if(!i||!n||i.mode!=="sketch")return;let{top:I,left:_}=n,S=i.viewerToWorld(g.pageX-_,g.pageY-I),v=o.current,p=!r.maintainAspectRatio&&m.current.alt,E=!p&&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=S.x-(a.current?a.current.x:0),p&&(c.current.west=-c.current.east)),(s.current==="translate"||s.current==="west"||s.current==="north-west"||s.current==="south-west")&&(c.current.west=S.x-(a.current?a.current.x:0),p&&(c.current.east=-c.current.west)),(s.current==="translate"||s.current==="north"||s.current==="north-east"||s.current==="north-west")&&(c.current.north=S.y-(a.current?a.current.y:0),p&&(c.current.south=-c.current.north)),(s.current==="translate"||s.current==="south"||s.current==="south-west"||s.current==="south-east")&&(c.current.south=S.y-(a.current?a.current.y:0),p&&(c.current.north=-c.current.south)),(r.maintainAspectRatio||E)&&P(c.current),v){let O=c.current.west,L=c.current.north,k=r.width+c.current.east,$=r.height+c.current.south;v.points[1]=Math.min(O,k),v.points[2]=Math.min(L,$),v.points[3]=Math.max(O,k),v.points[4]=Math.max(L,$),i.updateNextFrame()}},[i,r.width,r.height,r.maintainAspectRatio,n]);Le("mousemove",x,[r.width,r.height,n]),Le("pointermove",x,[r.width,r.height,n]);let f=(0,j.useRef)();return(0,j.useEffect)(()=>{f.current=()=>{if(d.current){let g=c.current.west,I=c.current.north,_=r.width+c.current.east,S=r.height+c.current.south,v=Math.min(g,_),p=Math.min(I,S),E=Math.max(g,_),O=Math.max(I,S),L={x:(r.x||0)+v,y:(r.y||0)+p,width:E-v||1,height:O-p||1};r.maintainAspectRatio,e(L),s.current=void 0,a.current=void 0,c.current.east=0,c.current.west=0,c.current.north=0,c.current.south=0,d.current=!1,u(!1)}}},[e,r.height,r.width,r.x,r.y]),(0,j.useEffect)(()=>{let g=()=>{f.current&&f.current()};return window.addEventListener("pointerup",g),window.addEventListener("touchend",g),()=>{window.removeEventListener("pointerup",g),window.removeEventListener("touchend",g)}},[]),{portalRef:o,mode:t,mouseEvent:b,onPointerMoveCallback:x,isEditing:l}};var z=require("react/jsx-runtime");function ti({handleSize:r,resizable:e,onSave:t,children:i,maintainAspectRatio:n,disableCardinalControls:s,...o}){let a=typeof r>"u"?n?10:8:r,{portalRef:l,mode:u,mouseEvent:d,isEditing:c}=Je({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:n},t),m=(0,gt.useMemo)(()=>d("translate"),[d]),b=(0,gt.useMemo)(()=>d("east"),[d]),w=(0,gt.useMemo)(()=>d("west"),[d]),P=(0,gt.useMemo)(()=>d("south"),[d]),x=(0,gt.useMemo)(()=>d("north"),[d]),f=(0,gt.useMemo)(()=>d("south-east"),[d]),g=(0,gt.useMemo)(()=>d("south-west"),[d]),I=(0,gt.useMemo)(()=>d("north-east"),[d]),_=(0,gt.useMemo)(()=>d("north-west"),[d]),S=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:n||s?"50%":2,position:"absolute",background:"#fff",pointerEvents:c?"none":S?"initial":"none"};return(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)("world-object",{...o,children:[i,S&&e?(0,z.jsx)(Ie,{ref:l,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:S&&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":S?"initial":"none"}}),n?null:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{title:"east",onTouchStart:b,onMouseDown:b,style:{...v,cursor:"e-resize",height:a*2,width:a,right:0,top:"50%",opacity:s?0:1,transform:`translate(${a/2}px, -${a}px)`}}),(0,z.jsx)("div",{title:"west",onMouseDown:w,style:{...v,cursor:"w-resize",position:"absolute",height:a*2,width:a,left:0,top:"50%",opacity:s?0:1,transform:`translate(-${a/2}px, -${a}px)`}}),(0,z.jsx)("div",{title:"north",onMouseDown:x,style:{...v,cursor:"n-resize",position:"absolute",height:a,width:a*2,left:"50%",top:0,opacity:s?0:1,transform:`translate(-${a}px, -${a/2}px)`}}),(0,z.jsx)("div",{title:"south",onMouseDown:P,style:{...v,cursor:"s-resize",position:"absolute",height:a,width:a*2,left:"50%",bottom:0,opacity:s?0:1,transform:`translate(-${a}px, ${a/2}px)`}})]}),(0,z.jsx)("div",{title:"north-east",onMouseDown:I,style:{...v,cursor:"ne-resize",position:"absolute",height:a,width:a,right:0,top:0,transform:`translate(${a/2}px, -${a/2}px)`}}),(0,z.jsx)("div",{title:"south-east",onMouseDown:f,style:{...v,cursor:"se-resize",position:"absolute",height:a,width:a,bottom:0,right:0,transform:`translate(${a/2}px, ${a/2}px)`}}),(0,z.jsx)("div",{title:"south-west",onMouseDown:g,style:{...v,cursor:"sw-resize",position:"absolute",height:a,width:a,bottom:0,left:0,transform:`translate(-${a/2}px, ${a/2}px)`}}),(0,z.jsx)("div",{title:"north-west",onMouseDown:_,style:{...v,cursor:"nw-resize",position:"absolute",height:a,width:a,top:0,left:0,transform:`translate(-${a/2}px, -${a/2}px)`}})]}):null}):null]})})}var ei=require("react/jsx-runtime");function In({interactive:r,region:e,onClick:t,onSave:i,maintainAspectRatio:n,disableCardinalControls:s,isEditing:o,rotation:a,style:l={backgroundColor:"rgba(0,0,0,.5)"}}){let u=(0,Yi.useCallback)(d=>{i({id:e.id,x:e.x,y:e.y,height:e.height,width:e.width,...d})},[i,e.id,e.x,e.y,e.height,e.width]);return(0,ei.jsx)(ti,{x:e.x,y:e.y,rotation:a,width:e.width,height:e.height,resizable:o,onSave:u,maintainAspectRatio:n,disableCardinalControls:s,children:(0,ei.jsx)("box",{interactive:r,onClick:d=>{d.preventDefault(),d.stopPropagation(),t(e)},target:{x:0,y:0,width:e.width,height:e.height},style:l})})}var Qi=require("react"),It=require("react/jsx-runtime"),ii=r=>{let e=r.width/(r.crop?.width||r.tiles.width),t=r.tiles.imageService.tiles||[],i=r.tiles.imageService.sizes||[],n=r.enableThumbnail,s=r.enableSizes,o=(0,Qi.useMemo)(()=>{let a=r.tiles.imageService.id||r.tiles.imageService["@id"];return a&&a.endsWith("/info.json")?a.slice(0,-1*10):a},[r.tiles.imageService.id]);return(0,It.jsx)("world-object",{rotation:r.rotation,scale:e,height:r.crop?.height||r.tiles.height,width:r.crop?.width||r.tiles.width,x:r.x,y:r.y,onClick:r.onClick,children:(0,It.jsxs)("composite-image",{id:r.tiles.imageService.id,width:r.crop?.width||r.tiles.width,height:r.crop?.height||r.tiles.height,crop:r.crop,renderOptions:r.renderOptions,children:[n&&r.tiles.thumbnail?(0,It.jsx)("world-image",{priority:!0,uri:r.tiles.thumbnail.id,target:{width:r.tiles.width,height:r.tiles.height},display:{width:r.tiles.thumbnail.width,height:r.tiles.thumbnail.height},crop:r.crop}):null,s&&i.map((a,l)=>(0,It.jsx)("world-image",{uri:`${o}/full/${a.width},${a.height}/0/default.jpg`,target:{width:r.tiles.width,height:r.tiles.height},display:{width:a.width,height:a.height},crop:r.crop},l)),t.map(a=>(a.scaleFactors||[]).map(l=>(0,It.jsx)("tiled-image",{uri:r.tiles.imageService.id,display:{width:r.tiles.width,height:r.tiles.height},tile:a,scaleFactor:l,crop:r.crop},`${r.tiles.imageService.id}-tile-${l}`)))]},r.tiles.imageService.id)},r.tiles.imageService.id)};var Fe=require("react");function ni(r){return r.id||r["@id"]}var Ki=require("@atlas-viewer/iiif-image-api"),qi=require("@iiif/helpers/thumbnail");function Ln(){return typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}function kn(){let r=Ln();if(typeof r.IIIF_VAULT<"u")return r.IIIF_VAULT;if(typeof r.IIIFVault>"u")throw new Error("Vault not found");return r.IIIF_VAULT=new r.IIIFVault.Vault,r.IIIF_VAULT}var Lt={};function ce(){return Lt.helper||(Lt.vault=kn(),Lt.loader=new Ki.ImageServiceLoader,Lt.helper=(0,qi.createThumbnailHelper)(Lt.vault,{imageServiceLoader:Lt.loader})),Lt}async function De(r,e,t){let{loader:i}=ce(),n=await i.loadService({id:r,width:e,height:t});return{id:ni(n),width:e,height:t,imageService:n,thumbnail:void 0}}async function Ji(r,e=512){let{vault:t,loader:i,helper:n}=ce(),s=[];for(let o of r.items)for(let a of t.get(o).items){let u=t.get(t.get(a).body[0]).service[0],d=await De(u.id,r.width,r.height),{best:c}=await n.getBestThumbnailAtSize(t,i,r,{maxHeight:e,maxWidth:e},!0);c&&(d.thumbnail=c),s.push(d)}return s}async function tn(r){let{vault:e}=ce(),t=[];for(let i of r.items){let n=e.get(i);t.push(...await Ji(n))}return t}async function Dn(r){try{let{vault:e}=ce(),t=await e.loadManifest(r);return t?tn(t):[]}catch(e){return console.log("ERR",e),[]}}var ri=require("react/jsx-runtime"),Fn=r=>{let[e,t]=(0,Fe.useState)();return(0,Fe.useEffect)(()=>{De(r.id,r.width,r.height).then(i=>{t(i)})},[r.height,r.id,r.width]),(0,ri.jsx)("world-object",{x:r.x||0,y:r.y||0,width:r.width,height:r.height,scale:r.scale,children:e?(0,ri.jsx)(ii,{tiles:e,x:r.x,y:r.y,width:r.crop?.width||r.width,height:r.crop?.height||r.height,rotation:r.rotation,crop:r.crop,enableSizes:r.enableSizes,enableThumbnail:r.enableThumbnail,renderOptions:r.renderOptions,children:r.children}):null})};var en=require("react"),Bn=(r,e=[])=>{let t=X();(0,en.useEffect)(()=>t?t.registerHook("useAfterPaint",r):()=>{},e)};var U=require("react");var Be=require("react/jsx-runtime"),Wn=(r,{onCreated:e,resetWorldOnChange:t=!0,mode:i="explore",cover:n,containerRef:s,...o})=>{let[a,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(void 0),[c,m]=(0,U.useState)(void 0),b=(0,U.useRef)(),w=(0,U.useRef)(),P=(0,U.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[x,f,g,I]=Oe(void 0,{width:o.width,height:o.height});K(()=>{let S=document.createElement("canvas");S.height=P.height,S.width=P.width,b.current=S},[]),K(()=>{let S=b.current;S&&(S.height=P.height,S.width=P.width)},[P.width,P.height]),(0,U.useEffect)(()=>f?f.runtime.registerHook("useAfterFrame",()=>{if(b.current)try{d(b.current.toDataURL())}catch(v){v instanceof Error&&m(v.message)}}):()=>{},[]),(0,U.useEffect)(()=>f?f.runtime.world.addLayoutSubscriber(v=>{v==="ready"&&l(!0)}):()=>{},[]),(0,U.useEffect)(()=>{f&&f.em&&f.em.updateBounds()},[P]),(0,U.useEffect)(()=>{f&&(f.runtime.mode=i)},[i]),(0,U.useEffect)(()=>{if(f){let S=f.runtime;S.resize(g.current.width,o.width,g.current.height,o.height),n?S.cover():S.goHome(),g.current.width=o.width,g.current.height=o.height,S.updateNextFrame()}},[o.width,o.height]),K(()=>{let S=w.current;S&&(S.style.width=`${P.width}px`,S.style.height=`${P.height}px`,S.style.pointerEvents="none",S.style.overflow="hidden")},[P.height,P.width]),K(()=>{let S=()=>{if(f&&f.runtime){let v=f.runtime;v.resize(g.current.width,o.width,g.current.height,o.height),g.current.width=o.width,g.current.height=o.height,v.updateNextFrame()}};return window.addEventListener("resize",S),()=>window.removeEventListener("resize",S)},[f,o.height,o.width]);let _=(0,U.useCallback)(function(v){let p=()=>{f&&(f.ready=!0)};return(0,U.useEffect)(()=>{if(f){let E=e&&e(f);return void(E&&E.then?E.then(p):p())}return()=>{}},[]),v.children},[f]);return(0,U.useEffect)(()=>{if(f&&f.runtime){let S=f.runtime;if(t)return S.world.addLayoutSubscriber(v=>{v==="recalculate-world-size"&&S.goHome({cover:n})})}return()=>{}},[f,n,t]),K(()=>{f&&Ht.render((0,Be.jsx)(_,{children:(0,Be.jsx)(dt.Provider,{value:i,children:(0,Be.jsx)(ct.Provider,{value:f,children:r})})}),f.runtime)},[f,i,r]),{loading:!u&&a,uri:u,imageError:c}};var nn=require("react"),Nn=(r,e=[])=>{let t=X();(0,nn.useEffect)(()=>t?t.registerHook("useBeforeFrame",r):()=>{},e)};var yt=require("react");var zn=(r=[])=>{let[e,t]=(0,yt.useState)(r),[i,n]=(0,yt.useState)(!1),[s,o]=(0,yt.useState)(),a=(0,yt.useCallback)(()=>{n(!0),o(void 0)},[]),l=(0,yt.useCallback)(m=>{n(!0),o(m)},[]),u=m=>{t(b=>b.map(w=>w.id===m.id?m:w))},d=(0,yt.useCallback)(m=>{let b=ot();t(w=>[...w,{id:b,...m}]),n(!1),o(void 0)},[]),c=(0,yt.useCallback)(()=>{n(!1),o(void 0)},[]);return{isEditing:i,onDeselect:c,selectedAnnotation:s,onCreateNewAnnotation:d,annotations:e,onUpdateAnnotation:u,setIsEditing:n,setSelectedAnnotation:o,editAnnotation:l,addNewAnnotation:a}};function Hn(r){return r.current==="sketch"}function jn(r,e){return r?e?{...r,...e||{},":hover":r[":hover"]?Object.assign(r[":hover"]||{},e[":hover"]||{}):e[":hover"],":active":r[":active"]?Object.assign(r[":active"]||{},e[":active"]||{}):e[":hover"]}:r:e}
60
+ `}),i.htmlChildren]})};var mt=require("react");var Hi=require("react");var de=()=>(0,Hi.useContext)(ct);var X=()=>{let r=de();return r?r.runtime:void 0};var ji=require("react"),Ye=(r,e=[])=>{let t=X();(0,ji.useEffect)(()=>t?t.registerHook("useAfterFrame",r):()=>{},e)};var Ui=require("react"),Mt=(r,e=[])=>{let t=X();(0,Ui.useEffect)(()=>t?t.registerHook("useFrame",r):()=>{},e)};var Qe=()=>{let r=de();return r&&r.canvas?r.canvas:void 0};var $i=require("react");function Me(){return(0,$i.useContext)(Pt)}var Mn=({onCreate:r})=>{let e=(0,mt.useRef)({x:0,y:0}),t=Qe(),i=Me(),n=X(),[s,o]=(0,mt.useState)(),[h,l]=(0,mt.useState)(),u=ie();return Mt(()=>{n&&s&&!h&&(n.pendingUpdate=!0)},[s,h]),Ye(()=>{if(s&&t&&n){let d=t.getContext("2d");if(d){let{x:c,y:m,width:b,height:w}=n.worldToViewer(s.x,s.y,(h?h.x:e.current.x)-s.x,(h?h.y:e.current.y)-s.y);d.lineWidth=h?3:1,d.strokeStyle="#fff",d.strokeRect(c,m,b,w),d.lineWidth=h?3:1,d.strokeStyle="#000",d.strokeRect(c+1,m+1,b-2,w-2)}}},[s,h]),(0,mt.useEffect)(()=>{let d=c=>{if(i&&n){let{x:m,y:b}=n.viewerToWorld(c.clientX-i.left,c.clientY-i.top);e.current.x=~~m,e.current.y=~~b}};return t?(t.addEventListener("mousemove",d),()=>t.removeEventListener("mousemove",d)):()=>{}},[i,t,n]),(0,mt.useEffect)(()=>{let d=c=>{u==="sketch"&&(o({x:Math.round(e.current.x),y:Math.round(e.current.y)}),l(void 0))};return t?(t.addEventListener("mousedown",d),()=>t.removeEventListener("mousedown",d)):()=>{}},[t,u]),(0,mt.useEffect)(()=>{let d=c=>{s&&!h&&l({x:Math.round(e.current.x),y:Math.round(e.current.y)})};return t?(t.addEventListener("mouseup",d),()=>t.removeEventListener("mouseup",d)):()=>{}},[t,s,h]),(0,mt.useEffect)(()=>{s&&h&&r({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,r,h]),null};var gt=q(require("react"),1);var Vi=require("react");async function Xi(r,e,t){if(Vi.version.startsWith("18.")){let i=await import("react-dom/client"),n=i.default?i.default.createRoot:i.createRoot;t.current||(t.current=n(r)),t.current.render(e)}else if(typeof ReactDOM<"u"){let{render:i,unmountComponentAtNode:n}=ReactDOM;i(e,r),t.current={unmount(){n(r)}}}else{let i=await import("react-dom"),n=i.default?i.default.render:i.render,s=i.default?i.default.unmountComponentAtNode:i.unmountComponentAtNode;n(e,r),t.current={unmount(){s(r)}}}}var Ke=require("react/jsx-runtime"),Ie=gt.default.forwardRef(({children:r,...e},t)=>{let i=(0,gt.useRef)(),n=X(),s=(0,gt.useRef)(0),o=(0,gt.useRef)(),h=(0,gt.useRef)();return Mt(()=>{if(e.relative){let l=i.current;if(l&&n){let u=n.getScaleFactor();s.current!==u&&(s.current=u,l.style.transformOrigin="0 0",l.style.transform=`scale(${1/s.current})`,l.style.width=`${s.current*100}%`,l.style.height=`${s.current*100}%`,i.current&&o.current?.__owner.value?.rotation&&(l.style.transform=`scale(${1/s.current}) translate(50%, 50%) rotate(${o.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[e.relative]),(0,gt.useLayoutEffect)(()=>{let l=o.current;t&&l&&(typeof t=="function"?t(l):t.current=l);async function u(){if(l&&l.__host){let d=e.relative?(0,Ke.jsx)("div",{ref:i,children:r}):r;await Xi(l.__host.element,d,h)}}l&&l.__host?u():l&&(l.__onCreate=u)},[t,r,o,e.relative]),(0,gt.useLayoutEffect)(()=>()=>{h.current&&setTimeout(()=>{h.current.unmount()},0)},[]),(0,Ke.jsx)("box",{html:!0,...e,ref:o})});Ie.displayName="HTMLPortal";var Yi=require("react");var ft=require("react");var j=require("react");var Gi=require("react");var Le=(r,e,t=[])=>{let i=X(),n=i?i.world:void 0;(0,Gi.useEffect)(()=>{if(i){let s=e,o=nt[r];i.world.activatedEvents.push(o);let h=o.slice(2).toLowerCase();return i.world.addEventListener(h,s),()=>{i.world.removeEventListener(h,s)}}return()=>{}},[n,r,...t])};function qe(r,e){if(r===0)return[0,1];if(e===0)return[1,0];let t=Math.abs(r)/Math.abs(e);return[t,1-t]}var ke=require("react");function Zi(){let r=(0,ke.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,ke.useLayoutEffect)(()=>{function e(i){i.key==="Shift"&&(r.current.shift=!0),i.key==="Control"&&(r.current.ctrl=!0),i.key==="Alt"&&(r.current.alt=!0)}function t(i){i.key==="Shift"&&(r.current.shift=!1),i.key==="Control"&&(r.current.ctrl=!1),i.key==="Alt"&&(r.current.alt=!1)}return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),r}var Je=(r,e)=>{let t=ie(),i=X(),n=Me(),s=(0,j.useRef)(),o=(0,j.useRef)(null),h=(0,j.useRef)(),[l,u]=(0,j.useState)(!1),d=(0,j.useRef)(!1),c=(0,j.useRef)({north:0,south:0,east:0,west:0}),m=Zi(),b=(0,j.useCallback)(f=>I=>{if(d.current=!0,u(!0),n&&i){let{top:_,left:S}=n,v=i.viewerToWorld(I.pageX-S,I.pageY-_);h.current={x:v.x,y:v.y},s.current=f}},[n,i]),w=(0,j.useMemo)(()=>r.width/r.height,[r.width,r.height]),P=(0,j.useCallback)(f=>{if(!Math.abs(f.north-f.south+(f.east-f.west)))return;let _=-f.west+f.east,S=-f.north+f.south,v=r.width+_,p=r.height+S;if(v/p>=w){let O=p*w,L=v-O,[k,$]=qe(f.east,f.west);f.west=f.west+L*$,f.east=f.east-L*k}else{let O=v/w,L=p-O,[k,$]=qe(f.north,f.south);f.north=f.north+L*k,f.south=f.south-L*$}},[r.width,r.height,w]);Mt(()=>{h&&i&&i.updateNextFrame()}),(0,j.useEffect)(()=>{i&&i.updateNextFrame()},[i,l]);let x=(0,j.useCallback)(f=>{if(!i||!n||i.mode!=="sketch")return;let{top:I,left:_}=n,S=i.viewerToWorld(f.pageX-_,f.pageY-I),v=o.current,p=!r.maintainAspectRatio&&m.current.alt,E=!p&&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=S.x-(h.current?h.current.x:0),p&&(c.current.west=-c.current.east)),(s.current==="translate"||s.current==="west"||s.current==="north-west"||s.current==="south-west")&&(c.current.west=S.x-(h.current?h.current.x:0),p&&(c.current.east=-c.current.west)),(s.current==="translate"||s.current==="north"||s.current==="north-east"||s.current==="north-west")&&(c.current.north=S.y-(h.current?h.current.y:0),p&&(c.current.south=-c.current.north)),(s.current==="translate"||s.current==="south"||s.current==="south-west"||s.current==="south-east")&&(c.current.south=S.y-(h.current?h.current.y:0),p&&(c.current.north=-c.current.south)),(r.maintainAspectRatio||E)&&P(c.current),v){let O=c.current.west,L=c.current.north,k=r.width+c.current.east,$=r.height+c.current.south;v.points[1]=Math.min(O,k),v.points[2]=Math.min(L,$),v.points[3]=Math.max(O,k),v.points[4]=Math.max(L,$),i.updateNextFrame()}},[i,r.width,r.height,r.maintainAspectRatio,n]);Le("mousemove",x,[r.width,r.height,n]),Le("pointermove",x,[r.width,r.height,n]);let g=(0,j.useRef)();return(0,j.useEffect)(()=>{g.current=()=>{if(d.current){let f=c.current.west,I=c.current.north,_=r.width+c.current.east,S=r.height+c.current.south,v=Math.min(f,_),p=Math.min(I,S),E=Math.max(f,_),O=Math.max(I,S),L={x:(r.x||0)+v,y:(r.y||0)+p,width:E-v||1,height:O-p||1};r.maintainAspectRatio,e(L),s.current=void 0,h.current=void 0,c.current.east=0,c.current.west=0,c.current.north=0,c.current.south=0,d.current=!1,u(!1)}}},[e,r.height,r.width,r.x,r.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:o,mode:t,mouseEvent:b,onPointerMoveCallback:x,isEditing:l}};var z=require("react/jsx-runtime");function ti({handleSize:r,resizable:e,onSave:t,children:i,maintainAspectRatio:n,disableCardinalControls:s,...o}){let h=typeof r>"u"?n?10:8:r,{portalRef:l,mode:u,mouseEvent:d,isEditing:c}=Je({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:n},t),m=(0,ft.useMemo)(()=>d("translate"),[d]),b=(0,ft.useMemo)(()=>d("east"),[d]),w=(0,ft.useMemo)(()=>d("west"),[d]),P=(0,ft.useMemo)(()=>d("south"),[d]),x=(0,ft.useMemo)(()=>d("north"),[d]),g=(0,ft.useMemo)(()=>d("south-east"),[d]),f=(0,ft.useMemo)(()=>d("south-west"),[d]),I=(0,ft.useMemo)(()=>d("north-east"),[d]),_=(0,ft.useMemo)(()=>d("north-west"),[d]),S=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:n||s?"50%":2,position:"absolute",background:"#fff",pointerEvents:c?"none":S?"initial":"none"};return(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)("world-object",{...o,children:[i,S&&e?(0,z.jsx)(Ie,{ref:l,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:S&&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":S?"initial":"none"}}),n?null:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{title:"east",onTouchStart:b,onMouseDown:b,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:w,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:x,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:P,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:I,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:_,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 ei=require("react/jsx-runtime");function In({interactive:r,region:e,onClick:t,onSave:i,maintainAspectRatio:n,disableCardinalControls:s,isEditing:o,rotation:h,style:l={backgroundColor:"rgba(0,0,0,.5)"}}){let u=(0,Yi.useCallback)(d=>{i({id:e.id,x:e.x,y:e.y,height:e.height,width:e.width,...d})},[i,e.id,e.x,e.y,e.height,e.width]);return(0,ei.jsx)(ti,{x:e.x,y:e.y,rotation:h,width:e.width,height:e.height,resizable:o,onSave:u,maintainAspectRatio:n,disableCardinalControls:s,children:(0,ei.jsx)("box",{interactive:r,onClick:d=>{d.preventDefault(),d.stopPropagation(),t(e)},target:{x:0,y:0,width:e.width,height:e.height},style:l})})}var Qi=require("react"),It=require("react/jsx-runtime"),ii=r=>{let e=r.width/(r.crop?.width||r.tiles.width),t=r.tiles.imageService.tiles||[],i=r.tiles.imageService.sizes||[],n=r.enableThumbnail,s=r.enableSizes,o=(0,Qi.useMemo)(()=>{let h=r.tiles.imageService.id||r.tiles.imageService["@id"];return h&&h.endsWith("/info.json")?h.slice(0,-1*10):h},[r.tiles.imageService.id]);return(0,It.jsx)("world-object",{rotation:r.rotation,scale:e,height:r.crop?.height||r.tiles.height,width:r.crop?.width||r.tiles.width,x:r.x,y:r.y,onClick:r.onClick,children:(0,It.jsxs)("composite-image",{id:r.tiles.imageService.id,width:r.crop?.width||r.tiles.width,height:r.crop?.height||r.tiles.height,crop:r.crop,renderOptions:r.renderOptions,children:[n&&r.tiles.thumbnail?(0,It.jsx)("world-image",{priority:!0,uri:r.tiles.thumbnail.id,target:{width:r.tiles.width,height:r.tiles.height},display:{width:r.tiles.thumbnail.width,height:r.tiles.thumbnail.height},crop:r.crop}):null,s&&i.map((h,l)=>(0,It.jsx)("world-image",{uri:`${o}/full/${h.width},${h.height}/0/default.jpg`,target:{width:r.tiles.width,height:r.tiles.height},display:{width:h.width,height:h.height},crop:r.crop},l)),t.map(h=>(h.scaleFactors||[]).map(l=>(0,It.jsx)("tiled-image",{uri:r.tiles.imageService.id,display:{width:r.tiles.width,height:r.tiles.height},tile:h,scaleFactor:l,crop:r.crop},`${r.tiles.imageService.id}-tile-${l}`)))]},r.tiles.imageService.id)},r.tiles.imageService.id)};var Fe=require("react");function ni(r){return r.id||r["@id"]}var Ki=require("@atlas-viewer/iiif-image-api"),qi=require("@iiif/helpers/thumbnail");function Ln(){return typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}function kn(){let r=Ln();if(typeof r.IIIF_VAULT<"u")return r.IIIF_VAULT;if(typeof r.IIIFVault>"u")throw new Error("Vault not found");return r.IIIF_VAULT=new r.IIIFVault.Vault,r.IIIF_VAULT}var Lt={};function ce(){return Lt.helper||(Lt.vault=kn(),Lt.loader=new Ki.ImageServiceLoader,Lt.helper=(0,qi.createThumbnailHelper)(Lt.vault,{imageServiceLoader:Lt.loader})),Lt}async function De(r,e,t){let{loader:i}=ce(),n=await i.loadService({id:r,width:e,height:t});return{id:ni(n),width:e,height:t,imageService:n,thumbnail:void 0}}async function Ji(r,e=512){let{vault:t,loader:i,helper:n}=ce(),s=[];for(let o of r.items)for(let h of t.get(o).items){let u=t.get(t.get(h).body[0]).service[0],d=await De(u.id,r.width,r.height),{best:c}=await n.getBestThumbnailAtSize(t,i,r,{maxHeight:e,maxWidth:e},!0);c&&(d.thumbnail=c),s.push(d)}return s}async function tn(r){let{vault:e}=ce(),t=[];for(let i of r.items){let n=e.get(i);t.push(...await Ji(n))}return t}async function Dn(r){try{let{vault:e}=ce(),t=await e.loadManifest(r);return t?tn(t):[]}catch(e){return console.log("ERR",e),[]}}var ri=require("react/jsx-runtime"),Fn=r=>{let[e,t]=(0,Fe.useState)();return(0,Fe.useEffect)(()=>{De(r.id,r.width,r.height).then(i=>{t(i)})},[r.height,r.id,r.width]),(0,ri.jsx)("world-object",{x:r.x||0,y:r.y||0,width:r.width,height:r.height,scale:r.scale,children:e?(0,ri.jsx)(ii,{tiles:e,x:r.x,y:r.y,width:r.crop?.width||r.width,height:r.crop?.height||r.height,rotation:r.rotation,crop:r.crop,enableSizes:r.enableSizes,enableThumbnail:r.enableThumbnail,renderOptions:r.renderOptions,children:r.children}):null})};var en=require("react"),Bn=(r,e=[])=>{let t=X();(0,en.useEffect)(()=>t?t.registerHook("useAfterPaint",r):()=>{},e)};var U=require("react");var Be=require("react/jsx-runtime"),Wn=(r,{onCreated:e,resetWorldOnChange:t=!0,mode:i="explore",cover:n,containerRef:s,...o})=>{let[h,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(void 0),[c,m]=(0,U.useState)(void 0),b=(0,U.useRef)(),w=(0,U.useRef)(),P=(0,U.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[x,g,f,I]=Oe(void 0,{width:o.width,height:o.height});K(()=>{let S=document.createElement("canvas");S.height=P.height,S.width=P.width,b.current=S},[]),K(()=>{let S=b.current;S&&(S.height=P.height,S.width=P.width)},[P.width,P.height]),(0,U.useEffect)(()=>g?g.runtime.registerHook("useAfterFrame",()=>{if(b.current)try{d(b.current.toDataURL())}catch(v){v instanceof Error&&m(v.message)}}):()=>{},[]),(0,U.useEffect)(()=>g?g.runtime.world.addLayoutSubscriber(v=>{v==="ready"&&l(!0)}):()=>{},[]),(0,U.useEffect)(()=>{g&&g.em&&g.em.updateBounds()},[P]),(0,U.useEffect)(()=>{g&&(g.runtime.mode=i)},[i]),(0,U.useEffect)(()=>{if(g){let S=g.runtime;S.resize(f.current.width,o.width,f.current.height,o.height),n?S.cover():S.goHome(),f.current.width=o.width,f.current.height=o.height,S.updateNextFrame()}},[o.width,o.height]),K(()=>{let S=w.current;S&&(S.style.width=`${P.width}px`,S.style.height=`${P.height}px`,S.style.pointerEvents="none",S.style.overflow="hidden")},[P.height,P.width]),K(()=>{let S=()=>{if(g&&g.runtime){let v=g.runtime;v.resize(f.current.width,o.width,f.current.height,o.height),f.current.width=o.width,f.current.height=o.height,v.updateNextFrame()}};return window.addEventListener("resize",S),()=>window.removeEventListener("resize",S)},[g,o.height,o.width]);let _=(0,U.useCallback)(function(v){let p=()=>{g&&(g.ready=!0)};return(0,U.useEffect)(()=>{if(g){let E=e&&e(g);return void(E&&E.then?E.then(p):p())}return()=>{}},[]),v.children},[g]);return(0,U.useEffect)(()=>{if(g&&g.runtime){let S=g.runtime;if(t)return S.world.addLayoutSubscriber(v=>{v==="recalculate-world-size"&&S.goHome({cover:n})})}return()=>{}},[g,n,t]),K(()=>{g&&Ht.render((0,Be.jsx)(_,{children:(0,Be.jsx)(dt.Provider,{value:i,children:(0,Be.jsx)(ct.Provider,{value:g,children:r})})}),g.runtime)},[g,i,r]),{loading:!u&&h,uri:u,imageError:c}};var nn=require("react"),Nn=(r,e=[])=>{let t=X();(0,nn.useEffect)(()=>t?t.registerHook("useBeforeFrame",r):()=>{},e)};var yt=require("react");var zn=(r=[])=>{let[e,t]=(0,yt.useState)(r),[i,n]=(0,yt.useState)(!1),[s,o]=(0,yt.useState)(),h=(0,yt.useCallback)(()=>{n(!0),o(void 0)},[]),l=(0,yt.useCallback)(m=>{n(!0),o(m)},[]),u=m=>{t(b=>b.map(w=>w.id===m.id?m:w))},d=(0,yt.useCallback)(m=>{let b=ot();t(w=>[...w,{id:b,...m}]),n(!1),o(void 0)},[]),c=(0,yt.useCallback)(()=>{n(!1),o(void 0)},[]);return{isEditing:i,onDeselect:c,selectedAnnotation:s,onCreateNewAnnotation:d,annotations:e,onUpdateAnnotation:u,setIsEditing:n,setSelectedAnnotation:o,editAnnotation:l,addNewAnnotation:h}};function Hn(r){return r.current==="sketch"}function jn(r,e){return r?e?{...r,...e||{},":hover":r[":hover"]?Object.assign(r[":hover"]||{},e[":hover"]||{}):e[":hover"],":active":r[":active"]?Object.assign(r[":active"]||{},e[":active"]||{}):e[":hover"]}:r:e}