@atlas-viewer/atlas 3.0.0 → 3.0.1

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 mn=Object.create;var Qt=Object.defineProperty;var fn=Object.getOwnPropertyDescriptor;var gn=Object.getOwnPropertyNames;var pn=Object.getPrototypeOf,yn=Object.prototype.hasOwnProperty;var bn=(n,e,t)=>e in n?Qt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var vn=(n,e)=>{for(var t in e)Qt(n,t,{get:e[t],enumerable:!0})},gi=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of gn(e))!yn.call(n,r)&&r!==t&&Qt(n,r,{get:()=>e[r],enumerable:!(i=fn(e,r))||i.enumerable});return n};var q=(n,e,t)=>(t=n!=null?mn(pn(n)):{},gi(e||!n||!n.__esModule?Qt(t,"default",{value:n,enumerable:!0}):t,n)),wn=n=>gi(Qt({},"__esModule",{value:!0}),n);var a=(n,e,t)=>(bn(n,typeof e!="symbol"?e+"":e,t),t);var Zn={};vn(Zn,{Atlas:()=>Je,AtlasAuto:()=>kn,AtlasContext:()=>ut,BoundsContext:()=>Ct,Box:()=>rt,BrowserEventManager:()=>kt,CanvasRenderer:()=>ie,CompositeRenderer:()=>At,CompositeResource:()=>Kt,DebugRenderer:()=>ne,DrawBox:()=>Dn,Geometry:()=>Mt,GridBuilder:()=>Ze,HTMLPortal:()=>Fe,ImageService:()=>zn,ImageTexture:()=>Pt,ModeContext:()=>ct,ModeProvider:()=>Tn,OverlayRenderer:()=>Lt,ReactAtlas:()=>Vt,RegionHighlight:()=>Fn,ResizeWorldItem:()=>oi,Runtime:()=>dt,SingleImage:()=>H,StaticRenderer:()=>ce,Text:()=>yt,TileSet:()=>li,TiledImage:()=>tt,WebGLRenderer:()=>le,World:()=>et,WorldObject:()=>ht,Zone:()=>Ge,activateEvents:()=>Qe,applyProps:()=>Ye,bounceOut:()=>te,canDrag:()=>Vn,createDefaultEventMap:()=>$e,defaultConfig:()=>Ai,defaultPreset:()=>de,easingFunctions:()=>st,fromImage:()=>xn,getId:()=>hi,getTileFromCanvas:()=>on,getTileFromImageService:()=>ze,getTiles:()=>Nn,getTilesFromManifest:()=>an,mergeStyles:()=>Gn,popmotionController:()=>re,presets:()=>qe,staticPreset:()=>Ke,supportedEventAttributes:()=>Ht,supportedEventMap:()=>nt,unmountComponentAtNode:()=>$t,useAfterFrame:()=>ti,useAfterPaint:()=>Hn,useAtlas:()=>me,useAtlasImage:()=>jn,useBeforeFrame:()=>Un,useCanvas:()=>ei,useControlledAnnotationList:()=>$n,useFrame:()=>Ft,useMode:()=>se,useResizeWorldItem:()=>si,useRuntime:()=>$,useWorldEvent:()=>Be});module.exports=wn(Zn);var Ht=["onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onScroll","onWheel","onClick","onDragStart","onDragEnd","onDragEnter","onDragExit","onDrag","onDragOver","onContextMenu"];function $e(){return Ht.reduce((n,e)=>(n[e]=[],n),{})}var nt=Ht.reduce((n,e)=>(n[e.slice(2).toLowerCase()]=e,n[e]=e,n),{});var X=require("@atlas-viewer/dna");var xt=require("@atlas-viewer/dna");var pi="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var at=(n=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(n));for(;n--;)e+=pi[t[n]&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 r=nt[e];if(!this.eventHandlers[r])throw new Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].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(r=>r!==t))});this.id=this.__id=at(),this.eventHandlers=$e()}get crop(){return this._crop}set crop(e){this._crop=e}getObjectsAt(e){return[]}getAllPointsAt(e,t,i){return[]}getScheduledUpdates(e,t){return[]}dispatchEvent(e,t){let i=this.eventHandlers[e],r=i?i.length:0,s=!1;if(r)for(let o=0;o<r;o++)try{i[o](t),s=!0}catch(l){console.error(e,l)}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,xt.mutate)(this.points,(0,xt.translate)(e,t))}atScale(e){(0,xt.mutate)(this.points,(0,xt.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,xt.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};var H=class n 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,X.dna)(5)},this.points=(0,X.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=X.DnaFactory.singleBox(t.width,t.height,t.x,t.y),this.display={x:0,y:0,scale:i,width:t.width/i,height:t.height/i,points:X.DnaFactory.singleBox(t.width/i,t.height/i),rotation:t?.rotation}}}applyProps(t){let i=t.display?t.display.width:t.target.width,r=t.target.width/i;if(this.id=t.id||t.uri,this.uri=t.uri,this.points.set(X.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y)),t.style&&typeof t.style.opacity<"u"&&(this.style.opacity=t.style.opacity),t.crop){this.cropData=t.crop;let s=X.DnaFactory.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);(0,X.mutate)(s,(0,X.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(s):this.crop=(0,X.dna)(s)}t.display?(this.display.scale=r,this.display.width=t.display.width,this.display.height=t.display.height,this.display.rotation=t.display.rotation,this.display.points=X.DnaFactory.singleBox(t.display.width,t.display.height)):(this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.display.points=X.DnaFactory.singleBox(t.target.width/r,t.target.height/r))}getAllPointsAt(t,i,r){return[[this,this.crop||this.points,i]]}static fromSvg(t,i,r,s){return n.fromImage("data:image/svg+xml;base64,"+btoa(t),i,r,s)}static fromImage(t,i,r,s){let o=new n;return o.applyProps({uri:t,id:s,display:r,target:i}),o}getImageUrl(){return this.uri}};var St=require("@atlas-viewer/dna");var Pt=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,St.dna)(5)},this.points=(0,St.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=St.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?St.DnaFactory.singleBox(t.width/i,t.height/i):this.points}}}applyProps(t){let i=t.display?t.display.width:t.target.width,r=t.target.width/i;this.id=t.id,this.points.set(St.DnaFactory.singleBox(t.target.width,t.target.height)),this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.getTexture=t.getTexture,this.display.points=r!==1?St.DnaFactory.singleBox(t.target.width/r,t.target.height/r):this.points}getAllPointsAt(t,i,r){return[[this,this.points,i]]}};var V=require("@atlas-viewer/dna");function yi(n,e,t=1){let i=e.length;if(i===0)throw new Error("No resources passed in.");let r=0,s=1/0;for(let o=0;o<i&&!(!e[o]||!e[o].display);o++){let l=Ve(e[o].display.scale,n/(t||1));l<s&&(s=l,r=o)}return r}function Ve(n,e){return Math.abs(n-e)}function Ot(n,e){let t=Ve(n.x,e.x),i=Ve(n.y,e.y);return Math.sqrt(Math.pow(t,2)+Math.pow(i,2))}function bi(n){let e=n.length;return n.indexOf("/info.json")===e-10?n.slice(0,-10):n}function pe(n,e,t){return Math.min(Math.max(n,e),t)}var tt=class n 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,"version3");a(this,"tileUrl");this.tileUrl=bi(t.url),this.id=t.id||`${this.tileUrl}--${t.scaleFactor}`,this.points=t.displayPoints?t.displayPoints:(0,V.transform)(t.points,(0,V.scale)(t.scaleFactor)),this.tileWidth=t.tileWidth,this.version3=t.version3,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",typeof t.version3<"u"&&(this.version3=t.version3),t.crop){this.cropData=t.crop;let i=(0,V.dna)([...this.points]),r=i.length/5,s=t.crop.x||0,o=t.crop.y||0,l=t.crop.x+t.crop.width,h=t.crop.y+t.crop.height;for(let c=0;c<r;c++){let d=c*5;i[d+1]<l&&i[d+3]>s&&i[d+2]<h&&i[d+4]>o?(i[d+1]=pe(i[d+1],s,l),i[d+3]=pe(i[d+3],s,l),i[d+2]=pe(i[d+2],o,h),i[d+4]=pe(i[d+4],o,h)):i[d]=0}(0,V.mutate)(i,(0,V.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(i):this.crop=i}}static fromTile(t,i,r,s,o,l,h,c){r.height=r.height?r.height:r.width;let d=h?Math.floor(i.width/s):Math.ceil(i.width/s),u=h?Math.floor(i.height/s):Math.ceil(i.height/s),m=Math.ceil(d/r.width),y=Math.ceil(u/r.height),v=V.DnaFactory.grid(m,y),S=V.DnaFactory.grid(m,y),P=o?o["@context"]?Array.isArray(o["@context"])?o["@context"]:[o["@context"]]:[]:[],g=typeof c<"u"?c:P.indexOf("http://iiif.io/api/image/3/context.json")!==-1;for(let C=0;C<y;C++)for(let R=0;R<m;R++){let w=R*r.width,b=C*r.height;S.addPoints(w*s,b*s,R===m-1?i.width:(w+r.width)*s,C===y-1?i.height:(b+r.height)*s),v.addPoints(w,b,R===m-1?d:w+r.width,C===y-1?u:b+r.height)}let f=new n({url:t,scaleFactor:s,points:v.build(),displayPoints:S.build(),width:i.width,height:i.height,tileWidth:r.width,format:l,version3:g});return f.applyProps({service:o}),f}getImageUrl(t){let i=this.points.slice(t*5,t*5+5),r=i[3]-i[1],s=i[4]-i[2],o=Math.ceil(r/this.display.scale),l=Math.ceil(s/this.display.scale),h=`${o>this.tileWidth?this.tileWidth:o},`;return this.version3&&(h+=`${l>this.tileWidth?this.tileWidth:l}`),`${this.tileUrl}/${i[1]},${i[2]},${r},${s}/${h}/0/default.${this.format||"jpg"}`}getAllPointsAt(t,i,r){let s=(0,V.hidePointsOutsideRegion)(this.crop||this.points,t);return[[this,s,i]]}transform(t){(0,V.mutate)(this.points,t)}getScheduledUpdates(t,i){return[]}};var lt=require("@atlas-viewer/dna");var ye=class extends W{constructor(){super(...arguments);a(this,"type","spacial-content")}getAllPointsAt(t,i,r){return[[this,this.points,i]]}};var Kt=class extends ye{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,lt.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,r)=>r.display.width-i.display.width),this.images=[];let t=.1;for(let i of this.allImages){if(i.display.width<this.renderOptions.minSize&&i.display.height<this.renderOptions.minSize&&!i.priority||i instanceof H&&(i.display.width>this.renderOptions.maxImageSize||i.display.height>this.renderOptions.maxImageSize)&&!i.priority)continue;if(Math.abs(i.display.scale-t)<.25||i.priority){let s=this.images.pop();s&&(s instanceof H||s.priority)?(i.priority&&this.images.push(i),this.images.push(s)):i&&this.images.push(i)}else i&&this.images.push(i);t=i.display.scale}this.images.length===0&&(this.images=[...this.allImages]),this.scaleFactors=this.images.map(i=>i.display.scale),this.maxScaleFactor=Math.max(...this.scaleFactors)});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=lt.DnaFactory.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:lt.DnaFactory.singleBox(t.width,t.height),height:t.height,width:t.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:3,minSize:255,maxImageSize:2048,quality:1.5,...t.renderOptions||{}},this.addImages(t.images)}applyProps(t){typeof t.renderSmallestFallback<"u"&&t.renderSmallestFallback!==this.renderOptions.renderSmallestFallback&&(this.renderOptions.renderSmallestFallback=t.renderSmallestFallback),typeof t.renderLayers<"u"&&t.renderLayers!==this.renderOptions.renderLayers&&(this.renderOptions.renderLayers=t.renderLayers),typeof t.minSize<"u"&&t.minSize!==this.renderOptions.minSize&&(this.renderOptions.minSize=t.minSize),typeof t.maxImageSize<"u"&&t.maxImageSize!==this.renderOptions.maxImageSize&&(this.renderOptions.maxImageSize=t.maxImageSize),typeof t.quality<"u"&&t.quality!==this.renderOptions.quality&&(this.renderOptions.quality=t.quality)}appendChild(t){this.addImages([t])}removeChild(t){this.images.indexOf(t)!==-1&&(this.images=this.images.filter(i=>i!==t),this.sortByScales())}insertBefore(t,i){this.addImages([t])}hideInstance(){}addImages(t){for(let i of t)i.__parent=this,i.__owner=this.__owner;this.allImages.push(...t.filter(Boolean)),this.sortByScales()}sortByScales(){this._scheduleSortByScales=!0}getScheduledUpdates(t,i){return this._scheduleSortByScales?[this._sortByScales]:this.isFullyLoaded?[]:i>1/this.maxScaleFactor?this.fallback:[]}getAllPointsAt(t,i,r){if(this.images.length===0)return[];let s=yi(1/(r||1)/(window.devicePixelRatio||1),this.images,this.renderOptions.quality),o=this.images.length,l=i?(0,lt.compose)(i,(0,lt.translate)(this.x,this.y)):(0,lt.translate)(this.x,this.y);if(s!==this.images.length-1&&this.images[s+1]){let h=[];for(let u=o-1;u>=s;u--)h.push(u);let c=h[0];this.renderOptions.renderLayers&&(h=h.slice(-Math.min(h.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&h.indexOf(c)===-1&&h.unshift(c);let d=[];for(let u=0;u<h.length;u++)d.push(...this.images[h[u]].getAllPointsAt(t,l,r));return d}return this.images[s].getAllPointsAt(t,l,r)}};var M=require("@atlas-viewer/dna");var T=require("@atlas-viewer/dna");function be(n,e,t,i,r){let s=Math.PI/180*r,o=Math.cos(s),l=Math.sin(s),h=o*(t-n)+l*(i-e)+n,c=o*(i-e)-l*(t-n)+e;return[h,c]}var ht=class n 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:r=0,y:s=0}=i||{};t?(this.id=t.id||"",this.scale=1,this.layers=t.layers,this.points=(0,T.dna)([1,r,s,r+t.width,s+t.height]),this.worldPoints=(0,T.dna)([1,r,s,r+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 n;return i.applyProps(t),i}applyProps(t){let i=t.x||0,r=t.y||0;this.id=t.id;let s=typeof t.scale<"u"?t.scale:this.scale;this.points[0]=1,this.points[1]=i,this.points[2]=r,this.points[3]=i+t.width,this.points[4]=r+t.height,this.rotation=t.rotation||0,this.worldPoints[3]=this.worldPoints[1]+t.width,this.worldPoints[4]=this.worldPoints[2]+t.height,t.scale&&t.scale!==1&&this.atScale(s),this.scale=s}appendChild(t){t.points[0]===0&&t.points.set(this.points),t.__owner.value=this,this.addLayers([t])}removeChild(t){this.layers=this.layers.filter(i=>i!==t),this.filteredPointsBuffer=(0,T.dna)(this.layers.length*5)}insertBefore(t,i){let r=this.layers.indexOf(i);if(r===-1||this.layers.indexOf(t)!==-1)return;let s=this.layers.slice(0,r),o=this.layers.slice(r);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 l=0;l<s;l++){let h=this.layers[l];if(i&&h.isShape){let d=(0,T.transform)(h.points,(0,T.translate)(this.x,this.y));if(!h.intersects([t[1]-d[1],t[2]-d[2]]))continue}if((0,T.hidePointsOutsideRegion)((0,T.transform)(h.points,(0,T.translate)(this.x,this.y)),t,this.filteredPointsBuffer)[0]!==0&&o.push(h),i){let d=h;o.push(...d.getObjectsAt(t,i))}}return o}applyRotation(t){if(this.rotation){let i={x:t[1],y:t[2]},r={x:t[1],y:t[4]},s={x:t[3],y:t[2]},o={x:t[3],y:t[4]},l=this.points[1]+(this.points[3]-this.points[1])/2,h=this.points[2]+(this.points[4]-this.points[2])/2,[c,d]=be(l,h,i.x,i.y,this.rotation),[u,m]=be(l,h,r.x,r.y,this.rotation),[y,v]=be(l,h,s.x,s.y,this.rotation),[S,P]=be(l,h,o.x,o.y,this.rotation),g=Math.min(c,u,y,S),f=Math.max(c,u,y,S),C=Math.min(d,m,v,P),R=Math.max(d,m,v,P);return(0,T.dna)([t[0],g,C,f,R])}return t}getAllPointsAt(t,i,r){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),l=this.layers.length,h=[],c=(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,u=r*this.scale;for(let m=0;m<l;m++)h.push(...this.layers[m].getAllPointsAt(c,d,u));return h}addLayers(t){let i=[];for(let r of t)this.layers.indexOf(r)===-1&&(i.push(r),r.points.length===5&&(r.points[1]<this.worldPoints[1]/this.scale||r.points[2]<this.worldPoints[2]/this.scale||r.points[3]>this.worldPoints[3]/this.scale||r.points[4]>this.worldPoints[4]/this.scale)&&(r.crop=r.crop||(0,T.dna)([1,Math.max(this.worldPoints[1]/this.scale,r.points[1]),Math.max(this.worldPoints[2]/this.scale,r.points[2]),Math.min(this.worldPoints[3]/this.scale,r.points[3]),Math.min(this.worldPoints[4]/this.scale,r.points[4])])));this.layers=this.layers.concat(i),this.filteredPointsBuffer=(0,T.dna)(this.layers.length*5)}getScheduledUpdates(t,i){let r=this.layers.length;this._updatedList=[];let s=i*this.scale;for(let o=0;o<r;o++){let l=this.layers[o].getScheduledUpdates(t,s);l&&this._updatedList.push(...l)}return this._updatedList}};var et=class n extends W{constructor(t=0,i=0,r=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,M.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,M.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,M.dna)(r*5),this.filteredPointsBuffer=(0,M.dna)(r*5)}get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}static withProps(t){let i=new n;return i.applyProps(t),i}applyProps(t){typeof t.width<"u"&&typeof t.height<"u"&&(t.width!==this._width||t.height!==this._height)&&this.resize(t.width,t.height),t.viewingDirection!==this.viewingDirection&&(this.viewingDirection=t.viewingDirection,this.triggerRepaint())}propagateTouchEvent(t,i,r){let s=[];for(let o of r)if(o.x&&o.y){let l=M.DnaFactory.singleBox(1,1,o.x,o.y);s.push(this.getObjectsAt(l,!0).reverse())}return s.map(o=>this.propagateEvent(t,i,o,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,i,r,s,o={}){let l=M.DnaFactory.singleBox(1,1,r,s),h=this.getObjectsAt(l,!0).reverse();return this.propagateEvent(t,i,h,o)}propagateEvent(t,i,r,{bubbles:s=!1,cancelable:o=!1}={}){i.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let l=!1;i.stopPropagation=()=>{l=!0};let h=r.length;for(let u=h-1;u>=0;u--){this._propagateEventTargets.unshift(r[u][0]);let m=r[u][1].length;if(m)for(let y=0;y<m;y++)this._propagateEventTargets.unshift(r[u][1][y])}let c=this._propagateEventTargets.length,d=!1;for(let u=0;u<c&&(i.atlasTarget=this._propagateEventTargets[u],i.atlasWorld=this,d=this._propagateEventTargets[u].dispatchEvent(t,i)||d,!l);u++);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 r of this.objects)if(r&&r.id===t.id){this.removeChild(r);return}return}this.objects[i]=null,this.renderOrder=this.renderOrder.filter(r=>r!==i),this.points[i*5]=0,this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(t,i){let r=this.objects.indexOf(i);if(r===-1)return;let s=this.appendWorldObject(t);this.renderOrder.splice(r-1,0,s/5)}hideInstance(){}asWorldObject(){return null}addZone(t){this.zones.push(t)}selectZone(t){if(typeof t=="string"){let i=this.zones.length;for(let r=0;r<i;r++)if(this.zones[r].id===t){this.selectedZone=r,this.trigger("zone-changed");return}}else this.zones[t]&&(this.selectedZone=t,this.trigger("zone-changed"))}deselectZone(){this.selectedZone=void 0}getActiveZone(){if(this.selectedZone)return this.zones[this.selectedZone]}hasActiveZone(){return typeof this.selectedZone<"u"}checkResizeInternalBuffer(){if((0,M.dnaLength)(this.points)===this.objects.length){let t=this.points,i=(0,M.dna)(this.points.length*2);i.set(t,0),this.points=i}}appendWorldObject(t){this.checkResizeInternalBuffer();let i=this.objects.length*5,r=t.points;return t.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),t.points[1]=r[1],t.points[2]=r[2],t.points[3]=r[3],t.points[4]=r[4],this.objects.push(t),this.filteredPointsBuffer=(0,M.dna)(this.objects.length*5),this.needsRecalculate=!0,this.triggerRepaint(),i}recalculateWorldSize(){let t=!1;if(this.needsRecalculate){let i=new Int32Array(this.objects.length),r=new Int32Array(this.objects.length),s=this.renderOrder.length;for(let h=0;h<s;h++){let c=this.renderOrder[h];this.objects[c]&&(i[h]=this.points[c*5+3],r[h]=this.points[c*5+4])}let o=Math.max(...i);o!==this._width&&(this._width=o,t=!0);let l=Math.max(...r);l!==this._height&&(this._height=l,t=!0),t&&this.trigger("recalculate-world-size",{width:o,height:l}),this.needsRecalculate=!1}return t}addObjectAt(t,i){i.width&&!i.height?i.height=i.width/t.width*t.height:i.height&&!i.width&&(i.width=i.height/t.height*t.width),(!i||!i.width||!i.height)&&(i.width=t.width,i.height=t.height);let{width:r,x:s,y:o}=i,l=r/t.width;this.checkResizeInternalBuffer(),this.points.set(M.DnaFactory.singleBox(t.width,t.height,0,0),this.objects.length*5);let h=new ht(t);return h.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(h),this.scaleWorldObject(this.objects.length-1,l),this.translateWorldObject(this.objects.length-1,s,o),this.filteredPointsBuffer=(0,M.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,h}scaleWorldObject(t,i){(0,M.mutate)(this.points.subarray(t*5,t*5+5),(0,M.scaleAtOrigin)(i,this.points[t*5+1],this.points[t*5+2]));let r=this.objects[t];r&&(r.atScale(i),this.triggerRepaint())}translateWorldObject(t,i,r){(0,M.mutate)(this.points.subarray(t*5,t*5+5),(0,M.translate)(i,r));let s=this.objects[t];s&&(s.translate(i,r),this.triggerRepaint())}resize(t,i){return this._width=t,this._height=i,this.aspectRatio=t/i,this.triggerRepaint(),this}getObjects(){return this.objects}getPoints(){return this.points}getPointsFromViewer(t,i){let r=M.DnaFactory.singleBox(t.width,t.height,t.x,t.y);return this.getPointsAt(r,i,t.scale)}addLayoutSubscriber(t){return this.subscriptions.push(t),()=>{this.subscriptions.splice(this.subscriptions.indexOf(t),1)}}getScheduledUpdates(t,i){let r=(0,M.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),s=this.objects.length;this._updatedList=[];for(let o=0;o<s;o++)if(r[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 r=this.getActiveZone(),s=(0,M.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),o=this.renderOrder.length,l=[];for(let h=0;h<o;h++){let c=this.renderOrder[h];if(s[c*5]!==0){let d=this.objects[c];if(!d||r&&r.objects.indexOf(d)===-1)continue;if(d.type!=="world-object"){l.push([d,[d]]);continue}i?l.push([d,d.getObjectsAt(t,i)]):l.push([d,this.emptyPaintables])}}return l}getPointsAt(t,i,r=1){let s=this.getObjectsAt(t),o=(0,M.compose)((0,M.scale)(r),(0,M.translate)(-t[1],-t[2]),this.translationBuffer),l=i?(0,M.compose)(i,o,this.aggregateBuffer):o,h=s.length,c=[];for(let d=0;d<h;d++)s[d]&&c.push(...s[d][0].getAllPointsAt(t,l,r));return c}flushSubscriptions(){if(this.triggerQueue.length){this._alreadyFlushed=[];let t=this.triggerQueue.length;for(let i=0;i<t;i++){if(this._alreadyFlushed.indexOf(this.triggerQueue[i][0])!==-1)continue;typeof this.triggerQueue[i][1]>"u"&&this._alreadyFlushed.push(this.triggerQueue[i][0]);let r=this.subscriptions.length;for(let s=0;s<r;s++)this.subscriptions[s].apply(null,this.triggerQueue[i])}this.triggerQueue=[]}}trigger(t,i){this.triggerQueue.push([t,i])}triggerEventActivation(){this.trigger("event-activation")}triggerRepaint(){this.trigger("repaint")}gotoRegion(t){this.trigger("goto-region",t)}goHome(t=!1){this.trigger("go-home",{immediate:t})}zoomTo(t,i,r){this.trigger("zoom-to",{point:i,factor:t,stream:r})}zoomIn(t){this.trigger("zoom-to",{point:t,factor:.5})}zoomOut(t){this.trigger("zoom-to",{point:t,factor:2})}constraintBounds(t){this.trigger("constrain-bounds",{immediate:t})}};function xn(n){let{src:e,target:t}=n,i=t?t.width:n.width,r=t?t.height:n.height;return new ht({id:e,height:r,width:i,layers:[H.fromImage(e,{height:r,width:i},{width:n.width,height:n.height})]})}var vi=require("@atlas-viewer/dna");var Sn={margin:0},Ge=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={...Sn,...t},this.points=(0,vi.dna)(5),this.objects=e,this.recalculateBounds()}recalculateBounds(){this.points.set([1,Math.min(...this.objects.map(e=>e.points[1]))-this.config.margin,Math.min(...this.objects.map(e=>e.points[2]))-this.config.margin,Math.max(...this.objects.map(e=>e.points[3]))+this.config.margin,Math.max(...this.objects.map(e=>e.points[4]))+this.config.margin])}getPointsAt(e,t,i){return[]}};var jt=require("@atlas-viewer/dna");var ve=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,we={},Pn=["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,jt.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=at(12),this.points=(0,jt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps(t={}){let i=!1;if(t.interactive!==this.props.interactive&&(i=!0,this.props.interactive=t.interactive),t.style){let r=t.border||t.style.border;if(r!==this._parsed.border.id)if(!r)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=we[r]||ve.exec(r)||ve.exec(r);s&&(this._parsed.border.id=r,this._parsed.border.match=we[r]=s)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle="solid",t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let s=we[t.style.outline]||ve.exec(t.style.outline)||ve.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=we[t.style.outline]=s)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle="solid",t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,i=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,i=!0);for(let s of Pn)if(this.props.style[s]!==t.style[s]){i=!0;break}t.style[":hover"]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[":hover"],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),i=!0),t.style[":active"]!==this.props.pressStyles&&(this.props.pressStyles=t.style[":active"],this.activeEvents||(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0)}t.href!==this.props.href&&(this.props.href=t.href,i=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,i=!0),t.title!==this.props.title&&(this.props.title=t.title,i=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,i=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,i=!0),t.html!==this.props.html&&(this.props.html=t.html,i=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(i=!0,this.points=jt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=jt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),i&&this.__revision++}};var qt=require("@atlas-viewer/dna");var yt=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,qt.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,qt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps({id:t,target:i,text:r,color:s,backgroundColor:o,fontSize:l=18,interactive:h,fontFamily:c="Arial, sans-serif",...d}){d.font=`${l}px ${c}`,this.interactive=h||!1,typeof r<"u"&&(this.text=r||""),s&&(this.color=s),o&&(this.backgroundColor=o),t&&(this.id=t),i&&(this.points=qt.DnaFactory.singleBox(i.width,i.height,i.x,i.y),this.display.points=this.points,this.display.width=i.width,this.display.height=i.height),this.props={...this.props,...d},this.__revision++}};var A=require("@atlas-viewer/dna");var Et=require("@atlas-viewer/dna");var F=Math.pow,xe=Math.sqrt,Jt=Math.sin,wi=Math.cos,ee=Math.PI,Pe=1.70158,Se=Pe*1.525,xi=Pe+1,Si=2*ee/3,Pi=2*ee/4.5,te=function(n){return n<1/2.75?7.5625*n*n:n<2/2.75?7.5625*(n-=1.5/2.75)*n+.75:n<2.5/2.75?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375},st={linear:n=>n,easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-F(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-F(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-F(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-F(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-F(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-F(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-F(-2*n+2,5)/2},easeInSine:function(n){return 1-wi(n*ee/2)},easeOutSine:function(n){return Jt(n*ee/2)},easeInOutSine:function(n){return-(wi(ee*n)-1)/2},easeInExpo:function(n){return n===0?0:F(2,10*n-10)},easeOutExpo:function(n){return n===1?1:1-F(2,-10*n)},easeInOutExpo:function(n){return n===0?0:n===1?1:n<.5?F(2,20*n-10)/2:(2-F(2,-20*n+10))/2},easeInCirc:function(n){return 1-xe(1-F(n,2))},easeOutCirc:function(n){return xe(1-F(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-xe(1-F(2*n,2)))/2:(xe(1-F(-2*n+2,2))+1)/2},easeInBack:function(n){return xi*n*n*n-Pe*n*n},easeOutBack:function(n){return 1+xi*F(n-1,3)+Pe*F(n-1,2)},easeInOutBack:function(n){return n<.5?F(2*n,2)*((Se+1)*2*n-Se)/2:(F(2*n-2,2)*((Se+1)*(n*2-2)+Se)+2)/2},easeInElastic:function(n){return n===0?0:n===1?1:-F(2,10*n-10)*Jt((n*10-10.75)*Si)},easeOutElastic:function(n){return n===0?0:n===1?1:F(2,-10*n)*Jt((n*10-.75)*Si)+1},easeInOutElastic:function(n){return n===0?0:n===1?1:n<.5?-(F(2,20*n-10)*Jt((20*n-11.125)*Pi))/2:F(2,-20*n+10)*Jt((20*n-11.125)*Pi)/2+1},easeInBounce:function(n){return 1-te(1-n)},easeOutBounce:te,easeInOutBounce:function(n){return n<.5?(1-te(1-2*n))/2:(1+te(2*n-1))/2}};var Ee=class{constructor(e){a(this,"runtime");a(this,"pendingTransition");a(this,"lastZoomTo",null);a(this,"isConstraining",!1);a(this,"lastGoToRegion",null);this.runtime=e,this.pendingTransition={from:(0,Et.dna)(5),to:(0,Et.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,Et.dna)(this.runtime.target),this.pendingTransition.to=(0,Et.dna)(this.runtime.target),this.pendingTransition.done=!0,this.pendingTransition.elapsed_time=0,this.pendingTransition.total_time=0}runTransition(e,t){if(!this.pendingTransition.done){let i=this.pendingTransition,r=i.total_time===0?0:(i.elapsed_time+t)/i.total_time,s=i.total_time===0?1:r===0?0:i.timingFunction(r);e[1]=i.from[1]+(i.to[1]-i.from[1])*s,e[2]=i.from[2]+(i.to[2]-i.from[2])*s,e[3]=i.from[3]+(i.to[3]-i.from[3])*s,e[4]=i.from[4]+(i.to[4]-i.from[4])*s,this.pendingTransition.elapsed_time+=t,this.pendingTransition.elapsed_time>=this.pendingTransition.total_time&&(this.pendingTransition.done=!0,this.pendingTransition.callback?.(),this.pendingTransition.constrain&&this.constrainBounds({transition:{duration:this.pendingTransition.total_time===0?0:500,easing:st.easeOutExpo}}))}}resumeTransition(){this.lastZoomTo&&this.zoomTo(this.lastZoomTo.factor,this.lastZoomTo.options),this.isConstraining&&this.constrainBounds(),this.lastGoToRegion&&this.goToRegion(this.lastGoToRegion.target,this.lastGoToRegion.options)}zoomTo(e,t={}){let{origin:i,stream:r=!1,transition:s}=t;this.lastZoomTo={factor:e,options:t};let o=this.runtime.getZoomedPosition(e,{origin:i}),l=Math.abs(1-e);this.applyTransition(o,s,{duration:2e3*l,easing:st.easeOutExpo,constrain:!0,callback:()=>{this.lastZoomTo=null}},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){this.isConstraining=!0;let[i,r]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});i&&(this.applyTransition(r,e,{duration:500,easing:st.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame())}applyTransition(e,t,i,{stream:r}={}){this.pendingTransition.from=(0,Et.dna)(this.runtime.target),this.pendingTransition.to=e,r||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=typeof t?.duration<"u"?t.duration:typeof i?.duration<"u"?i.duration:1e3,this.pendingTransition.constrain=typeof t?.constrain<"u"?t.constrain:typeof i?.constrain<"u"?i.constrain:!1,this.pendingTransition.timingFunction=t?.easing||i?.easing||st.easeInOutSine}goToRegion(e,{transition:t}={}){this.lastGoToRegion={target:e,options:{transition:t}};let i=this.runtime.clampRegion(e);this.applyTransition(Et.DnaFactory.singleBox(i.width,i.height,i.x,i.y),t,{duration:1e3,easing:st.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};var gs=Number.MIN_VALUE+1,dt=class{constructor(e,t,i,r=[],s){a(this,"id",at());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,A.dna)(500));a(this,"lastTarget",(0,A.dna)(5));a(this,"zoomBuffer",(0,A.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,r=this.renderer.pendingUpdate();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,this.updateControllerPosition()),!this.firstRender&&!i&&!r&&this.target[0]===this.lastTarget[0]&&this.target[1]===this.lastTarget[1]&&this.target[2]===this.lastTarget[2]&&this.target[3]===this.lastTarget[3]&&this.target[4]===this.lastTarget[4])return;this.hook("useBeforeFrame",t),this.renderer.beforeFrame(this.world,t,this.target,this.hookOptions);let s=this.getScaleFactor(),o=this.renderer.getPointsAt(this.world,this.target,this.aggregate,s),l=o.length;for(let d=0;d<l;d++){let u=o[d][0],m=o[d][1],y=o[d][2],v=y?(0,A.transform)(m,y,this.transformBuffer):m;this.renderer.prepareLayer(u,u.__parent&&y?(0,A.transform)(u.__parent.crop||u.__parent.points,y):v);let S=v.length/5;for(let P=0;P<S;P++){let g=P*5;v[g]!==0&&(this.renderer.paint(u,P,v[g+1],v[g+2],v[g+3]-v[g+1],v[g+4]-v[g+2]),this.hook("useAfterPaint",u))}this.renderer.finishLayer(u,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 h=this.world.getScheduledUpdates(this.target,s),c=h.length;if(c>0)for(let d=0;d<c;d++){let u=h[c-d-1]();u?u.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=A.DnaFactory.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=A.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new Ee(this),this.aggregate=(0,A.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=r,this.render(this.lastTime),this.startControllers()}get x(){return this.target[1]}set x(e){this.target[1]=e}get y(){return this.target[2]}set y(e){this.target[2]=e}get x2(){return this.target[3]}set x2(e){this.target[3]=e}get y2(){return this.target[4]}set y2(e){this.target[4]=e}get width(){return this.target[3]-this.target[1]}set width(e){this.target[3]=this.target[1]+e}get height(){return this.target[4]-this.target[2]}set height(e){this.target[4]=this.target[2]=e}setHomePosition(e){this.homePosition.set(A.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=this.getScaleFactor(),i=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},r=this.width*t,s=this.height*t,o=i.width/r,l=i.height/s,h=r/s;if(e.cover?o>l:o<l){let c=h*i.height,d=(c-i.width)/2;this.target[1]=Math.round(-d+i.x),this.target[2]=Math.round(i.y),this.target[3]=Math.round(c-d+i.x),this.target[4]=Math.round(i.height+i.y)}else{let c=i.width/h,d=(c-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+c-d)}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,i,r){this.transitionManager.hasPending()&&this.transitionManager.stopTransition(),this.updateFocalPosition(e-t,i-r);let s=t/e,o=r/i;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*s,this.target[4]=this.target[2]+(this.target[4]-this.target[2])*o,this.goHome({position:this.focalPosition}),this.renderer.resize(t,r),this.pendingUpdate=!0,this.transitionManager.resumeTransition()}updateFocalPosition(e,t){if(!this.manualFocalPosition){let i=this.width,r=this.height,s=Math.min(i,r),o=0,l=0,h=this.x+o,c=this.y+l;if(i<r){let d=this.height-this.width;this.focalPosition=A.DnaFactory.projection({x:h,y:c+d/2,width:s-o*2,height:s-l*2}),this.pendingUpdate=!0}else{let d=this.width-this.height;this.focalPosition=A.DnaFactory.projection({x:h+d/2,y:c,width:s-o*2,height:s-l*2}),this.pendingUpdate=!0}}}getViewport(){return this._viewport.x=this.target[1],this._viewport.y=this.target[2],this._viewport.width=this.target[3]-this.target[1],this._viewport.height=this.target[4]-this.target[2],this._viewport}constrainBounds(e,{panPadding:t=0,ref:i=!1}={}){let{minX:r,maxX:s,minY:o,maxY:l}=this.getBounds({target:e,padding:t}),h=!1,c=i?e:(0,A.dna)(e),d=Math.round(e[3]-e[1]),u=Math.round(e[4]-e[2]);return r>e[1]&&(h=!0,c[1]=r,c[3]=r+d),o>e[2]&&(h=!0,c[2]=o,c[4]=o+u),s<e[1]&&(h=!0,c[1]=s,c[3]=s+d),l<e[2]&&(h=!0,c[2]=l,c[4]=l+u),[h,c]}getBounds(e){let t=e.target||this.target,i=e.padding,r=this.options.visibilityRatio,s=Math.abs(1-r);if(this.world.hasActiveZone()){let f=this.world.getActiveZone();if(f){let C=t[3]-t[1]<f.points[3]-f.points[1],R=t[4]-t[2]<f.points[4]-f.points[2];return{minX:C?f.points[1]-i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxX:R?f.points[2]-i:f.points[2]+(f.points[4]-f.points[2])/2-(t[4]-t[2])/2,minY:C?f.points[3]+i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxY:R?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],l=this.world.width,h=-o*s,c=l-o-h,d=t[4]-t[2],u=this.world.height,m=-d*s,y=u-d-m,v=Math.round(Math.max(h,c)),S=Math.round(Math.min(h,c)),P=Math.round(Math.max(m,y)),g=Math.round(Math.min(m,y));return{minX:S,maxX:v,minY:g,maxY:P}}getScaleFactor(e=!1){let t=this.renderer.getScale(this.target[3]-this.target[1],this.target[4]-this.target[2],e);return t===0?this._lastGoodScale:(this._lastGoodScale=t,t)}getZoomedPosition(e,{origin:t,fromPos:i}){let r=i?{width:i[3]-i[1],height:i[4]-i[2]}:void 0,s=r?this.renderer.getScale(r.width,r.height):this.getScaleFactor(),o=r?r.width:this.width,l=r?r.height:this.height,h=this.getRendererScreenPosition()?.width,c=this.world.width,d=h?h/c:1,u=this.options.maxUnderZoom,m=Math.max(d||1,this.options.maxOverZoom),y=1/e,v=s*y;if(y<1){let g=o*s,f=l*s,C=this.world.width/g,R=this.world.height/f;if(C>R){let w=this.world.width*v,I=~~(o*s)*u;w<I&&(e=this.world.width*s/(o*s*u))}else{let w=this.world.height*v,I=~~(l*s)*u;w<I&&(e=this.world.height*s/(l*s*u))}}else v>m&&(e=s/m);let P=(0,A.transform)(this.target,(0,A.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2),this.zoomBuffer);return this.constrainBounds(P,{ref:!0,panPadding:100}),P}clampRegion({x:e,y:t,width:i,height:r,padding:s=0}){let o=this.width,l=this.height,h=i/o<r/l,c=e-s,d=t-s,u=i+s*2,m=r+s*2;if(h){let v=m/l*o;return{x:c-(v-u)/2,y:d,width:v,height:m}}let y=u/o*l;return{x:c,y:d-(y-m)/2,width:u,height:y}}viewerToWorld(e,t){let i=this.getScaleFactor();return this._viewerToWorld.x=this.target[1]+e/i,this._viewerToWorld.y=this.target[2]+t/i,this._viewerToWorld}worldToViewer(e,t,i,r){let s=A.DnaFactory.singleBox(i,r,e,t);return(0,A.mutate)(s,(0,A.compose)((0,A.scale)(this.getScaleFactor()),(0,A.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,A.mutate)(this.target,(0,A.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2)),this.pendingUpdate=!0}syncTo(e){let t=this.target;return this.target=e.target,this.pendingUpdate=!0,()=>{this.target=t}}stop(){return typeof this.stopId<"u"&&(window.cancelAnimationFrame(this.stopId),this.stopId=void 0),()=>{this.render(performance.now())}}reset(){this.renderer.reset()}selectZone(e){this.world.selectZone(e),this.pendingUpdate=!0}deselectZone(){this.world.deselectZone(),this.pendingUpdate=!0}hook(e,t){let i=this.hooks[e].length;if(i!==0)for(let r=0;r<i;r++)this.hooks[e][r](t)}registerHook(e,t){return this.hooks[e].push(t),()=>{this.hooks[e]=this.hooks[e].filter(i=>i!==t)}}updateNextFrame(){this.pendingUpdate=!0}};var Ut=require("@atlas-viewer/dna");var Ce=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Re={},En=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],Mt=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,Ut.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=at(12),this.points=(0,Ut.dna)(5),this.shape={type:"none"}}updateBoundingBox(){if(this.shape.type==="none")return;let t=this.shape.points;if(this.shape.points.length>2){let i=Math.min(...t.map(l=>l[0])),r=Math.min(...t.map(l=>l[1])),s=Math.max(0,...t.map(l=>l[0])),o=Math.max(0,...t.map(l=>l[1]));this.boundingBox={x:i,y:r,width:s-i,height:o-r};return}this.boundingBox=null}intersects(t){if(!t||this.shape.type==="none")return!1;let[i,r]=t,s=this.shape.points,o=this.boundingBox;if(o||(this.updateBoundingBox(),o=this.boundingBox),!o||i<o.x||i>o.x+o.width||r<o.y||r>o.height+o.y)return!1;let l=!1;for(let h=0,c=s.length-1;h<s.length;c=h++)s[h][1]>r!=s[c][1]>r&&i<(s[c][0]-s[h][0])*(r-s[h][1])/(s[c][1]-s[h][1])+s[h][0]&&(l=!l);return l}getAllPointsAt(t,i){return t[3]-t[1]===1&&t[4]-t[2]===1?this.intersects([t[1],t[2]])?[[this,this.points,i]]:[]:[[this,this.points,i]]}applyProps(t={}){let i=!1;if(t.points)if(this.shape.type!=="polygon"||this.shape.points.length!==t.points.length)this.shape={type:"polygon",points:t.points,open:t.open},this.updateBoundingBox();else{let r=!1,s=t.points.length;for(let o=0;o<s;o++)if(t.points[o][0]!==this.shape.points[o][0]||t.points[o][1]!==this.shape.points[o][1]){r=!0;break}r&&(this.shape={type:"polygon",points:t.points,open:t.open},this.updateBoundingBox())}if(t.interactive!==this.props.interactive&&(i=!0,this.props.interactive=t.interactive),(t.open||t.open===!1)&&(i=!0,this.shape.open=t.open),t.style){let r=t.border||t.style.border;if(r!==this._parsed.border.id)if(!r)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=Re[r]||Ce.exec(r)||Ce.exec(r);s&&(this._parsed.border.id=r,this._parsed.border.match=Re[r]=s)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle="solid",t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let s=Re[t.style.outline]||Ce.exec(t.style.outline)||Ce.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Re[t.style.outline]=s)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle="solid",t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,i=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,i=!0);for(let s of En)if(this.props.style[s]!==t.style[s]){i=!0;break}t.style[":hover"]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[":hover"],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),i=!0),t.style[":active"]!==this.props.pressStyles&&(this.props.pressStyles=t.style[":active"],this.activeEvents||(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0)}t.href!==this.props.href&&(this.props.href=t.href,i=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,i=!0),t.title!==this.props.title&&(this.props.title=t.title,i=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,i=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,i=!0),t.html!==this.props.html&&(this.props.html=t.html,i=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(i=!0,this.points=Ut.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Ut.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),i&&this.__revision++}};var Ri=q(require("lru-cache"),1);var Ei=/(-?[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,Ci={},Cn=typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes("firefox"),Te={};var ie=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.transition="opacity .3s",this.dpi=t?.dpi||1,this.hostCache=t?.lruCache?new Ri.default({maxSize:1024*512*512,dispose:(i,r,s)=>{this.invalidated.push(r),i.width=0,i.height=0},sizeCalculation:(i,r)=>i.width*i.height}):{store:{},get(i){return this.store[i]},set(i,r){this.store[i]=r}}}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}resize(){this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return this.firstMeaningfulPaint}afterFrame(e){if(this.clearTransform(),this.lastPaintedObject=void 0,this.frameIsRendering=!1,this.imagesPending=Math.max(0,this.imagesPending-this.imagesLoaded),this.imagesLoaded=0,this.loadingQueueOrdered||(this.loadingQueue=this.loadingQueue.sort((t,i)=>t.network&&t.scale===i.scale?i.distance-t.distance:t.scale<i.scale?-1:1),this.loadingQueueOrdered=!0),this.previousVisible=this.visible,this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let t=0;t<this.drawCalls.length;t++){let i=this.drawCalls.shift();i&&i()}this.doOffscreenWork(),this.options.debug&&this.stats&&this.stats.end()}doOffscreenWork(){this.frameTasks=0,this.loadingQueue.length&&(this._worker(),this.loadingQueue.length&&(this._scheduled||(this._scheduled=setInterval(this._doWork,0))))}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),s=r.width/e,o=r.height/t,l=(s<o?o:s)*(i&&this.dpi||1);return Number.isNaN(l)||(this.lastKnownScale=l),this.lastKnownScale}beforeFrame(e,t,i,r){this.options.debug&&this.stats&&this.stats.begin(),this.frameIsRendering=!0,this.visible=[],this.options.beforeFrame&&this.options.beforeFrame(t);let s=this.getCanvasDims();if(this.ctx.globalAlpha=1,this.ctx.fillStyle=this.canvas.dataset.background??"rgb(0, 0, 0)",this.ctx.fillRect(0,0,s.width,s.height),r.enableFilters&&(r.filters.brightness||r.filters.contrast||r.filters.grayscale||r.filters.invert||r.filters.sepia||r.filters.saturate||r.filters.hueRotate||r.filters.blur)){let o="";r.filters.brightness&&(o+=`brightness(${~~(100+r.filters.brightness*100)}%) `),r.filters.contrast&&(o+=`contrast(${~~(100+r.filters.contrast*100)}%) `),r.filters.grayscale&&(o+=`grayscale(${~~(r.filters.grayscale*100)}%) `),r.filters.invert&&(o+=`invert(${~~(r.filters.invert*100)}%) `),r.filters.sepia&&(o+=`sepia(${~~(r.filters.sepia*100)}%) `),r.filters.saturate&&(o+=`saturate(${~~(100+r.filters.saturate*100)}%) `),r.filters.hueRotate&&(o+=`hue-rotate(${r.filters.hueRotate}deg) `),r.filters.blur&&(o+=`blur(${r.filters.blur}px) `),this.ctx.filter!==o&&(this.ctx.filter=o)}else this.ctx.filter="none"}applyTransform(e,t,i,r,s){let o=e.__owner.value;if(o&&o.rotation){this.ctx.save();let l=t+r/2,h=i+s/2;this.ctx.translate(l,h),this.ctx.rotate(o.rotation*Math.PI/180),this.ctx.translate(-l,-h),this.lastPaintedObject=o}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}paint(e,t,i,r,s,o){let l=this.ctx.globalAlpha;if(e instanceof H||e instanceof tt){if(e.display.rotation){this.ctx.save();let d=i+s/2,u=r+o/2;e.crop&&(d-=e.crop[t*5+1],u-=e.crop[t*5+2]),this.ctx.translate(d,u),this.ctx.rotate(e.display.rotation*Math.PI/180),this.ctx.translate(-d,-u)}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,u=this.getCanvasDims();if((d.indices.indexOf(t)===-1||this.invalidated.indexOf(d.canvases[t])!==-1)&&this.schedulePaintToCanvas(d,e,t,Ot({x:i+s/2,y:r+s/2},{x:u.width/2,y:u.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 y=[e.crop[t*5+1]/e.display.scale-e.display.points[t*5+1],e.crop[t*5+2]/e.display.scale-e.display.points[t*5+2],1+(e.crop[t*5+3]-e.crop[t*5+1])/e.display.scale,1+(e.crop[t*5+4]-e.crop[t*5+2])/e.display.scale];y[0]+=e.cropData.x/e.display.scale,y[1]+=e.cropData.y/e.display.scale;let v=e.x*this.lastKnownScale,S=e.y*this.lastKnownScale,P=[i+v,r+S,s,o];P[0]+=v,P[1]+=S,this.ctx.drawImage(m,y[0],y[1],y[2],y[3],P[0],P[1],P[2]+1,P[3]+1)}}else Cn?this.ctx.drawImage(m,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],i,r,s+1,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,r,s+Number.MIN_VALUE+.5,o+Number.MIN_VALUE+.5)}catch{}e.display.rotation&&this.ctx.restore()}let h=e instanceof rt&&this.options.box,c=e instanceof Mt&&this.options.polygon;if((h||c)&&!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:{}),u=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)*u);let y=0;typeof d.outlineWidth<"u"&&(y=parseInt(d.outlineWidth,10)*u);let v=0;if(typeof d.outlineOffset<"u"&&(v=parseInt(d.outlineOffset,10)*u),d.borderColor&&(this.ctx.strokeStyle=d.borderColor),d.boxShadow){let S=d.boxShadow.split(/,(?![^(]*\))/);for(let P of S){let g=Ci[P]||Ei.exec(P)||Ei.exec(P);Ci[P]=g,g&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(g[1])*this.dpi*u,this.ctx.shadowOffsetY=parseInt(g[3])*this.dpi*u,this.ctx.shadowBlur=parseInt(g[5])*this.dpi*u,this.ctx.shadowColor=g[9],this.ctx.fillStyle="rgba(0,0,0,1)",this.ctx.fillRect(i+m,r+m,s,o),this.ctx.restore())}}if(this.ctx.fillStyle=d.backgroundColor||"transparent",this.ctx.lineWidth=m,c){let S=e.shape,P=S.points||[],g=P.length;this.ctx.beginPath();for(let f=0;f<g;f++)this.ctx.lineTo(i+P[f][0]*this.lastKnownScale,r+P[f][1]*this.lastKnownScale);S.open||this.ctx.closePath(),m&&this.ctx.stroke(),S.open||this.ctx.fill()}else m&&this.ctx.strokeRect(i+m/2,r+m/2,s+m,o+m),this.ctx.fillRect(i+m,r+m,s,o);y&&(d.outlineColor&&(this.ctx.strokeStyle=d.outlineColor),this.ctx.lineWidth=y,this.ctx.strokeRect(i-y/2-v,r-y/2-v,s+m*2+y+v*2,o+m*2+y+v*2))}this.ctx.globalAlpha=l}}loadImage(e,t,i,r=!1){if(Te[e]&&Te[e].naturalWidth>0){t(Te[e]);return}try{let s=!1;r||setTimeout(()=>{s||this.loadImage(e,t,i,!0)},3e3);let o=document.createElement("img");o.decoding="auto",o.onload=function(){s=!0,t(o),Te[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,r){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:r,task:()=>new Promise(l=>{if(this.visible.indexOf(t)===-1){this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),l();return}let h=t.getImageUrl(i);this.loadImage(h,c=>{this.loadingQueue.push({id:s,scale:t.display.scale,distance:r,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 u=t.display.points.slice(i*5,i*5+5),m=document.createElement("canvas"),y=m.getContext("2d");m.width=u[3]-u[1],m.height=u[4]-u[2],this.hostCache.set(e.canvases[i],m),this.drawCalls.push(()=>{y.drawImage(c,0,0,u[3]-u[1],u[4]-u[2]),d()})})}),l()},c=>{this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),l()})})})}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,r){return e.getPointsAt(t,i,r)}getViewportBounds(e,t,i){let r=e.getActiveZone();if(r){let s=t[3]-t[1]<r.points[3]-r.points[1],o=t[4]-t[2]<r.points[4]-r.points[2];return{x1:s?r.points[1]-i:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y1:o?r.points[2]-i:r.points[2]+(r.points[4]-r.points[2])/2-(t[4]-t[2])/2,x2:s?r.points[3]+i:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y2:o?r.points[4]+i:r.points[2]+(r.points[4]-r.points[2])/2-(t[4]-t[2])/2}}return null}pendingUpdate(){let e=!this.pendingDrawCall&&this.drawCalls.length===0&&this.imagesPending===0&&this.loadingQueue.length===0&&this.tasksRunning===0;return!e&&this.visible.length===0&&setTimeout(()=>{this.canvas.style.opacity="1",this.firstMeaningfulPaint=!0},500),!this.firstMeaningfulPaint&&e&&this.visible.length?(this.canvas.style.opacity="1",this.firstMeaningfulPaint=e,!0):this.options.debug?!0:!e}getRendererScreenPosition(){return this.rendererPosition}reset(){this.loadingQueue=[],this.drawCalls=[]}};var At=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,r){for(let s=0;s<this.length;s++)this.renderers[s].afterFrame(e,t,i,r)}afterPaintLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].afterPaintLayer(e,t)}beforeFrame(e,t,i,r){for(let s=0;s<this.length;s++)this.renderers[s].beforeFrame(e,t,i,r)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,i,r){return this.renderers[0].getPointsAt(e,t,i,r)}getScale(e,t){return this.renderers[0].getScale(e,t)}getViewportBounds(e,t,i){return this.renderers[0].getViewportBounds(e,t,i)}getRendererScreenPosition(){return this.renderers[0].getRendererScreenPosition()}isReady(){for(let e=0;e<this.length;e++)if(!this.renderers[e].isReady())return!1;return!0}paint(e,t,i,r,s,o){for(let l=0;l<this.length;l++)this.renderers[l].paint(e,t,i,r,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 _e=require("@atlas-viewer/dna");var ne=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,_e.scale)(1)}isReady(){return!0}resize(){this.initialWidth=this.canvas.width,this.initialHeight=this.canvas.height,this.renderNextFrame=!0}afterFrame(e,t,i){if(this.renderNextFrame){this.context.clearRect(0,0,this.canvas.width,this.canvas.height);let r=this.initialWidth/e.width,s=this.initialHeight/e.height,o=this.widthRatio>this.heightRatio?r:s;if(this.target=i,this.bounds){let l=e.getPointsAt(this.bounds,this.aggregate,o);for(let[h,c]of l)if(h instanceof H&&h.__host.canvas){let d=c.length/5;for(let u=0;u<d;u++)if(h.__host.canvas.canvases[u]){let y={x1:c[u+1]*o,y1:c[u+2]*o,width:(c[u+3]-c[u+1])*o,height:(c[u+4]-c[u+2])*o}}}}e.getPoints().forEach((l,h,c)=>{if(h%5===0&&l){let d={x1:c[h+1]*o,y1:c[h+2]*o,x2:c[h+3]*o,y2:c[h+4]*o,width:(c[h+3]-c[h+1])*o,height:(c[h+4]-c[h+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,r){return e.getPointsAt(t,i,r)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=_e.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,i,r,s,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 Ze=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 l=e>this.rows?this.rows:e;return{columns:Math.ceil(e/l),rows:l}}if(this.autoHeight&&this.columns){let l=e>this.columns?this.columns:e;return{columns:l,rows:Math.ceil(e/l)}}throw new Error("Something went wrong.")},{columns:i,rows:r}=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 l=0,h=this.padding;for(let c=0;c<r&&l!==e;c++){let d=0,u=[];for(let m=0;m<i;m++){let y=this.reversed?e-l:l;if(l===e)break;let v=this.content[y],S=v.width,P=v.width/v.height,g=o/P;u.push([l,o,g,o/S]),g>d&&(d=g),l++}for(let m=0;m<i&&u[m];m++){let y=this.world.getPoints(),v=u[m][0],S=u[m][1],P=u[m][2],g=u[m][3],f=this.padding+m*(this.spacing+S),C=h+(d-P)/2,R=this.reversed?e-v:v,w=y[R*5+1],b=y[R*5+2];this.world.scaleWorldObject(v,g),(w!==f||b!==C)&&this.world.translateWorldObject(R,f-w,C-b)}h+=d+this.spacing}this.height=h+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};var Mi=q(require("normalize-wheel"),1);var Q=require("@atlas-viewer/dna");function Ti(n){return{x:n[1],y:n[2],width:n[3]-n[1],height:n[4]-n[2]}}var _i="pan",Oi="scroll",Rn="gesture",Ai={zoomOutFactor:.8,zoomInFactor:1.25,maxZoomFactor:1,minZoomFactor:.05,zoomDuration:300,zoomWheelConstant:20,zoomClamp:.6,panBounceStiffness:120,panBounceDamping:15,panTimeConstant:240,panPower:.1,nudgeDistance:100,panPadding:0,devicePixelRatio:1,enableWheel:!0,enableClickToZoom:!0,ignoreSingleFingerTouch:!1,enablePanOnWait:!1,requireMetaKeyForWheelZoom:!1,panOnWaitDelay:40,onPanInSketchMode:()=>{},parentElement:null},re=(n={})=>({start:function(e){let{zoomWheelConstant:t,enableWheel:i,enableClickToZoom:r,ignoreSingleFingerTouch:s,enablePanOnWait:o,panOnWaitDelay:l,parentElement:h,requireMetaKeyForWheelZoom:c}={...Ai,...n},d={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","onContextMenu");function u(){S=0,g="",C(),C(void 0,"notice"),P=0}function m(){e.world.constraintBounds(),u()}function y(x){if(x.which>1){d.isPressing=!1;return}e.mode==="explore"&&(x.preventDefault(),d.pointerStart.x=x.atlas.x,d.pointerStart.y=x.atlas.y,e.transitionManager.stopTransition(),d.isPressing=!0)}function v(){u(),d.isPressing&&(e.mode==="explore"&&e.world.constraintBounds(),d.isPressing=!1)}let S=0,P=0,g="";function f(x){if(e.mode==="explore"){if(x.atlasTouches.length===1&&(P=performance.now(),s==!1&&x.preventDefault(),d.pointerStart.x=x.atlasTouches[0].x,d.pointerStart.y=x.atlasTouches[0].y),x.atlasTouches.length===2){g=Rn,x.preventDefault();let _=x.atlasTouches[0].x,L=x.atlasTouches[1].x;d.pointerStart.x=(_+L)/2;let Tt=x.atlasTouches[0].y,k=x.atlasTouches[1].y;d.pointerStart.y=(Tt+k)/2,S=Ot({x:x.touches[0].clientX,y:x.touches[0].clientY},{x:x.touches[1].clientX,y:x.touches[1].clientY})}e.transitionManager.stopTransition(),d.isPressing=!0}}function C(x,_="intent"){h&&(h.dataset[_]=x)}function R(x){let _=null,L=null,Tt=!1,k=0;if(d.isPressing&&x.touches.length===2){let ot=x.touches[0].clientX,vt=x.touches[1].clientX;_=(ot+vt)/2;let Nt=x.touches[0].clientY,zt=x.touches[1].clientY;L=(Nt+zt)/2,k=Ot({x:x.touches[0].clientX,y:x.touches[0].clientY},{x:x.touches[1].clientX,y:x.touches[1].clientY}),Tt=!0}if(C(g),d.isPressing&&x.touches.length===1){if(o&&(performance.now()-P<l&&g==""&&(g=Oi),g==""&&(g=_i)),C(g),g==""&&s==!0||g==Oi){C("require-two-finger","notice");return}let ot=x.touches[0];_=ot.clientX,L=ot.clientY}if(_!==null&&L!==null){let ot=e.getRendererScreenPosition();if(ot){let{x:vt,y:Nt}=e.viewerToWorld(_-ot.x,L-ot.y),zt=k&&S?k/S:1;e.transitionManager.customTransition(p=>{p.from=(0,Q.dna)(e.target),p.to=(0,Q.transform)(p.from,(0,Q.compose)((0,Q.translate)(d.pointerStart.x-vt,d.pointerStart.y-Nt),(0,Q.scaleAtOrigin)(1/zt,vt,Nt)),d.mousemoveBuffer),p.elapsed_time=0,p.total_time=0,p.timingFunction=st.easeInOutExpo,p.done=!1})}S=k}g==_i&&x.preventDefault()}function w(x){if(d.isPressing){let _=e.getRendererScreenPosition();if(_){let{x:L,y:Tt}=e.viewerToWorld(x.clientX-_.x,x.clientY-_.y);e.transitionManager.customTransition(k=>{k.from=(0,Q.dna)(e.target),k.to=(0,Q.transform)(k.from,(0,Q.translate)(d.pointerStart.x-L,d.pointerStart.y-Tt),d.mousemoveBuffer),k.elapsed_time=0,k.total_time=0,k.timingFunction=st.easeInOutExpo,k.done=!1})}}}function b(x){e.mode==="explore"&&e.world.zoomIn(x.atlas)}function I(x){let L=1+(0,Mi.default)(x).spinY/t;e.world.zoomTo(L,x.atlas,!0)}function G(x){return c&&x.metaKey==!1?(C("meta-required","notice"),x.stopPropagation(),!1):!0}e.world.addEventListener("mouseup",m),e.world.addEventListener("touchend",m),e.world.addEventListener("touchstart",f),e.world.addEventListener("mousedown",y),window.addEventListener("touchend",v),window.addEventListener("mouseup",v),window.addEventListener("mousemove",w),h&&h.addEventListener("touchmove",R),r&&(e.world.activatedEvents.push("onClick"),e.world.addEventListener("click",b)),i&&(e.world.activatedEvents.push("onWheel"),c&&h?.addEventListener("wheel",G,{passive:!0,capture:!0}),e.world.addEventListener("wheel",I));let K=e.world.addLayoutSubscriber((x,_)=>{if(x==="zone-changed"&&e.transitionManager.constrainBounds({transition:{duration:0}}),x==="zoom-to"&&_&&e.transitionManager.zoomTo(_.factor,{origin:_.point,stream:_.stream}),x==="go-home"){let L=_.immediate?{duration:0}:void 0;e.transitionManager.goToRegion(Ti(e.homePosition),{transition:L})}if(x==="goto-region"&&_){let L=_.immediate?{duration:0}:{};e.transitionManager.goToRegion(_,{transition:L})}x==="constrain-bounds"&&e.transitionManager.constrainBounds({transition:_?.immediate?{duration:0}:void 0})});return()=>{e.world.removeEventListener("mouseup",m),e.world.removeEventListener("touchend",m),e.world.removeEventListener("touchstart",f),e.world.removeEventListener("mousedown",y),window.removeEventListener("touchend",v),window.removeEventListener("mouseup",v),e.world.removeEventListener("mousemove",w),h&&(h.removeEventListener("touchmove",w),h.removeEventListener("wheel",G,{passive:!0,capture:!0})),r&&e.world.removeEventListener("click",b),i&&e.world.removeEventListener("wheel",I),K()}},updatePosition(){}});var B=require("react");var Oe=q(require("react"),1),Ii=require("react/jsx-runtime"),ct=Oe.default.createContext("explore");ct.displayName="Mode";var se=()=>(0,Oe.useContext)(ct);function Tn(n){return(0,Ii.jsx)(ct.Provider,{value:n.mode,children:n.children})}var Gi=q(require("react-use-measure"),1);var Xe=q(require("react"),1),ut=Xe.default.createContext(null);ut.displayName="Atlas";var Ct=Xe.default.createContext(null);Ct.displayName="Bounds";var mt=q(require("react"),1);var Di=q(require("react-reconciler"),1),It=require("react-reconciler/constants");var oe,_n=typeof performance=="object"&&typeof performance.now=="function";if(_n){let n=performance;oe=()=>n.now()}else{let n=Date,e=n.now();oe=()=>n.now()-e}var Fi=require("react");function Li(n,e){n&&n.appendChild&&e&&n.appendChild(e)}function Bi(n,e){n&&n.removeChild&&e&&n.removeChild(e)}function On(n,e){return Bi(n.world,e)}function Mn(n,e,t){return Wi(n.world,e,t)}function Wi(n,e,t){n&&n instanceof dt&&(n=n.world),n&&n.insertBefore&&n.insertBefore(e,t)}function Ye(n,e,t){if(t&&(n.applyProps&&n.applyProps(t),n instanceof W))for(let i of Ht){let r=i.slice(2).toLowerCase();t[i]!==e[i]&&(e[i]&&n.removeEventListener(r,e[i]),n.addEventListener(r,t[i]))}}function Qe(n,e){let t=Object.keys(e),i=!1;for(let r of t)if(Ht.indexOf(r)!==-1){let s=nt[r];if(s){if(n.activatedEvents.indexOf(s)!==-1)continue;i=!0,n.activatedEvents.push(s)}}i&&n.triggerEventActivation()}var Ae=new Map,ki={};function An(n,{args:e=[],...t},i,r,s){if(!(i instanceof dt)&&s){let h=c=>c.return?h(c.return):c.stateNode&&c.stateNode.containerInfo;i=h(s)}let o,l=i.world;switch(n){case"world":o=et.withProps({width:t.width,height:t.height,viewingDirection:"left-to-right"}),o.activatedEvents=l.activatedEvents,o.eventHandlers=l.eventHandlers,o.subscriptions=l.subscriptions,o.triggerEventActivation(),l=o;break;case"box":o=new rt;break;case"shape":o=new Mt;break;case"worldObject":case"world-object":o=new ht;break;case"worldImage":case"world-image":o=new H;break;case"texture":o=new Pt;break;case"compositeImage":case"composite-image":o=new Kt({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,t.useFloorCalc,t.version3);break;case"paragraph":o=new yt,o.text=t.children;break;default:return}return Qe(l,t),Ye(o,{},t),o}function In(n,e){if(e instanceof et)n.world=e;else if(e instanceof ht)n.world.appendChild(e);else if(e)throw new Error("Invalid root")}var Ni=0,Me=Ni,ae=(0,Di.default)({unstable_now:oe,now:oe,createInstance:An,removeChild:Bi,appendChild:Li,appendInitialChild:Li,insertBefore:Wi,warnsIfNotActing:!0,supportsMutation:!0,isPrimaryRenderer:!1,scheduleTimeout:typeof setTimeout<"u"?setTimeout:void 0,cancelTimeout:typeof clearTimeout<"u"?clearTimeout:void 0,setTimeout:typeof setTimeout<"u"?setTimeout:void 0,clearTimeout:typeof clearTimeout<"u"?clearTimeout:void 0,noTimeout:-1,appendChildToContainer:In,removeChildFromContainer:On,createTextInstance(){},insertInContainerBefore:Mn,prepareUpdate(n,e,t,i,r){return Qe(r.world,i),i},commitUpdate(n,e,t,i,r,s){n.applyProps&&t&&Ye(n,i,t)},finalizeInitialChildren(n){return n?.__handlers},getChildHostContext(){return ki},getRootHostContext(){return ki},prepareForCommit(n){return n.isCommitting=!0,null},preparePortalMount(){},hideInstance(n){n&&n.points&&(n.points[0]=0)},unhideInstance(n,e){n&&n.points&&(n.points[0]=1)},getPublicInstance(n){return n},hideTextInstance(){throw new Error("Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.")},resetAfterCommit(n){n.isCommitting=!1,n.pendingUpdate=!0,n.world&&n.world.needsRecalculate&&(n.world.recalculateWorldSize(),n.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(n){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return It.DefaultEventPriority},getInstanceFromNode(n){throw new Error("Not implemented")},getInstanceFromScope(n){throw new Error("Not implemented")},prepareScopeUpdate(n,e){throw new Error("Not implemented")},logRecoverableError(){},requestPostPaintCallback(){},rendererPackageName:"@atlas-viewer/atlas",rendererVersion:Fi.version,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(n){Me=n},getCurrentUpdatePriority(){return Me},resolveUpdatePriority(){if(Me!==Ni)return Me;switch(typeof window<"u"&&window.event?.type){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return It.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return It.ContinuousEventPriority;default:return It.DefaultEventPriority}},resetFormInstance(){}});ae.injectIntoDevTools();function $t(n,e){let t=Ae.get(n);t&&ae.updateContainer(null,t,null,()=>{Ae.delete(n),e&&e(n)})}var Vt={render(n,e){let t=Ae.get(e);if(t)ae.updateContainer(n,t,null);else{let i=ae.createContainer(e,0,null,!1,null,"",()=>{},null);ae.updateContainer(n,i,null),Ae.set(e,i)}},unmountComponentAtNode(n,e){$t(n,e)}};var Ie=q(require("react"),1),J=typeof window<"u"&&(window.document?.createElement||window.navigator?.product==="ReactNative")?Ie.useLayoutEffect:Ie.useEffect;var Gt=require("react/jsx-runtime"),zi=mt.default.memo(({children:n,setIsReady:e,onCreated:t,bounds:i,preset:r,mode:s="explore"})=>{let o=(0,mt.useCallback)(function(h){let c=(0,mt.useRef)(!1),d=()=>{e(!0)};return(0,mt.useEffect)(()=>{if(r&&!c.current){r.runtime.goHome();let u=t&&t(r);return void(u&&u.then?u.then(d):d())}return()=>{}},[]),(0,mt.useEffect)(()=>{c.current=!0},[]),h.children},[r]);return J(()=>{if(r){let l=r.runtime;s!==l.mode&&(l.mode=s),Vt.render((0,Gt.jsx)(mt.default.StrictMode,{children:(0,Gt.jsx)(o,{children:(0,Gt.jsx)(Ct.Provider,{value:i,children:(0,Gt.jsx)(ct.Provider,{value:s,children:(0,Gt.jsx)(ut.Provider,{value:r,children:n})})})})}),l)}},[r,s,n]),J(()=>{if(r){let l=r.runtime;return()=>{Vt.unmountComponentAtNode(l)}}return()=>{}},[r]),null});var le=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",`
1
+ "use strict";var gs=Object.create;var ne=Object.defineProperty;var ps=Object.getOwnPropertyDescriptor;var ys=Object.getOwnPropertyNames;var bs=Object.getPrototypeOf,vs=Object.prototype.hasOwnProperty;var ws=(s,e,t)=>e in s?ne(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var se=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),xs=(s,e)=>{for(var t in e)ne(s,t,{get:e[t],enumerable:!0})},Vi=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ys(e))!vs.call(s,n)&&n!==t&&ne(s,n,{get:()=>e[n],enumerable:!(i=ps(e,n))||i.enumerable});return s};var et=(s,e,t)=>(t=s!=null?gs(bs(s)):{},Vi(e||!s||!s.__esModule?ne(t,"default",{value:s,enumerable:!0}):t,s)),Ss=s=>Vi(ne({},"__esModule",{value:!0}),s);var a=(s,e,t)=>(ws(s,typeof e!="symbol"?e+"":e,t),t);var mn=se((na,un)=>{"use strict";var an=!1,Dt,fi,gi,Ne,He,hn,je,pi,yi,bi,ln,vi,wi,cn,dn;function K(){if(!an){an=!0;var s=navigator.userAgent,e=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(s),t=/(Mac OS X)|(Windows)|(Linux)/.exec(s);if(vi=/\b(iPhone|iP[ao]d)/.exec(s),wi=/\b(iP[ao]d)/.exec(s),bi=/Android/i.exec(s),cn=/FBAN\/\w+;/i.exec(s),dn=/Mobile/i.exec(s),ln=!!/Win64/.exec(s),e){Dt=e[1]?parseFloat(e[1]):e[5]?parseFloat(e[5]):NaN,Dt&&document&&document.documentMode&&(Dt=document.documentMode);var i=/(?:Trident\/(\d+.\d+))/.exec(s);hn=i?parseFloat(i[1])+4:Dt,fi=e[2]?parseFloat(e[2]):NaN,gi=e[3]?parseFloat(e[3]):NaN,Ne=e[4]?parseFloat(e[4]):NaN,Ne?(e=/(?:Chrome\/(\d+\.\d+))/.exec(s),He=e&&e[1]?parseFloat(e[1]):NaN):He=NaN}else Dt=fi=gi=He=Ne=NaN;if(t){if(t[1]){var n=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(s);je=n?parseFloat(n[1].replace("_",".")):!0}else je=!1;pi=!!t[2],yi=!!t[3]}else je=pi=yi=!1}}var xi={ie:function(){return K()||Dt},ieCompatibilityMode:function(){return K()||hn>Dt},ie64:function(){return xi.ie()&&ln},firefox:function(){return K()||fi},opera:function(){return K()||gi},webkit:function(){return K()||Ne},safari:function(){return xi.webkit()},chrome:function(){return K()||He},windows:function(){return K()||pi},osx:function(){return K()||je},linux:function(){return K()||yi},iphone:function(){return K()||vi},mobile:function(){return K()||vi||wi||bi||dn},nativeApp:function(){return K()||cn},android:function(){return K()||bi},ipad:function(){return K()||wi}};un.exports=xi});var gn=se((sa,fn)=>{"use strict";var Ue=!!(typeof window<"u"&&window.document&&window.document.createElement),Ls={canUseDOM:Ue,canUseWorkers:typeof Worker<"u",canUseEventListeners:Ue&&!!(window.addEventListener||window.attachEvent),canUseViewport:Ue&&!!window.screen,isInWorker:!Ue};fn.exports=Ls});var vn=se((ra,bn)=>{"use strict";var pn=gn(),yn;pn.canUseDOM&&(yn=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function Is(s,e){if(!pn.canUseDOM||e&&!("addEventListener"in document))return!1;var t="on"+s,i=t in document;if(!i){var n=document.createElement("div");n.setAttribute(t,"return;"),i=typeof n[t]=="function"}return!i&&yn&&s==="wheel"&&(i=document.implementation.hasFeature("Events.wheel","3.0")),i}bn.exports=Is});var Cn=se((oa,En)=>{"use strict";var ks=mn(),Fs=vn(),wn=10,xn=40,Sn=800;function Pn(s){var e=0,t=0,i=0,n=0;return"detail"in s&&(t=s.detail),"wheelDelta"in s&&(t=-s.wheelDelta/120),"wheelDeltaY"in s&&(t=-s.wheelDeltaY/120),"wheelDeltaX"in s&&(e=-s.wheelDeltaX/120),"axis"in s&&s.axis===s.HORIZONTAL_AXIS&&(e=t,t=0),i=e*wn,n=t*wn,"deltaY"in s&&(n=s.deltaY),"deltaX"in s&&(i=s.deltaX),(i||n)&&s.deltaMode&&(s.deltaMode==1?(i*=xn,n*=xn):(i*=Sn,n*=Sn)),i&&!e&&(e=i<1?-1:1),n&&!t&&(t=n<1?-1:1),{spinX:e,spinY:t,pixelX:i,pixelY:n}}Pn.getEventType=function(){return ks.firefox()?"DOMMouseScroll":Fs("wheel")?"wheel":"mousewheel"};En.exports=Pn});var Rn=se((aa,Tn)=>{"use strict";Tn.exports=Cn()});var sr={};xs(sr,{Atlas:()=>Ri,AtlasAuto:()=>Vs,AtlasContext:()=>ft,BoundsContext:()=>_t,Box:()=>ot,BrowserEventManager:()=>Bt,CanvasRenderer:()=>de,CompositeRenderer:()=>Ft,CompositeResource:()=>re,DebugRenderer:()=>ue,DrawBox:()=>Gs,Geometry:()=>kt,GridBuilder:()=>mi,HTMLPortal:()=>Qe,ImageService:()=>qs,ImageTexture:()=>Ct,ModeContext:()=>mt,ModeProvider:()=>Ws,OverlayRenderer:()=>zt,ReactAtlas:()=>qt,RegionHighlight:()=>Xs,ResizeWorldItem:()=>ki,Runtime:()=>ut,SingleImage:()=>U,StaticRenderer:()=>we,Text:()=>wt,TileSet:()=>Di,TiledImage:()=>it,WebGLRenderer:()=>ye,World:()=>nt,WorldObject:()=>dt,Zone:()=>ai,activateEvents:()=>Ei,applyProps:()=>Pi,bounceOut:()=>he,canDrag:()=>ir,createDefaultEventMap:()=>ri,defaultConfig:()=>Ln,defaultPreset:()=>ve,easingFunctions:()=>at,fromImage:()=>Ps,getId:()=>Wi,getTileFromCanvas:()=>hs,getTileFromImageService:()=>ti,getTiles:()=>Qs,getTilesFromManifest:()=>ls,mergeStyles:()=>nr,popmotionController:()=>me,presets:()=>Ti,staticPreset:()=>Ci,supportedEventAttributes:()=>Vt,supportedEventMap:()=>rt,unmountComponentAtNode:()=>Qt,useAfterFrame:()=>_i,useAfterPaint:()=>Ks,useAtlas:()=>Se,useAtlasImage:()=>Js,useBeforeFrame:()=>tr,useCanvas:()=>Ai,useControlledAnnotationList:()=>er,useFrame:()=>Ht,useMode:()=>fe,useResizeWorldItem:()=>Ii,useRuntime:()=>G,useWorldEvent:()=>qe});module.exports=Ss(sr);var Vt=["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","onContextMenu"];function ri(){return Vt.reduce((s,e)=>(s[e]=[],s),{})}var rt=Vt.reduce((s,e)=>(s[e.slice(2).toLowerCase()]=e,s[e]=e,s),{});var Y=require("@atlas-viewer/dna");var Pt=require("@atlas-viewer/dna");var Gi="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var lt=(s=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(s));for(;s--;)e+=Gi[t[s]&63];return e};var z=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=rt[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=rt[e];if(!this.eventHandlers[i]){console.warn(`Unknown event ${i}`);return}this.eventHandlers[i].indexOf(t)!==-1&&(this.eventHandlers[i]=this.eventHandlers[i].filter(n=>n!==t))});this.id=this.__id=lt(),this.eventHandlers=ri()}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,r=!1;if(n)for(let o=0;o<n;o++)try{i[o](t),r=!0}catch(h){console.error(e,h)}return r}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,Pt.mutate)(this.points,(0,Pt.translate)(e,t))}atScale(e){(0,Pt.mutate)(this.points,(0,Pt.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,Pt.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};var U=class s extends z{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,Y.dna)(5)},this.points=(0,Y.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=Y.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:Y.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(Y.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 r=Y.DnaFactory.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);(0,Y.mutate)(r,(0,Y.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(r):this.crop=(0,Y.dna)(r)}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=Y.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=Y.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,r){return s.fromImage("data:image/svg+xml;base64,"+btoa(t),i,n,r)}static fromImage(t,i,n,r){let o=new s;return o.applyProps({uri:t,id:r,display:n,target:i}),o}getImageUrl(){return this.uri}};var Et=require("@atlas-viewer/dna");var Ct=class extends z{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,Et.dna)(5)},this.points=(0,Et.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=Et.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?Et.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(Et.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?Et.DnaFactory.singleBox(t.target.width/n,t.target.height/n):this.points}getAllPointsAt(t,i,n){return[[this,this.points,i]]}};var X=require("@atlas-viewer/dna");function Xi(s,e,t=1){let i=e.length;if(i===0)throw new Error("No resources passed in.");let n=0,r=1/0;for(let o=0;o<i&&!(!e[o]||!e[o].display);o++){let h=oi(e[o].display.scale,s/(t||1));h<r&&(r=h,n=o)}return n}function oi(s,e){return Math.abs(s-e)}function It(s,e){let t=oi(s.x,e.x),i=oi(s.y,e.y);return Math.sqrt(Math.pow(t,2)+Math.pow(i,2))}function Zi(s){let e=s.length;return s.indexOf("/info.json")===e-10?s.slice(0,-10):s}function Ce(s,e,t){return Math.min(Math.max(s,e),t)}var it=class s extends z{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,"version3");a(this,"tileUrl");this.tileUrl=Zi(t.url),this.id=t.id||`${this.tileUrl}--${t.scaleFactor}`,this.points=t.displayPoints?t.displayPoints:(0,X.transform)(t.points,(0,X.scale)(t.scaleFactor)),this.tileWidth=t.tileWidth,this.version3=t.version3,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",typeof t.version3<"u"&&(this.version3=t.version3),t.crop){this.cropData=t.crop;let i=(0,X.dna)([...this.points]),n=i.length/5,r=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 d=0;d<n;d++){let c=d*5;i[c+1]<h&&i[c+3]>r&&i[c+2]<l&&i[c+4]>o?(i[c+1]=Ce(i[c+1],r,h),i[c+3]=Ce(i[c+3],r,h),i[c+2]=Ce(i[c+2],o,l),i[c+4]=Ce(i[c+4],o,l)):i[c]=0}(0,X.mutate)(i,(0,X.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(i):this.crop=i}}static fromTile(t,i,n,r,o,h,l,d){n.height=n.height?n.height:n.width;let c=l?Math.floor(i.width/r):Math.ceil(i.width/r),u=l?Math.floor(i.height/r):Math.ceil(i.height/r),m=Math.ceil(c/n.width),f=Math.ceil(u/n.height),y=X.DnaFactory.grid(m,f),w=X.DnaFactory.grid(m,f),v=o?o["@context"]?Array.isArray(o["@context"])?o["@context"]:[o["@context"]]:[]:[],g=typeof d<"u"?d:v.indexOf("http://iiif.io/api/image/3/context.json")!==-1;for(let E=0;E<f;E++)for(let C=0;C<m;C++){let S=C*n.width,P=E*n.height;w.addPoints(S*r,P*r,C===m-1?i.width:(S+n.width)*r,E===f-1?i.height:(P+n.height)*r),y.addPoints(S,P,C===m-1?c:S+n.width,E===f-1?u:P+n.height)}let p=new s({url:t,scaleFactor:r,points:y.build(),displayPoints:w.build(),width:i.width,height:i.height,tileWidth:n.width,format:h,version3:g});return p.applyProps({service:o}),p}getImageUrl(t){let i=this.points.slice(t*5,t*5+5),n=i[3]-i[1],r=i[4]-i[2],o=Math.ceil(n/this.display.scale),h=Math.ceil(r/this.display.scale),l=`${o>this.tileWidth?this.tileWidth:o},`;return this.version3&&(l+=`${h>this.tileWidth?this.tileWidth:h}`),`${this.tileUrl}/${i[1]},${i[2]},${n},${r}/${l}/0/default.${this.format||"jpg"}`}getAllPointsAt(t,i,n){let r=(0,X.hidePointsOutsideRegion)(this.crop||this.points,t);return[[this,r,i]]}transform(t){(0,X.mutate)(this.points,t)}getScheduledUpdates(t,i){return[]}};var ct=require("@atlas-viewer/dna");var Te=class extends z{constructor(){super(...arguments);a(this,"type","spacial-content")}getAllPointsAt(t,i,n){return[[this,this.points,i]]}};var re=class extends Te{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,ct.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 U&&(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 r=this.images.pop();r&&(r instanceof U||r.priority)?(i.priority&&this.images.push(i),this.images.push(r)):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=ct.DnaFactory.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:ct.DnaFactory.singleBox(t.width,t.height),height:t.height,width:t.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:3,minSize:255,maxImageSize:2048,quality:1.5,...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 r=Xi(1/(n||1)/(window.devicePixelRatio||1),this.images,this.renderOptions.quality),o=this.images.length,h=i?(0,ct.compose)(i,(0,ct.translate)(this.x,this.y)):(0,ct.translate)(this.x,this.y);if(r!==this.images.length-1&&this.images[r+1]){let l=[];for(let u=o-1;u>=r;u--)l.push(u);let d=l[0];this.renderOptions.renderLayers&&(l=l.slice(-Math.min(l.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&l.indexOf(d)===-1&&l.unshift(d);let c=[];for(let u=0;u<l.length;u++)c.push(...this.images[l[u]].getAllPointsAt(t,h,n));return c}return this.images[r].getAllPointsAt(t,h,n)}};var L=require("@atlas-viewer/dna");var A=require("@atlas-viewer/dna");function Re(s,e,t,i,n){let r=Math.PI/180*n,o=Math.cos(r),h=Math.sin(r),l=o*(t-s)+h*(i-e)+s,d=o*(i-e)-h*(t-s)+e;return[l,d]}var dt=class s extends z{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,A.dna)(5));a(this,"aggregateBuffer",(0,A.dna)(9));a(this,"invertedBuffer",(0,A.dna)(9));a(this,"rotation",0);a(this,"filteredPointsBuffer");a(this,"_updatedList",[]);a(this,"geometry");let{x:n=0,y:r=0}=i||{};t?(this.id=t.id||"",this.scale=1,this.layers=t.layers,this.points=(0,A.dna)([1,n,r,n+t.width,r+t.height]),this.worldPoints=(0,A.dna)([1,n,r,n+t.width,r+t.height]),this.filteredPointsBuffer=(0,A.dna)(t.layers.length*5)):(this.id="",this.scale=1,this.layers=[],this.points=(0,A.dna)(5),this.worldPoints=(0,A.dna)(5),this.filteredPointsBuffer=(0,A.dna)(5))}static createWithProps(t){let i=new s;return i.applyProps(t),i}applyProps(t){let i=t.x||0,n=t.y||0;this.id=t.id;let r=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(r),this.scale=r}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,A.dna)(this.layers.length*5)}insertBefore(t,i){let n=this.layers.indexOf(i);if(n===-1||this.layers.indexOf(t)!==-1)return;let r=this.layers.slice(0,n),o=this.layers.slice(n);this.layers=[...r,t,...o]}hideInstance(){console.warn("hideInstance: not yet implemented")}getObjectsAt(t,i){if(this.rotation&&(t=this.applyRotation(t)),(0,A.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer)[0]===0)return[];let r=this.layers.length,o=[];for(let h=0;h<r;h++){let l=this.layers[h];if(i&&l.isShape){let c=(0,A.transform)(l.points,(0,A.translate)(this.x,this.y));if(!l.intersects([t[1]-c[1],t[2]-c[2]]))continue}if((0,A.hidePointsOutsideRegion)((0,A.transform)(l.points,(0,A.translate)(this.x,this.y)),t,this.filteredPointsBuffer)[0]!==0&&o.push(l),i){let c=l;o.push(...c.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]},r={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,[d,c]=Re(h,l,i.x,i.y,this.rotation),[u,m]=Re(h,l,n.x,n.y,this.rotation),[f,y]=Re(h,l,r.x,r.y,this.rotation),[w,v]=Re(h,l,o.x,o.y,this.rotation),g=Math.min(d,u,f,w),p=Math.max(d,u,f,w),E=Math.min(c,m,y,v),C=Math.max(c,m,y,v);return(0,A.dna)([t[0],g,E,p,C])}return t}getAllPointsAt(t,i,n){let r=(0,A.compose)((0,A.translate)(this.x,this.y),(0,A.scale)(this.scale),this.aggregateBuffer);this.rotation&&(t=this.applyRotation(t));let o=(0,A.getIntersection)(t,this.points,this.intersectionBuffer),h=this.layers.length,l=[],d=(0,A.transform)(o,(0,A.compose)((0,A.scale)(1/this.scale),(0,A.translate)(-this.x,-this.y),this.invertedBuffer)),c=i?(0,A.compose)(i,r,this.aggregateBuffer):r,u=n*this.scale;for(let m=0;m<h;m++)l.push(...this.layers[m].getAllPointsAt(d,c,u));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,A.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,A.dna)(this.layers.length*5)}getScheduledUpdates(t,i){let n=this.layers.length;this._updatedList=[];let r=i*this.scale;for(let o=0;o<n;o++){let h=this.layers[o].getScheduledUpdates(t,r);h&&this._updatedList.push(...h)}return this._updatedList}};var nt=class s extends z{constructor(t=0,i=0,n=100,r="left-to-right"){super();a(this,"id","world");a(this,"_width");a(this,"_height");a(this,"aspectRatio");a(this,"viewingDirection");a(this,"aggregateBuffer",(0,L.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,L.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=r,this.points=(0,L.dna)(n*5),this.filteredPointsBuffer=(0,L.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 s;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 r=[];for(let o of n)if(o.x&&o.y){let h=L.DnaFactory.singleBox(1,1,o.x,o.y);r.push(this.getObjectsAt(h,!0).reverse())}return r.map(o=>this.propagateEvent(t,i,o,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,i,n,r,o={}){let h=L.DnaFactory.singleBox(1,1,n,r),l=this.getObjectsAt(h,!0).reverse();return this.propagateEvent(t,i,l,o)}propagateEvent(t,i,n,{bubbles:r=!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 u=l-1;u>=0;u--){this._propagateEventTargets.unshift(n[u][0]);let m=n[u][1].length;if(m)for(let f=0;f<m;f++)this._propagateEventTargets.unshift(n[u][1][f])}let d=this._propagateEventTargets.length,c=!1;for(let u=0;u<d&&(i.atlasTarget=this._propagateEventTargets[u],i.atlasWorld=this,c=this._propagateEventTargets[u].dispatchEvent(t,i)||c,!h);u++);return c&&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 r=this.appendWorldObject(t);this.renderOrder.splice(n-1,0,r/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,L.dnaLength)(this.points)===this.objects.length){let t=this.points,i=(0,L.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,L.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),r=this.renderOrder.length;for(let l=0;l<r;l++){let d=this.renderOrder[l];this.objects[d]&&(i[l]=this.points[d*5+3],n[l]=this.points[d*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:r,y:o}=i,h=n/t.width;this.checkResizeInternalBuffer(),this.points.set(L.DnaFactory.singleBox(t.width,t.height,0,0),this.objects.length*5);let l=new dt(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,r,o),this.filteredPointsBuffer=(0,L.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,l}scaleWorldObject(t,i){(0,L.mutate)(this.points.subarray(t*5,t*5+5),(0,L.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,L.mutate)(this.points.subarray(t*5,t*5+5),(0,L.translate)(i,n));let r=this.objects[t];r&&(r.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=L.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,L.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),r=this.objects.length;this._updatedList=[];for(let o=0;o<r;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(),r=(0,L.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),o=this.renderOrder.length,h=[];for(let l=0;l<o;l++){let d=this.renderOrder[l];if(r[d*5]!==0){let c=this.objects[d];if(!c||n&&n.objects.indexOf(c)===-1)continue;if(c.type!=="world-object"){h.push([c,[c]]);continue}i?h.push([c,c.getObjectsAt(t,i)]):h.push([c,this.emptyPaintables])}}return h}getPointsAt(t,i,n=1){let r=this.getObjectsAt(t),o=(0,L.compose)((0,L.scale)(n),(0,L.translate)(-t[1],-t[2]),this.translationBuffer),h=i?(0,L.compose)(i,o,this.aggregateBuffer):o,l=r.length,d=[];for(let c=0;c<l;c++)r[c]&&d.push(...r[c][0].getAllPointsAt(t,h,n));return d}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 r=0;r<n;r++)this.subscriptions[r].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 Ps(s){let{src:e,target:t}=s,i=t?t.width:s.width,n=t?t.height:s.height;return new dt({id:e,height:n,width:i,layers:[U.fromImage(e,{height:n,width:i},{width:s.width,height:s.height})]})}var Yi=require("@atlas-viewer/dna");var Es={margin:0},ai=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={...Es,...t},this.points=(0,Yi.dna)(5),this.objects=e,this.recalculateBounds()}recalculateBounds(){this.points.set([1,Math.min(...this.objects.map(e=>e.points[1]))-this.config.margin,Math.min(...this.objects.map(e=>e.points[2]))-this.config.margin,Math.max(...this.objects.map(e=>e.points[3]))+this.config.margin,Math.max(...this.objects.map(e=>e.points[4]))+this.config.margin])}getPointsAt(e,t,i){return[]}};var Gt=require("@atlas-viewer/dna");var _e=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Ae={},Cs=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],ot=class extends z{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,Gt.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=lt(12),this.points=(0,Gt.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 r=Ae[n]||_e.exec(n)||_e.exec(n);r&&(this._parsed.border.id=n,this._parsed.border.match=Ae[n]=r)}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 r=Ae[t.style.outline]||_e.exec(t.style.outline)||_e.exec(t.style.outline);r&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Ae[t.style.outline]=r)}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 r of Cs)if(this.props.style[r]!==t.style[r]){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=Gt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Gt.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 oe=require("@atlas-viewer/dna");var wt=class extends z{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,oe.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,oe.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps({id:t,target:i,text:n,color:r,backgroundColor:o,fontSize:h=18,interactive:l,fontFamily:d="Arial, sans-serif",...c}){c.font=`${h}px ${d}`,this.interactive=l||!1,typeof n<"u"&&(this.text=n||""),r&&(this.color=r),o&&(this.backgroundColor=o),t&&(this.id=t),i&&(this.points=oe.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,...c},this.__revision++}};var I=require("@atlas-viewer/dna");var Tt=require("@atlas-viewer/dna");var W=Math.pow,Oe=Math.sqrt,ae=Math.sin,Qi=Math.cos,le=Math.PI,Le=1.70158,Me=Le*1.525,qi=Le+1,Ki=2*le/3,Ji=2*le/4.5,he=function(s){return s<1/2.75?7.5625*s*s:s<2/2.75?7.5625*(s-=1.5/2.75)*s+.75:s<2.5/2.75?7.5625*(s-=2.25/2.75)*s+.9375:7.5625*(s-=2.625/2.75)*s+.984375},at={linear:s=>s,easeInQuad:function(s){return s*s},easeOutQuad:function(s){return 1-(1-s)*(1-s)},easeInOutQuad:function(s){return s<.5?2*s*s:1-W(-2*s+2,2)/2},easeInCubic:function(s){return s*s*s},easeOutCubic:function(s){return 1-W(1-s,3)},easeInOutCubic:function(s){return s<.5?4*s*s*s:1-W(-2*s+2,3)/2},easeInQuart:function(s){return s*s*s*s},easeOutQuart:function(s){return 1-W(1-s,4)},easeInOutQuart:function(s){return s<.5?8*s*s*s*s:1-W(-2*s+2,4)/2},easeInQuint:function(s){return s*s*s*s*s},easeOutQuint:function(s){return 1-W(1-s,5)},easeInOutQuint:function(s){return s<.5?16*s*s*s*s*s:1-W(-2*s+2,5)/2},easeInSine:function(s){return 1-Qi(s*le/2)},easeOutSine:function(s){return ae(s*le/2)},easeInOutSine:function(s){return-(Qi(le*s)-1)/2},easeInExpo:function(s){return s===0?0:W(2,10*s-10)},easeOutExpo:function(s){return s===1?1:1-W(2,-10*s)},easeInOutExpo:function(s){return s===0?0:s===1?1:s<.5?W(2,20*s-10)/2:(2-W(2,-20*s+10))/2},easeInCirc:function(s){return 1-Oe(1-W(s,2))},easeOutCirc:function(s){return Oe(1-W(s-1,2))},easeInOutCirc:function(s){return s<.5?(1-Oe(1-W(2*s,2)))/2:(Oe(1-W(-2*s+2,2))+1)/2},easeInBack:function(s){return qi*s*s*s-Le*s*s},easeOutBack:function(s){return 1+qi*W(s-1,3)+Le*W(s-1,2)},easeInOutBack:function(s){return s<.5?W(2*s,2)*((Me+1)*2*s-Me)/2:(W(2*s-2,2)*((Me+1)*(s*2-2)+Me)+2)/2},easeInElastic:function(s){return s===0?0:s===1?1:-W(2,10*s-10)*ae((s*10-10.75)*Ki)},easeOutElastic:function(s){return s===0?0:s===1?1:W(2,-10*s)*ae((s*10-.75)*Ki)+1},easeInOutElastic:function(s){return s===0?0:s===1?1:s<.5?-(W(2,20*s-10)*ae((20*s-11.125)*Ji))/2:W(2,-20*s+10)*ae((20*s-11.125)*Ji)/2+1},easeInBounce:function(s){return 1-he(1-s)},easeOutBounce:he,easeInOutBounce:function(s){return s<.5?(1-he(1-2*s))/2:(1+he(2*s-1))/2}};var Ie=class{constructor(e){a(this,"runtime");a(this,"pendingTransition");a(this,"lastZoomTo",null);a(this,"isConstraining",!1);a(this,"lastGoToRegion",null);this.runtime=e,this.pendingTransition={from:(0,Tt.dna)(5),to:(0,Tt.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:at.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,Tt.dna)(this.runtime.target),this.pendingTransition.to=(0,Tt.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,r=i.total_time===0?1:n===0?0:i.timingFunction(n);e[1]=i.from[1]+(i.to[1]-i.from[1])*r,e[2]=i.from[2]+(i.to[2]-i.from[2])*r,e[3]=i.from[3]+(i.to[3]-i.from[3])*r,e[4]=i.from[4]+(i.to[4]-i.from[4])*r,this.pendingTransition.elapsed_time+=t,this.pendingTransition.elapsed_time>=this.pendingTransition.total_time&&(this.pendingTransition.done=!0,this.pendingTransition.callback?.(),this.pendingTransition.constrain&&this.constrainBounds({transition:{duration:this.pendingTransition.total_time===0?0:500,easing:at.easeOutExpo}}))}}resumeTransition(){this.lastZoomTo&&this.zoomTo(this.lastZoomTo.factor,this.lastZoomTo.options),this.isConstraining&&this.constrainBounds(),this.lastGoToRegion&&this.goToRegion(this.lastGoToRegion.target,this.lastGoToRegion.options)}zoomTo(e,t={}){let{origin:i,stream:n=!1,transition:r}=t;this.lastZoomTo={factor:e,options:t};let o=this.runtime.getZoomedPosition(e,{origin:i}),h=Math.abs(1-e);this.applyTransition(o,r,{duration:2e3*h,easing:at.easeOutExpo,constrain:!0,callback:()=>{this.lastZoomTo=null}},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){this.isConstraining=!0;let[i,n]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});i&&(this.applyTransition(n,e,{duration:500,easing:at.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame())}applyTransition(e,t,i,{stream:n}={}){this.pendingTransition.from=(0,Tt.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||at.easeInOutSine}goToRegion(e,{transition:t}={}){this.lastGoToRegion={target:e,options:{transition:t}};let i=this.runtime.clampRegion(e);this.applyTransition(Tt.DnaFactory.singleBox(i.width,i.height,i.x,i.y),t,{duration:1e3,easing:at.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};var Ro=Number.MIN_VALUE+1,ut=class{constructor(e,t,i,n=[],r){a(this,"id",lt());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,I.dna)(500));a(this,"lastTarget",(0,I.dna)(5));a(this,"zoomBuffer",(0,I.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 r=this.getScaleFactor(),o=this.renderer.getPointsAt(this.world,this.target,this.aggregate,r),h=o.length;for(let c=0;c<h;c++){let u=o[c][0],m=o[c][1],f=o[c][2],y=f?(0,I.transform)(m,f,this.transformBuffer):m;this.renderer.prepareLayer(u,u.__parent&&f?(0,I.transform)(u.__parent.crop||u.__parent.points,f):y);let w=y.length/5;for(let v=0;v<w;v++){let g=v*5;y[g]!==0&&(this.renderer.paint(u,v,y[g+1],y[g+2],y[g+3]-y[g+1],y[g+4]-y[g+2]),this.hook("useAfterPaint",u))}this.renderer.finishLayer(u,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,r),d=l.length;if(d>0)for(let c=0;c<d;c++){let u=l[d-c-1]();u?u.then(()=>{this.pendingUpdate=!0}):this.pendingUpdate=!0}});this.renderer=e,this.world=t,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1.5,...r||{}},this.target=I.DnaFactory.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=I.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new Ie(this),this.aggregate=(0,I.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(I.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=this.getScaleFactor(),i=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},n=this.width*t,r=this.height*t,o=i.width/n,h=i.height/r,l=n/r;if(e.cover?o>h:o<h){let d=l*i.height,c=(d-i.width)/2;this.target[1]=Math.round(-c+i.x),this.target[2]=Math.round(i.y),this.target[3]=Math.round(d-c+i.x),this.target[4]=Math.round(i.height+i.y)}else{let d=i.width/l,c=(d-i.height)/2;this.target[1]=Math.round(i.x),this.target[2]=Math.round(i.y-c),this.target[3]=Math.round(i.x+i.width),this.target[4]=Math.round(i.y+d-c)}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,i,n){this.transitionManager.hasPending()&&this.transitionManager.stopTransition(),this.updateFocalPosition(e-t,i-n);let r=t/e,o=n/i;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*r,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,this.transitionManager.resumeTransition()}updateFocalPosition(e,t){if(!this.manualFocalPosition){let i=this.width,n=this.height,r=Math.min(i,n),o=0,h=0,l=this.x+o,d=this.y+h;if(i<n){let c=this.height-this.width;this.focalPosition=I.DnaFactory.projection({x:l,y:d+c/2,width:r-o*2,height:r-h*2}),this.pendingUpdate=!0}else{let c=this.width-this.height;this.focalPosition=I.DnaFactory.projection({x:l+c/2,y:d,width:r-o*2,height:r-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:r,minY:o,maxY:h}=this.getBounds({target:e,padding:t}),l=!1,d=i?e:(0,I.dna)(e),c=Math.round(e[3]-e[1]),u=Math.round(e[4]-e[2]);return n>e[1]&&(l=!0,d[1]=n,d[3]=n+c),o>e[2]&&(l=!0,d[2]=o,d[4]=o+u),r<e[1]&&(l=!0,d[1]=r,d[3]=r+c),h<e[2]&&(l=!0,d[2]=h,d[4]=h+u),[l,d]}getBounds(e){let t=e.target||this.target,i=e.padding,n=this.options.visibilityRatio,r=Math.abs(1-n);if(this.world.hasActiveZone()){let p=this.world.getActiveZone();if(p){let E=t[3]-t[1]<p.points[3]-p.points[1],C=t[4]-t[2]<p.points[4]-p.points[2];return{minX:E?p.points[1]-i:p.points[1]+(p.points[3]-p.points[1])/2-(t[3]-t[1])/2,maxX:C?p.points[2]-i:p.points[2]+(p.points[4]-p.points[2])/2-(t[4]-t[2])/2,minY:E?p.points[3]+i:p.points[1]+(p.points[3]-p.points[1])/2-(t[3]-t[1])/2,maxY:C?p.points[4]+i:p.points[2]+(p.points[4]-p.points[2])/2-(t[4]-t[2])/2}}}let o=t[3]-t[1],h=this.world.width,l=-o*r,d=h-o-l,c=t[4]-t[2],u=this.world.height,m=-c*r,f=u-c-m,y=Math.round(Math.max(l,d)),w=Math.round(Math.min(l,d)),v=Math.round(Math.max(m,f)),g=Math.round(Math.min(m,f));return{minX:w,maxX:y,minY:g,maxY:v}}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,r=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,d=this.world.width,c=l?l/d:1,u=this.options.maxUnderZoom,m=Math.max(c||1,this.options.maxOverZoom),f=1/e,y=r*f;if(f<1){let g=o*r,p=h*r,E=this.world.width/g,C=this.world.height/p;if(E>C){let S=this.world.width*y,O=~~(o*r)*u;S<O&&(e=this.world.width*r/(o*r*u))}else{let S=this.world.height*y,O=~~(h*r)*u;S<O&&(e=this.world.height*r/(h*r*u))}}else y>m&&(e=r/m);let v=(0,I.transform)(this.target,(0,I.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2),this.zoomBuffer);return this.constrainBounds(v,{ref:!0,panPadding:100}),v}clampRegion({x:e,y:t,width:i,height:n,padding:r=0}){let o=this.width,h=this.height,l=i/o<n/h,d=e-r,c=t-r,u=i+r*2,m=n+r*2;if(l){let y=m/h*o;return{x:d-(y-u)/2,y:c,width:y,height:m}}let f=u/o*h;return{x:d,y:c-(f-m)/2,width:u,height:f}}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 r=I.DnaFactory.singleBox(i,n,e,t);return(0,I.mutate)(r,(0,I.compose)((0,I.scale)(this.getScaleFactor()),(0,I.translate)(-this.target[1],-this.target[2]))),{x:r[1],y:r[2],width:r[3]-r[1],height:r[4]-r[2],strand:r}}setScale(e,t){(0,I.mutate)(this.target,(0,I.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2)),this.pendingUpdate=!0}syncTo(e){let t=this.target;return this.target=e.target,this.pendingUpdate=!0,()=>{this.target=t}}stop(){return typeof this.stopId<"u"&&(window.cancelAnimationFrame(this.stopId),this.stopId=void 0),()=>{this.render(performance.now())}}reset(){this.renderer.reset()}selectZone(e){this.world.selectZone(e),this.pendingUpdate=!0}deselectZone(){this.world.deselectZone(),this.pendingUpdate=!0}hook(e,t){let i=this.hooks[e].length;if(i!==0)for(let 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 Xt=require("@atlas-viewer/dna");var ke=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Fe={},Ts=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],kt=class extends z{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,Xt.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=lt(12),this.points=(0,Xt.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])),r=Math.max(0,...t.map(h=>h[0])),o=Math.max(0,...t.map(h=>h[1]));this.boundingBox={x:i,y:n,width:r-i,height:o-n};return}this.boundingBox=null}intersects(t){if(!t||this.shape.type==="none")return!1;let[i,n]=t,r=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,d=r.length-1;l<r.length;d=l++)r[l][1]>n!=r[d][1]>n&&i<(r[d][0]-r[l][0])*(n-r[l][1])/(r[d][1]-r[l][1])+r[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,r=t.points.length;for(let o=0;o<r;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 r=Fe[n]||ke.exec(n)||ke.exec(n);r&&(this._parsed.border.id=n,this._parsed.border.match=Fe[n]=r)}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 r=Fe[t.style.outline]||ke.exec(t.style.outline)||ke.exec(t.style.outline);r&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Fe[t.style.outline]=r)}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 r of Ts)if(this.props.style[r]!==t.style[r]){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=Xt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Xt.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 ce=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Rs=typeof AbortController=="function",De=Rs?AbortController:class{constructor(){this.signal=new tn}abort(e=new Error("This operation was aborted")){this.signal.reason=this.signal.reason||e,this.signal.aborted=!0,this.signal.dispatchEvent({type:"abort",target:this.signal})}},_s=typeof AbortSignal=="function",As=typeof De.AbortSignal=="function",tn=_s?AbortSignal:As?De.AbortController:class{constructor(){this.reason=void 0,this.aborted=!1,this._listeners=[]}dispatchEvent(e){e.type==="abort"&&(this.aborted=!0,this.onabort(e),this._listeners.forEach(t=>t(e),this))}onabort(){}addEventListener(e,t){e==="abort"&&this._listeners.push(t)}removeEventListener(e,t){e==="abort"&&(this._listeners=this._listeners.filter(i=>i!==t))}},di=new Set,hi=(s,e)=>{let t=`LRU_CACHE_OPTION_${s}`;We(t)&&ui(t,`${s} option`,`options.${e}`,Yt)},li=(s,e)=>{let t=`LRU_CACHE_METHOD_${s}`;if(We(t)){let{prototype:i}=Yt,{get:n}=Object.getOwnPropertyDescriptor(i,s);ui(t,`${s} method`,`cache.${e}()`,n)}},Os=(s,e)=>{let t=`LRU_CACHE_PROPERTY_${s}`;if(We(t)){let{prototype:i}=Yt,{get:n}=Object.getOwnPropertyDescriptor(i,s);ui(t,`${s} property`,`cache.${e}`,n)}},en=(...s)=>{typeof process=="object"&&process&&typeof process.emitWarning=="function"?process.emitWarning(...s):console.error(...s)},We=s=>!di.has(s),ui=(s,e,t,i)=>{di.add(s);let n=`The ${e} is deprecated. Please use ${t} instead.`;en(n,"DeprecationWarning",s,i)},Rt=s=>s&&s===Math.floor(s)&&s>0&&isFinite(s),nn=s=>Rt(s)?s<=Math.pow(2,8)?Uint8Array:s<=Math.pow(2,16)?Uint16Array:s<=Math.pow(2,32)?Uint32Array:s<=Number.MAX_SAFE_INTEGER?Zt:null:null,Zt=class extends Array{constructor(e){super(e),this.fill(0)}},ci=class{constructor(e){if(e===0)return[];let t=nn(e);this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Yt=class s{constructor(e={}){let{max:t=0,ttl:i,ttlResolution:n=1,ttlAutopurge:r,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:l,dispose:d,disposeAfter:c,noDisposeOnSet:u,noUpdateTTL:m,maxSize:f=0,maxEntrySize:y=0,sizeCalculation:w,fetchMethod:v,fetchContext:g,noDeleteOnFetchRejection:p,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:C,allowStaleOnFetchAbort:S,ignoreFetchAbort:P}=e,{length:O,maxAge:T,stale:B}=e instanceof s?{}:e;if(t!==0&&!Rt(t))throw new TypeError("max option must be a nonnegative integer");let x=t?nn(t):Array;if(!x)throw new Error("invalid max value: "+t);if(this.max=t,this.maxSize=f,this.maxEntrySize=y||this.maxSize,this.sizeCalculation=w||O,this.sizeCalculation){if(!this.maxSize&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(this.fetchMethod=v||null,this.fetchMethod&&typeof this.fetchMethod!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.fetchContext=g,!this.fetchMethod&&g!==void 0)throw new TypeError("cannot set fetchContext without fetchMethod");if(this.keyMap=new Map,this.keyList=new Array(t).fill(null),this.valList=new Array(t).fill(null),this.next=new x(t),this.prev=new x(t),this.head=0,this.tail=0,this.free=new ci(t),this.initialFill=1,this.size=0,typeof d=="function"&&(this.dispose=d),typeof c=="function"?(this.disposeAfter=c,this.disposed=[]):(this.disposeAfter=null,this.disposed=null),this.noDisposeOnSet=!!u,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!p,this.allowStaleOnFetchRejection=!!C,this.allowStaleOnFetchAbort=!!S,this.ignoreFetchAbort=!!P,this.maxEntrySize!==0){if(this.maxSize!==0&&!Rt(this.maxSize))throw new TypeError("maxSize must be a positive integer if specified");if(!Rt(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.initializeSizeTracking()}if(this.allowStale=!!l||!!B,this.noDeleteOnStaleGet=!!E,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=Rt(n)||n===0?n:1,this.ttlAutopurge=!!r,this.ttl=i||T||0,this.ttl){if(!Rt(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.initializeTTLTracking()}if(this.max===0&&this.ttl===0&&this.maxSize===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.max&&!this.maxSize){let _="LRU_CACHE_UNBOUNDED";We(_)&&(di.add(_),en("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",_,s))}B&&hi("stale","allowStale"),T&&hi("maxAge","ttl"),O&&hi("length","sizeCalculation")}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new Zt(this.max),this.starts=new Zt(this.max),this.setItemTTL=(i,n,r=ce.now())=>{if(this.starts[i]=n!==0?r:0,this.ttls[i]=n,n!==0&&this.ttlAutopurge){let o=setTimeout(()=>{this.isStale(i)&&this.delete(this.keyList[i])},n+1);o.unref&&o.unref()}},this.updateItemAge=i=>{this.starts[i]=this.ttls[i]!==0?ce.now():0},this.statusTTL=(i,n)=>{i&&(i.ttl=this.ttls[n],i.start=this.starts[n],i.now=e||t(),i.remainingTTL=i.now+i.ttl-i.start)};let e=0,t=()=>{let i=ce.now();if(this.ttlResolution>0){e=i;let n=setTimeout(()=>e=0,this.ttlResolution);n.unref&&n.unref()}return i};this.getRemainingTTL=i=>{let n=this.keyMap.get(i);return n===void 0?0:this.ttls[n]===0||this.starts[n]===0?1/0:this.starts[n]+this.ttls[n]-(e||t())},this.isStale=i=>this.ttls[i]!==0&&this.starts[i]!==0&&(e||t())-this.starts[i]>this.ttls[i]}updateItemAge(e){}statusTTL(e,t){}setItemTTL(e,t,i){}isStale(e){return!1}initializeSizeTracking(){this.calculatedSize=0,this.sizes=new Zt(this.max),this.removeItemSize=e=>{this.calculatedSize-=this.sizes[e],this.sizes[e]=0},this.requireSize=(e,t,i,n)=>{if(this.isBackgroundFetch(t))return 0;if(!Rt(i))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(i=n(t,e),!Rt(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i},this.addItemSize=(e,t,i)=>{if(this.sizes[e]=t,this.maxSize){let n=this.maxSize-this.sizes[e];for(;this.calculatedSize>n;)this.evict(!0)}this.calculatedSize+=this.sizes[e],i&&(i.entrySize=t,i.totalCalculatedSize=this.calculatedSize)}}removeItemSize(e){}addItemSize(e,t){}requireSize(e,t,i,n){if(i||n)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache")}*indexes({allowStale:e=this.allowStale}={}){if(this.size)for(let t=this.tail;!(!this.isValidIndex(t)||((e||!this.isStale(t))&&(yield t),t===this.head));)t=this.prev[t]}*rindexes({allowStale:e=this.allowStale}={}){if(this.size)for(let t=this.head;!(!this.isValidIndex(t)||((e||!this.isStale(t))&&(yield t),t===this.tail));)t=this.next[t]}isValidIndex(e){return e!==void 0&&this.keyMap.get(this.keyList[e])===e}*entries(){for(let e of this.indexes())this.valList[e]!==void 0&&this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield[this.keyList[e],this.valList[e]])}*rentries(){for(let e of this.rindexes())this.valList[e]!==void 0&&this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield[this.keyList[e],this.valList[e]])}*keys(){for(let e of this.indexes())this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.keyList[e])}*rkeys(){for(let e of this.rindexes())this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.keyList[e])}*values(){for(let e of this.indexes())this.valList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.valList[e])}*rvalues(){for(let e of this.rindexes())this.valList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.valList[e])}[Symbol.iterator](){return this.entries()}find(e,t){for(let i of this.indexes()){let n=this.valList[i],r=this.isBackgroundFetch(n)?n.__staleWhileFetching:n;if(r!==void 0&&e(r,this.keyList[i],this))return this.get(this.keyList[i],t)}}forEach(e,t=this){for(let i of this.indexes()){let n=this.valList[i],r=this.isBackgroundFetch(n)?n.__staleWhileFetching:n;r!==void 0&&e.call(t,r,this.keyList[i],this)}}rforEach(e,t=this){for(let i of this.rindexes()){let n=this.valList[i],r=this.isBackgroundFetch(n)?n.__staleWhileFetching:n;r!==void 0&&e.call(t,r,this.keyList[i],this)}}get prune(){return li("prune","purgeStale"),this.purgeStale}purgeStale(){let e=!1;for(let t of this.rindexes({allowStale:!0}))this.isStale(t)&&(this.delete(this.keyList[t]),e=!0);return e}dump(){let e=[];for(let t of this.indexes({allowStale:!0})){let i=this.keyList[t],n=this.valList[t],r=this.isBackgroundFetch(n)?n.__staleWhileFetching:n;if(r===void 0)continue;let o={value:r};if(this.ttls){o.ttl=this.ttls[t];let h=ce.now()-this.starts[t];o.start=Math.floor(Date.now()-h)}this.sizes&&(o.size=this.sizes[t]),e.unshift([i,o])}return e}load(e){this.clear();for(let[t,i]of e){if(i.start){let n=Date.now()-i.start;i.start=ce.now()-n}this.set(t,i.value,i)}}dispose(e,t,i){}set(e,t,{ttl:i=this.ttl,start:n,noDisposeOnSet:r=this.noDisposeOnSet,size:o=0,sizeCalculation:h=this.sizeCalculation,noUpdateTTL:l=this.noUpdateTTL,status:d}={}){if(o=this.requireSize(e,t,o,h),this.maxEntrySize&&o>this.maxEntrySize)return d&&(d.set="miss",d.maxEntrySizeExceeded=!0),this.delete(e),this;let c=this.size===0?void 0:this.keyMap.get(e);if(c===void 0)c=this.newIndex(),this.keyList[c]=e,this.valList[c]=t,this.keyMap.set(e,c),this.next[this.tail]=c,this.prev[c]=this.tail,this.tail=c,this.size++,this.addItemSize(c,o,d),d&&(d.set="add"),l=!1;else{this.moveToTail(c);let u=this.valList[c];if(t!==u){if(this.isBackgroundFetch(u)?u.__abortController.abort(new Error("replaced")):r||(this.dispose(u,e,"set"),this.disposeAfter&&this.disposed.push([u,e,"set"])),this.removeItemSize(c),this.valList[c]=t,this.addItemSize(c,o,d),d){d.set="replace";let m=u&&this.isBackgroundFetch(u)?u.__staleWhileFetching:u;m!==void 0&&(d.oldValue=m)}}else d&&(d.set="update")}if(i!==0&&this.ttl===0&&!this.ttls&&this.initializeTTLTracking(),l||this.setItemTTL(c,i,n),this.statusTTL(d,c),this.disposeAfter)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return this}newIndex(){return this.size===0?this.tail:this.size===this.max&&this.max!==0?this.evict(!1):this.free.length!==0?this.free.pop():this.initialFill++}pop(){if(this.size){let e=this.valList[this.head];return this.evict(!0),e}}evict(e){let t=this.head,i=this.keyList[t],n=this.valList[t];return this.isBackgroundFetch(n)?n.__abortController.abort(new Error("evicted")):(this.dispose(n,i,"evict"),this.disposeAfter&&this.disposed.push([n,i,"evict"])),this.removeItemSize(t),e&&(this.keyList[t]=null,this.valList[t]=null,this.free.push(t)),this.head=this.next[t],this.keyMap.delete(i),this.size--,t}has(e,{updateAgeOnHas:t=this.updateAgeOnHas,status:i}={}){let n=this.keyMap.get(e);if(n!==void 0)if(this.isStale(n))i&&(i.has="stale",this.statusTTL(i,n));else return t&&this.updateItemAge(n),i&&(i.has="hit"),this.statusTTL(i,n),!0;else i&&(i.has="miss");return!1}peek(e,{allowStale:t=this.allowStale}={}){let i=this.keyMap.get(e);if(i!==void 0&&(t||!this.isStale(i))){let n=this.valList[i];return this.isBackgroundFetch(n)?n.__staleWhileFetching:n}}backgroundFetch(e,t,i,n){let r=t===void 0?void 0:this.valList[t];if(this.isBackgroundFetch(r))return r;let o=new De;i.signal&&i.signal.addEventListener("abort",()=>o.abort(i.signal.reason));let h={signal:o.signal,options:i,context:n},l=(f,y=!1)=>{let{aborted:w}=o.signal,v=i.ignoreFetchAbort&&f!==void 0;return i.status&&(w&&!y?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,v&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),w&&!v&&!y?c(o.signal.reason):(this.valList[t]===m&&(f===void 0?m.__staleWhileFetching?this.valList[t]=m.__staleWhileFetching:this.delete(e):(i.status&&(i.status.fetchUpdated=!0),this.set(e,f,h.options))),f)},d=f=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=f),c(f)),c=f=>{let{aborted:y}=o.signal,w=y&&i.allowStaleOnFetchAbort,v=w||i.allowStaleOnFetchRejection,g=v||i.noDeleteOnFetchRejection;if(this.valList[t]===m&&(!g||m.__staleWhileFetching===void 0?this.delete(e):w||(this.valList[t]=m.__staleWhileFetching)),v)return i.status&&m.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),m.__staleWhileFetching;if(m.__returned===m)throw f},u=(f,y)=>{this.fetchMethod(e,r,h).then(w=>f(w),y),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(f(),i.allowStaleOnFetchAbort&&(f=w=>l(w,!0)))})};i.status&&(i.status.fetchDispatched=!0);let m=new Promise(u).then(l,d);return m.__abortController=o,m.__staleWhileFetching=r,m.__returned=null,t===void 0?(this.set(e,m,{...h.options,status:void 0}),t=this.keyMap.get(e)):this.valList[t]=m,m}isBackgroundFetch(e){return e&&typeof e=="object"&&typeof e.then=="function"&&Object.prototype.hasOwnProperty.call(e,"__staleWhileFetching")&&Object.prototype.hasOwnProperty.call(e,"__returned")&&(e.__returned===e||e.__returned===null)}async fetch(e,{allowStale:t=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:r=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:h=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:d=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:u=this.allowStaleOnFetchRejection,ignoreFetchAbort:m=this.ignoreFetchAbort,allowStaleOnFetchAbort:f=this.allowStaleOnFetchAbort,fetchContext:y=this.fetchContext,forceRefresh:w=!1,status:v,signal:g}={}){if(!this.fetchMethod)return v&&(v.fetch="get"),this.get(e,{allowStale:t,updateAgeOnGet:i,noDeleteOnStaleGet:n,status:v});let p={allowStale:t,updateAgeOnGet:i,noDeleteOnStaleGet:n,ttl:r,noDisposeOnSet:o,size:h,sizeCalculation:l,noUpdateTTL:d,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:f,ignoreFetchAbort:m,status:v,signal:g},E=this.keyMap.get(e);if(E===void 0){v&&(v.fetch="miss");let C=this.backgroundFetch(e,E,p,y);return C.__returned=C}else{let C=this.valList[E];if(this.isBackgroundFetch(C)){let B=t&&C.__staleWhileFetching!==void 0;return v&&(v.fetch="inflight",B&&(v.returnedStale=!0)),B?C.__staleWhileFetching:C.__returned=C}let S=this.isStale(E);if(!w&&!S)return v&&(v.fetch="hit"),this.moveToTail(E),i&&this.updateItemAge(E),this.statusTTL(v,E),C;let P=this.backgroundFetch(e,E,p,y),O=P.__staleWhileFetching!==void 0,T=O&&t;return v&&(v.fetch=O&&S?"stale":"refresh",T&&S&&(v.returnedStale=!0)),T?P.__staleWhileFetching:P.__returned=P}}get(e,{allowStale:t=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:r}={}){let o=this.keyMap.get(e);if(o!==void 0){let h=this.valList[o],l=this.isBackgroundFetch(h);return this.statusTTL(r,o),this.isStale(o)?(r&&(r.get="stale"),l?(r&&(r.returnedStale=t&&h.__staleWhileFetching!==void 0),t?h.__staleWhileFetching:void 0):(n||this.delete(e),r&&(r.returnedStale=t),t?h:void 0)):(r&&(r.get="hit"),l?h.__staleWhileFetching:(this.moveToTail(o),i&&this.updateItemAge(o),h))}else r&&(r.get="miss")}connect(e,t){this.prev[t]=e,this.next[e]=t}moveToTail(e){e!==this.tail&&(e===this.head?this.head=this.next[e]:this.connect(this.prev[e],this.next[e]),this.connect(this.tail,e),this.tail=e)}get del(){return li("del","delete"),this.delete}delete(e){let t=!1;if(this.size!==0){let i=this.keyMap.get(e);if(i!==void 0)if(t=!0,this.size===1)this.clear();else{this.removeItemSize(i);let n=this.valList[i];this.isBackgroundFetch(n)?n.__abortController.abort(new Error("deleted")):(this.dispose(n,e,"delete"),this.disposeAfter&&this.disposed.push([n,e,"delete"])),this.keyMap.delete(e),this.keyList[i]=null,this.valList[i]=null,i===this.tail?this.tail=this.prev[i]:i===this.head?this.head=this.next[i]:(this.next[this.prev[i]]=this.next[i],this.prev[this.next[i]]=this.prev[i]),this.size--,this.free.push(i)}}if(this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return t}clear(){for(let e of this.rindexes({allowStale:!0})){let t=this.valList[e];if(this.isBackgroundFetch(t))t.__abortController.abort(new Error("deleted"));else{let i=this.keyList[e];this.dispose(t,i,"delete"),this.disposeAfter&&this.disposed.push([t,i,"delete"])}}if(this.keyMap.clear(),this.valList.fill(null),this.keyList.fill(null),this.ttls&&(this.ttls.fill(0),this.starts.fill(0)),this.sizes&&this.sizes.fill(0),this.head=0,this.tail=0,this.initialFill=1,this.free.length=0,this.calculatedSize=0,this.size=0,this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift())}get reset(){return li("reset","clear"),this.clear}get length(){return Os("length","size"),this.size}static get AbortController(){return De}static get AbortSignal(){return tn}},sn=Yt;var rn=/(-?[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,on={},Ms=typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes("firefox"),ze={};var de=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.transition="opacity .3s",this.dpi=t?.dpi||1,this.hostCache=t?.lruCache?new sn({maxSize:1024*512*512,dispose:(i,n,r)=>{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.max(0,this.imagesPending-this.imagesLoaded),this.imagesLoaded=0,this.loadingQueueOrdered||(this.loadingQueue=this.loadingQueue.sort((t,i)=>t.network&&t.scale===i.scale?i.distance-t.distance:t.scale<i.scale?-1:1),this.loadingQueueOrdered=!0),this.previousVisible=this.visible,this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let t=0;t<this.drawCalls.length;t++){let i=this.drawCalls.shift();i&&i()}this.doOffscreenWork(),this.options.debug&&this.stats&&this.stats.end()}doOffscreenWork(){this.frameTasks=0,this.loadingQueue.length&&(this._worker(),this.loadingQueue.length&&(this._scheduled||(this._scheduled=setInterval(this._doWork,0))))}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let n=this.getCanvasDims(),r=n.width/e,o=n.height/t,h=(r<o?o:r)*(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 r=this.getCanvasDims();if(this.ctx.globalAlpha=1,this.ctx.fillStyle=this.canvas.dataset.background??"rgb(0, 0, 0)",this.ctx.fillRect(0,0,r.width,r.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&&(this.ctx.filter=o)}else this.ctx.filter="none"}applyTransform(e,t,i,n,r){let o=e.__owner.value;if(o&&o.rotation){this.ctx.save();let h=t+n/2,l=i+r/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,r,o){let h=this.ctx.globalAlpha;if(e instanceof U||e instanceof it){if(e.display.rotation){this.ctx.save();let c=i+r/2,u=n+o/2;e.crop&&(c-=e.crop[t*5+1],u-=e.crop[t*5+2]),this.ctx.translate(c,u),this.ctx.rotate(e.display.rotation*Math.PI/180),this.ctx.translate(-c,-u)}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 c=e.__host.canvas,u=this.getCanvasDims();if((c.indices.indexOf(t)===-1||this.invalidated.indexOf(c.canvases[t])!==-1)&&this.schedulePaintToCanvas(c,e,t,It({x:i+r/2,y:n+r/2},{x:u.width/2,y:u.height/2})),!this.firstMeaningfulPaint)return;let m=this.hostCache.get(c.canvases[t]);if(m)if(e.crop&&e.cropData){if(e.crop[t*5]){let f=[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];f[0]+=e.cropData.x/e.display.scale,f[1]+=e.cropData.y/e.display.scale;let y=e.x*this.lastKnownScale,w=e.y*this.lastKnownScale,v=[i+y,n+w,r,o];v[0]+=y,v[1]+=w,this.ctx.drawImage(m,f[0],f[1],f[2],f[3],v[0],v[1],v[2]+1,v[3]+1)}}else Ms?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,r+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,r+Number.MIN_VALUE+.5,o+Number.MIN_VALUE+.5)}catch{}e.display.rotation&&this.ctx.restore()}let l=e instanceof ot&&this.options.box,d=e instanceof kt&&this.options.polygon;if((l||d)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let c=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),u=e.props.relativeStyle?1:r/e.width;typeof c.opacity<"u"&&(this.ctx.globalAlpha=c.opacity);let m=0;typeof c.borderWidth<"u"&&(m=parseInt(c.borderWidth,10)*u);let f=0;typeof c.outlineWidth<"u"&&(f=parseInt(c.outlineWidth,10)*u);let y=0;if(typeof c.outlineOffset<"u"&&(y=parseInt(c.outlineOffset,10)*u),c.borderColor&&(this.ctx.strokeStyle=c.borderColor),c.boxShadow){let w=c.boxShadow.split(/,(?![^(]*\))/);for(let v of w){let g=on[v]||rn.exec(v)||rn.exec(v);on[v]=g,g&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(g[1])*this.dpi*u,this.ctx.shadowOffsetY=parseInt(g[3])*this.dpi*u,this.ctx.shadowBlur=parseInt(g[5])*this.dpi*u,this.ctx.shadowColor=g[9],this.ctx.fillStyle="rgba(0,0,0,1)",this.ctx.fillRect(i+m,n+m,r,o),this.ctx.restore())}}if(this.ctx.fillStyle=c.backgroundColor||"transparent",this.ctx.lineWidth=m,d){let w=e.shape,v=w.points||[],g=v.length;this.ctx.beginPath();for(let p=0;p<g;p++)this.ctx.lineTo(i+v[p][0]*this.lastKnownScale,n+v[p][1]*this.lastKnownScale);w.open||this.ctx.closePath(),m&&this.ctx.stroke(),w.open||this.ctx.fill()}else m&&this.ctx.strokeRect(i+m/2,n+m/2,r+m,o+m),this.ctx.fillRect(i+m,n+m,r,o);f&&(c.outlineColor&&(this.ctx.strokeStyle=c.outlineColor),this.ctx.lineWidth=f,this.ctx.strokeRect(i-f/2-y,n-f/2-y,r+m*2+f+y*2,o+m*2+f+y*2))}this.ctx.globalAlpha=h}}loadImage(e,t,i,n=!1){if(ze[e]&&ze[e].naturalWidth>0){t(ze[e]);return}try{let r=!1;n||setTimeout(()=>{r||this.loadImage(e,t,i,!0)},3e3);let o=document.createElement("img");o.decoding="auto",o.onload=function(){r=!0,t(o),ze[e]=o,o.onload=null},this.options.crossOrigin&&(o.crossOrigin="anonymous"),o.src=e,o.complete&&o.onload({}),o.width}catch(r){console.log("image error",r),i(r)}}schedulePaintToCanvas(e,t,i,n){this.imagesPending++,e.indices.push(i);let r=`${t.id}--${t.display.scale}-${i}`,o=this.invalidated.indexOf(r);o!==-1&&this.invalidated.splice(o,1),e.canvases[i]=r,t.__host.canvas.loading=!0,this.loadingQueueOrdered=!1,this.loadingQueue.push({id:r,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,d=>{this.loadingQueue.push({id:r,scale:t.display.scale,distance:n,task:()=>new Promise(c=>{this.imageIdsLoaded.includes(r)||(this.imagesLoaded++,this.imageIdsLoaded.push(r)),e.loaded.push(i),e.loaded.length===e.indices.length&&(e.loading=!1);let u=t.display.points.slice(i*5,i*5+5),m=document.createElement("canvas"),f=m.getContext("2d");m.width=u[3]-u[1],m.height=u[4]-u[2],this.hostCache.set(e.canvases[i],m),this.drawCalls.push(()=>{f.drawImage(d,0,0,u[3]-u[1],u[4]-u[2]),c()})})}),h()},d=>{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 U||e instanceof it)&&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 r=t[3]-t[1]<n.points[3]-n.points[1],o=t[4]-t[2]<n.points[4]-n.points[2];return{x1:r?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:r?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 Ft=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 r=0;r<this.length;r++)this.renderers[r].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 r=0;r<this.length;r++)this.renderers[r].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,r,o){for(let h=0;h<this.length;h++)this.renderers[h].paint(e,t,i,n,r,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 Be=require("@atlas-viewer/dna");var ue=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,Be.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,r=this.initialHeight/e.height,o=this.widthRatio>this.heightRatio?n:r;if(this.target=i,this.bounds){let h=e.getPointsAt(this.bounds,this.aggregate,o);for(let[l,d]of h)if(l instanceof U&&l.__host.canvas){let c=d.length/5;for(let u=0;u<c;u++)if(l.__host.canvas.canvases[u]){let f={x1:d[u+1]*o,y1:d[u+2]*o,width:(d[u+3]-d[u+1])*o,height:(d[u+4]-d[u+2])*o}}}}e.getPoints().forEach((h,l,d)=>{if(l%5===0&&h){let c={x1:d[l+1]*o,y1:d[l+2]*o,x2:d[l+3]*o,y2:d[l+4]*o,width:(d[l+3]-d[l+1])*o,height:(d[l+4]-d[l+2])*o};this.context.strokeStyle="red",this.context.strokeRect(c.x1,c.y1,c.width,c.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=Be.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,i,n,r,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 mi=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=nt.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(),r=this.autoWidth?-1:this.width-this.padding*2,o=this.autoWidth?-1:(r-this.spacing*(i-1))/i;if(this.autoHeight&&!this.autoWidth){let h=0,l=this.padding;for(let d=0;d<n&&h!==e;d++){let c=0,u=[];for(let m=0;m<i;m++){let f=this.reversed?e-h:h;if(h===e)break;let y=this.content[f],w=y.width,v=y.width/y.height,g=o/v;u.push([h,o,g,o/w]),g>c&&(c=g),h++}for(let m=0;m<i&&u[m];m++){let f=this.world.getPoints(),y=u[m][0],w=u[m][1],v=u[m][2],g=u[m][3],p=this.padding+m*(this.spacing+w),E=l+(c-v)/2,C=this.reversed?e-y:y,S=f[C*5+1],P=f[C*5+2];this.world.scaleWorldObject(y,g),(S!==p||P!==E)&&this.world.translateWorldObject(C,p-S,E-P)}l+=c+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 Mn=et(Rn(),1);var J=require("@atlas-viewer/dna");function _n(s){return{x:s[1],y:s[2],width:s[3]-s[1],height:s[4]-s[2]}}var An="pan",On="scroll",Ds="gesture",Ln={zoomOutFactor:.8,zoomInFactor:1.25,maxZoomFactor:1,minZoomFactor:.05,zoomDuration:300,zoomWheelConstant:20,zoomClamp:.6,panBounceStiffness:120,panBounceDamping:15,panTimeConstant:240,panPower:.1,nudgeDistance:100,panPadding:0,devicePixelRatio:1,enableWheel:!0,enableClickToZoom:!0,ignoreSingleFingerTouch:!1,enablePanOnWait:!1,requireMetaKeyForWheelZoom:!1,panOnWaitDelay:40,onPanInSketchMode:()=>{},parentElement:null},me=(s={})=>({start:function(e){let{zoomWheelConstant:t,enableWheel:i,enableClickToZoom:n,ignoreSingleFingerTouch:r,enablePanOnWait:o,panOnWaitDelay:h,parentElement:l,requireMetaKeyForWheelZoom:d}={...Ln,...s},c={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:(0,J.dna)(5),multiTouch:{distance:0}};e.world.activatedEvents.push("onMouseUp","onMouseDown","onMouseMove","onTouchStart","onTouchEnd","onTouchMove","onContextMenu");function u(){w=0,g="",E(),E(void 0,"notice"),v=0}function m(){e.world.constraintBounds(),u()}function f(x){if(x.which>1){c.isPressing=!1;return}e.mode==="explore"&&(x.preventDefault(),c.pointerStart.x=x.atlas.x,c.pointerStart.y=x.atlas.y,e.transitionManager.stopTransition(),c.isPressing=!0)}function y(){u(),c.isPressing&&(e.mode==="explore"&&e.world.constraintBounds(),c.isPressing=!1)}let w=0,v=0,g="";function p(x){if(e.mode==="explore"){if(x.atlasTouches.length===1&&(v=performance.now(),r==!1&&x.preventDefault(),c.pointerStart.x=x.atlasTouches[0].x,c.pointerStart.y=x.atlasTouches[0].y),x.atlasTouches.length===2){g=Ds,x.preventDefault();let _=x.atlasTouches[0].x,k=x.atlasTouches[1].x;c.pointerStart.x=(_+k)/2;let Ot=x.atlasTouches[0].y,H=x.atlasTouches[1].y;c.pointerStart.y=(Ot+H)/2,w=It({x:x.touches[0].clientX,y:x.touches[0].clientY},{x:x.touches[1].clientX,y:x.touches[1].clientY})}e.transitionManager.stopTransition(),c.isPressing=!0}}function E(x,_="intent"){l&&(l.dataset[_]=x)}function C(x){let _=null,k=null,Ot=!1,H=0;if(c.isPressing&&x.touches.length===2){let ht=x.touches[0].clientX,q=x.touches[1].clientX;_=(ht+q)/2;let $t=x.touches[0].clientY,Mt=x.touches[1].clientY;k=($t+Mt)/2,H=It({x:x.touches[0].clientX,y:x.touches[0].clientY},{x:x.touches[1].clientX,y:x.touches[1].clientY}),Ot=!0}if(E(g),c.isPressing&&x.touches.length===1){if(o&&(performance.now()-v<h&&g==""&&(g=On),g==""&&(g=An)),E(g),g==""&&r==!0||g==On){E("require-two-finger","notice");return}let ht=x.touches[0];_=ht.clientX,k=ht.clientY}if(_!==null&&k!==null){let ht=e.getRendererScreenPosition();if(ht){let{x:q,y:$t}=e.viewerToWorld(_-ht.x,k-ht.y),Mt=H&&w?H/w:1;e.transitionManager.customTransition(vt=>{vt.from=(0,J.dna)(e.target),vt.to=(0,J.transform)(vt.from,(0,J.compose)((0,J.translate)(c.pointerStart.x-q,c.pointerStart.y-$t),(0,J.scaleAtOrigin)(1/Mt,q,$t)),c.mousemoveBuffer),vt.elapsed_time=0,vt.total_time=0,vt.timingFunction=at.easeInOutExpo,vt.done=!1})}w=H}g==An&&x.preventDefault()}function S(x){if(c.isPressing){let _=e.getRendererScreenPosition();if(_){let{x:k,y:Ot}=e.viewerToWorld(x.clientX-_.x,x.clientY-_.y);e.transitionManager.customTransition(H=>{H.from=(0,J.dna)(e.target),H.to=(0,J.transform)(H.from,(0,J.translate)(c.pointerStart.x-k,c.pointerStart.y-Ot),c.mousemoveBuffer),H.elapsed_time=0,H.total_time=0,H.timingFunction=at.easeInOutExpo,H.done=!1})}}}function P(x){e.mode==="explore"&&e.world.zoomIn(x.atlas)}function O(x){let k=1+(0,Mn.default)(x).spinY/t;e.world.zoomTo(k,x.atlas,!0)}function T(x){return d&&x.metaKey==!1?(E("meta-required","notice"),x.stopPropagation(),!1):!0}e.world.addEventListener("mouseup",m),e.world.addEventListener("touchend",m),e.world.addEventListener("touchstart",p),e.world.addEventListener("mousedown",f),window.addEventListener("touchend",y),window.addEventListener("mouseup",y),window.addEventListener("mousemove",S),l&&l.addEventListener("touchmove",C),n&&(e.world.activatedEvents.push("onClick"),e.world.addEventListener("click",P)),i&&(e.world.activatedEvents.push("onWheel"),d&&l?.addEventListener("wheel",T,{passive:!0,capture:!0}),e.world.addEventListener("wheel",O));let B=e.world.addLayoutSubscriber((x,_)=>{if(x==="zone-changed"&&e.transitionManager.constrainBounds({transition:{duration:0}}),x==="zoom-to"&&_&&e.transitionManager.zoomTo(_.factor,{origin:_.point,stream:_.stream}),x==="go-home"){let k=_.immediate?{duration:0}:void 0;e.transitionManager.goToRegion(_n(e.homePosition),{transition:k})}if(x==="goto-region"&&_){let k=_.immediate?{duration:0}:{};e.transitionManager.goToRegion(_,{transition:k})}x==="constrain-bounds"&&e.transitionManager.constrainBounds({transition:_?.immediate?{duration:0}:void 0})});return()=>{e.world.removeEventListener("mouseup",m),e.world.removeEventListener("touchend",m),e.world.removeEventListener("touchstart",p),e.world.removeEventListener("mousedown",f),window.removeEventListener("touchend",y),window.removeEventListener("mouseup",y),e.world.removeEventListener("mousemove",S),l&&(l.removeEventListener("touchmove",S),l.removeEventListener("wheel",T,{passive:!0,capture:!0})),n&&e.world.removeEventListener("click",P),i&&e.world.removeEventListener("wheel",O),B()}},updatePosition(){}});var F=require("react");var $e=et(require("react"),1),In=require("react/jsx-runtime"),mt=$e.default.createContext("explore");mt.displayName="Mode";var fe=()=>(0,$e.useContext)(mt);function Ws(s){return(0,In.jsx)(mt.Provider,{value:s.mode,children:s.children})}var Yn=et(require("react-use-measure"),1);var Si=et(require("react"),1),ft=Si.default.createContext(null);ft.displayName="Atlas";var _t=Si.default.createContext(null);_t.displayName="Bounds";var gt=et(require("react"),1);var Dn=et(require("react-reconciler"),1),Wt=require("react-reconciler/constants");var ge,zs=typeof performance=="object"&&typeof performance.now=="function";if(zs){let s=performance;ge=()=>s.now()}else{let s=Date,e=s.now();ge=()=>s.now()-e}var Wn=require("react");function kn(s,e){s&&s.appendChild&&e&&s.appendChild(e)}function zn(s,e){s&&s.removeChild&&e&&s.removeChild(e)}function Bs(s,e){return zn(s.world,e)}function Ns(s,e,t){return Bn(s.world,e,t)}function Bn(s,e,t){s&&s instanceof ut&&(s=s.world),s&&s.insertBefore&&s.insertBefore(e,t)}function Pi(s,e,t){if(t&&(s.applyProps&&s.applyProps(t),s instanceof z))for(let i of Vt){let n=i.slice(2).toLowerCase();t[i]!==e[i]&&(e[i]&&s.removeEventListener(n,e[i]),s.addEventListener(n,t[i]))}}function Ei(s,e){let t=Object.keys(e),i=!1;for(let n of t)if(Vt.indexOf(n)!==-1){let r=rt[n];if(r){if(s.activatedEvents.indexOf(r)!==-1)continue;i=!0,s.activatedEvents.push(r)}}i&&s.triggerEventActivation()}var Ge=new Map,Fn={};function Hs(s,{args:e=[],...t},i,n,r){if(!(i instanceof ut)&&r){let l=d=>d.return?l(d.return):d.stateNode&&d.stateNode.containerInfo;i=l(r)}let o,h=i.world;switch(s){case"world":o=nt.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 ot;break;case"shape":o=new kt;break;case"worldObject":case"world-object":o=new dt;break;case"worldImage":case"world-image":o=new U;break;case"texture":o=new Ct;break;case"compositeImage":case"composite-image":o=new re({id:t.id,width:t.width,height:t.height,images:[],renderOptions:t.renderOptions});break;case"tiledImage":case"tiled-image":o=it.fromTile(t.uri,t.display,t.tile,t.scaleFactor,void 0,t.format,t.useFloorCalc,t.version3);break;case"paragraph":o=new wt,o.text=t.children;break;default:return}return Ei(h,t),Pi(o,{},t),o}function js(s,e){if(e instanceof nt)s.world=e;else if(e instanceof dt)s.world.appendChild(e);else if(e)throw new Error("Invalid root")}var Nn=0,Ve=Nn,pe=(0,Dn.default)({unstable_now:ge,now:ge,createInstance:Hs,removeChild:zn,appendChild:kn,appendInitialChild:kn,insertBefore:Bn,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:js,removeChildFromContainer:Bs,createTextInstance(){},insertInContainerBefore:Ns,prepareUpdate(s,e,t,i,n){return Ei(n.world,i),i},commitUpdate(s,e,t,i,n,r){s.applyProps&&t&&Pi(s,i,t)},finalizeInitialChildren(s){return s?.__handlers},getChildHostContext(){return Fn},getRootHostContext(){return Fn},prepareForCommit(s){return s.isCommitting=!0,null},preparePortalMount(){},hideInstance(s){s&&s.points&&(s.points[0]=0)},unhideInstance(s,e){s&&s.points&&(s.points[0]=1)},getPublicInstance(s){return s},hideTextInstance(){throw new Error("Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.")},resetAfterCommit(s){s.isCommitting=!1,s.pendingUpdate=!0,s.world&&s.world.needsRecalculate&&(s.world.recalculateWorldSize(),s.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(s){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return Wt.DefaultEventPriority},getInstanceFromNode(s){throw new Error("Not implemented")},getInstanceFromScope(s){throw new Error("Not implemented")},prepareScopeUpdate(s,e){throw new Error("Not implemented")},logRecoverableError(){},requestPostPaintCallback(){},rendererPackageName:"@atlas-viewer/atlas",rendererVersion:Wn.version,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(s){Ve=s},getCurrentUpdatePriority(){return Ve},resolveUpdatePriority(){if(Ve!==Nn)return Ve;switch(typeof window<"u"&&window.event?.type){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return Wt.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return Wt.ContinuousEventPriority;default:return Wt.DefaultEventPriority}},resetFormInstance(){}});pe.injectIntoDevTools();function Qt(s,e){let t=Ge.get(s);t&&pe.updateContainer(null,t,null,()=>{Ge.delete(s),e&&e(s)})}var qt={render(s,e){let t=Ge.get(e);if(t)pe.updateContainer(s,t,null);else{let i=pe.createContainer(e,0,null,!1,null,"",()=>{},null);pe.updateContainer(s,i,null),Ge.set(e,i)}},unmountComponentAtNode(s,e){Qt(s,e)}};var Xe=et(require("react"),1),tt=typeof window<"u"&&(window.document?.createElement||window.navigator?.product==="ReactNative")?Xe.useLayoutEffect:Xe.useEffect;var Kt=require("react/jsx-runtime"),Hn=gt.default.memo(({children:s,setIsReady:e,onCreated:t,bounds:i,preset:n,mode:r="explore"})=>{let o=(0,gt.useCallback)(function(l){let d=(0,gt.useRef)(!1),c=()=>{e(!0)};return(0,gt.useEffect)(()=>{if(n&&!d.current){n.runtime.goHome();let u=t&&t(n);return void(u&&u.then?u.then(c):c())}return()=>{}},[]),(0,gt.useEffect)(()=>{d.current=!0},[]),l.children},[n]);return tt(()=>{if(n){let h=n.runtime;r!==h.mode&&(h.mode=r),qt.render((0,Kt.jsx)(gt.default.StrictMode,{children:(0,Kt.jsx)(o,{children:(0,Kt.jsx)(_t.Provider,{value:i,children:(0,Kt.jsx)(mt.Provider,{value:r,children:(0,Kt.jsx)(ft.Provider,{value:n,children:s})})})})}),h)}},[n,r,s]),tt(()=>{if(n){let h=n.runtime;return()=>{qt.unmountComponentAtNode(h)}}return()=>{}},[n]),null});var ye=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;
@@ -31,16 +31,16 @@
31
31
 
32
32
  v_texCoord = a_texCoord;
33
33
  }
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 Pt&&this.createTextureHost(e))}createTextureHost(e){e.__host=e.__host?e.__host:{};let t=this.gl,i=this.gl.createTexture();t.bindTexture(t.TEXTURE_2D,i),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1);let r;if(e instanceof Pt){let s=e.getTexture();s.source&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,s.source),r=s}t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),e.__host.webgl={height:e.height,width:e.width,texture:i,lastImage:r}}createImageHost(e){let t=[...new Array(e.points.length/5)];e.__host=e.__host?e.__host:{},e.__host.webgl={height:e.height,width:e.width,textures:t,loading:[],loaded:[],lastLevelRendered:-1,onLoad:(i,r)=>{let s=this.gl,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,r),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.bindTexture(s.TEXTURE_2D,null),e.__host.webgl.textures[i]=o,e.__host.webgl.loaded.push(i)}}}paint(e,t,i,r,s,o){if(e.type==="spacial-content"&&e.__host&&e.__host.webgl){if(e.getTexture){let h=e?.getTexture();if(h&&e.__host.webgl.lastImage!==h.hash&&h.source&&!e.__host.webgl.error)try{let d=this.gl.RGBA,u=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,u,m,h.source),e.__host.webgl.lastImage=h.hash}catch(c){e.__host.webgl.error=c}}if(e.__host.webgl.loading&&e.__host.webgl.loading.indexOf(t)===-1&&e.getImageUrl){e.__host.webgl.loading.push(t);let h=document.createElement("img");h.decoding="async",h.crossOrigin="anonymous",h.src=e.getImageUrl(t),h.onload=()=>(h.onload=null,e.__host.webgl.onLoad(t,h))}let l=e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures[t];l&&(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,l),this.gl.uniform1i(this.uniforms.texture,0),this.setRectangle(i,r,s,o),this.gl.drawArrays(this.gl.TRIANGLES,0,6))}}afterPaintLayer(e,t){}pendingUpdate(){return!0}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}afterFrame(){}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),s=r.width/e,o=r.height/t,l=(s<o?o:s)*(i&&this.dpi||1);return Number.isNaN(l)||(this.lastKnownScale=l),this.lastKnownScale}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}getViewportBounds(e,t,i){return null}createShader(e,t){let i=this.gl.createShader(e);if(i){if(this.gl.shaderSource(i,t),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))return i;let s=this.gl.getShaderInfoLog(i);if(this.gl.deleteShader(i),s)throw new Error(s)}throw new Error("Invalid shader")}createProgram(e,t){let i=this.gl.createProgram();if(i){if(this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS))return i;let s=this.gl.getProgramInfoLog(i);if(this.gl.deleteProgram(i),s)throw new Error(s)}throw new Error("Invalid program")}resizeCanvasToDisplaySize(){let e=this.gl.canvas,t=e.clientWidth,i=e.clientHeight,r=e.width!==t||e.height!==i;return r&&(e.width=t,e.height=i),r}createArrayBuffer(e){let t=this.gl.createBuffer();if(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),e&&this.gl.bufferData(this.gl.ARRAY_BUFFER,e,this.gl.STATIC_DRAW),!t)throw new Error("Cannot create buffer");return t}setRectangle(e,t,i,r){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,i,r),this.gl.STATIC_DRAW)}getRectangle(e,t,i,r){let s=e,o=e+i,l=t,h=t+r;return this.rectBuffer.set([s,l,o,l,s,h,s,h,o,l,o,h]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}};function he(n,e){let t=e?n:JSON.stringify(n),i=5381,r=t.length;for(;r;)i=i*33^t.charCodeAt(--r);let o=(i>>>0).toString(16);return o.length%2?"0"+o:o}var Zt=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+he(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+he(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 Lt=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 Zt({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 U||e instanceof it)&&this.createImageHost(e),e instanceof Ct&&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 Ct){let r=e.getTexture();r.source&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r.source),n=r}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 r=this.gl,o=this.gl.createTexture();r.bindTexture(r.TEXTURE_2D,o),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),e.__host.webgl.textures[i]=o,e.__host.webgl.loaded.push(i)}}}paint(e,t,i,n,r,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 c=this.gl.RGBA,u=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,c,u,m,l.source),e.__host.webgl.lastImage=l.hash}catch(d){e.__host.webgl.error=d}}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,r,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(),r=n.width/e,o=n.height/t,h=(r<o?o:r)*(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 r=this.gl.getShaderInfoLog(i);if(this.gl.deleteShader(i),r)throw new Error(r)}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 r=this.gl.getProgramInfoLog(i);if(this.gl.deleteProgram(i),r)throw new Error(r)}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 r=e,o=e+i,h=t,l=t+n;return this.rectBuffer.set([r,h,o,h,r,l,r,l,o,h,o,l]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}};function be(s,e){let t=e?s:JSON.stringify(s),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 Jt=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+be(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+be(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 zt=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 Jt({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 r=e.__host.element,s=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?r.style.pointerEvents="all":s.push(this.classes.interactive):this.options.inlineStyles?r.style.pointerEvents="none":s.push(this.classes.nonInteractive),e.props.href){r.style.display="block",r.href=e.props.href;let h=e.props.hrefTarget||"_blank";r.target=h,h!=="_self"?r.rel="noopener noreferrer":r.rel=""}else r.href&&r.removeAttribute("href");if(e.props.title&&(r.title=e.props.title||""),e.props.className&&(s.push(e.props.className),e.hovering&&s.push(`${e.props.className}--hover`),e.pressing&&s.push(`${e.props.className}--active`)),e.props.relativeStyle?(r.style.width=`${t||e.width}px`,r.style.height=`${i||e.height}px`):(r.style.width=`${e.width}px`,r.style.height=`${e.height}px`),e.props.style){Object.assign(r.style,e.props.style||{},e.hovering?e.props.hoverStyles||{}:{},e.pressing?e.props.pressStyles||{}:{});return}if(this.options.text&&e instanceof yt){e.text&&(r.innerText=e.text),e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor),e.color&&(r.style.color=e.color),e.props.font&&(r.style.font=e.props.font),e.props.textAlign&&(r.style.textAlign=e.props.textAlign),e.__host.revision=e.__revision;let h=s.join(" ");r.className=h,r.part=h}e instanceof rt&&(this.options.box||e.props.className||e.props.html)&&(e.props.backgroundColor&&(r.style.backgroundColor=e.props.backgroundColor),e.props.border!==r.style.border&&(r.style.border=e.props.border));let l=s.join(" ");r.className=l,r.part=l}}afterFrame(e,t,i){this.stylesheet.updateSheet();for(let r of this.previousVisible)this.visible.indexOf(r)===-1&&this.htmlContainer&&r.__id&&this.htmlIds.indexOf(r.__id)!==-1&&this.htmlContainer.removeChild(r.__host.element);this.previousVisible=this.visible}afterPaintLayer(e,t){}beforeFrame(e,t,i){this.stylesheet.clearClasses(),this.paintTx++,this.zIndex=0,this.visible=[]}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getScale(e,t){let i=this.rendererPosition.width/e,r=this.rendererPosition.height/t;return i<r?r:i}getViewportBounds(e,t,i){return null}isReady(){return!1}paint(e,t,i,r,s,o){if(this.zIndex++,(this.options.text&&e instanceof yt||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 l=s/e.width,h=e.__host.element;h.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?h.style.transform=`translate(${Math.round(i)}px, ${Math.round(r)}px)`:h.style.transform=`translate(${Math.round(i)}px, ${Math.round(r)}px) scale(${l})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(h),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof yt||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 Xt=class Xt{constructor(e,t,i){a(this,"element");a(this,"runtime");a(this,"unsubscribe");a(this,"activatedEvents",[]);a(this,"eventHandlers",[]);a(this,"bounds");a(this,"listening");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,"onContextMenu",e=>{e.preventDefault();let t="onContextMenu";if(this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:i,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,i,r),this.runtime.world.propagatePointerEvent(t,e,i,r)}});a(this,"onTouchEvent",e=>{let t=nt[e.type],i=[],r=e.touches.length;for(let s=0;s<r;s++){let o=e.touches.item(s);if(!o)continue;let{x:l,y:h}=this.runtime.viewerToWorld(o.clientX-this.bounds.left,o.clientY-this.bounds.top),c={id:o.identifier,x:l,y:h};i.push(c)}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=>{if(e.button===2)return;let t=nt[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:i,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,i,r),this.runtime.world.propagatePointerEvent(t,e,i,r)}});a(this,"onPointerDown",e=>{e.button!==2&&(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(e.button!==2){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 r=this.runtime.world.propagatePointerEvent("onMouseMove",e,t,i),s=[],o=[];for(let l of r)s.push(l.id),o.push(l),this.pointerEventState.mousedOver.indexOf(l)===-1&&(l.dispatchEvent("onMouseEnter",e),l.dispatchEvent("onPointerEnter",e),l.dispatchEvent("onMouseOver",e),l.dispatchEvent("onPointerOver",e));for(let l of this.pointerEventState.mousedOver)s.indexOf(l.id)===-1&&(l.dispatchEvent("onMouseLeave",e),l.dispatchEvent("onPointerLeave",e),l.dispatchEvent("onMouseOut",e),l.dispatchEvent("onPointerOut",e));if(this.pointerEventState.isDragging)for(let l of this.pointerEventState.itemsBeingDragged)l.dispatchEvent("onDrag",e);if(this.pointerEventState.isPressed&&!this.pointerEventState.isDragging&&Ot(this.pointerEventState.mouseDownStart,{x:e.clientX,y:e.clientY})>50){let l=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:l.x,y:l.y}},l.x,l.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.listening=!1,this.options={simulationRate:0,...i||{}};let r=0;t.registerHook("useFrame",s=>{r+=s,r>this.options.simulationRate&&this.pointerMoveEvent&&(r=0,t.updateNextFrame())}),t.registerHook("useBeforeFrame",()=>{this.pointerMoveEvent&&this.onPointerMove(this.pointerMoveEvent)}),this.activateEvents()}updateBounds(){this.bounds=this.element.getBoundingClientRect(),this.runtime.updateRendererScreenPosition()}layoutSubscriber(e){e==="event-activation"&&this.listening==!1&&this.activateEvents()}assignToEvent(e,t,i){Xt.eventPool.atlas.x=t,Xt.eventPool.atlas.y=i,e.atlas=Xt.eventPool.atlas}activateEvents(){this.listening=!0,this.element.addEventListener("pointermove",this._realPointerMove),this.element.addEventListener("pointerup",this.onPointerUp),this.element.addEventListener("pointerdown",this.onPointerDown),this.element.addEventListener("mousedown",this.onPointerEvent),this.element.addEventListener("mouseup",this.onPointerEvent),this.element.addEventListener("pointercancel",this.onPointerEvent),this.element.addEventListener("wheel",this.onWheelEvent),this.element.addEventListener("contextmenu",this.onContextMenu),this.element.addEventListener("touchstart",this.onTouchEvent),this.element.addEventListener("touchcancel",this.onTouchEvent),this.element.addEventListener("touchend",this.onTouchEvent),this.element.addEventListener("touchmove",this.onTouchEvent)}normalizeEventName(e){return e.startsWith("on")?e.slice(2).toLowerCase():e.toLowerCase()}stop(){this.listening=!1,this.element.removeEventListener("pointermove",this._realPointerMove),this.element.removeEventListener("pointerup",this.onPointerUp),this.element.removeEventListener("pointerdown",this.onPointerDown),this.element.removeEventListener("mousedown",this.onPointerEvent),this.element.removeEventListener("mouseup",this.onPointerEvent),this.element.removeEventListener("pointercancel",this.onPointerEvent),this.element.removeEventListener("wheel",this.onWheelEvent),this.element.removeEventListener("touchstart",this.onTouchEvent),this.element.removeEventListener("touchcancel",this.onTouchEvent),this.element.removeEventListener("touchend",this.onTouchEvent),this.element.removeEventListener("touchmove",this.onTouchEvent),this.unsubscribe();for(let[e,t]of this.eventHandlers)this.element.removeEventListener(this.normalizeEventName(e),t)}};a(Xt,"eventPool",{atlas:{x:0,y:0}});var kt=Xt;function de({interactive:n=!0,viewport:e,forceRefresh:t,canvasElement:i,overlayElement:r,controllerConfig:s,unstable_webglRenderer:o,dpi:l,debug:h,canvasBox:c=!0,polygon:d=!0,navigatorElement:u,runtimeOptions:m}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let y=n?re({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:i,...s||{}}):void 0,v=new At([o?new le(i,{dpi:l}):new ie(i,{dpi:l,debug:h,box:c,polygon:d}),r?new Lt(r,{box:o||!c,text:!0,triggerResize:t}):void 0,u?new ne(u):void 0]),S=new dt(v,new et(1024,1024),e,y?[y]:[],m),P=new kt(i,S);return{name:"default-preset",em:P,runtime:S,renderer:v,controller:y,canvas:i,navigator:u,unmount(){$t(S),S.stopControllers(),S.stop(),S.reset(),P&&P.stop()}}}var Rt=1+Number.MIN_VALUE,ce=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:r}=this.rendererPosition;this.width=i,this.height=r,this.options={addPart:!1,setDraggableFalse:!1,imageClass:"",widthStylesheet:!1,sheetPrefix:"position-",background:"#000",...t||{}},this.stylesheet=new Zt({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,r=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?n.style.pointerEvents="all":r.push(this.classes.interactive):this.options.inlineStyles?n.style.pointerEvents="none":r.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&&(r.push(e.props.className),e.hovering&&r.push(`${e.props.className}--hover`),e.pressing&&r.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 wt){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=r.join(" ");n.className=l,n.part=l}e instanceof ot&&(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=r.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,r,o){if(this.zIndex++,(this.options.text&&e instanceof wt||e instanceof ot&&(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,r,o);let h=r/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 wt||e instanceof ot)&&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 te=class te{constructor(e,t,i){a(this,"element");a(this,"runtime");a(this,"unsubscribe");a(this,"activatedEvents",[]);a(this,"eventHandlers",[]);a(this,"bounds");a(this,"listening");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,"onContextMenu",e=>{e.preventDefault();let t="onContextMenu";if(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,"onTouchEvent",e=>{let t=rt[e.type],i=[],n=e.touches.length;for(let r=0;r<n;r++){let o=e.touches.item(r);if(!o)continue;let{x:h,y:l}=this.runtime.viewerToWorld(o.clientX-this.bounds.left,o.clientY-this.bounds.top),d={id:o.identifier,x:h,y:l};i.push(d)}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=>{if(e.button===2)return;let t=rt[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=>{e.button!==2&&(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(e.button!==2){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),r=[],o=[];for(let h of n)r.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)r.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&&It(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.listening=!1,this.options={simulationRate:0,...i||{}};let n=0;t.registerHook("useFrame",r=>{n+=r,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.listening==!1&&this.activateEvents()}assignToEvent(e,t,i){te.eventPool.atlas.x=t,te.eventPool.atlas.y=i,e.atlas=te.eventPool.atlas}activateEvents(){this.listening=!0,this.element.addEventListener("pointermove",this._realPointerMove),this.element.addEventListener("pointerup",this.onPointerUp),this.element.addEventListener("pointerdown",this.onPointerDown),this.element.addEventListener("mousedown",this.onPointerEvent),this.element.addEventListener("mouseup",this.onPointerEvent),this.element.addEventListener("pointercancel",this.onPointerEvent),this.element.addEventListener("wheel",this.onWheelEvent),this.element.addEventListener("contextmenu",this.onContextMenu),this.element.addEventListener("touchstart",this.onTouchEvent),this.element.addEventListener("touchcancel",this.onTouchEvent),this.element.addEventListener("touchend",this.onTouchEvent),this.element.addEventListener("touchmove",this.onTouchEvent)}normalizeEventName(e){return e.startsWith("on")?e.slice(2).toLowerCase():e.toLowerCase()}stop(){this.listening=!1,this.element.removeEventListener("pointermove",this._realPointerMove),this.element.removeEventListener("pointerup",this.onPointerUp),this.element.removeEventListener("pointerdown",this.onPointerDown),this.element.removeEventListener("mousedown",this.onPointerEvent),this.element.removeEventListener("mouseup",this.onPointerEvent),this.element.removeEventListener("pointercancel",this.onPointerEvent),this.element.removeEventListener("wheel",this.onWheelEvent),this.element.removeEventListener("touchstart",this.onTouchEvent),this.element.removeEventListener("touchcancel",this.onTouchEvent),this.element.removeEventListener("touchend",this.onTouchEvent),this.element.removeEventListener("touchmove",this.onTouchEvent),this.unsubscribe();for(let[e,t]of this.eventHandlers)this.element.removeEventListener(this.normalizeEventName(e),t)}};a(te,"eventPool",{atlas:{x:0,y:0}});var Bt=te;function ve({interactive:s=!0,viewport:e,forceRefresh:t,canvasElement:i,overlayElement:n,controllerConfig:r,unstable_webglRenderer:o,dpi:h,debug:l,canvasBox:d=!0,polygon:c=!0,navigatorElement:u,runtimeOptions:m}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let f=s?me({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:i,...r||{}}):void 0,y=new Ft([o?new ye(i,{dpi:h}):new de(i,{dpi:h,debug:l,box:d,polygon:c}),n?new zt(n,{box:o||!d,text:!0,triggerResize:t}):void 0,u?new ue(u):void 0]),w=new ut(y,new nt(1024,1024),e,f?[f]:[],m),v=new Bt(i,w);return{name:"default-preset",em:v,runtime:w,renderer:y,controller:f,canvas:i,navigator:u,unmount(){Qt(w),w.stopControllers(),w.stop(),w.reset(),v&&v.stop()}}}var At=1+Number.MIN_VALUE,we=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 Jt({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
40
40
  background: ${this.options.background};
41
- `)),this.options.widthStylesheet&&this.container.appendChild(this.stylesheet.getElement())}isReady(){return!0}resize(){this.rendererPosition=this.container.getBoundingClientRect(),this.width=this.rendererPosition.width,this.height=this.rendererPosition.height}getRendererScreenPosition(){return this.rendererPosition}afterFrame(e,t,i){this.stylesheet.updateSheet();for(let r of this.previouslyVisible)this.currentlyVisible.indexOf(r)===-1&&this.container.removeChild(r);for(let r of this.currentlyVisible)this.previouslyVisible.indexOf(r)===-1&&this.container.appendChild(r);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[]}afterPaintLayer(e,t){}beforeFrame(e,t,i){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let i=this.width/e,r=this.height/t,s=i<r?r:i;return Number.isNaN(s)||(this.lastKnownScale=s),this.lastKnownScale}getViewportBounds(e,t,i){return null}createImage(){let e=document.createElement("img");return this.options.imageClass?(e.className=this.options.imageClass,this.options.addPart&&e.setAttribute("part",this.options.imageClass)):(e.style.position="absolute",e.style.pointerEvents="none",e.style.userSelect="none"),this.options.setDraggableFalse&&e.setAttribute("draggable","false"),e}paint(e,t,i,r,s,o){if(this.pending=!1,this.zIndex++,e instanceof H){if(!e.__host){let h=this.createImage();h.src=e.uri,e.__host=h,this.container.appendChild(e.__host)}let l=e.__host;this.currentlyVisible.push(l),l.style.zIndex=`${this.zIndex}`,l.style.opacity=`${e.style.opacity}`,this.options.widthStylesheet?l.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Rt).toFixed(2)}px;height:${(o+Rt).toFixed(2)}px;`):(l.style.width=`${s+Rt}px`,l.style.height=`${o+Rt}px`),l.style.transform=`translate(${i}px, ${r}px)`}if(e instanceof tt){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let h=e.getImageUrl(t),c=this.createImage();c.src=h,e.__host.images[t]=c,this.container.appendChild(c)}let l=e.__host.images[t];l.style.zIndex=`${this.zIndex}`,l.style.opacity=`${e.style.opacity}`,this.currentlyVisible.push(l),this.options.widthStylesheet?l.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Rt).toFixed(2)}px;height:${(o+Rt).toFixed(2)}px;`):(l.style.width=`${s+Rt}px`,l.style.height=`${o+Rt}px`),l.style.transform=`translate(${i}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){}};function Ke({interactive:n,viewport:e,forceRefresh:t,containerElement:i,overlayElement:r,controllerConfig:s}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let o=n?re({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:i,...s||{}}):void 0,l=new ce(i,{addPart:!1,setDraggableFalse:!1,imageClass:"atlas-static-image"}),h=r?new At([l,new Lt(r,{box:!0,text:!0,triggerResize:t})]):l,c=new dt(h,new et(1024,1024),e,o?[o]:[]),d=new kt(i,c);return{name:"static-preset",em:d,runtime:c,renderer:h,controller:o,container:i,overlay:r,unmount(){$t(c),c.stopControllers(),c.stop(),d&&d.stop()}}}var qe={"default-preset":de,"static-preset":Ke};var it=require("react"),Ln={};function Le(n,e){let t=(0,it.useRef)(),i=(0,it.useRef)(),r=(0,it.useRef)(),s=(0,it.useRef)(),o=(0,it.useRef)({width:e.width,height:e.height,didUpdate:!0}),[l="default-preset",h=Ln]=Array.isArray(n)?n||[]:[n],[c,d]=(0,it.useState)(null);(0,it.useLayoutEffect)(()=>{let m=i.current,y=s.current,v=t.current,S=r.current,g=(qe[l]||de)({containerElement:y,canvasElement:m,overlayElement:v,navigatorElement:S,viewport:o.current,dpi:window.devicePixelRatio||1,forceRefresh:e.forceRefresh,unstable_webglRenderer:e.unstable_webglRenderer,...h||{}});return d(g),()=>{g&&(g.unmount(),m&&(m.height=0,m.width=0),v&&(v.innerHTML=""),S&&(S.height=0,S.width=0))}},[l,h]);let u=(0,it.useMemo)(()=>({canvas:i,overlay:t,container:s,navigator:r}),[]);return[l,c,o,u]}var Hi=require("react");function ji(n){return(0,Hi.useMemo)(()=>he(n),n)}var Ui=q(require("react"),1),$i=require("react/jsx-runtime"),Dt=Ui.default.forwardRef((n,e)=>(0,$i.jsx)("div",{...n,ref:e,part:n.className}));var Y=require("react/jsx-runtime"),Vi=["brightness","contrast","grayscale","hueRotate","invert","saturate","sepia","blur"],Je=({htmlChildren:n,renderPreset:e,onCreated:t,mode:i="explore",resetWorldOnChange:r=!0,unstable_webglRenderer:s=!1,unstable_noReconciler:o=!1,hideInlineStyle:l=!1,controllerConfig:h,children:c,overlayStyle:d,containerStyle:u,enableNavigator:m,className:y,containerProps:v={},homePosition:S,homeOnResize:P,homeCover:g,background:f,runtimeOptions:C,debug:R,filters:w,...b})=>{let[I,G]=(0,B.useState)(i),[K,x]=(0,B.useState)(!1),_=(0,B.useRef)(!1),L=(0,B.useMemo)(()=>(typeof e=="string"&&(e=[e,{}]),R?e?[e[0],{debug:R,...e[1]||{}}]:["default-preset",{debug:R}]:e||"default-preset"),[e,R]),[Tt,k,ot]=(0,Gi.default)({scroll:!0}),vt=(0,B.useRef)(),Nt=E=>{vt.current=E,Tt(E)},[zt,p,N,ge]=Le(L,{width:b.width,height:b.height,forceRefresh:ot,unstable_webglRenderer:s}),[dn,ci]=(0,B.useState)("");(0,B.useEffect)(()=>{G(i)},[i]),(0,B.useEffect)(()=>{p&&p.em&&p.em.updateBounds()},[p,k]),(0,B.useEffect)(()=>{p?.runtime.setOptions(C||{})},[C]),(0,B.useEffect)(()=>{p&&p.runtime&&(p.runtime.mode=I),K&&p&&(p.ready=!0)},[p,K,I]),(0,B.useEffect)(()=>{p&&(g||(p.runtime.manualHomePosition=!!S,p.runtime.setHomePosition(S)))},[p,g,S]),(0,B.useEffect)(()=>{if(p){let E=p.runtime;E.resize(N.current.width,b.width,N.current.height,b.height),N.current.width=b.width,N.current.height=b.height,E.updateNextFrame(),N.current.didUpdate=!0}},[p,b.width,b.height]),(0,B.useEffect)(()=>{if(w&&p){let E=p.runtime,O=!1;E.hookOptions.enableFilters=!0;for(let D of Vi)w[D]?w[D]!==p.runtime.hookOptions.filters[D]&&(E.hookOptions.filters[D]=w[D],O=!0):E.hookOptions.filters[D]&&(E.hookOptions.filters[D]=0,O=!0);O&&E.updateNextFrame()}else if(p){let E=p.runtime;for(let O of Vi)E.hookOptions.filters[O]=0;E.hookOptions.enableFilters=!1,E.updateNextFrame()}},[p,w]),J(()=>{if(p&&(p.overlay&&(p.overlay.style.width=`${k.width}px`,p.overlay.style.height=`${k.height}px`),p.container&&(p.container.style.width=`${k.width}px`,p.container.style.height=`${k.height}px`),g)){let E=p.runtime.world.width,O=p.runtime.world.height,D=E/O,Z=N.current.width,Yt=N.current.height,wt=Z/Yt;if(D>wt){wt=Yt/Z,p.runtime.manualHomePosition=!0;let _t=(E-O/wt)/2;g==="start"&&(_t=0),g==="end"&&(_t=E-O/wt),p.runtime.setHomePosition({x:_t,y:0,width:O/wt,height:O})}else{let _t=(O-E/wt)/2;g==="start"&&(_t=0),g==="end"&&(_t=O-E/wt),p.runtime.manualHomePosition=!0,p.runtime.setHomePosition({x:0,y:_t,width:E,height:E/wt})}P&&p.runtime.goHome({})}},[p,k.height,k.width,g]),J(()=>{let E=()=>{if(p){let O=p.runtime;N.current.width!==b.width&&N.current.height!==b.height&&(O.resize(N.current.width,b.width,N.current.height,b.height),N.current.width=b.width,N.current.height=b.height,O.updateNextFrame(),N.current.didUpdate=!0)}};return window.addEventListener("resize",E),()=>window.removeEventListener("resize",E)},[p,b.height,b.width]);let ui={width:120},mi=()=>{if(p&&p.navigator){let E=p.runtime.world.height,O=p.runtime.world.width,D=window.devicePixelRatio||1,Z=ui.width,Yt=ui.width/O*E;p.navigator.width=Z*D,p.navigator.height=Yt*D,p.navigator.style.width=Z+"px",p.navigator.style.height=Yt+"px"}};J(()=>{if(p){mi();let E=p.runtime;return E.world.addLayoutSubscriber(O=>{O==="recalculate-world-size"&&(mi(),E.resize(N.current.width,b.width,N.current.height,b.height))})}return()=>{}},[p,b.width,b.height]);let cn=(0,B.useCallback)(function(O){let D=()=>{x(!0)};return(0,B.useEffect)(()=>{if(p){p.runtime.goHome();let Z=t&&t(p);return void(Z&&Z.then?Z.then(D):D())}else throw new Error("Invalid configuration - no runtime found")},[]),O.children},[p]);(0,B.useEffect)(()=>{if(p){let E=p.runtime;if(r)return E.world.addLayoutSubscriber(O=>{O==="recalculate-world-size"&&E.goHome()})}return()=>{}},[p,r]),(0,B.useEffect)(()=>p?p.runtime.registerHook("useBeforeFrame",()=>{if(N.current.didUpdate&&p.canvas){let O=window.devicePixelRatio||1,D=N.current.width,Z=N.current.height;p.canvas.width=D*O,p.canvas.height=Z*O,p.canvas.style.width=D+"px",p.canvas.style.height=Z+"px",p.canvas.getContext("2d")?.scale(O,O),p&&p.em&&p.em.updateBounds(),N.current.didUpdate=!1}}):()=>{},[p,r]),(0,B.useEffect)(()=>{let E=()=>{p&&(G("sketch"),ci("mode-sketch")),window.removeEventListener("keyup",E)},O=D=>{if(D.code==="Space"&&p&&p.runtime.mode==="sketch"){let Z=D.target?.tagName?.toLowerCase();if(Z==="input"||Z==="textarea"||D.target?.isContentEditable)return;D.preventDefault(),G("explore"),ci("mode-explore"),window.addEventListener("keyup",E)}};return window.addEventListener("keydown",O),()=>{window.removeEventListener("keydown",O),window.removeEventListener("keyup",E)}},[p]),_.current=!0;let{height:Xn,width:Yn,...un}=b,Ue=ji([b.width,b.height]),fi=!0;return L&&Array.isArray(L)&&L.length>1&&L[1].interactive===!1&&(fi=!1),f=f??"#000",vt.current&&(f=getComputedStyle(vt.current).getPropertyValue("--atlas-background")||f),(0,Y.jsxs)(Dt,{ref:Nt,className:["atlas",l?"":`atlas-width-${Ue}`,dn,y,`atlas-${zt}`].filter(Boolean).join(" ").trim(),style:{...u,...l?{}:{width:b.width,height:b.height}},children:[zt==="static-preset"?(0,Y.jsx)(Dt,{className:"atlas-static-container",ref:ge.container,tabIndex:0,...v}):(0,Y.jsx)("canvas",{className:"atlas-canvas",part:"atlas-canvas",tabIndex:0,...un,...v,ref:ge.canvas,"data-background":f}),(0,Y.jsx)(Dt,{className:["atlas-overlay",fi?"atlas-overlay--interactive":""].filter(Boolean).join(" ").trim(),style:{...d||{}},ref:ge.overlay,children:o?(0,Y.jsx)(cn,{children:(0,Y.jsx)(Ct.Provider,{value:k,children:(0,Y.jsx)(ct.Provider,{value:I,children:(0,Y.jsx)(ut.Provider,{value:p,children:c})})})}):(0,Y.jsx)(zi,{bounds:k,preset:p,mode:I,setIsReady:x,onCreated:t,children:c})}),m?(0,Y.jsx)(Dt,{className:"atlas-navigator",children:(0,Y.jsx)("canvas",{className:"atlas-navigator-canvas",part:"atlas-navigator-canvas",ref:ge.navigator})}):null,l?(0,Y.jsx)("style",{children:`.atlas-width-${Ue} { width: ${b.width}px; height: ${b.height}px; }`}):(0,Y.jsx)("style",{children:`
42
- .atlas { position: relative; display: flex; background: ${f}; z-index: var(--atlas-z-index, 10); -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
43
- .atlas-width-${Ue} { width: ${b.width}px; height: ${b.height}px; }
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,r=i<n?n:i;return Number.isNaN(r)||(this.lastKnownScale=r),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,r,o){if(this.pending=!1,this.zIndex++,e instanceof U){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:${(r+At).toFixed(2)}px;height:${(o+At).toFixed(2)}px;`):(h.style.width=`${r+At}px`,h.style.height=`${o+At}px`),h.style.transform=`translate(${i}px, ${n}px)`}if(e instanceof it){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let l=e.getImageUrl(t),d=this.createImage();d.src=l,e.__host.images[t]=d,this.container.appendChild(d)}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:${(r+At).toFixed(2)}px;height:${(o+At).toFixed(2)}px;`):(h.style.width=`${r+At}px`,h.style.height=`${o+At}px`),h.style.transform=`translate(${i}px, ${n}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){}};function Ci({interactive:s,viewport:e,forceRefresh:t,containerElement:i,overlayElement:n,controllerConfig:r}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let o=s?me({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:i,...r||{}}):void 0,h=new we(i,{addPart:!1,setDraggableFalse:!1,imageClass:"atlas-static-image"}),l=n?new Ft([h,new zt(n,{box:!0,text:!0,triggerResize:t})]):h,d=new ut(l,new nt(1024,1024),e,o?[o]:[]),c=new Bt(i,d);return{name:"static-preset",em:c,runtime:d,renderer:l,controller:o,container:i,overlay:n,unmount(){Qt(d),d.stopControllers(),d.stop(),c&&c.stop()}}}var Ti={"default-preset":ve,"static-preset":Ci};var st=require("react"),Us={};function Ze(s,e){let t=(0,st.useRef)(),i=(0,st.useRef)(),n=(0,st.useRef)(),r=(0,st.useRef)(),o=(0,st.useRef)({width:e.width,height:e.height,didUpdate:!0}),[h="default-preset",l=Us]=Array.isArray(s)?s||[]:[s],[d,c]=(0,st.useState)(null);(0,st.useLayoutEffect)(()=>{let m=i.current,f=r.current,y=t.current,w=n.current,g=(Ti[h]||ve)({containerElement:f,canvasElement:m,overlayElement:y,navigatorElement:w,viewport:o.current,dpi:window.devicePixelRatio||1,forceRefresh:e.forceRefresh,unstable_webglRenderer:e.unstable_webglRenderer,...l||{}});return c(g),()=>{g&&(g.unmount(),m&&(m.height=0,m.width=0),y&&(y.innerHTML=""),w&&(w.height=0,w.width=0))}},[h,l]);let u=(0,st.useMemo)(()=>({canvas:i,overlay:t,container:r,navigator:n}),[]);return[h,d,o,u]}var jn=require("react");function Un(s){return(0,jn.useMemo)(()=>be(s),s)}var $n=et(require("react"),1),Vn=require("react/jsx-runtime"),Nt=$n.default.forwardRef((s,e)=>(0,Vn.jsx)("div",{...s,ref:e,part:s.className}));var Gn=require("react");function $s(s,e){let t={},i=new Set([...Object.keys(s),...Object.keys(e)]);for(let n of i){let r=s[n],o=e[n];r!==o&&(t[n]={before:r,after:o})}return Object.keys(t).length>0?t:null}function Xn(s,e="",t=!1){let i=(0,Gn.useRef)(s);i.current&&t&&(console.log("Diff:",e,$s(i.current,s)),i.current=s)}var Q=require("react/jsx-runtime"),Zn=["brightness","contrast","grayscale","hueRotate","invert","saturate","sepia","blur"],Ri=(0,F.memo)(function(e){let{htmlChildren:t,renderPreset:i,onCreated:n,mode:r="explore",resetWorldOnChange:o=!0,unstable_webglRenderer:h=!1,unstable_noReconciler:l=!1,hideInlineStyle:d=!1,controllerConfig:c,children:u,overlayStyle:m,containerStyle:f,enableNavigator:y,className:w,containerProps:v={},homePosition:g,homeOnResize:p,homeCover:E,background:C,runtimeOptions:S,debug:P,filters:O,...T}=e;Xn(e,"Atlas.tsx",e.debug);let[B,x]=(0,F.useState)(r),[_,k]=(0,F.useState)(!1),Ot=(0,F.useRef)(!1),H=(0,F.useMemo)(()=>(typeof i=="string"&&(i=[i,{}]),P?i?[i[0],{debug:P,...i[1]||{}}]:["default-preset",{debug:P}]:i||"default-preset"),[i,P]),[ht,q,$t]=(0,Yn.default)({scroll:!0}),Mt=(0,F.useRef)(),vt=R=>{Mt.current=R,ht(R)},[Bi,b,N,Ee]=Ze(H,{width:T.width,height:T.height,forceRefresh:$t,unstable_webglRenderer:h}),[us,Ni]=(0,F.useState)("");(0,F.useEffect)(()=>{x(r)},[r]),(0,F.useEffect)(()=>{b&&b.em&&b.em.updateBounds()},[b,q]),(0,F.useEffect)(()=>{b?.runtime.setOptions(S||{})},[S]),(0,F.useEffect)(()=>{b&&b.runtime&&(b.runtime.mode=B),_&&b&&(b.ready=!0)},[b,_,B]),(0,F.useEffect)(()=>{b&&(E||(b.runtime.manualHomePosition=!!g,b.runtime.setHomePosition(g)))},[b,E,g]),(0,F.useEffect)(()=>{if(b){let R=b.runtime;R.resize(N.current.width,T.width,N.current.height,T.height),N.current.width=T.width,N.current.height=T.height,R.updateNextFrame(),N.current.didUpdate=!0}},[b,T.width,T.height,N]),(0,F.useEffect)(()=>{if(O&&b){let R=b.runtime,M=!1;R.hookOptions.enableFilters=!0;for(let D of Zn)O[D]?O[D]!==b.runtime.hookOptions.filters[D]&&(R.hookOptions.filters[D]=O[D],M=!0):R.hookOptions.filters[D]&&(R.hookOptions.filters[D]=0,M=!0);M&&R.updateNextFrame()}else if(b){let R=b.runtime;for(let M of Zn)R.hookOptions.filters[M]=0;R.hookOptions.enableFilters=!1,R.updateNextFrame()}},[b,O]);function Hi(){if(b&&(b.overlay&&(b.overlay.style.width=`${q.width}px`,b.overlay.style.height=`${q.height}px`),b.container&&(b.container.style.width=`${q.width}px`,b.container.style.height=`${q.height}px`),E)){let R=b.runtime.world.width,M=b.runtime.world.height,D=R/M,Z=N.current.width,ie=N.current.height,St=Z/ie;if(D>St){St=ie/Z,b.runtime.manualHomePosition=!0;let Lt=(R-M/St)/2;E==="start"&&(Lt=0),E==="end"&&(Lt=R-M/St);let si={x:Lt,y:0,width:M/St,height:M};b.runtime.setHomePosition(si)}else{let Lt=(M-R/St)/2;E==="start"&&(Lt=0),E==="end"&&(Lt=M-R/St),b.runtime.manualHomePosition=!0;let si={x:0,y:Lt,width:R,height:R/St};b.runtime.setHomePosition(si)}p&&b.runtime.goHome({})}}tt(()=>{Hi()},[b,e.runtimeOptions?.maxOverZoom,q.height,q.width,E]),tt(()=>{let R=()=>{if(b){let M=b.runtime;N.current.width!==T.width&&N.current.height!==T.height&&(M.resize(N.current.width,T.width,N.current.height,T.height),N.current.width=T.width,N.current.height=T.height,M.updateNextFrame(),N.current.didUpdate=!0)}};return window.addEventListener("resize",R),()=>window.removeEventListener("resize",R)},[b,T.height,T.width]);let ji={width:120},Ui=()=>{if(b&&b.navigator){let R=b.runtime.world.height,M=b.runtime.world.width,D=window.devicePixelRatio||1,Z=ji.width,ie=ji.width/M*R;b.navigator.width=Z*D,b.navigator.height=ie*D,b.navigator.style.width=Z+"px",b.navigator.style.height=ie+"px"}};tt(()=>{if(b){Ui();let R=b.runtime;return R.world.addLayoutSubscriber(M=>{M==="recalculate-world-size"&&(Ui(),Hi(),R.resize(N.current.width,T.width,N.current.height,T.height))})}return()=>{}},[b,T.width,T.height]);let ms=(0,F.useCallback)(function(M){let D=()=>{k(!0)};return(0,F.useEffect)(()=>{if(b){b.runtime.goHome();let Z=n&&n(b);return void(Z&&Z.then?Z.then(D):D())}else throw new Error("Invalid configuration - no runtime found")},[]),M.children},[b]);(0,F.useEffect)(()=>{if(b){let R=b.runtime;if(o)return R.world.addLayoutSubscriber(M=>{M==="recalculate-world-size"&&R.goHome()})}return()=>{}},[b,o]),(0,F.useEffect)(()=>b?b.runtime.registerHook("useBeforeFrame",()=>{if(N.current.didUpdate&&b.canvas){let M=window.devicePixelRatio||1,D=N.current.width,Z=N.current.height;b.canvas.width=D*M,b.canvas.height=Z*M,b.canvas.style.width=D+"px",b.canvas.style.height=Z+"px",b.canvas.getContext("2d")?.scale(M,M),b&&b.em&&b.em.updateBounds(),N.current.didUpdate=!1}}):()=>{},[b,o]),(0,F.useEffect)(()=>{let R=()=>{b&&(x("sketch"),Ni("mode-sketch")),window.removeEventListener("keyup",R)},M=D=>{if(D.code==="Space"&&b&&b.runtime.mode==="sketch"){let Z=D.target?.tagName?.toLowerCase();if(Z==="input"||Z==="textarea"||D.target?.isContentEditable)return;D.preventDefault(),x("explore"),Ni("mode-explore"),window.addEventListener("keyup",R)}};return window.addEventListener("keydown",M),()=>{window.removeEventListener("keydown",M),window.removeEventListener("keyup",R)}},[b]),Ot.current=!0;let{height:rr,width:or,...fs}=T,ni=Un([T.width,T.height]),$i=!0;return H&&Array.isArray(H)&&H.length>1&&H[1].interactive===!1&&($i=!1),C=C??"#000",Mt.current&&(C=getComputedStyle(Mt.current).getPropertyValue("--atlas-background")||C),(0,Q.jsxs)(Nt,{ref:vt,className:["atlas",d?"":`atlas-width-${ni}`,us,w,`atlas-${Bi}`].filter(Boolean).join(" ").trim(),style:{...f,...d?{}:{width:T.width,height:T.height}},children:[Bi==="static-preset"?(0,Q.jsx)(Nt,{className:"atlas-static-container",ref:Ee.container,tabIndex:0,...v}):(0,Q.jsx)("canvas",{className:"atlas-canvas",part:"atlas-canvas",tabIndex:0,...fs,...v,ref:Ee.canvas,"data-background":C}),(0,Q.jsx)(Nt,{className:["atlas-overlay",$i?"atlas-overlay--interactive":""].filter(Boolean).join(" ").trim(),style:{...m||{}},ref:Ee.overlay,children:l?(0,Q.jsx)(ms,{children:(0,Q.jsx)(_t.Provider,{value:q,children:(0,Q.jsx)(mt.Provider,{value:B,children:(0,Q.jsx)(ft.Provider,{value:b,children:u})})})}):(0,Q.jsx)(Hn,{bounds:q,preset:b,mode:B,setIsReady:k,onCreated:n,children:u})}),y?(0,Q.jsx)(Nt,{className:"atlas-navigator",children:(0,Q.jsx)("canvas",{className:"atlas-navigator-canvas",part:"atlas-navigator-canvas",ref:Ee.navigator})}):null,d?(0,Q.jsx)("style",{children:`.atlas-width-${ni} { width: ${T.width}px; height: ${T.height}px; }`}):(0,Q.jsx)("style",{children:`
42
+ .atlas { position: relative; display: flex; background: ${C}; z-index: var(--atlas-z-index, 10); -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
43
+ .atlas-width-${ni} { width: ${T.width}px; height: ${T.height}px; }
44
44
  .atlas-canvas { flex: 1 1 0px; }
45
45
  .atlas-canvas:focus, .atlas-static-container:focus { outline: none }
46
46
  .atlas-canvas:focus-visible, .atlas-canvas-container:focus-visible { outline: var(--atlas-focus, 2px solid darkorange) }
@@ -52,11 +52,29 @@
52
52
  .atlas-static-image { position: absolute; user-select: none; transform-origin: 0px 0px; }
53
53
  .atlas-navigator { position: absolute; top: var(--atlas-navigator-top, 10px); right: var(--atlas-navigator-bottom, 10px); left: var(--atlas-navigator-left); bottom: var(--atlas-navigator-bottom); opacity: .8 }
54
54
  .atlas-navigator-canvas { width: 100%; }
55
- `}),n]})};var ke=require("react"),Xi=q(require("react-use-measure"),1);function Zi(n){return Number(n)==n?`${n}px`:n}var ue=require("react/jsx-runtime"),kn=({resizeHash:n,aspectRatio:e,containerProps:t={},...i})=>{let[r,s,o]=(0,Xi.default)(),{height:l,width:h,...c}=i;(0,ke.useEffect)(()=>{o()},[h,l,n,o]);let d=(0,ke.useMemo)(()=>e?{width:s.width,height:s.width*(1/e)}:s,[s,e]);return(0,ue.jsxs)(Dt,{ref:r,className:"atlas-container",...t,children:[d.width?(0,ue.jsx)(Je,{width:d.width||100,height:d.height||100,...c,children:i.children}):null,i.hideInlineStyle?null:(0,ue.jsx)("style",{children:`
56
- .atlas-container {
55
+ `}),t]})});var ee=require("react"),qn=et(require("react-use-measure"),1);function Qn(s){return Number(s)==s?`${s}px`:s}var xe=require("react/jsx-runtime"),Vs=(0,ee.memo)(function({resizeHash:e,aspectRatio:t,containerProps:i={},htmlChildren:n,...r}){let[o,h,l]=(0,qn.default)(),{height:d,width:c,...u}=r;(0,ee.useEffect)(()=>{l()},[c,d,e,l]);let m=(0,ee.useMemo)(()=>t?{width:h.width,height:h.width*(1/t)}:h,[h,t]);return(0,xe.jsxs)(Nt,{ref:o,className:"atlas-container",...i,children:[m.width?(0,xe.jsx)(Ri,{width:m.width||100,height:m.height||100,...u,children:r.children}):null,r.hideInlineStyle?null:(0,xe.jsx)("style",{children:`
56
+ .atlas-container {
57
57
  display: var(--atlas-container-display, block);
58
58
  flex: var(--atlas-container-flex, none);
59
- width: var(--atlas-container-width, ${h?`${h}px`:"100%"});
60
- height: var(--atlas-container-height, ${Zi(l||(e?d.height:512))})
59
+ width: var(--atlas-container-width, ${c?`${c}px`:"100%"});
60
+ height: var(--atlas-container-height, ${Qn(d||(t?m.height:512))})
61
61
  }
62
- `}),i.htmlChildren]})};var ft=require("react");var Yi=require("react");var me=()=>(0,Yi.useContext)(ut);var $=()=>{let n=me();return n?n.runtime:void 0};var Qi=require("react"),ti=(n,e=[])=>{let t=$();(0,Qi.useEffect)(()=>t?t.registerHook("useAfterFrame",n):()=>{},e)};var Ki=require("react"),Ft=(n,e=[])=>{let t=$();(0,Ki.useEffect)(()=>t?t.registerHook("useFrame",n):()=>{},e)};var ei=()=>{let n=me();return n&&n.canvas?n.canvas:void 0};var qi=require("react");function De(){return(0,qi.useContext)(Ct)}var Dn=({onCreate:n})=>{let e=(0,ft.useRef)({x:0,y:0}),t=ei(),i=De(),r=$(),[s,o]=(0,ft.useState)(),[l,h]=(0,ft.useState)(),c=se();return Ft(()=>{r&&s&&!l&&(r.pendingUpdate=!0)},[s,l]),ti(()=>{if(s&&t&&r){let d=t.getContext("2d");if(d){let{x:u,y:m,width:y,height:v}=r.worldToViewer(s.x,s.y,(l?l.x:e.current.x)-s.x,(l?l.y:e.current.y)-s.y);d.lineWidth=l?3:1,d.strokeStyle="#fff",d.strokeRect(u,m,y,v),d.lineWidth=l?3:1,d.strokeStyle="#000",d.strokeRect(u+1,m+1,y-2,v-2)}}},[s,l]),(0,ft.useEffect)(()=>{let d=u=>{if(i&&r){let{x:m,y}=r.viewerToWorld(u.clientX-i.left,u.clientY-i.top);e.current.x=~~m,e.current.y=~~y}};return t?(t.addEventListener("mousemove",d),()=>t.removeEventListener("mousemove",d)):()=>{}},[i,t,r]),(0,ft.useEffect)(()=>{let d=u=>{c==="sketch"&&(o({x:Math.round(e.current.x),y:Math.round(e.current.y)}),h(void 0))};return t?(t.addEventListener("mousedown",d),()=>t.removeEventListener("mousedown",d)):()=>{}},[t,c]),(0,ft.useEffect)(()=>{let d=u=>{s&&!l&&h({x:Math.round(e.current.x),y:Math.round(e.current.y)})};return t?(t.addEventListener("mouseup",d),()=>t.removeEventListener("mouseup",d)):()=>{}},[t,s,l]),(0,ft.useEffect)(()=>{s&&l&&n({x:Math.min(s.x,l.x),y:Math.min(s.y,l.y),width:Math.abs(l.x-s.x),height:Math.abs(l.y-s.y)})},[s,n,l]),null};var gt=q(require("react"),1);var ii=require("react");async function Ji(n,e,t){if(ii.version.startsWith("18.")||ii.version.startsWith("19.")){let i=await import("react-dom/client"),r=i.default?i.default.createRoot:i.createRoot;t.current||(t.current=r(n)),t.current.render(e)}else if(typeof ReactDOM<"u"){let{render:i,unmountComponentAtNode:r}=ReactDOM;i(e,n),t.current={unmount(){r(n)}}}else{let i=await import("react-dom"),r=i.default?i.default.render:i.render,s=i.default?i.default.unmountComponentAtNode:i.unmountComponentAtNode;r(e,n),t.current={unmount(){s(n)}}}}var ni=require("react/jsx-runtime"),Fe=gt.default.forwardRef(({children:n,...e},t)=>{let i=(0,gt.useRef)(),r=$(),s=(0,gt.useRef)(0),o=(0,gt.useRef)(),l=(0,gt.useRef)();return Ft(()=>{if(e.relative){let h=i.current;if(h&&r){let c=r.getScaleFactor();s.current!==c&&(s.current=c,h.style.transformOrigin="0 0",h.style.transform=`scale(${1/s.current})`,h.style.width=`${s.current*100}%`,h.style.height=`${s.current*100}%`,i.current&&o.current?.__owner.value?.rotation&&(h.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 h=o.current;t&&h&&(typeof t=="function"?t(h):t.current=h);async function c(){if(h&&h.__host){let d=e.relative?(0,ni.jsx)("div",{ref:i,children:n}):n;await Ji(h.__host.element,d,l)}}h&&h.__host?c():h&&(h.__onCreate=c)},[t,n,o,e.relative]),(0,gt.useLayoutEffect)(()=>()=>{l.current&&setTimeout(()=>{l.current.unmount()},0)},[]),(0,ni.jsx)("box",{html:!0,...e,ref:o})});Fe.displayName="HTMLPortal";var nn=require("react");var pt=require("react");var j=require("react");var tn=require("react");var Be=(n,e,t=[])=>{let i=$(),r=i?i.world:void 0;(0,tn.useEffect)(()=>{if(i){let s=e,o=nt[n];i.world.activatedEvents.push(o);let l=o.slice(2).toLowerCase();return i.world.addEventListener(l,s),()=>{i.world.removeEventListener(l,s)}}return()=>{}},[r,n,...t])};function ri(n,e){if(n===0)return[0,1];if(e===0)return[1,0];let t=Math.abs(n)/Math.abs(e);return[t,1-t]}var We=require("react");function en(){let n=(0,We.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,We.useLayoutEffect)(()=>{function e(i){i.key==="Shift"&&(n.current.shift=!0),i.key==="Control"&&(n.current.ctrl=!0),i.key==="Alt"&&(n.current.alt=!0)}function t(i){i.key==="Shift"&&(n.current.shift=!1),i.key==="Control"&&(n.current.ctrl=!1),i.key==="Alt"&&(n.current.alt=!1)}return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),n}var si=(n,e)=>{let t=se(),i=$(),r=De(),s=(0,j.useRef)(),o=(0,j.useRef)(null),l=(0,j.useRef)(),[h,c]=(0,j.useState)(!1),d=(0,j.useRef)(!1),u=(0,j.useRef)({north:0,south:0,east:0,west:0}),m=en(),y=(0,j.useCallback)(f=>C=>{if(d.current=!0,c(!0),r&&i){let{top:R,left:w}=r,b=i.viewerToWorld(C.pageX-w,C.pageY-R);l.current={x:b.x,y:b.y},s.current=f}},[r,i]),v=(0,j.useMemo)(()=>n.width/n.height,[n.width,n.height]),S=(0,j.useCallback)(f=>{if(!Math.abs(f.north-f.south+(f.east-f.west)))return;let R=-f.west+f.east,w=-f.north+f.south,b=n.width+R,I=n.height+w;if(b/I>=v){let K=I*v,x=b-K,[_,L]=ri(f.east,f.west);f.west=f.west+x*L,f.east=f.east-x*_}else{let K=b/v,x=I-K,[_,L]=ri(f.north,f.south);f.north=f.north+x*_,f.south=f.south-x*L}},[n.width,n.height,v]);Ft(()=>{l&&i&&i.updateNextFrame()}),(0,j.useEffect)(()=>{i&&i.updateNextFrame()},[i,h]);let P=(0,j.useCallback)(f=>{if(!i||!r||i.mode!=="sketch")return;let{top:C,left:R}=r,w=i.viewerToWorld(f.pageX-R,f.pageY-C),b=o.current,I=!n.maintainAspectRatio&&m.current.alt,G=!I&&m.current.shift&&s.current?.indexOf("-")!==-1;if((s.current==="translate"||s.current==="east"||s.current==="north-east"||s.current==="south-east")&&(u.current.east=w.x-(l.current?l.current.x:0),I&&(u.current.west=-u.current.east)),(s.current==="translate"||s.current==="west"||s.current==="north-west"||s.current==="south-west")&&(u.current.west=w.x-(l.current?l.current.x:0),I&&(u.current.east=-u.current.west)),(s.current==="translate"||s.current==="north"||s.current==="north-east"||s.current==="north-west")&&(u.current.north=w.y-(l.current?l.current.y:0),I&&(u.current.south=-u.current.north)),(s.current==="translate"||s.current==="south"||s.current==="south-west"||s.current==="south-east")&&(u.current.south=w.y-(l.current?l.current.y:0),I&&(u.current.north=-u.current.south)),(n.maintainAspectRatio||G)&&S(u.current),b){let K=u.current.west,x=u.current.north,_=n.width+u.current.east,L=n.height+u.current.south;b.points[1]=Math.min(K,_),b.points[2]=Math.min(x,L),b.points[3]=Math.max(K,_),b.points[4]=Math.max(x,L),i.updateNextFrame()}},[i,n.width,n.height,n.maintainAspectRatio,r]);Be("mousemove",P,[n.width,n.height,r]),Be("pointermove",P,[n.width,n.height,r]);let g=(0,j.useRef)();return(0,j.useEffect)(()=>{g.current=()=>{if(d.current){let f=u.current.west,C=u.current.north,R=n.width+u.current.east,w=n.height+u.current.south,b=Math.min(f,R),I=Math.min(C,w),G=Math.max(f,R),K=Math.max(C,w),x={x:(n.x||0)+b,y:(n.y||0)+I,width:G-b||1,height:K-I||1};n.maintainAspectRatio,e(x),s.current=void 0,l.current=void 0,u.current.east=0,u.current.west=0,u.current.north=0,u.current.south=0,d.current=!1,c(!1)}}},[e,n.height,n.width,n.x,n.y]),(0,j.useEffect)(()=>{let f=()=>{g.current&&g.current()};return window.addEventListener("pointerup",f),window.addEventListener("touchend",f),()=>{window.removeEventListener("pointerup",f),window.removeEventListener("touchend",f)}},[]),{portalRef:o,mode:t,mouseEvent:y,onPointerMoveCallback:P,isEditing:h}};var z=require("react/jsx-runtime");function oi({handleSize:n,resizable:e,onSave:t,children:i,maintainAspectRatio:r,disableCardinalControls:s,...o}){let l=typeof n>"u"?r?10:8:n,{portalRef:h,mode:c,mouseEvent:d,isEditing:u}=si({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:r},t),m=(0,pt.useMemo)(()=>d("translate"),[d]),y=(0,pt.useMemo)(()=>d("east"),[d]),v=(0,pt.useMemo)(()=>d("west"),[d]),S=(0,pt.useMemo)(()=>d("south"),[d]),P=(0,pt.useMemo)(()=>d("north"),[d]),g=(0,pt.useMemo)(()=>d("south-east"),[d]),f=(0,pt.useMemo)(()=>d("south-west"),[d]),C=(0,pt.useMemo)(()=>d("north-east"),[d]),R=(0,pt.useMemo)(()=>d("north-west"),[d]),w=c==="sketch",b={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",border:"1px solid rgba(155,155,155,.7)",borderRadius:r||s?"50%":2,position:"absolute",background:"#fff",pointerEvents:u?"none":w?"initial":"none"};return(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)("world-object",{...o,children:[i,w&&e?(0,z.jsx)(Fe,{ref:h,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:w&&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:u?"none":w?"initial":"none"}}),r?null:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{title:"east",onTouchStart:y,onMouseDown:y,style:{...b,cursor:"e-resize",height:l*2,width:l,right:0,top:"50%",opacity:s?0:1,transform:`translate(${l/2}px, -${l}px)`}}),(0,z.jsx)("div",{title:"west",onMouseDown:v,style:{...b,cursor:"w-resize",position:"absolute",height:l*2,width:l,left:0,top:"50%",opacity:s?0:1,transform:`translate(-${l/2}px, -${l}px)`}}),(0,z.jsx)("div",{title:"north",onMouseDown:P,style:{...b,cursor:"n-resize",position:"absolute",height:l,width:l*2,left:"50%",top:0,opacity:s?0:1,transform:`translate(-${l}px, -${l/2}px)`}}),(0,z.jsx)("div",{title:"south",onMouseDown:S,style:{...b,cursor:"s-resize",position:"absolute",height:l,width:l*2,left:"50%",bottom:0,opacity:s?0:1,transform:`translate(-${l}px, ${l/2}px)`}})]}),(0,z.jsx)("div",{title:"north-east",onMouseDown:C,style:{...b,cursor:"ne-resize",position:"absolute",height:l,width:l,right:0,top:0,transform:`translate(${l/2}px, -${l/2}px)`}}),(0,z.jsx)("div",{title:"south-east",onMouseDown:g,style:{...b,cursor:"se-resize",position:"absolute",height:l,width:l,bottom:0,right:0,transform:`translate(${l/2}px, ${l/2}px)`}}),(0,z.jsx)("div",{title:"south-west",onMouseDown:f,style:{...b,cursor:"sw-resize",position:"absolute",height:l,width:l,bottom:0,left:0,transform:`translate(-${l/2}px, ${l/2}px)`}}),(0,z.jsx)("div",{title:"north-west",onMouseDown:R,style:{...b,cursor:"nw-resize",position:"absolute",height:l,width:l,top:0,left:0,transform:`translate(-${l/2}px, -${l/2}px)`}})]}):null}):null]})})}var ai=require("react/jsx-runtime");function Fn({interactive:n,region:e,onClick:t,onSave:i,maintainAspectRatio:r,disableCardinalControls:s,isEditing:o,rotation:l,style:h={backgroundColor:"rgba(0,0,0,.5)"}}){let c=(0,nn.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,ai.jsx)(oi,{x:e.x,y:e.y,rotation:l,width:e.width,height:e.height,resizable:o,onSave:c,maintainAspectRatio:r,disableCardinalControls:s,children:(0,ai.jsx)("box",{interactive:n,onContextMenu:d=>{d.preventDefault()},onClick:d=>{d.preventDefault(),d.stopPropagation(),t(e)},target:{x:0,y:0,width:e.width,height:e.height},style:h})})}var Ne=require("react"),Bt=require("react/jsx-runtime"),li=n=>{let e=n.width/(n.crop?.width||n.tiles.width),t=n.tiles.imageService.sizes||[],i=n.enableThumbnail,r=n.enableSizes,s=(0,Ne.useMemo)(()=>{let h=n.tiles.imageService.id||n.tiles.imageService["@id"];return h&&h.endsWith("/info.json")?h.slice(0,-1*10):h},[n.tiles.imageService.id]),o=(0,Ne.useMemo)(()=>{let h=n.tiles.imageService.tiles||[];if(!h.length){let c=n.width,d=[1],u=1;for(;Math.pow(2,u)<c;)u=u*2,d.push(u);return[]}return h},[n.tiles.imageService]),l=(0,Ne.useMemo)(()=>{let h=n.tiles.imageService;return(h?h["@context"]?Array.isArray(h["@context"])?h["@context"]:[h["@context"]]:[]:[]).indexOf("http://iiif.io/api/image/3/context.json")!==-1},[n.tiles.imageService.id]);return(0,Bt.jsx)("world-object",{rotation:n.rotation,scale:e,height:n.crop?.height||n.tiles.height,width:n.crop?.width||n.tiles.width,x:n.x,y:n.y,onClick:n.onClick,children:(0,Bt.jsxs)("composite-image",{id:n.tiles.imageService.id,width:n.crop?.width||n.tiles.width,height:n.crop?.height||n.tiles.height,crop:n.crop,renderOptions:n.renderOptions,children:[i&&n.tiles.thumbnail?(0,Bt.jsx)("world-image",{priority:!0,uri:n.tiles.thumbnail.id,target:{width:n.tiles.width,height:n.tiles.height},display:{width:n.tiles.thumbnail.width,height:n.tiles.thumbnail.height},crop:n.crop}):null,r&&t.map((h,c)=>(0,Bt.jsx)("world-image",{uri:`${s}/full/${h.width},${h.height}/0/default.jpg`,target:{width:n.tiles.width,height:n.tiles.height},display:{width:h.width,height:h.height},crop:n.crop},c)),o.map(h=>(h.scaleFactors||[]).map(c=>(0,Bt.jsx)("tiled-image",{uri:n.tiles.imageService.id,display:{width:n.tiles.width,height:n.tiles.height},tile:h,scaleFactor:c,crop:n.crop,version3:l},`${n.tiles.imageService.id}-tile-${c}`)))]},n.tiles.imageService.id)},n.tiles.imageService.id)};var He=require("react");function hi(n){return n.id||n["@id"]}var rn=require("@atlas-viewer/iiif-image-api"),sn=require("@iiif/helpers/thumbnail");function Bn(){return typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}function Wn(){let n=Bn();if(typeof n.IIIF_VAULT<"u")return n.IIIF_VAULT;if(typeof n.IIIFVault>"u")throw new Error("Vault not found");return n.IIIF_VAULT=new n.IIIFVault.Vault,n.IIIF_VAULT}var Wt={};function fe(){return Wt.helper||(Wt.vault=Wn(),Wt.loader=new rn.ImageServiceLoader,Wt.helper=(0,sn.createThumbnailHelper)(Wt.vault,{imageServiceLoader:Wt.loader})),Wt}async function ze(n,e,t){let{loader:i}=fe(),r=await i.loadService({id:n,width:e,height:t});return{id:hi(r),width:e,height:t,imageService:r,thumbnail:void 0}}async function on(n,e=512){let{vault:t,loader:i,helper:r}=fe(),s=[];for(let o of n.items)for(let l of t.get(o).items){let c=t.get(t.get(l).body[0]).service[0],d=await ze(c.id,n.width,n.height),{best:u}=await r.getBestThumbnailAtSize(t,i,n,{maxHeight:e,maxWidth:e},!0);u&&(d.thumbnail=u),s.push(d)}return s}async function an(n){let{vault:e}=fe(),t=[];for(let i of n.items){let r=e.get(i);t.push(...await on(r))}return t}async function Nn(n){try{let{vault:e}=fe(),t=await e.loadManifest(n);return t?an(t):[]}catch(e){return console.log("ERR",e),[]}}var di=require("react/jsx-runtime"),zn=n=>{let[e,t]=(0,He.useState)();return(0,He.useEffect)(()=>{ze(n.id,n.width,n.height).then(i=>{t(i)})},[n.height,n.id,n.width]),(0,di.jsx)("world-object",{x:n.x||0,y:n.y||0,width:n.width,height:n.height,scale:n.scale,children:e?(0,di.jsx)(li,{tiles:e,x:n.x,y:n.y,width:n.crop?.width||n.width,height:n.crop?.height||n.height,rotation:n.rotation,crop:n.crop,enableSizes:n.enableSizes,enableThumbnail:n.enableThumbnail,renderOptions:n.renderOptions,children:n.children}):null})};var ln=require("react"),Hn=(n,e=[])=>{let t=$();(0,ln.useEffect)(()=>t?t.registerHook("useAfterPaint",n):()=>{},e)};var U=require("react");var je=require("react/jsx-runtime"),jn=(n,{onCreated:e,resetWorldOnChange:t=!0,mode:i="explore",cover:r,containerRef:s,...o})=>{let[l,h]=(0,U.useState)(!1),[c,d]=(0,U.useState)(void 0),[u,m]=(0,U.useState)(void 0),y=(0,U.useRef)(),v=(0,U.useRef)(),S=(0,U.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[P,g,f,C]=Le(void 0,{width:o.width,height:o.height});J(()=>{let w=document.createElement("canvas");w.height=S.height,w.width=S.width,y.current=w},[]),J(()=>{let w=y.current;w&&(w.height=S.height,w.width=S.width)},[S.width,S.height]),(0,U.useEffect)(()=>g?g.runtime.registerHook("useAfterFrame",()=>{if(y.current)try{d(y.current.toDataURL())}catch(b){b instanceof Error&&m(b.message)}}):()=>{},[]),(0,U.useEffect)(()=>g?g.runtime.world.addLayoutSubscriber(b=>{b==="ready"&&h(!0)}):()=>{},[]),(0,U.useEffect)(()=>{g&&g.em&&g.em.updateBounds()},[S]),(0,U.useEffect)(()=>{g&&(g.runtime.mode=i)},[i]),(0,U.useEffect)(()=>{if(g){let w=g.runtime;w.resize(f.current.width,o.width,f.current.height,o.height),r?w.cover():w.goHome(),f.current.width=o.width,f.current.height=o.height,w.updateNextFrame()}},[o.width,o.height]),J(()=>{let w=v.current;w&&(w.style.width=`${S.width}px`,w.style.height=`${S.height}px`,w.style.pointerEvents="none",w.style.overflow="hidden")},[S.height,S.width]),J(()=>{let w=()=>{if(g&&g.runtime){let b=g.runtime;b.resize(f.current.width,o.width,f.current.height,o.height),f.current.width=o.width,f.current.height=o.height,b.updateNextFrame()}};return window.addEventListener("resize",w),()=>window.removeEventListener("resize",w)},[g,o.height,o.width]);let R=(0,U.useCallback)(function(b){let I=()=>{g&&(g.ready=!0)};return(0,U.useEffect)(()=>{if(g){let G=e&&e(g);return void(G&&G.then?G.then(I):I())}return()=>{}},[]),b.children},[g]);return(0,U.useEffect)(()=>{if(g&&g.runtime){let w=g.runtime;if(t)return w.world.addLayoutSubscriber(b=>{b==="recalculate-world-size"&&w.goHome({cover:r})})}return()=>{}},[g,r,t]),J(()=>{g&&Vt.render((0,je.jsx)(R,{children:(0,je.jsx)(ct.Provider,{value:i,children:(0,je.jsx)(ut.Provider,{value:g,children:n})})}),g.runtime)},[g,i,n]),{loading:!c&&l,uri:c,imageError:u}};var hn=require("react"),Un=(n,e=[])=>{let t=$();(0,hn.useEffect)(()=>t?t.registerHook("useBeforeFrame",n):()=>{},e)};var bt=require("react");var $n=(n=[])=>{let[e,t]=(0,bt.useState)(n),[i,r]=(0,bt.useState)(!1),[s,o]=(0,bt.useState)(),l=(0,bt.useCallback)(()=>{r(!0),o(void 0)},[]),h=(0,bt.useCallback)(m=>{r(!0),o(m)},[]),c=m=>{t(y=>y.map(v=>v.id===m.id?m:v))},d=(0,bt.useCallback)(m=>{let y=at();t(v=>[...v,{id:y,...m}]),r(!1),o(void 0)},[]),u=(0,bt.useCallback)(()=>{r(!1),o(void 0)},[]);return{isEditing:i,onDeselect:u,selectedAnnotation:s,onCreateNewAnnotation:d,annotations:e,onUpdateAnnotation:c,setIsEditing:r,setSelectedAnnotation:o,editAnnotation:h,addNewAnnotation:l}};function Vn(n){return n.current==="sketch"}function Gn(n,e){return n?e?{...n,...e||{},":hover":n[":hover"]?Object.assign(n[":hover"]||{},e[":hover"]||{}):e[":hover"],":active":n[":active"]?Object.assign(n[":active"]||{},e[":active"]||{}):e[":hover"]}:n:e}
62
+ `}),n]})});var pt=require("react");var Kn=require("react");var Se=()=>(0,Kn.useContext)(ft);var G=()=>{let s=Se();return s?s.runtime:void 0};var Jn=require("react"),_i=(s,e=[])=>{let t=G();(0,Jn.useEffect)(()=>t?t.registerHook("useAfterFrame",s):()=>{},e)};var ts=require("react"),Ht=(s,e=[])=>{let t=G();(0,ts.useEffect)(()=>t?t.registerHook("useFrame",s):()=>{},e)};var Ai=()=>{let s=Se();return s&&s.canvas?s.canvas:void 0};var es=require("react");function Ye(){return(0,es.useContext)(_t)}var Gs=({onCreate:s})=>{let e=(0,pt.useRef)({x:0,y:0}),t=Ai(),i=Ye(),n=G(),[r,o]=(0,pt.useState)(),[h,l]=(0,pt.useState)(),d=fe();return Ht(()=>{n&&r&&!h&&(n.pendingUpdate=!0)},[r,h]),_i(()=>{if(r&&t&&n){let c=t.getContext("2d");if(c){let{x:u,y:m,width:f,height:y}=n.worldToViewer(r.x,r.y,(h?h.x:e.current.x)-r.x,(h?h.y:e.current.y)-r.y);c.lineWidth=h?3:1,c.strokeStyle="#fff",c.strokeRect(u,m,f,y),c.lineWidth=h?3:1,c.strokeStyle="#000",c.strokeRect(u+1,m+1,f-2,y-2)}}},[r,h]),(0,pt.useEffect)(()=>{let c=u=>{if(i&&n){let{x:m,y:f}=n.viewerToWorld(u.clientX-i.left,u.clientY-i.top);e.current.x=~~m,e.current.y=~~f}};return t?(t.addEventListener("mousemove",c),()=>t.removeEventListener("mousemove",c)):()=>{}},[i,t,n]),(0,pt.useEffect)(()=>{let c=u=>{d==="sketch"&&(o({x:Math.round(e.current.x),y:Math.round(e.current.y)}),l(void 0))};return t?(t.addEventListener("mousedown",c),()=>t.removeEventListener("mousedown",c)):()=>{}},[t,d]),(0,pt.useEffect)(()=>{let c=u=>{r&&!h&&l({x:Math.round(e.current.x),y:Math.round(e.current.y)})};return t?(t.addEventListener("mouseup",c),()=>t.removeEventListener("mouseup",c)):()=>{}},[t,r,h]),(0,pt.useEffect)(()=>{r&&h&&s({x:Math.min(r.x,h.x),y:Math.min(r.y,h.y),width:Math.abs(h.x-r.x),height:Math.abs(h.y-r.y)})},[r,s,h]),null};var yt=et(require("react"),1);var Oi=require("react");async function is(s,e,t){if(Oi.version.startsWith("18.")||Oi.version.startsWith("19.")){let i=await import("react-dom/client"),n=i.default?i.default.createRoot:i.createRoot;t.current||(t.current=n(s)),t.current.render(e)}else if(typeof ReactDOM<"u"){let{render:i,unmountComponentAtNode:n}=ReactDOM;i(e,s),t.current={unmount(){n(s)}}}else{let i=await import("react-dom"),n=i.default?i.default.render:i.render,r=i.default?i.default.unmountComponentAtNode:i.unmountComponentAtNode;n(e,s),t.current={unmount(){r(s)}}}}var Mi=require("react/jsx-runtime"),Qe=yt.default.forwardRef(({children:s,...e},t)=>{let i=(0,yt.useRef)(),n=G(),r=(0,yt.useRef)(0),o=(0,yt.useRef)(),h=(0,yt.useRef)();return Ht(()=>{if(e.relative){let l=i.current;if(l&&n){let d=n.getScaleFactor();r.current!==d&&(r.current=d,l.style.transformOrigin="0 0",l.style.transform=`scale(${1/r.current})`,l.style.width=`${r.current*100}%`,l.style.height=`${r.current*100}%`,i.current&&o.current?.__owner.value?.rotation&&(l.style.transform=`scale(${1/r.current}) translate(50%, 50%) rotate(${o.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[e.relative]),(0,yt.useLayoutEffect)(()=>{let l=o.current;t&&l&&(typeof t=="function"?t(l):t.current=l);async function d(){if(l&&l.__host){let c=e.relative?(0,Mi.jsx)("div",{ref:i,children:s}):s;await is(l.__host.element,c,h)}}l&&l.__host?d():l&&(l.__onCreate=d)},[t,s,o,e.relative]),(0,yt.useLayoutEffect)(()=>()=>{h.current&&setTimeout(()=>{h.current.unmount()},0)},[]),(0,Mi.jsx)("box",{html:!0,...e,ref:o})});Qe.displayName="HTMLPortal";var rs=require("react");var bt=require("react");var $=require("react");var ns=require("react");var qe=(s,e,t=[])=>{let i=G(),n=i?i.world:void 0;(0,ns.useEffect)(()=>{if(i){let r=e,o=rt[s];i.world.activatedEvents.push(o);let h=o.slice(2).toLowerCase();return i.world.addEventListener(h,r),()=>{i.world.removeEventListener(h,r)}}return()=>{}},[n,s,...t])};function Li(s,e){if(s===0)return[0,1];if(e===0)return[1,0];let t=Math.abs(s)/Math.abs(e);return[t,1-t]}var Ke=require("react");function ss(){let s=(0,Ke.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,Ke.useLayoutEffect)(()=>{function e(i){i.key==="Shift"&&(s.current.shift=!0),i.key==="Control"&&(s.current.ctrl=!0),i.key==="Alt"&&(s.current.alt=!0)}function t(i){i.key==="Shift"&&(s.current.shift=!1),i.key==="Control"&&(s.current.ctrl=!1),i.key==="Alt"&&(s.current.alt=!1)}return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),s}var Ii=(s,e)=>{let t=fe(),i=G(),n=Ye(),r=(0,$.useRef)(),o=(0,$.useRef)(null),h=(0,$.useRef)(),[l,d]=(0,$.useState)(!1),c=(0,$.useRef)(!1),u=(0,$.useRef)({north:0,south:0,east:0,west:0}),m=ss(),f=(0,$.useCallback)(p=>E=>{if(c.current=!0,d(!0),n&&i){let{top:C,left:S}=n,P=i.viewerToWorld(E.pageX-S,E.pageY-C);h.current={x:P.x,y:P.y},r.current=p}},[n,i]),y=(0,$.useMemo)(()=>s.width/s.height,[s.width,s.height]),w=(0,$.useCallback)(p=>{if(!Math.abs(p.north-p.south+(p.east-p.west)))return;let C=-p.west+p.east,S=-p.north+p.south,P=s.width+C,O=s.height+S;if(P/O>=y){let B=O*y,x=P-B,[_,k]=Li(p.east,p.west);p.west=p.west+x*k,p.east=p.east-x*_}else{let B=P/y,x=O-B,[_,k]=Li(p.north,p.south);p.north=p.north+x*_,p.south=p.south-x*k}},[s.width,s.height,y]);Ht(()=>{h&&i&&i.updateNextFrame()}),(0,$.useEffect)(()=>{i&&i.updateNextFrame()},[i,l]);let v=(0,$.useCallback)(p=>{if(!i||!n||i.mode!=="sketch")return;let{top:E,left:C}=n,S=i.viewerToWorld(p.pageX-C,p.pageY-E),P=o.current,O=!s.maintainAspectRatio&&m.current.alt,T=!O&&m.current.shift&&r.current?.indexOf("-")!==-1;if((r.current==="translate"||r.current==="east"||r.current==="north-east"||r.current==="south-east")&&(u.current.east=S.x-(h.current?h.current.x:0),O&&(u.current.west=-u.current.east)),(r.current==="translate"||r.current==="west"||r.current==="north-west"||r.current==="south-west")&&(u.current.west=S.x-(h.current?h.current.x:0),O&&(u.current.east=-u.current.west)),(r.current==="translate"||r.current==="north"||r.current==="north-east"||r.current==="north-west")&&(u.current.north=S.y-(h.current?h.current.y:0),O&&(u.current.south=-u.current.north)),(r.current==="translate"||r.current==="south"||r.current==="south-west"||r.current==="south-east")&&(u.current.south=S.y-(h.current?h.current.y:0),O&&(u.current.north=-u.current.south)),(s.maintainAspectRatio||T)&&w(u.current),P){let B=u.current.west,x=u.current.north,_=s.width+u.current.east,k=s.height+u.current.south;P.points[1]=Math.min(B,_),P.points[2]=Math.min(x,k),P.points[3]=Math.max(B,_),P.points[4]=Math.max(x,k),i.updateNextFrame()}},[i,s.width,s.height,s.maintainAspectRatio,n]);qe("mousemove",v,[s.width,s.height,n]),qe("pointermove",v,[s.width,s.height,n]);let g=(0,$.useRef)();return(0,$.useEffect)(()=>{g.current=()=>{if(c.current){let p=u.current.west,E=u.current.north,C=s.width+u.current.east,S=s.height+u.current.south,P=Math.min(p,C),O=Math.min(E,S),T=Math.max(p,C),B=Math.max(E,S),x={x:(s.x||0)+P,y:(s.y||0)+O,width:T-P||1,height:B-O||1};s.maintainAspectRatio,e(x),r.current=void 0,h.current=void 0,u.current.east=0,u.current.west=0,u.current.north=0,u.current.south=0,c.current=!1,d(!1)}}},[e,s.height,s.width,s.x,s.y]),(0,$.useEffect)(()=>{let p=()=>{g.current&&g.current()};return window.addEventListener("pointerup",p),window.addEventListener("touchend",p),()=>{window.removeEventListener("pointerup",p),window.removeEventListener("touchend",p)}},[]),{portalRef:o,mode:t,mouseEvent:f,onPointerMoveCallback:v,isEditing:l}};var j=require("react/jsx-runtime");function ki({handleSize:s,resizable:e,onSave:t,children:i,maintainAspectRatio:n,disableCardinalControls:r,...o}){let h=typeof s>"u"?n?10:8:s,{portalRef:l,mode:d,mouseEvent:c,isEditing:u}=Ii({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:n},t),m=(0,bt.useMemo)(()=>c("translate"),[c]),f=(0,bt.useMemo)(()=>c("east"),[c]),y=(0,bt.useMemo)(()=>c("west"),[c]),w=(0,bt.useMemo)(()=>c("south"),[c]),v=(0,bt.useMemo)(()=>c("north"),[c]),g=(0,bt.useMemo)(()=>c("south-east"),[c]),p=(0,bt.useMemo)(()=>c("south-west"),[c]),E=(0,bt.useMemo)(()=>c("north-east"),[c]),C=(0,bt.useMemo)(()=>c("north-west"),[c]),S=d==="sketch",P={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",border:"1px solid rgba(155,155,155,.7)",borderRadius:n||r?"50%":2,position:"absolute",background:"#fff",pointerEvents:u?"none":S?"initial":"none"};return(0,j.jsx)(j.Fragment,{children:(0,j.jsxs)("world-object",{...o,children:[i,S&&e?(0,j.jsx)(Qe,{ref:l,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:S&&e?(0,j.jsxs)(j.Fragment,{children:[(0,j.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:u?"none":S?"initial":"none"}}),n?null:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("div",{title:"east",onTouchStart:f,onMouseDown:f,style:{...P,cursor:"e-resize",height:h*2,width:h,right:0,top:"50%",opacity:r?0:1,transform:`translate(${h/2}px, -${h}px)`}}),(0,j.jsx)("div",{title:"west",onMouseDown:y,style:{...P,cursor:"w-resize",position:"absolute",height:h*2,width:h,left:0,top:"50%",opacity:r?0:1,transform:`translate(-${h/2}px, -${h}px)`}}),(0,j.jsx)("div",{title:"north",onMouseDown:v,style:{...P,cursor:"n-resize",position:"absolute",height:h,width:h*2,left:"50%",top:0,opacity:r?0:1,transform:`translate(-${h}px, -${h/2}px)`}}),(0,j.jsx)("div",{title:"south",onMouseDown:w,style:{...P,cursor:"s-resize",position:"absolute",height:h,width:h*2,left:"50%",bottom:0,opacity:r?0:1,transform:`translate(-${h}px, ${h/2}px)`}})]}),(0,j.jsx)("div",{title:"north-east",onMouseDown:E,style:{...P,cursor:"ne-resize",position:"absolute",height:h,width:h,right:0,top:0,transform:`translate(${h/2}px, -${h/2}px)`}}),(0,j.jsx)("div",{title:"south-east",onMouseDown:g,style:{...P,cursor:"se-resize",position:"absolute",height:h,width:h,bottom:0,right:0,transform:`translate(${h/2}px, ${h/2}px)`}}),(0,j.jsx)("div",{title:"south-west",onMouseDown:p,style:{...P,cursor:"sw-resize",position:"absolute",height:h,width:h,bottom:0,left:0,transform:`translate(-${h/2}px, ${h/2}px)`}}),(0,j.jsx)("div",{title:"north-west",onMouseDown:C,style:{...P,cursor:"nw-resize",position:"absolute",height:h,width:h,top:0,left:0,transform:`translate(-${h/2}px, -${h/2}px)`}})]}):null}):null]})})}var Fi=require("react/jsx-runtime");function Xs({interactive:s,region:e,onClick:t,onSave:i,maintainAspectRatio:n,disableCardinalControls:r,isEditing:o,rotation:h,style:l={backgroundColor:"rgba(0,0,0,.5)"}}){let d=(0,rs.useCallback)(c=>{i({id:e.id,x:e.x,y:e.y,height:e.height,width:e.width,...c})},[i,e.id,e.x,e.y,e.height,e.width]);return(0,Fi.jsx)(ki,{x:e.x,y:e.y,rotation:h,width:e.width,height:e.height,resizable:o,onSave:d,maintainAspectRatio:n,disableCardinalControls:r,children:(0,Fi.jsx)("box",{interactive:s,onContextMenu:c=>{c.preventDefault()},onClick:c=>{c.preventDefault(),c.stopPropagation(),t(e)},target:{x:0,y:0,width:e.width,height:e.height},style:l})})}var Je=require("react"),jt=require("react/jsx-runtime"),Di=s=>{let e=s.width/(s.crop?.width||s.tiles.width),t=s.tiles.imageService.sizes||[],i=s.enableThumbnail,n=s.enableSizes,r=(0,Je.useMemo)(()=>{let l=s.tiles.imageService.id||s.tiles.imageService["@id"];return l&&l.endsWith("/info.json")?l.slice(0,-1*10):l},[s.tiles.imageService.id]),o=(0,Je.useMemo)(()=>{let l=s.tiles.imageService.tiles||[];if(!l.length){let d=s.width,c=[1],u=1;for(;Math.pow(2,u)<d;)u=u*2,c.push(u);return[]}return l},[s.tiles.imageService]),h=(0,Je.useMemo)(()=>{let l=s.tiles.imageService;return(l?l["@context"]?Array.isArray(l["@context"])?l["@context"]:[l["@context"]]:[]:[]).indexOf("http://iiif.io/api/image/3/context.json")!==-1},[s.tiles.imageService.id]);return(0,jt.jsx)("world-object",{rotation:s.rotation,scale:e,height:s.crop?.height||s.tiles.height,width:s.crop?.width||s.tiles.width,x:s.x,y:s.y,onClick:s.onClick,children:(0,jt.jsxs)("composite-image",{id:s.tiles.imageService.id,width:s.crop?.width||s.tiles.width,height:s.crop?.height||s.tiles.height,crop:s.crop,renderOptions:s.renderOptions,children:[i&&s.tiles.thumbnail?(0,jt.jsx)("world-image",{priority:!0,uri:s.tiles.thumbnail.id,target:{width:s.tiles.width,height:s.tiles.height},display:{width:s.tiles.thumbnail.width,height:s.tiles.thumbnail.height},crop:s.crop}):null,n&&t.map((l,d)=>(0,jt.jsx)("world-image",{uri:`${r}/full/${l.width},${l.height}/0/default.jpg`,target:{width:s.tiles.width,height:s.tiles.height},display:{width:l.width,height:l.height},crop:s.crop},d)),o.map(l=>(l.scaleFactors||[]).map(d=>(0,jt.jsx)("tiled-image",{uri:s.tiles.imageService.id,display:{width:s.tiles.width,height:s.tiles.height},tile:l,scaleFactor:d,crop:s.crop,version3:h},`${s.tiles.imageService.id}-tile-${d}`)))]},s.tiles.imageService.id)},s.tiles.imageService.id)};var ei=require("react");function Wi(s){return s.id||s["@id"]}var os=require("@atlas-viewer/iiif-image-api"),as=require("@iiif/helpers/thumbnail");function Zs(){return typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}function Ys(){let s=Zs();if(typeof s.IIIF_VAULT<"u")return s.IIIF_VAULT;if(typeof s.IIIFVault>"u")throw new Error("Vault not found");return s.IIIF_VAULT=new s.IIIFVault.Vault,s.IIIF_VAULT}var Ut={};function Pe(){return Ut.helper||(Ut.vault=Ys(),Ut.loader=new os.ImageServiceLoader,Ut.helper=(0,as.createThumbnailHelper)(Ut.vault,{imageServiceLoader:Ut.loader})),Ut}async function ti(s,e,t){let{loader:i}=Pe(),n=await i.loadService({id:s,width:e,height:t});return{id:Wi(n),width:e,height:t,imageService:n,thumbnail:void 0}}async function hs(s,e=512){let{vault:t,loader:i,helper:n}=Pe(),r=[];for(let o of s.items)for(let h of t.get(o).items){let d=t.get(t.get(h).body[0]).service[0],c=await ti(d.id,s.width,s.height),{best:u}=await n.getBestThumbnailAtSize(t,i,s,{maxHeight:e,maxWidth:e},!0);u&&(c.thumbnail=u),r.push(c)}return r}async function ls(s){let{vault:e}=Pe(),t=[];for(let i of s.items){let n=e.get(i);t.push(...await hs(n))}return t}async function Qs(s){try{let{vault:e}=Pe(),t=await e.loadManifest(s);return t?ls(t):[]}catch(e){return console.log("ERR",e),[]}}var zi=require("react/jsx-runtime"),qs=s=>{let[e,t]=(0,ei.useState)();return(0,ei.useEffect)(()=>{ti(s.id,s.width,s.height).then(i=>{t(i)})},[s.height,s.id,s.width]),(0,zi.jsx)("world-object",{x:s.x||0,y:s.y||0,width:s.width,height:s.height,scale:s.scale,children:e?(0,zi.jsx)(Di,{tiles:e,x:s.x,y:s.y,width:s.crop?.width||s.width,height:s.crop?.height||s.height,rotation:s.rotation,crop:s.crop,enableSizes:s.enableSizes,enableThumbnail:s.enableThumbnail,renderOptions:s.renderOptions,children:s.children}):null})};var cs=require("react"),Ks=(s,e=[])=>{let t=G();(0,cs.useEffect)(()=>t?t.registerHook("useAfterPaint",s):()=>{},e)};var V=require("react");var ii=require("react/jsx-runtime"),Js=(s,{onCreated:e,resetWorldOnChange:t=!0,mode:i="explore",cover:n,containerRef:r,...o})=>{let[h,l]=(0,V.useState)(!1),[d,c]=(0,V.useState)(void 0),[u,m]=(0,V.useState)(void 0),f=(0,V.useRef)(),y=(0,V.useRef)(),w=(0,V.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[v,g,p,E]=Ze(void 0,{width:o.width,height:o.height});tt(()=>{let S=document.createElement("canvas");S.height=w.height,S.width=w.width,f.current=S},[]),tt(()=>{let S=f.current;S&&(S.height=w.height,S.width=w.width)},[w.width,w.height]),(0,V.useEffect)(()=>g?g.runtime.registerHook("useAfterFrame",()=>{if(f.current)try{c(f.current.toDataURL())}catch(P){P instanceof Error&&m(P.message)}}):()=>{},[]),(0,V.useEffect)(()=>g?g.runtime.world.addLayoutSubscriber(P=>{P==="ready"&&l(!0)}):()=>{},[]),(0,V.useEffect)(()=>{g&&g.em&&g.em.updateBounds()},[w]),(0,V.useEffect)(()=>{g&&(g.runtime.mode=i)},[i]),(0,V.useEffect)(()=>{if(g){let S=g.runtime;S.resize(p.current.width,o.width,p.current.height,o.height),n?S.cover():S.goHome(),p.current.width=o.width,p.current.height=o.height,S.updateNextFrame()}},[o.width,o.height]),tt(()=>{let S=y.current;S&&(S.style.width=`${w.width}px`,S.style.height=`${w.height}px`,S.style.pointerEvents="none",S.style.overflow="hidden")},[w.height,w.width]),tt(()=>{let S=()=>{if(g&&g.runtime){let P=g.runtime;P.resize(p.current.width,o.width,p.current.height,o.height),p.current.width=o.width,p.current.height=o.height,P.updateNextFrame()}};return window.addEventListener("resize",S),()=>window.removeEventListener("resize",S)},[g,o.height,o.width]);let C=(0,V.useCallback)(function(P){let O=()=>{g&&(g.ready=!0)};return(0,V.useEffect)(()=>{if(g){let T=e&&e(g);return void(T&&T.then?T.then(O):O())}return()=>{}},[]),P.children},[g]);return(0,V.useEffect)(()=>{if(g&&g.runtime){let S=g.runtime;if(t)return S.world.addLayoutSubscriber(P=>{P==="recalculate-world-size"&&S.goHome({cover:n})})}return()=>{}},[g,n,t]),tt(()=>{g&&qt.render((0,ii.jsx)(C,{children:(0,ii.jsx)(mt.Provider,{value:i,children:(0,ii.jsx)(ft.Provider,{value:g,children:s})})}),g.runtime)},[g,i,s]),{loading:!d&&h,uri:d,imageError:u}};var ds=require("react"),tr=(s,e=[])=>{let t=G();(0,ds.useEffect)(()=>t?t.registerHook("useBeforeFrame",s):()=>{},e)};var xt=require("react");var er=(s=[])=>{let[e,t]=(0,xt.useState)(s),[i,n]=(0,xt.useState)(!1),[r,o]=(0,xt.useState)(),h=(0,xt.useCallback)(()=>{n(!0),o(void 0)},[]),l=(0,xt.useCallback)(m=>{n(!0),o(m)},[]),d=m=>{t(f=>f.map(y=>y.id===m.id?m:y))},c=(0,xt.useCallback)(m=>{let f=lt();t(y=>[...y,{id:f,...m}]),n(!1),o(void 0)},[]),u=(0,xt.useCallback)(()=>{n(!1),o(void 0)},[]);return{isEditing:i,onDeselect:u,selectedAnnotation:r,onCreateNewAnnotation:c,annotations:e,onUpdateAnnotation:d,setIsEditing:n,setSelectedAnnotation:o,editAnnotation:l,addNewAnnotation:h}};function ir(s){return s.current==="sketch"}function nr(s,e){return s?e?{...s,...e||{},":hover":s[":hover"]?Object.assign(s[":hover"]||{},e[":hover"]||{}):e[":hover"],":active":s[":active"]?Object.assign(s[":active"]||{},e[":active"]||{}):e[":hover"]}:s:e}
63
+ /*! Bundled license information:
64
+
65
+ normalize-wheel/src/isEventSupported.js:
66
+ (**
67
+ * Checks if an event is supported in the current execution environment.
68
+ *
69
+ * NOTE: This will not work correctly for non-generic events such as `change`,
70
+ * `reset`, `load`, `error`, and `select`.
71
+ *
72
+ * Borrows from Modernizr.
73
+ *
74
+ * @param {string} eventNameSuffix Event name, e.g. "click".
75
+ * @param {?boolean} capture Check if the capture phase is supported.
76
+ * @return {boolean} True if the event is supported.
77
+ * @internal
78
+ * @license Modernizr 3.0.0pre (Custom Build) | MIT
79
+ *)
80
+ */