@atlas-viewer/atlas 3.1.0 → 3.2.0

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,9 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`@atlas-viewer/dna`),u=require(`node:crypto`),d=require(`react`);d=c(d);let f=require(`react/jsx-runtime`),p=require(`react-use-measure`);p=c(p);let m=require(`react-reconciler`);m=c(m);let h=require(`@atlas-viewer/iiif-image-api`),g=require(`@iiif/helpers/thumbnail`);const _=`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`.split(`.`);function v(){return _.reduce((e,t)=>(e[t]=[],e),{})}const y=_.reduce((e,t)=>(e[t.slice(2).toLowerCase()]=t,e[t]=t,e),{}),b=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,x=128;let S,C;function w(e){!S||S.length<e?(S=Buffer.allocUnsafe(e*128),u.webcrypto.getRandomValues(S),C=0):C+e>S.length&&(u.webcrypto.getRandomValues(S),C=0),C+=e}function T(e=21){w(e-=0);let t=``;for(let n=C-e;n<C;n++)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[S[n]&63];return t}function E(e){"@babel/helpers - typeof";return E=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},E(e)}function D(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ee(e){var t=D(e,`string`);return E(t)==`symbol`?t:t+``}function O(e,t,n){return(t=ee(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var k=class{get crop(){return this._crop}set crop(e){this._crop=e}getObjectsAt(e){return[]}getAllPointsAt(e,t,n){return[]}getScheduledUpdates(e,t){return[]}constructor(){O(this,`__id`,void 0),O(this,`__revision`,0),O(this,`__host`,void 0),O(this,`__onCreate`,void 0),O(this,`__parent`,void 0),O(this,`__owner`,{value:void 0}),O(this,`__state`,{}),O(this,`eventHandlers`,void 0),O(this,`scale`,1),O(this,`layers`,[]),O(this,`time`,[]),O(this,`_crop`,void 0),O(this,`cropData`,void 0),O(this,`id`,void 0),O(this,`addEventListener`,(e,t,n)=>{let r=y[e];if(!this.eventHandlers[r])throw Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)}),O(this,`removeEventListener`,(e,t)=>{let n=y[e];if(!this.eventHandlers[n]){console.warn(`Unknown event ${n}`);return}this.eventHandlers[n].indexOf(t)!==-1&&(this.eventHandlers[n]=this.eventHandlers[n].filter(e=>e!==t))}),this.id=this.__id=T(),this.eventHandlers=v()}dispatchEvent(e,t){let n=this.eventHandlers[e],r=n?n.length:0,i=!1;if(r)for(let a=0;a<r;a++)try{n[a]?.(t),i=!0}catch(t){console.error(e,t)}return i}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,l.mutate)(this.points,(0,l.translate)(e,t))}atScale(e){(0,l.mutate)(this.points,(0,l.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,l.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}},A=class e extends k{constructor(e){if(super(),O(this,`type`,`spacial-content`),O(this,`id`,void 0),O(this,`uri`,void 0),O(this,`display`,void 0),O(this,`points`,void 0),O(this,`priority`,void 0),O(this,`style`,{opacity:1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:l.DnaFactory.singleBox(e.width/t,e.height/t),rotation:e?.rotation}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;if(this.id=e.id||e.uri,this.uri=e.uri,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y)),e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.crop){this.cropData=e.crop;let t=l.DnaFactory.singleBox(e.crop.width,e.crop.height,e.crop.x,e.crop.y);(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=(0,l.dna)(t)}e.display?(this.display.scale=n,this.display.width=e.display.width,this.display.height=e.display.height,this.display.rotation=e.display.rotation,this.display.points=l.DnaFactory.singleBox(e.display.width,e.display.height)):(this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.display.points=l.DnaFactory.singleBox(e.target.width/n,e.target.height/n))}getAllPointsAt(e,t,n){return[[this,this.crop||this.points,t]]}static fromSvg(t,n,r,i){return e.fromImage(`data:image/svg+xml;base64,`+btoa(t),n,r,i)}static fromImage(t,n,r,i){let a=new e;return a.applyProps({uri:t,id:i,display:r,target:n}),a}getImageUrl(){return this.uri}},te=class extends k{constructor(e){if(super(),O(this,`type`,`spacial-content`),O(this,`id`,void 0),O(this,`uri`,void 0),O(this,`display`,void 0),O(this,`points`,void 0),O(this,`getTexture`,void 0),this.getTexture=()=>({source:void 0,hash:-1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:t===1?this.points:l.DnaFactory.singleBox(e.width/t,e.height/t)}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;this.id=e.id,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height)),this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.getTexture=e.getTexture,this.display.points=n===1?this.points:l.DnaFactory.singleBox(e.target.width/n,e.target.height/n)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}};function j(e,t,n=1){let r=t.length;if(r===0)throw Error(`No resources passed in.`);let i=0,a=1/0;for(let o=0;o<r&&!(!t[o]||!t[o].display);o++){let r=ne(t[o].display.scale,e/(n||1));r<a&&(a=r,i=o)}return i}function ne(e,t){return Math.abs(e-t)}function M(e,t){let n=ne(e.x,t.x),r=ne(e.y,t.y);return Math.sqrt(n**2+r**2)}function re(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function N(e,t,n){return Math.min(Math.max(e,t),n)}var P=class e extends k{constructor(e){super(),O(this,`id`,void 0),O(this,`type`,`spacial-content`),O(this,`display`,void 0),O(this,`tileWidth`,void 0),O(this,`style`,{opacity:1}),O(this,`points`,void 0),O(this,`service`,void 0),O(this,`format`,`jpg`),O(this,`crop2`,void 0),O(this,`version3`,void 0),O(this,`tileUrl`,void 0),this.tileUrl=re(e.url),this.id=e.id||`${this.tileUrl}--${e.scaleFactor}`,this.points=e.displayPoints?e.displayPoints:(0,l.transform)(e.points,(0,l.scale)(e.scaleFactor)),this.tileWidth=e.tileWidth,this.version3=e.version3,this.display={x:0,y:0,width:e.width/e.scaleFactor,height:e.height/e.scaleFactor,points:e.points,scale:e.scaleFactor},e.format&&(this.format=e.format)}applyProps(e){if(e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.service!==this.service&&(this.service=e.service),e.format?this.format=e.format:this.format=`jpg`,e.version3!==void 0&&(this.version3=e.version3),e.crop){this.cropData=e.crop;let t=(0,l.dna)([...this.points]),n=t.length/5,r=e.crop.x||0,i=e.crop.y||0,a=e.crop.x+e.crop.width,o=e.crop.y+e.crop.height;for(let e=0;e<n;e++){let n=e*5;t[n+1]<a&&t[n+3]>r&&t[n+2]<o&&t[n+4]>i?(t[n+1]=N(t[n+1],r,a),t[n+3]=N(t[n+3],r,a),t[n+2]=N(t[n+2],i,o),t[n+4]=N(t[n+4],i,o)):t[n]=0}(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=t}}static fromTile(t,n,r,i,a,o,s,c){r.height=r.height?r.height:r.width;let u=s?Math.floor(n.width/i):Math.ceil(n.width/i),d=s?Math.floor(n.height/i):Math.ceil(n.height/i),f=Math.ceil(u/r.width),p=Math.ceil(d/r.height),m=l.DnaFactory.grid(f,p),h=l.DnaFactory.grid(f,p),g=a&&a[`@context`]?Array.isArray(a[`@context`])?a[`@context`]:[a[`@context`]]:[],_=c===void 0?g.indexOf(`http://iiif.io/api/image/3/context.json`)!==-1:c;for(let e=0;e<p;e++)for(let t=0;t<f;t++){let a=t*r.width,o=e*r.height;h.addPoints(a*i,o*i,t===f-1?n.width:(a+r.width)*i,e===p-1?n.height:(o+r.height)*i),m.addPoints(a,o,t===f-1?u:a+r.width,e===p-1?d:o+r.height)}let v=new e({url:t,scaleFactor:i,points:m.build(),displayPoints:h.build(),width:n.width,height:n.height,tileWidth:r.width,format:o,version3:_});return v.applyProps({service:a}),v}getImageUrl(e){let t=this.points.slice(e*5,e*5+5),n=t[3]-t[1],r=t[4]-t[2],i=Math.ceil(n/this.display.scale),a=Math.ceil(r/this.display.scale),o=`${i>this.tileWidth?this.tileWidth:i},`;return this.version3&&(o+=`${a>this.tileWidth?this.tileWidth:a}`),`${this.tileUrl}/${t[1]},${t[2]},${n},${r}/${o}/0/default.${this.format||`jpg`}`}getAllPointsAt(e,t,n){let r=(0,l.hidePointsOutsideRegion)(this.crop||this.points,e);return[[this,r,t]]}transform(e){(0,l.mutate)(this.points,e)}getScheduledUpdates(e,t){return[]}},ie=class extends k{constructor(...e){super(...e),O(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},F=class extends ie{constructor(e){super(),O(this,`id`,void 0),O(this,`display`,void 0),O(this,`points`,void 0),O(this,`images`,[]),O(this,`allImages`,[]),O(this,`scaleFactors`,[]),O(this,`aggregateBuffer`,(0,l.dna)(9)),O(this,`lazyLoader`,void 0),O(this,`isFullyLoaded`,!1),O(this,`maxScaleFactor`,0),O(this,`renderOptions`,void 0),O(this,`_scheduleSortByScales`,!1),O(this,`_sortByScales`,()=>{this._scheduleSortByScales=!1,this.allImages.sort((e,t)=>t.display.width-e.display.width),this.images=[];let e=.1;for(let t of this.allImages)if(!(t.display.width<this.renderOptions.minSize&&t.display.height<this.renderOptions.minSize&&!t.priority)&&!(t instanceof A&&(t.display.width>this.renderOptions.maxImageSize||t.display.height>this.renderOptions.maxImageSize)&&!t.priority)){if(Math.abs(t.display.scale-e)<.25||t.priority){let e=this.images.pop();e&&(e instanceof A||e.priority)?(t.priority&&this.images.push(t),this.images.push(e)):t&&this.images.push(t)}else t&&this.images.push(t);e=t.display.scale}this.images.length===0&&(this.images=[...this.allImages]),this.scaleFactors=this.images.map(e=>e.display.scale),this.maxScaleFactor=Math.max(...this.scaleFactors)}),O(this,`loadFullResource`,async()=>{if(!this.isFullyLoaded&&this.lazyLoader){this.isFullyLoaded=!0;let e=await this.lazyLoader();this.addImages(e)}}),O(this,`fallback`,[this.loadFullResource]),this.id=e.id,this.points=l.DnaFactory.singleBox(e.width,e.height),this.lazyLoader=e.loadFullImages,e.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:l.DnaFactory.singleBox(e.width,e.height),height:e.height,width:e.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:3,minSize:255,maxImageSize:2048,quality:1.5,...e.renderOptions||{}},this.addImages(e.images)}applyProps(e){e.renderSmallestFallback!==void 0&&e.renderSmallestFallback!==this.renderOptions.renderSmallestFallback&&(this.renderOptions.renderSmallestFallback=e.renderSmallestFallback),e.renderLayers!==void 0&&e.renderLayers!==this.renderOptions.renderLayers&&(this.renderOptions.renderLayers=e.renderLayers),e.minSize!==void 0&&e.minSize!==this.renderOptions.minSize&&(this.renderOptions.minSize=e.minSize),e.maxImageSize!==void 0&&e.maxImageSize!==this.renderOptions.maxImageSize&&(this.renderOptions.maxImageSize=e.maxImageSize),e.quality!==void 0&&e.quality!==this.renderOptions.quality&&(this.renderOptions.quality=e.quality)}appendChild(e){this.addImages([e])}removeChild(e){this.images.indexOf(e)!==-1&&(this.images=this.images.filter(t=>t!==e),this.sortByScales())}insertBefore(e,t){this.addImages([e])}hideInstance(){}addImages(e){for(let t of e)t.__parent=this,t.__owner=this.__owner;this.allImages.push(...e.filter(Boolean)),this.sortByScales()}sortByScales(){this._scheduleSortByScales=!0}getScheduledUpdates(e,t){return this._scheduleSortByScales?[this._sortByScales]:this.isFullyLoaded?[]:t>1/this.maxScaleFactor?this.fallback:[]}getAllPointsAt(e,t,n){if(this.images.length===0)return[];let r=j(1/(n||1)/(window.devicePixelRatio||1),this.images,this.renderOptions.quality),i=this.images.length,a=t?(0,l.compose)(t,(0,l.translate)(this.x,this.y)):(0,l.translate)(this.x,this.y);if(r!==this.images.length-1&&this.images[r+1]){let t=[];for(let e=i-1;e>=r;e--)t.push(e);let o=t[0];this.renderOptions.renderLayers&&(t=t.slice(-Math.min(t.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&t.indexOf(o)===-1&&t.unshift(o);let s=[];for(let r=0;r<t.length;r++)s.push(...this.images[t[r]].getAllPointsAt(e,a,n));return s}return this.images[r].getAllPointsAt(e,a,n)}};function I(e,t,n,r,i){let a=Math.PI/180*i,o=Math.cos(a),s=Math.sin(a);return[o*(n-e)+s*(r-t)+e,o*(r-t)-s*(n-e)+t]}var L=class e extends k{constructor(e,t){super(),O(this,`id`,void 0),O(this,`type`,`world-object`),O(this,`scale`,void 0),O(this,`layers`,void 0),O(this,`points`,void 0),O(this,`worldPoints`,void 0),O(this,`intersectionBuffer`,(0,l.dna)(5)),O(this,`aggregateBuffer`,(0,l.dna)(9)),O(this,`invertedBuffer`,(0,l.dna)(9)),O(this,`rotation`,0),O(this,`filteredPointsBuffer`,void 0),O(this,`_updatedList`,[]),O(this,`geometry`,void 0);let{x:n=0,y:r=0}=t||{};e?(this.id=e.id||``,this.scale=1,this.layers=e.layers,this.points=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.worldPoints=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.filteredPointsBuffer=(0,l.dna)(e.layers.length*5)):(this.id=``,this.scale=1,this.layers=[],this.points=(0,l.dna)(5),this.worldPoints=(0,l.dna)(5),this.filteredPointsBuffer=(0,l.dna)(5))}static createWithProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){let t=e.x||0,n=e.y||0;this.id=e.id;let r=e.scale===void 0?this.scale:e.scale;this.points[0]=1,this.points[1]=t,this.points[2]=n,this.points[3]=t+e.width,this.points[4]=n+e.height,this.rotation=e.rotation||0,this.worldPoints[3]=this.worldPoints[1]+e.width,this.worldPoints[4]=this.worldPoints[2]+e.height,e.scale&&e.scale!==1&&this.atScale(r),this.scale=r}appendChild(e){e.points[0]===0&&e.points.set(this.points),e.__owner.value=this,this.addLayers([e])}removeChild(e){this.layers=this.layers.filter(t=>t!==e),this.filteredPointsBuffer=(0,l.dna)(this.layers.length*5)}insertBefore(e,t){let n=this.layers.indexOf(t);if(n===-1||this.layers.indexOf(e)!==-1)return;let r=this.layers.slice(0,n),i=this.layers.slice(n);this.layers=[...r,e,...i]}hideInstance(){console.warn(`hideInstance: not yet implemented`)}getObjectsAt(e,t){if(this.rotation&&(e=this.applyRotation(e)),(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer)[0]===0)return[];let n=this.layers.length,r=[];for(let i=0;i<n;i++){let n=this.layers[i];if(t&&n.isShape){let t=(0,l.transform)(n.points,(0,l.translate)(this.x,this.y));if(!n.intersects([e[1]-t[1],e[2]-t[2]]))continue}if((0,l.hidePointsOutsideRegion)((0,l.transform)(n.points,(0,l.translate)(this.x,this.y)),e,this.filteredPointsBuffer)[0]!==0&&r.push(n),t){let i=n;r.push(...i.getObjectsAt(e,t))}}return r}applyRotation(e){if(this.rotation){let t={x:e[1],y:e[2]},n={x:e[1],y:e[4]},r={x:e[3],y:e[2]},i={x:e[3],y:e[4]},a=this.points[1]+(this.points[3]-this.points[1])/2,o=this.points[2]+(this.points[4]-this.points[2])/2,[s,c]=I(a,o,t.x,t.y,this.rotation),[u,d]=I(a,o,n.x,n.y,this.rotation),[f,p]=I(a,o,r.x,r.y,this.rotation),[m,h]=I(a,o,i.x,i.y,this.rotation),g=Math.min(s,u,f,m),_=Math.max(s,u,f,m),v=Math.min(c,d,p,h),y=Math.max(c,d,p,h);return(0,l.dna)([e[0],g,v,_,y])}return e}getAllPointsAt(e,t,n){let r=(0,l.compose)((0,l.translate)(this.x,this.y),(0,l.scale)(this.scale),this.aggregateBuffer);this.rotation&&(e=this.applyRotation(e));let i=(0,l.getIntersection)(e,this.points,this.intersectionBuffer),a=this.layers.length,o=[],s=(0,l.transform)(i,(0,l.compose)((0,l.scale)(1/this.scale),(0,l.translate)(-this.x,-this.y),this.invertedBuffer)),c=t?(0,l.compose)(t,r,this.aggregateBuffer):r,u=n*this.scale;for(let e=0;e<a;e++)o.push(...this.layers[e].getAllPointsAt(s,c,u));return o}addLayers(e){let t=[];for(let n of e)this.layers.indexOf(n)===-1&&(t.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,l.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(t),this.filteredPointsBuffer=(0,l.dna)(this.layers.length*5)}getScheduledUpdates(e,t){let n=this.layers.length;this._updatedList=[];let r=t*this.scale;for(let t=0;t<n;t++){let n=this.layers[t].getScheduledUpdates(e,r);n&&this._updatedList.push(...n)}return this._updatedList}},R=class e extends k{get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}constructor(e=0,t=0,n=100,r=`left-to-right`){super(),O(this,`id`,`world`),O(this,`_width`,void 0),O(this,`_height`,void 0),O(this,`aspectRatio`,void 0),O(this,`viewingDirection`,void 0),O(this,`aggregateBuffer`,(0,l.dna)(9)),O(this,`isDirty`,!1),O(this,`zones`,[]),O(this,`filteredPointsBuffer`,void 0),O(this,`selectedZone`,void 0),O(this,`triggerQueue`,[]),O(this,`activatedEvents`,[]),O(this,`_updatedList`,[]),O(this,`translationBuffer`,(0,l.dna)(9)),O(this,`needsRecalculate`,!0),O(this,`emptyPaintables`,[]),O(this,`renderOrder`,[]),O(this,`points`,void 0),O(this,`objects`,[]),O(this,`subscriptions`,[]),O(this,`_propagateEventTargets`,[]),O(this,`_alreadyFlushed`,[]),this._width=e,this._height=t,this.aspectRatio=Number.isNaN(e/t)?1:e/t,this.viewingDirection=r,this.points=(0,l.dna)(n*5),this.filteredPointsBuffer=(0,l.dna)(n*5)}static withProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){e.width!==void 0&&e.height!==void 0&&(e.width!==this._width||e.height!==this._height)&&this.resize(e.width,e.height),e.viewingDirection!==this.viewingDirection&&(this.viewingDirection=e.viewingDirection,this.triggerRepaint())}propagateTouchEvent(e,t,n){let r=[];for(let e of n)if(e.x&&e.y){let t=l.DnaFactory.singleBox(1,1,e.x,e.y);r.push(this.getObjectsAt(t,!0).reverse())}return r.map(n=>this.propagateEvent(e,t,n,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(e,t,n,r,i={}){let a=l.DnaFactory.singleBox(1,1,n,r),o=this.getObjectsAt(a,!0).reverse();return this.propagateEvent(e,t,o,i)}propagateEvent(e,t,n,{bubbles:r=!1,cancelable:i=!1}={}){t.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let a=!1;t.stopPropagation=()=>{a=!0};let o=n.length;for(let e=o-1;e>=0;e--){this._propagateEventTargets.unshift(n[e][0]);let t=n[e][1].length;if(t)for(let r=0;r<t;r++)this._propagateEventTargets.unshift(n[e][1][r])}let s=this._propagateEventTargets.length,c=!1;for(let n=0;n<s&&(t.atlasTarget=this._propagateEventTargets[n],t.atlasWorld=this,c=this._propagateEventTargets[n].dispatchEvent(e,t)||c,!a);n++);return c&&this.triggerRepaint(),this._propagateEventTargets}appendChild(e){let t=this.appendWorldObject(e);this.renderOrder.push(t/5)}removeChild(e){let t=this.objects.indexOf(e);if(t===-1){for(let t of this.objects)if(t&&t.id===e.id){this.removeChild(t);return}return}this.objects[t]=null,this.renderOrder=this.renderOrder.filter(e=>e!==t),this.points[t*5]=0,this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(e,t){let n=this.objects.indexOf(t);if(n===-1)return;let r=this.appendWorldObject(e);this.renderOrder.splice(n-1,0,r/5)}hideInstance(){}asWorldObject(){return null}addZone(e){this.zones.push(e)}selectZone(e){if(typeof e==`string`){let t=this.zones.length;for(let n=0;n<t;n++)if(this.zones[n].id===e){this.selectedZone=n,this.trigger(`zone-changed`);return}}else this.zones[e]&&(this.selectedZone=e,this.trigger(`zone-changed`))}deselectZone(){this.selectedZone=void 0}getActiveZone(){if(this.selectedZone)return this.zones[this.selectedZone]}hasActiveZone(){return this.selectedZone!==void 0}checkResizeInternalBuffer(){if((0,l.dnaLength)(this.points)===this.objects.length){let e=this.points,t=(0,l.dna)(this.points.length*2);t.set(e,0),this.points=t}}appendWorldObject(e){this.checkResizeInternalBuffer();let t=this.objects.length*5,n=e.points;return e.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),e.points[1]=n[1],e.points[2]=n[2],e.points[3]=n[3],e.points[4]=n[4],this.objects.push(e),this.filteredPointsBuffer=(0,l.dna)(this.objects.length*5),this.needsRecalculate=!0,this.triggerRepaint(),t}recalculateWorldSize(){let e=!1;if(this.needsRecalculate){let t=new Int32Array(this.objects.length),n=new Int32Array(this.objects.length),r=this.renderOrder.length;for(let e=0;e<r;e++){let r=this.renderOrder[e];this.objects[r]&&(t[e]=this.points[r*5+3],n[e]=this.points[r*5+4])}let i=Math.max(...t);i!==this._width&&(this._width=i,e=!0);let a=Math.max(...n);a!==this._height&&(this._height=a,e=!0),e&&this.trigger(`recalculate-world-size`,{width:i,height:a}),this.needsRecalculate=!1}return e}addObjectAt(e,t){t.width&&!t.height?t.height=t.width/e.width*e.height:t.height&&!t.width&&(t.width=t.height/e.height*e.width),(!t||!t.width||!t.height)&&(t.width=e.width,t.height=e.height);let{width:n,x:r,y:i}=t,a=n/e.width;this.checkResizeInternalBuffer(),this.points.set(l.DnaFactory.singleBox(e.width,e.height,0,0),this.objects.length*5);let o=new L(e);return o.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(o),this.scaleWorldObject(this.objects.length-1,a),this.translateWorldObject(this.objects.length-1,r,i),this.filteredPointsBuffer=(0,l.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,o}scaleWorldObject(e,t){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.scaleAtOrigin)(t,this.points[e*5+1],this.points[e*5+2]));let n=this.objects[e];n&&(n.atScale(t),this.triggerRepaint())}translateWorldObject(e,t,n){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.translate)(t,n));let r=this.objects[e];r&&(r.translate(t,n),this.triggerRepaint())}resize(e,t){return this._width=e,this._height=t,this.aspectRatio=e/t,this.triggerRepaint(),this}getObjects(){return this.objects}getPoints(){return this.points}getPointsFromViewer(e,t){let n=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y);return this.getPointsAt(n,t,e.scale)}addLayoutSubscriber(e){return this.subscriptions.push(e),()=>{this.subscriptions.splice(this.subscriptions.indexOf(e),1)}}getScheduledUpdates(e,t){let n=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),r=this.objects.length;this._updatedList=[];for(let i=0;i<r;i++)if(n[i*5]!==0){if(!this.objects[i])continue;this._updatedList.push(...this.objects[i].getScheduledUpdates(e,t))}return this._updatedList}getObjectsAt(e,t=!1){let n=this.getActiveZone(),r=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),i=this.renderOrder.length,a=[];for(let o=0;o<i;o++){let i=this.renderOrder[o];if(r[i*5]!==0){let r=this.objects[i];if(!r||n&&n.objects.indexOf(r)===-1)continue;if(r.type!==`world-object`){a.push([r,[r]]);continue}t?a.push([r,r.getObjectsAt(e,t)]):a.push([r,this.emptyPaintables])}}return a}getPointsAt(e,t,n=1){let r=this.getObjectsAt(e),i=(0,l.compose)((0,l.scale)(n),(0,l.translate)(-e[1],-e[2]),this.translationBuffer),a=t?(0,l.compose)(t,i,this.aggregateBuffer):i,o=r.length,s=[];for(let t=0;t<o;t++)r[t]&&s.push(...r[t][0].getAllPointsAt(e,a,n));return s}flushSubscriptions(){if(this.triggerQueue.length){this._alreadyFlushed=[];let e=this.triggerQueue.length;for(let t=0;t<e;t++){if(this._alreadyFlushed.indexOf(this.triggerQueue[t][0])!==-1)continue;this.triggerQueue[t][1]===void 0&&this._alreadyFlushed.push(this.triggerQueue[t][0]);let e=this.subscriptions.length;for(let n=0;n<e;n++)this.subscriptions[n].apply(null,this.triggerQueue[t])}this.triggerQueue=[]}}trigger(e,t){this.triggerQueue.push([e,t])}triggerEventActivation(){this.trigger(`event-activation`)}triggerRepaint(){this.trigger(`repaint`)}gotoRegion(e){this.trigger(`goto-region`,e)}goHome(e=!1,t){this.trigger(`go-home`,{immediate:e,paddingPx:t})}zoomTo(e,t,n){this.trigger(`zoom-to`,{point:t,factor:e,stream:n})}zoomIn(e){this.trigger(`zoom-to`,{point:e,factor:.5})}zoomOut(e){this.trigger(`zoom-to`,{point:e,factor:2})}constraintBounds(e){this.trigger(`constrain-bounds`,{immediate:e})}};function ae(e){let{src:t,target:n}=e,r=n?n.width:e.width,i=n?n.height:e.height;return new L({id:t,height:i,width:r,layers:[A.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}const oe={margin:0};var se=class{constructor(e,t={}){O(this,`id`,void 0),O(this,`config`,void 0),O(this,`points`,void 0),O(this,`objects`,void 0),this.id=e.map(e=>e.id).join(`$$`),this.config={...oe,...t},this.points=(0,l.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,n){return[]}};const z=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,ce={},le=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var B=class extends k{constructor(){super(),O(this,`id`,void 0),O(this,`type`,`spacial-content`),O(this,`points`,void 0),O(this,`hoverEvents`,!1),O(this,`activeEvents`,!1),O(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),O(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),O(this,`hovering`,void 0),O(this,`pressing`,void 0),O(this,`props`,{}),O(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),O(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),O(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),O(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=T(12),this.points=(0,l.dna)(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps(e={}){let t=!1;if(e.interactive!==this.props.interactive&&(t=!0,this.props.interactive=e.interactive),e.style){let n=e.border||e.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let e=ce[n]||z.exec(n)||z.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=ce[n]=e)}if(this._parsed.border.id&&(e.style.borderWidth=this._parsed.border.match[1],e.style.borderStyle=`solid`,e.style.borderColor=this._parsed.border.match[4]),e.style.outline!==this._parsed.outline.id)if(!e.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let t=ce[e.style.outline]||z.exec(e.style.outline)||z.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=ce[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of le)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}},V=class extends k{constructor(){super(),O(this,`type`,`spacial-content`),O(this,`id`,void 0),O(this,`points`,void 0),O(this,`color`,`#000`),O(this,`backgroundColor`,void 0),O(this,`hovering`,void 0),O(this,`pressing`,void 0),O(this,`text`,``),O(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:(0,l.dna)(5)}),O(this,`className`,void 0),O(this,`html`,void 0),O(this,`interactive`,!1),O(this,`props`,{font:`18px Arial, sans-serif`,lineHeight:1,textAlign:`left`,verticalAlign:`top`,paddingX:0,paddingY:0,fitParent:!1,lineBreak:`auto`,strokeText:!1,sizeToFill:!1,maxFontSizeToFill:void 0,allowNewLine:!0,justifyLines:!1,renderHDPI:!1,textDecoration:`none`,interactive:!1,relativeSize:!1}),this.id=``,this.points=(0,l.dna)(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps({id:e,target:t,text:n,color:r,backgroundColor:i,fontSize:a=18,interactive:o,fontFamily:s=`Arial, sans-serif`,...c}){c.font=`${a}px ${s}`,this.interactive=o||!1,n!==void 0&&(this.text=n||``),r&&(this.color=r),i&&(this.backgroundColor=i),e&&(this.id=e),t&&(this.points=l.DnaFactory.singleBox(t.width,t.height,t.x,t.y),this.display.points=this.points,this.display.width=t.width,this.display.height=t.height),this.props={...this.props,...c},this.__revision++}};const H=Math.pow,U=Math.sqrt,ue=Math.sin,de=Math.cos,fe=Math.PI,pe=1.70158,me=pe*1.525,he=pe+1,ge=2*fe/3,_e=2*fe/4.5,W=function(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},G={linear:e=>e,easeInQuad:function(e){return e*e},easeOutQuad:function(e){return 1-(1-e)*(1-e)},easeInOutQuad:function(e){return e<.5?2*e*e:1-H(-2*e+2,2)/2},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return 1-H(1-e,3)},easeInOutCubic:function(e){return e<.5?4*e*e*e:1-H(-2*e+2,3)/2},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1-H(1-e,4)},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-H(-2*e+2,4)/2},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1-H(1-e,5)},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1-H(-2*e+2,5)/2},easeInSine:function(e){return 1-de(e*fe/2)},easeOutSine:function(e){return ue(e*fe/2)},easeInOutSine:function(e){return-(de(fe*e)-1)/2},easeInExpo:function(e){return e===0?0:H(2,10*e-10)},easeOutExpo:function(e){return e===1?1:1-H(2,-10*e)},easeInOutExpo:function(e){return e===0?0:e===1?1:e<.5?H(2,20*e-10)/2:(2-H(2,-20*e+10))/2},easeInCirc:function(e){return 1-U(1-H(e,2))},easeOutCirc:function(e){return U(1-H(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-U(1-H(2*e,2)))/2:(U(1-H(-2*e+2,2))+1)/2},easeInBack:function(e){return he*e*e*e-pe*e*e},easeOutBack:function(e){return 1+he*H(e-1,3)+pe*H(e-1,2)},easeInOutBack:function(e){return e<.5?H(2*e,2)*((me+1)*2*e-me)/2:(H(2*e-2,2)*((me+1)*(e*2-2)+me)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-H(2,10*e-10)*ue((e*10-10.75)*ge)},easeOutElastic:function(e){return e===0?0:e===1?1:H(2,-10*e)*ue((e*10-.75)*ge)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-(H(2,20*e-10)*ue((20*e-11.125)*_e))/2:H(2,-20*e+10)*ue((20*e-11.125)*_e)/2+1},easeInBounce:function(e){return 1-W(1-e)},easeOutBounce:W,easeInOutBounce:function(e){return e<.5?(1-W(1-2*e))/2:(1+W(2*e-1))/2}};var ve=class{constructor(e){O(this,`runtime`,void 0),O(this,`pendingTransition`,void 0),O(this,`lastZoomTo`,null),O(this,`isConstraining`,!1),O(this,`lastGoToRegion`,null),this.runtime=e,this.pendingTransition={from:(0,l.dna)(5),to:(0,l.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:G.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,l.dna)(this.runtime.target),this.pendingTransition.to=(0,l.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 n=this.pendingTransition,r=n.total_time===0?0:(n.elapsed_time+t)/n.total_time,i=n.total_time===0?1:r===0?0:n.timingFunction(r);e[1]=n.from[1]+(n.to[1]-n.from[1])*i,e[2]=n.from[2]+(n.to[2]-n.from[2])*i,e[3]=n.from[3]+(n.to[3]-n.from[3])*i,e[4]=n.from[4]+(n.to[4]-n.from[4])*i,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:G.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:n,stream:r=!1,transition:i}=t;this.lastZoomTo={factor:e,options:t};let a=this.runtime.getZoomedPosition(e,{origin:n}),o=Math.abs(1-e);this.applyTransition(a,i,{duration:2e3*o,easing:G.easeOutExpo,constrain:!0,callback:()=>{this.lastZoomTo=null}},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){this.isConstraining=!0;let[n,r]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});n&&(this.applyTransition(r,e,{duration:500,easing:G.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame())}applyTransition(e,t,n,{stream:r}={}){this.pendingTransition.from=(0,l.dna)(this.runtime.target),this.pendingTransition.to=e,r||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=t?.duration===void 0?n?.duration===void 0?1e3:n.duration:t.duration,this.pendingTransition.constrain=t?.constrain===void 0?n?.constrain===void 0?!1:n.constrain:t.constrain,this.pendingTransition.timingFunction=t?.easing||n?.easing||G.easeInOutSine}goToRegion(e,{transition:t}={}){this.lastGoToRegion={target:e,options:{transition:t}};let n=this.runtime.clampRegion(e);this.applyTransition(l.DnaFactory.singleBox(n.width,n.height,n.x,n.y),t,{duration:1e3,easing:G.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};Number.MIN_VALUE+1;var ye=class{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}constructor(e,t,n,r=[],i){O(this,`id`,T()),O(this,`ready`,!1),O(this,`renderer`,void 0),O(this,`world`,void 0),O(this,`target`,void 0),O(this,`homePosition`,void 0),O(this,`manualHomePosition`,void 0),O(this,`manualFocalPosition`,void 0),O(this,`focalPosition`,void 0),O(this,`homePaddingPx`,void 0),O(this,`transitionManager`,void 0),O(this,`aggregate`,void 0),O(this,`transformBuffer`,(0,l.dna)(500)),O(this,`lastTarget`,(0,l.dna)(5)),O(this,`zoomBuffer`,(0,l.dna)(5)),O(this,`logNextRender`,!1),O(this,`pendingUpdate`,!0),O(this,`isCommitting`,!1),O(this,`firstRender`,!0),O(this,`lastTime`,void 0),O(this,`stopId`,void 0),O(this,`mode`,`explore`),O(this,`controllers`,[]),O(this,`controllersRunning`,!1),O(this,`controllerStopFunctions`,[]),O(this,`maxScaleFactor`,1),O(this,`_viewerToWorld`,{x:0,y:0}),O(this,`_lastGoodScale`,1),O(this,`_canvasWidth`,0),O(this,`_canvasHeight`,0),O(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),O(this,`fpsLimit`,void 0),O(this,`options`,void 0),O(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),O(this,`_viewport`,{x:0,y:0,width:0,height:0}),O(this,`setViewport`,e=>{let t=Math.round(e.x===void 0?this.target[1]:e.x),n=Math.round(e.y===void 0?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]=n+e.height:this.target[4]=this.target[4]-this.target[2]+n,Math.abs(this.target[1]-t)>.01&&(this.target[1]=t),Math.abs(this.target[2]-n)>.01&&(this.target[2]=n),this.pendingUpdate=!0}),O(this,`render`,e=>{let t=e-this.lastTime;if(this.isCommitting||this.fpsLimit&&t<1e3/this.fpsLimit){this.stopId=window.requestAnimationFrame(this.render);return}this.lastTime=e,this.world.flushSubscriptions(),this.stopId=window.requestAnimationFrame(this.render),this.hook(`useFrame`,t);let n=this.pendingUpdate,r=this.renderer.pendingUpdate();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,this.updateControllerPosition()),!this.firstRender&&!n&&!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 i=this.getScaleFactor(),a=this.renderer.getPointsAt(this.world,this.target,this.aggregate,i),o=a.length;for(let e=0;e<o;e++){let t=a[e][0],n=a[e][1],r=a[e][2],i=r?(0,l.transform)(n,r,this.transformBuffer):n;this.renderer.prepareLayer(t,t.__parent&&r?(0,l.transform)(t.__parent.crop||t.__parent.points,r):i);let o=i.length/5;for(let e=0;e<o;e++){let n=e*5;i[n]!==0&&(this.renderer.paint(t,e,i[n+1],i[n+2],i[n+3]-i[n+1],i[n+4]-i[n+2]),this.hook(`useAfterPaint`,t))}this.renderer.finishLayer(t,n)}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 s=this.world.getScheduledUpdates(this.target,i),c=s.length;if(c>0)for(let e=0;e<c;e++){let t=s[c-e-1]();t?t.then(()=>{this.pendingUpdate=!0}):this.pendingUpdate=!0}}),this.renderer=e,this.world=t,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1.5,...i||{}},this.target=l.DnaFactory.projection(n),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=l.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new ve(this),this.aggregate=(0,l.scale)(1),this.world.addLayoutSubscriber(e=>{e===`repaint`&&(this.pendingUpdate=!0),e===`recalculate-world-size`&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=r,this.render(this.lastTime),this.startControllers(),this.homePaddingPx=void 0;let a=this.getRendererScreenPosition();this._canvasWidth=a?.width||0,this._canvasHeight=a?.height||0}setHomePosition(e){this.homePosition.set(l.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}setHomePaddingPx(e){e==null?this.homePaddingPx=void 0:this.homePaddingPx=e,this.pendingUpdate=!0}getHomePaddingPx(){return this.homePaddingPx}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();let e=this.getRendererScreenPosition();e&&(this._canvasWidth=e.width,this._canvasHeight=e.height),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}}getHomeTarget(e={}){let t=this.getRendererScreenPosition(),n=t?.width||this._canvasWidth||this.width,r=t?.height||this._canvasHeight||this.height;t&&(this._canvasWidth=t.width,this._canvasHeight=t.height);let i=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,a={left:0,right:0,top:0,bottom:0};typeof i==`number`?a.left=a.right=a.top=a.bottom=i:i&&(a.left=i.left||0,a.right=i.right||0,a.top=i.top||0,a.bottom=i.bottom||0);let o=Math.max(1,n-a.left-a.right),s=o/Math.max(1,r-a.top-a.bottom),c=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]},l=c.width/c.height,u=e.cover?l<s:l>s,d=c.width,f=c.height,p=c.x,m=c.y;u?(d=c.width,f=c.width/s,p=c.x,m=c.y-(f-c.height)/2):(f=c.height,d=c.height*s,p=c.x-(d-c.width)/2,m=c.y);let h=d/o,g=a.left*h,_=a.right*h,v=a.top*h,y=a.bottom*h;return{x:p-g,y:m-v,width:d+g+_,height:f+v+y}}getHomeTargetStrand(e={}){let t=this.getHomeTarget(e);return l.DnaFactory.singleBox(t.width,t.height,t.x,t.y)}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=this.getHomeTarget(e);this.target[1]=Math.round(t.x),this.target[2]=Math.round(t.y),this.target[3]=Math.round(t.x+t.width),this.target[4]=Math.round(t.y+t.height);let n=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,r=n?{ref:!0,homePaddingPx:n}:{ref:!0};this.constrainBounds(this.target,r),this.updateControllerPosition()}resize(e,t,n,r){this.transitionManager.hasPending()&&this.transitionManager.stopTransition(),this.updateFocalPosition(e-t,n-r);let i=t/e,a=r/n;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*i,this.target[4]=this.target[2]+(this.target[4]-this.target[2])*a,this.goHome({position:this.focalPosition}),this.renderer.resize(t,r),this.pendingUpdate=!0,this.transitionManager.resumeTransition()}updateFocalPosition(e,t){if(!this.manualFocalPosition){let e=this.width,t=this.height,n=Math.min(e,t),r=this.x+0,i=this.y+0;if(e<t){let e=this.height-this.width;this.focalPosition=l.DnaFactory.projection({x:r,y:i+e/2,width:n-0,height:n-0}),this.pendingUpdate=!0}else{let e=this.width-this.height;this.focalPosition=l.DnaFactory.projection({x:r+e/2,y:i,width:n-0,height:n-0}),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:n=!1,homePaddingPx:r}={}){let{minX:i,maxX:a,minY:o,maxY:s}=this.getBounds({target:e,padding:t,homePaddingPx:r}),c=!1,u=n?e:(0,l.dna)(e),d=Math.round(e[3]-e[1]),f=Math.round(e[4]-e[2]);return i>e[1]&&(c=!0,u[1]=i,u[3]=i+d),o>e[2]&&(c=!0,u[2]=o,u[4]=o+f),a<e[1]&&(c=!0,u[1]=a,u[3]=a+d),s<e[2]&&(c=!0,u[2]=s,u[4]=s+f),[c,u]}getBounds(e){let t=e.target||this.target,n=e.padding,r=this.options.visibilityRatio,i=Math.abs(1-r),a=0,o=0,s=0,c=0;if(e.homePaddingPx){let t=this.getScaleFactor(!1);typeof e.homePaddingPx==`number`?a=o=s=c=e.homePaddingPx/t:(a=e.homePaddingPx.left?e.homePaddingPx.left/t:0,o=e.homePaddingPx.right?e.homePaddingPx.right/t:0,s=e.homePaddingPx.top?e.homePaddingPx.top/t:0,c=e.homePaddingPx.bottom?e.homePaddingPx.bottom/t:0)}if(this.world.hasActiveZone()){let e=this.world.getActiveZone();if(e){let r=t[3]-t[1]<e.points[3]-e.points[1],i=t[4]-t[2]<e.points[4]-e.points[2];return{minX:r?e.points[1]-n:e.points[1]+(e.points[3]-e.points[1])/2-(t[3]-t[1])/2,maxX:i?e.points[2]-n:e.points[2]+(e.points[4]-e.points[2])/2-(t[4]-t[2])/2,minY:r?e.points[3]+n:e.points[1]+(e.points[3]-e.points[1])/2-(t[3]-t[1])/2,maxY:i?e.points[4]+n:e.points[2]+(e.points[4]-e.points[2])/2-(t[4]-t[2])/2}}}let l=t[3]-t[1],u=this.world.width+a+o,d=-l*i-a,f=u-l-d,p=t[4]-t[2],m=this.world.height+s+c,h=-p*i-s,g=m-p-h,_=Math.round(Math.max(d,f)),v=Math.round(Math.min(d,f)),y=Math.round(Math.max(h,g));return{minX:v,maxX:_,minY:Math.round(Math.min(h,g)),maxY:y}}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:n}){let r=n?{width:n[3]-n[1],height:n[4]-n[2]}:void 0,i=r?this.renderer.getScale(r.width,r.height):this.getScaleFactor(),a=r?r.width:this.width,o=r?r.height:this.height,s=this.getRendererScreenPosition()?.width,c=this.world.width,u=s?s/c:1,d=this.options.maxUnderZoom,f=Math.max(u||1,this.options.maxOverZoom),p=1/e,m=i*p;if(p<1){let t=a*i,n=o*i;this.world.width/t>this.world.height/n?this.world.width*m<~~(a*i)*d&&(e=this.world.width*i/(a*i*d)):this.world.height*m<~~(o*i)*d&&(e=this.world.height*i/(o*i*d))}else m>f&&(e=i/f);let h=(0,l.transform)(this.target,(0,l.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(h,{ref:!0,panPadding:100}),h}clampRegion({x:e,y:t,width:n,height:r,padding:i=0}){let a=this.width,o=this.height,s=n/a<r/o,c=e-i,l=t-i,u=n+i*2,d=r+i*2;if(s){let e=d/o*a;return{x:c-(e-u)/2,y:l,width:e,height:d}}let f=u/a*o;return{x:c,y:l-(f-d)/2,width:u,height:f}}viewerToWorld(e,t){let n=this.getScaleFactor();return this._viewerToWorld.x=this.target[1]+e/n,this._viewerToWorld.y=this.target[2]+t/n,this._viewerToWorld}worldToViewer(e,t,n,r){let i=l.DnaFactory.singleBox(n,r,e,t);return(0,l.mutate)(i,(0,l.compose)((0,l.scale)(this.getScaleFactor()),(0,l.translate)(-this.target[1],-this.target[2]))),{x:i[1],y:i[2],width:i[3]-i[1],height:i[4]-i[2],strand:i}}setScale(e,t){(0,l.mutate)(this.target,(0,l.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 this.stopId!==void 0&&(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 n=this.hooks[e].length;if(n!==0)for(let r=0;r<n;r++)this.hooks[e][r](t)}registerHook(e,t){return this.hooks[e].push(t),()=>{this.hooks[e]=this.hooks[e].filter(e=>e!==t)}}updateNextFrame(){this.pendingUpdate=!0}};const be=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,xe={},Se=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var Ce=class extends k{constructor(){super(),O(this,`id`,void 0),O(this,`type`,`spacial-content`),O(this,`isShape`,!0),O(this,`points`,void 0),O(this,`hoverEvents`,!1),O(this,`activeEvents`,!1),O(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),O(this,`boundingBox`,null),O(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),O(this,`hovering`,void 0),O(this,`pressing`,void 0),O(this,`props`,{}),O(this,`shape`,{type:`none`}),O(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),O(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),O(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),O(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=T(12),this.points=(0,l.dna)(5),this.shape={type:`none`}}updateBoundingBox(){if(this.shape.type===`none`)return;let e=this.shape.points;if(this.shape.points.length>2){let t=Math.min(...e.map(e=>e[0])),n=Math.min(...e.map(e=>e[1])),r=Math.max(0,...e.map(e=>e[0])),i=Math.max(0,...e.map(e=>e[1]));this.boundingBox={x:t,y:n,width:r-t,height:i-n};return}this.boundingBox=null}intersects(e){if(!e||this.shape.type===`none`)return!1;let[t,n]=e,r=this.shape.points,i=this.boundingBox;if(i||(this.updateBoundingBox(),i=this.boundingBox),!i||t<i.x||t>i.x+i.width||n<i.y||n>i.height+i.y)return!1;let a=!1;for(let e=0,i=r.length-1;e<r.length;i=e++)r[e][1]>n!=r[i][1]>n&&t<(r[i][0]-r[e][0])*(n-r[e][1])/(r[i][1]-r[e][1])+r[e][0]&&(a=!a);return a}getAllPointsAt(e,t){return e[3]-e[1]===1&&e[4]-e[2]===1?this.intersects([e[1],e[2]])?[[this,this.points,t]]:[]:[[this,this.points,t]]}applyProps(e={}){let t=!1;if(e.points)if(this.shape.type!==`polygon`||this.shape.points.length!==e.points.length)this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox();else{let t=!1,n=e.points.length;for(let r=0;r<n;r++)if(e.points[r][0]!==this.shape.points[r][0]||e.points[r][1]!==this.shape.points[r][1]){t=!0;break}t&&(this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox())}if(e.interactive!==this.props.interactive&&(t=!0,this.props.interactive=e.interactive),(e.open||e.open===!1)&&(t=!0,this.shape.open=e.open),e.style){let n=e.border||e.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let e=xe[n]||be.exec(n)||be.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=xe[n]=e)}if(this._parsed.border.id&&(e.style.borderWidth=this._parsed.border.match[1],e.style.borderStyle=`solid`,e.style.borderColor=this._parsed.border.match[4]),e.style.outline!==this._parsed.outline.id)if(!e.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let t=xe[e.style.outline]||be.exec(e.style.outline)||be.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=xe[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of Se)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}};const we=typeof performance==`object`&&performance&&typeof performance.now==`function`?performance:Date,Te=typeof AbortController==`function`?AbortController:class{constructor(){this.signal=new Oe}abort(e=Error(`This operation was aborted`)){this.signal.reason=this.signal.reason||e,this.signal.aborted=!0,this.signal.dispatchEvent({type:`abort`,target:this.signal})}},Ee=typeof AbortSignal==`function`,De=typeof Te.AbortSignal==`function`,Oe=Ee?AbortSignal:De?Te.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(e=>e!==t))}},ke=new Set,Ae=(e,t)=>{let n=`LRU_CACHE_OPTION_${e}`;Pe(n)&&Fe(n,`${e} option`,`options.${t}`,ze)},je=(e,t)=>{let n=`LRU_CACHE_METHOD_${e}`;if(Pe(n)){let{prototype:r}=ze,{get:i}=Object.getOwnPropertyDescriptor(r,e);Fe(n,`${e} method`,`cache.${t}()`,i)}},Me=(e,t)=>{let n=`LRU_CACHE_PROPERTY_${e}`;if(Pe(n)){let{prototype:r}=ze,{get:i}=Object.getOwnPropertyDescriptor(r,e);Fe(n,`${e} property`,`cache.${t}`,i)}},Ne=(...e)=>{typeof process==`object`&&process&&typeof process.emitWarning==`function`?process.emitWarning(...e):console.error(...e)},Pe=e=>!ke.has(e),Fe=(e,t,n,r)=>{ke.add(e),Ne(`The ${t} is deprecated. Please use ${n} instead.`,`DeprecationWarning`,e,r)},K=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),Ie=e=>K(e)?e<=2**8?Uint8Array:e<=2**16?Uint16Array:e<=2**32?Uint32Array:e<=2**53-1?Le:null:null;var Le=class extends Array{constructor(e){super(e),this.fill(0)}},Re=class{constructor(e){if(e===0)return[];this.heap=new(Ie(e))(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},ze=class e{constructor(t={}){let{max:n=0,ttl:r,ttlResolution:i=1,ttlAutopurge:a,updateAgeOnGet:o,updateAgeOnHas:s,allowStale:c,dispose:l,disposeAfter:u,noDisposeOnSet:d,noUpdateTTL:f,maxSize:p=0,maxEntrySize:m=0,sizeCalculation:h,fetchMethod:g,fetchContext:_,noDeleteOnFetchRejection:v,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:b,allowStaleOnFetchAbort:x,ignoreFetchAbort:S}=t,{length:C,maxAge:w,stale:T}=t instanceof e?{}:t;if(n!==0&&!K(n))throw TypeError(`max option must be a nonnegative integer`);let E=n?Ie(n):Array;if(!E)throw Error(`invalid max value: `+n);if(this.max=n,this.maxSize=p,this.maxEntrySize=m||this.maxSize,this.sizeCalculation=h||C,this.sizeCalculation){if(!this.maxSize&&!this.maxEntrySize)throw TypeError(`cannot set sizeCalculation without setting maxSize or maxEntrySize`);if(typeof this.sizeCalculation!=`function`)throw TypeError(`sizeCalculation set to non-function`)}if(this.fetchMethod=g||null,this.fetchMethod&&typeof this.fetchMethod!=`function`)throw TypeError(`fetchMethod must be a function if specified`);if(this.fetchContext=_,!this.fetchMethod&&_!==void 0)throw TypeError(`cannot set fetchContext without fetchMethod`);if(this.keyMap=new Map,this.keyList=Array(n).fill(null),this.valList=Array(n).fill(null),this.next=new E(n),this.prev=new E(n),this.head=0,this.tail=0,this.free=new Re(n),this.initialFill=1,this.size=0,typeof l==`function`&&(this.dispose=l),typeof u==`function`?(this.disposeAfter=u,this.disposed=[]):(this.disposeAfter=null,this.disposed=null),this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!v,this.allowStaleOnFetchRejection=!!b,this.allowStaleOnFetchAbort=!!x,this.ignoreFetchAbort=!!S,this.maxEntrySize!==0){if(this.maxSize!==0&&!K(this.maxSize))throw TypeError(`maxSize must be a positive integer if specified`);if(!K(this.maxEntrySize))throw TypeError(`maxEntrySize must be a positive integer if specified`);this.initializeSizeTracking()}if(this.allowStale=!!c||!!T,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!s,this.ttlResolution=K(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||w||0,this.ttl){if(!K(this.ttl))throw TypeError(`ttl must be a positive integer if specified`);this.initializeTTLTracking()}if(this.max===0&&this.ttl===0&&this.maxSize===0)throw TypeError(`At least one of max, maxSize, or ttl is required`);if(!this.ttlAutopurge&&!this.max&&!this.maxSize){let t=`LRU_CACHE_UNBOUNDED`;Pe(t)&&(ke.add(t),Ne(`TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.`,`UnboundedCacheWarning`,t,e))}T&&Ae(`stale`,`allowStale`),w&&Ae(`maxAge`,`ttl`),C&&Ae(`length`,`sizeCalculation`)}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new Le(this.max),this.starts=new Le(this.max),this.setItemTTL=(e,t,n=we.now())=>{if(this.starts[e]=t===0?0:n,this.ttls[e]=t,t!==0&&this.ttlAutopurge){let n=setTimeout(()=>{this.isStale(e)&&this.delete(this.keyList[e])},t+1);n.unref&&n.unref()}},this.updateItemAge=e=>{this.starts[e]=this.ttls[e]===0?0:we.now()},this.statusTTL=(n,r)=>{n&&(n.ttl=this.ttls[r],n.start=this.starts[r],n.now=e||t(),n.remainingTTL=n.now+n.ttl-n.start)};let e=0,t=()=>{let t=we.now();if(this.ttlResolution>0){e=t;let n=setTimeout(()=>e=0,this.ttlResolution);n.unref&&n.unref()}return t};this.getRemainingTTL=n=>{let r=this.keyMap.get(n);return r===void 0?0:this.ttls[r]===0||this.starts[r]===0?1/0:this.starts[r]+this.ttls[r]-(e||t())},this.isStale=n=>this.ttls[n]!==0&&this.starts[n]!==0&&(e||t())-this.starts[n]>this.ttls[n]}updateItemAge(e){}statusTTL(e,t){}setItemTTL(e,t,n){}isStale(e){return!1}initializeSizeTracking(){this.calculatedSize=0,this.sizes=new Le(this.max),this.removeItemSize=e=>{this.calculatedSize-=this.sizes[e],this.sizes[e]=0},this.requireSize=(e,t,n,r)=>{if(this.isBackgroundFetch(t))return 0;if(!K(n))if(r){if(typeof r!=`function`)throw TypeError(`sizeCalculation must be a function`);if(n=r(t,e),!K(n))throw TypeError(`sizeCalculation return invalid (expect positive integer)`)}else throw TypeError(`invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.`);return n},this.addItemSize=(e,t,n)=>{if(this.sizes[e]=t,this.maxSize){let t=this.maxSize-this.sizes[e];for(;this.calculatedSize>t;)this.evict(!0)}this.calculatedSize+=this.sizes[e],n&&(n.entrySize=t,n.totalCalculatedSize=this.calculatedSize)}}removeItemSize(e){}addItemSize(e,t){}requireSize(e,t,n,r){if(n||r)throw 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 n of this.indexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;if(i!==void 0&&e(i,this.keyList[n],this))return this.get(this.keyList[n],t)}}forEach(e,t=this){for(let n of this.indexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;i!==void 0&&e.call(t,i,this.keyList[n],this)}}rforEach(e,t=this){for(let n of this.rindexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;i!==void 0&&e.call(t,i,this.keyList[n],this)}}get prune(){return je(`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 n=this.keyList[t],r=this.valList[t],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;if(i===void 0)continue;let a={value:i};if(this.ttls){a.ttl=this.ttls[t];let e=we.now()-this.starts[t];a.start=Math.floor(Date.now()-e)}this.sizes&&(a.size=this.sizes[t]),e.unshift([n,a])}return e}load(e){this.clear();for(let[t,n]of e){if(n.start){let e=Date.now()-n.start;n.start=we.now()-e}this.set(t,n.value,n)}}dispose(e,t,n){}set(e,t,{ttl:n=this.ttl,start:r,noDisposeOnSet:i=this.noDisposeOnSet,size:a=0,sizeCalculation:o=this.sizeCalculation,noUpdateTTL:s=this.noUpdateTTL,status:c}={}){if(a=this.requireSize(e,t,a,o),this.maxEntrySize&&a>this.maxEntrySize)return c&&(c.set=`miss`,c.maxEntrySizeExceeded=!0),this.delete(e),this;let l=this.size===0?void 0:this.keyMap.get(e);if(l===void 0)l=this.newIndex(),this.keyList[l]=e,this.valList[l]=t,this.keyMap.set(e,l),this.next[this.tail]=l,this.prev[l]=this.tail,this.tail=l,this.size++,this.addItemSize(l,a,c),c&&(c.set=`add`),s=!1;else{this.moveToTail(l);let n=this.valList[l];if(t!==n){if(this.isBackgroundFetch(n)?n.__abortController.abort(Error(`replaced`)):i||(this.dispose(n,e,`set`),this.disposeAfter&&this.disposed.push([n,e,`set`])),this.removeItemSize(l),this.valList[l]=t,this.addItemSize(l,a,c),c){c.set=`replace`;let e=n&&this.isBackgroundFetch(n)?n.__staleWhileFetching:n;e!==void 0&&(c.oldValue=e)}}else c&&(c.set=`update`)}if(n!==0&&this.ttl===0&&!this.ttls&&this.initializeTTLTracking(),s||this.setItemTTL(l,n,r),this.statusTTL(c,l),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.initialFill++:this.free.pop()}pop(){if(this.size){let e=this.valList[this.head];return this.evict(!0),e}}evict(e){let t=this.head,n=this.keyList[t],r=this.valList[t];return this.isBackgroundFetch(r)?r.__abortController.abort(Error(`evicted`)):(this.dispose(r,n,`evict`),this.disposeAfter&&this.disposed.push([r,n,`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(n),this.size--,t}has(e,{updateAgeOnHas:t=this.updateAgeOnHas,status:n}={}){let r=this.keyMap.get(e);if(r!==void 0)if(this.isStale(r))n&&(n.has=`stale`,this.statusTTL(n,r));else return t&&this.updateItemAge(r),n&&(n.has=`hit`),this.statusTTL(n,r),!0;else n&&(n.has=`miss`);return!1}peek(e,{allowStale:t=this.allowStale}={}){let n=this.keyMap.get(e);if(n!==void 0&&(t||!this.isStale(n))){let e=this.valList[n];return this.isBackgroundFetch(e)?e.__staleWhileFetching:e}}backgroundFetch(e,t,n,r){let i=t===void 0?void 0:this.valList[t];if(this.isBackgroundFetch(i))return i;let a=new Te;n.signal&&n.signal.addEventListener(`abort`,()=>a.abort(n.signal.reason));let o={signal:a.signal,options:n,context:r},s=(r,i=!1)=>{let{aborted:s}=a.signal,c=n.ignoreFetchAbort&&r!==void 0;return n.status&&(s&&!i?(n.status.fetchAborted=!0,n.status.fetchError=a.signal.reason,c&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),s&&!c&&!i?l(a.signal.reason):(this.valList[t]===d&&(r===void 0?d.__staleWhileFetching?this.valList[t]=d.__staleWhileFetching:this.delete(e):(n.status&&(n.status.fetchUpdated=!0),this.set(e,r,o.options))),r)},c=e=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=e),l(e)),l=r=>{let{aborted:i}=a.signal,o=i&&n.allowStaleOnFetchAbort,s=o||n.allowStaleOnFetchRejection,c=s||n.noDeleteOnFetchRejection;if(this.valList[t]===d&&(!c||d.__staleWhileFetching===void 0?this.delete(e):o||(this.valList[t]=d.__staleWhileFetching)),s)return n.status&&d.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),d.__staleWhileFetching;if(d.__returned===d)throw r},u=(t,r)=>{this.fetchMethod(e,i,o).then(e=>t(e),r),a.signal.addEventListener(`abort`,()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(t(),n.allowStaleOnFetchAbort&&(t=e=>s(e,!0)))})};n.status&&(n.status.fetchDispatched=!0);let d=new Promise(u).then(s,c);return d.__abortController=a,d.__staleWhileFetching=i,d.__returned=null,t===void 0?(this.set(e,d,{...o.options,status:void 0}),t=this.keyMap.get(e)):this.valList[t]=d,d}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:n=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:o=0,sizeCalculation:s=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:l=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:u=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:f=this.allowStaleOnFetchAbort,fetchContext:p=this.fetchContext,forceRefresh:m=!1,status:h,signal:g}={}){if(!this.fetchMethod)return h&&(h.fetch=`get`),this.get(e,{allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:r,status:h});let _={allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:r,ttl:i,noDisposeOnSet:a,size:o,sizeCalculation:s,noUpdateTTL:c,noDeleteOnFetchRejection:l,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:f,ignoreFetchAbort:d,status:h,signal:g},v=this.keyMap.get(e);if(v===void 0){h&&(h.fetch=`miss`);let t=this.backgroundFetch(e,v,_,p);return t.__returned=t}else{let r=this.valList[v];if(this.isBackgroundFetch(r)){let e=t&&r.__staleWhileFetching!==void 0;return h&&(h.fetch=`inflight`,e&&(h.returnedStale=!0)),e?r.__staleWhileFetching:r.__returned=r}let i=this.isStale(v);if(!m&&!i)return h&&(h.fetch=`hit`),this.moveToTail(v),n&&this.updateItemAge(v),this.statusTTL(h,v),r;let a=this.backgroundFetch(e,v,_,p),o=a.__staleWhileFetching!==void 0,s=o&&t;return h&&(h.fetch=o&&i?`stale`:`refresh`,s&&i&&(h.returnedStale=!0)),s?a.__staleWhileFetching:a.__returned=a}}get(e,{allowStale:t=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:i}={}){let a=this.keyMap.get(e);if(a!==void 0){let o=this.valList[a],s=this.isBackgroundFetch(o);return this.statusTTL(i,a),this.isStale(a)?(i&&(i.get=`stale`),s?(i&&(i.returnedStale=t&&o.__staleWhileFetching!==void 0),t?o.__staleWhileFetching:void 0):(r||this.delete(e),i&&(i.returnedStale=t),t?o:void 0)):(i&&(i.get=`hit`),s?o.__staleWhileFetching:(this.moveToTail(a),n&&this.updateItemAge(a),o))}else i&&(i.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 je(`del`,`delete`),this.delete}delete(e){let t=!1;if(this.size!==0){let n=this.keyMap.get(e);if(n!==void 0)if(t=!0,this.size===1)this.clear();else{this.removeItemSize(n);let t=this.valList[n];this.isBackgroundFetch(t)?t.__abortController.abort(Error(`deleted`)):(this.dispose(t,e,`delete`),this.disposeAfter&&this.disposed.push([t,e,`delete`])),this.keyMap.delete(e),this.keyList[n]=null,this.valList[n]=null,n===this.tail?this.tail=this.prev[n]:n===this.head?this.head=this.next[n]:(this.next[this.prev[n]]=this.next[n],this.prev[this.next[n]]=this.prev[n]),this.size--,this.free.push(n)}}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(Error(`deleted`));else{let n=this.keyList[e];this.dispose(t,n,`delete`),this.disposeAfter&&this.disposed.push([t,n,`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 je(`reset`,`clear`),this.clear}get length(){return Me(`length`,`size`),this.size}static get AbortController(){return Te}static get AbortSignal(){return Oe}},Be=ze;const Ve=/(-?[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,He={},Ue=typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(`firefox`),We={};var Ge=class{constructor(e,t){O(this,`canvas`,void 0),O(this,`ctx`,void 0),O(this,`options`,void 0),O(this,`imagesPending`,0),O(this,`imagesLoaded`,0),O(this,`imageIdsLoaded`,[]),O(this,`frameIsRendering`,!1),O(this,`pendingDrawCall`,!1),O(this,`firstMeaningfulPaint`,!1),O(this,`parallelTasks`,8),O(this,`frameTasks`,0),O(this,`loadingQueueOrdered`,!0),O(this,`loadingQueue`,[]),O(this,`currentTask`,Promise.resolve()),O(this,`tasksRunning`,0),O(this,`stats`,void 0),O(this,`averageJobTime`,64),O(this,`lastKnownScale`,1),O(this,`visible`,[]),O(this,`previousVisible`,[]),O(this,`rendererPosition`,void 0),O(this,`dpi`,void 0),O(this,`drawCalls`,[]),O(this,`lastPaintedObject`,void 0),O(this,`hostCache`,void 0),O(this,`invalidated`,[]),O(this,`_worker`,()=>{if(this.loadingQueue.length){let e=this.loadingQueue.pop();e&&(this.tasksRunning++,this.frameTasks++,this.currentTask=e.task().then(()=>{this.tasksRunning--}).catch(()=>{this.tasksRunning--}))}}),O(this,`_scheduled`,0),O(this,`_doWork`,()=>{this.loadingQueue.length===0&&this.tasksRunning===0&&this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);let e=this.parallelTasks||1;!this.firstMeaningfulPaint&&this.loadingQueue.length&&(e=this.loadingQueue.length);for(let t=0;t<=e;t++)this._worker()}),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.ctx=e.getContext(`2d`,{alpha:!0}),this.ctx.imageSmoothingEnabled=!0,this.options=t||{},this.canvas.style.transition=`opacity .3s`,this.dpi=t?.dpi||1,this.hostCache=t?.lruCache?new Be({maxSize:1024*512*512,dispose:(e,t,n)=>{this.invalidated.push(t),e.width=0,e.height=0},sizeCalculation:(e,t)=>e.width*e.height}):{store:{},get(e){return this.store[e]},set(e,t){this.store[e]=t}}}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((e,t)=>e.network&&e.scale===t.scale?t.distance-e.distance:e.scale<t.scale?-1:1),this.loadingQueueOrdered=!0),this.previousVisible=this.visible,this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let e=0;e<this.drawCalls.length;e++){let e=this.drawCalls.shift();e&&e()}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,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}beforeFrame(e,t,n,r){this.options.debug&&this.stats&&this.stats.begin(),this.frameIsRendering=!0,this.visible=[],this.options.beforeFrame&&this.options.beforeFrame(t);let i=this.getCanvasDims();if(this.ctx.globalAlpha=1,this.canvas.dataset.background===`transparent`?this.ctx.clearRect(0,0,i.width,i.height):(this.ctx.fillStyle=this.canvas.dataset.background??`rgb(0, 0, 0)`,this.ctx.fillRect(0,0,i.width,i.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 e=``;r.filters.brightness&&(e+=`brightness(${~~(100+r.filters.brightness*100)}%) `),r.filters.contrast&&(e+=`contrast(${~~(100+r.filters.contrast*100)}%) `),r.filters.grayscale&&(e+=`grayscale(${~~(r.filters.grayscale*100)}%) `),r.filters.invert&&(e+=`invert(${~~(r.filters.invert*100)}%) `),r.filters.sepia&&(e+=`sepia(${~~(r.filters.sepia*100)}%) `),r.filters.saturate&&(e+=`saturate(${~~(100+r.filters.saturate*100)}%) `),r.filters.hueRotate&&(e+=`hue-rotate(${r.filters.hueRotate}deg) `),r.filters.blur&&(e+=`blur(${r.filters.blur}px) `),this.ctx.filter!==e&&(this.ctx.filter=e)}else this.ctx.filter=`none`}applyTransform(e,t,n,r,i){let a=e.__owner.value;if(a&&a.rotation){this.ctx.save();let e=t+r/2,o=n+i/2;this.ctx.translate(e,o),this.ctx.rotate(a.rotation*Math.PI/180),this.ctx.translate(-e,-o),this.lastPaintedObject=a}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}paint(e,t,n,r,i,a){let o=this.ctx.globalAlpha;if(e instanceof A||e instanceof P){if(e.display.rotation){this.ctx.save();let o=n+i/2,s=r+a/2;e.crop&&(o-=e.crop[t*5+1],s-=e.crop[t*5+2]),this.ctx.translate(o,s),this.ctx.rotate(e.display.rotation*Math.PI/180),this.ctx.translate(-o,-s)}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 o=e.__host.canvas,s=this.getCanvasDims();if((o.indices.indexOf(t)===-1||this.invalidated.indexOf(o.canvases[t])!==-1)&&this.schedulePaintToCanvas(o,e,t,M({x:n+i/2,y:r+i/2},{x:s.width/2,y:s.height/2})),!this.firstMeaningfulPaint)return;let c=this.hostCache.get(o.canvases[t]);if(c)if(e.crop&&e.cropData){if(e.crop[t*5]){let o=[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];o[0]+=e.cropData.x/e.display.scale,o[1]+=e.cropData.y/e.display.scale;let s=e.x*this.lastKnownScale,l=e.y*this.lastKnownScale,u=[n+s,r+l,i,a];u[0]+=s,u[1]+=l,this.ctx.drawImage(c,o[0],o[1],o[2],o[3],u[0],u[1],u[2]+1,u[3]+1)}}else Ue?this.ctx.drawImage(c,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],n,r,i+1,a+1):this.ctx.drawImage(c,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],n,r,i+Number.MIN_VALUE+.5,a+Number.MIN_VALUE+.5)}catch{}e.display.rotation&&this.ctx.restore()}let s=e instanceof B&&this.options.box,c=e instanceof Ce&&this.options.polygon;if((s||c)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let t=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),o=e.props.relativeStyle?1:i/e.width;t.opacity!==void 0&&(this.ctx.globalAlpha=t.opacity);let s=0;t.borderWidth!==void 0&&(s=parseInt(t.borderWidth,10)*o);let l=0;t.outlineWidth!==void 0&&(l=parseInt(t.outlineWidth,10)*o);let u=0;if(t.outlineOffset!==void 0&&(u=parseInt(t.outlineOffset,10)*o),t.borderColor&&(this.ctx.strokeStyle=t.borderColor),t.boxShadow){let e=t.boxShadow.split(/,(?![^(]*\))/);for(let t of e){let e=He[t]||Ve.exec(t)||Ve.exec(t);He[t]=e,e&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(e[1])*this.dpi*o,this.ctx.shadowOffsetY=parseInt(e[3])*this.dpi*o,this.ctx.shadowBlur=parseInt(e[5])*this.dpi*o,this.ctx.shadowColor=e[9],this.ctx.fillStyle=`rgba(0,0,0,1)`,this.ctx.fillRect(n+s,r+s,i,a),this.ctx.restore())}}if(this.ctx.fillStyle=t.backgroundColor||`transparent`,this.ctx.lineWidth=s,c){let t=e.shape,i=t.points||[],a=i.length;this.ctx.beginPath();for(let e=0;e<a;e++)this.ctx.lineTo(n+i[e][0]*this.lastKnownScale,r+i[e][1]*this.lastKnownScale);t.open||this.ctx.closePath(),s&&this.ctx.stroke(),t.open||this.ctx.fill()}else s&&this.ctx.strokeRect(n+s/2,r+s/2,i+s,a+s),this.ctx.fillRect(n+s,r+s,i,a);l&&(t.outlineColor&&(this.ctx.strokeStyle=t.outlineColor),this.ctx.lineWidth=l,this.ctx.strokeRect(n-l/2-u,r-l/2-u,i+s*2+l+u*2,a+s*2+l+u*2))}this.ctx.globalAlpha=o}}loadImage(e,t,n,r=!1){if(We[e]&&We[e].naturalWidth>0){t(We[e]);return}try{let i=!1;r||setTimeout(()=>{i||this.loadImage(e,t,n,!0)},3e3);let a=document.createElement(`img`);a.decoding=`auto`,a.onload=function(){i=!0,t(a),We[e]=a,a.onload=null},this.options.crossOrigin&&(a.crossOrigin=`anonymous`),a.src=e,a.complete&&a.onload({}),a.width}catch(e){console.log(`image error`,e),n(e)}}schedulePaintToCanvas(e,t,n,r){this.imagesPending++,e.indices.push(n);let i=`${t.id}--${t.display.scale}-${n}`,a=this.invalidated.indexOf(i);a!==-1&&this.invalidated.splice(a,1),e.canvases[n]=i,t.__host.canvas.loading=!0,this.loadingQueueOrdered=!1,this.loadingQueue.push({id:i,scale:t.display.scale,network:!0,distance:r,task:()=>new Promise(a=>{if(this.visible.indexOf(t)===-1){this.imagesPending--,e.indices.splice(e.indices.indexOf(n),1),a();return}let o=t.getImageUrl(n);this.loadImage(o,o=>{this.loadingQueue.push({id:i,scale:t.display.scale,distance:r,task:()=>new Promise(r=>{this.imageIdsLoaded.includes(i)||(this.imagesLoaded++,this.imageIdsLoaded.push(i)),e.loaded.push(n),e.loaded.length===e.indices.length&&(e.loading=!1);let a=t.display.points.slice(n*5,n*5+5),s=document.createElement(`canvas`),c=s.getContext(`2d`);s.width=a[3]-a[1],s.height=a[4]-a[2],this.hostCache.set(e.canvases[n],s),this.drawCalls.push(()=>{c.drawImage(o,0,0,a[3]-a[1],a[4]-a[2]),r()})})}),a()},t=>{this.imagesPending--,e.indices.splice(e.indices.indexOf(n),1),a()})})})}afterPaintLayer(e,t){}prepareLayer(e,t){e.__owner.value&&(e.cropData&&this.lastKnownScale*(1/e.display.scale),this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2])),(!e.__host||!e.__host.canvas)&&(e instanceof A||e instanceof P)&&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,n,r){return e.getPointsAt(t,n,r)}getViewportBounds(e,t,n){let r=e.getActiveZone();if(r){let e=t[3]-t[1]<r.points[3]-r.points[1],i=t[4]-t[2]<r.points[4]-r.points[2];return{x1:e?r.points[1]-n:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y1:i?r.points[2]-n:r.points[2]+(r.points[4]-r.points[2])/2-(t[4]-t[2])/2,x2:e?r.points[3]+n:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y2:i?r.points[4]+n: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=[]}},Ke=class{constructor(e){O(this,`renderers`,[]),O(this,`length`,void 0);for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].afterFrame(e,t,n,r)}afterPaintLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].afterPaintLayer(e,t)}beforeFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].beforeFrame(e,t,n,r)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,n,r){return this.renderers[0].getPointsAt(e,t,n,r)}getScale(e,t){return this.renderers[0].getScale(e,t)}getViewportBounds(e,t,n){return this.renderers[0].getViewportBounds(e,t,n)}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,n,r,i,a){for(let o=0;o<this.length;o++)this.renderers[o].paint(e,t,n,r,i,a)}pendingUpdate(){for(let e=0;e<this.length;e++)if(this.renderers[e].pendingUpdate())return!0;return!1}prepareLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].prepareLayer(e,t)}finishLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].finishLayer(e,t)}resize(e,t){for(let n=0;n<this.length;n++)this.renderers[n].resize(e,t)}reset(){for(let e=0;e<this.length;e++)this.renderers[e].reset()}},qe=class{constructor(e){O(this,`canvas`,void 0),O(this,`context`,void 0),O(this,`heightRatio`,1),O(this,`widthRatio`,1),O(this,`target`,new Float32Array(5)),O(this,`initialWidth`,void 0),O(this,`initialHeight`,void 0),O(this,`bounds`,void 0),O(this,`aggregate`,void 0),O(this,`delta`,0),O(this,`renderNextFrame`,!0),this.canvas=e,this.initialWidth=e.width,this.initialHeight=e.height,this.context=e.getContext(`2d`),this.context.globalAlpha=.5,this.aggregate=(0,l.scale)(1)}isReady(){return!0}resize(){this.initialWidth=this.canvas.width,this.initialHeight=this.canvas.height,this.renderNextFrame=!0}afterFrame(e,t,n){if(this.renderNextFrame){this.context.clearRect(0,0,this.canvas.width,this.canvas.height);let t=this.initialWidth/e.width,r=this.initialHeight/e.height,i=this.widthRatio>this.heightRatio?t:r;if(this.target=n,this.bounds){let t=e.getPointsAt(this.bounds,this.aggregate,i);for(let[e,n]of t)if(e instanceof A&&e.__host.canvas){let t=n.length/5;for(let r=0;r<t;r++)e.__host.canvas.canvases[r]&&(n[r+1]*i,n[r+2]*i,(n[r+3]-n[r+1])*i,(n[r+4]-n[r+2])*i)}}e.getPoints().forEach((e,t,n)=>{if(t%5==0&&e){let e={x1:n[t+1]*i,y1:n[t+2]*i,x2:n[t+3]*i,y2:n[t+4]*i,width:(n[t+3]-n[t+1])*i,height:(n[t+4]-n[t+2])*i};this.context.strokeStyle=`red`,this.context.strokeRect(e.x1,e.y1,e.width,e.height)}}),n&&(this.context.strokeStyle=`red`,this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(n[1]*i,n[2]*i,(n[3]-n[1])*i,(n[4]-n[2])*i))}}getActiveZone(e){return null}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=l.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,n,r,i,a){this.renderNextFrame=!0}prepareLayer(e){}pendingUpdate(){return!1}hasActiveZone(){return!1}getViewportBounds(e,t,n){return null}getRendererScreenPosition(){return this.canvas.getBoundingClientRect()}finishLayer(){}reset(){}},Je=class{constructor(){O(this,`autoWidth`,!1),O(this,`autoHeight`,!0),O(this,`width`,void 0),O(this,`height`,void 0),O(this,`world`,void 0),O(this,`content`,[]),O(this,`viewingDirection`,`left-to-right`),O(this,`rows`,void 0),O(this,`columns`,4),O(this,`spacing`,20),O(this,`reversed`,!1),O(this,`padding`,20),this.world=R.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(e=>this.world.addObjectAt(e,{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 Error(`Cannot set auto height without setting a width`);if(this.autoWidth&&!this.height)throw 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,{columns:t,rows:n}=(()=>{if(this.autoWidth&&this.rows){let t=e>this.rows?this.rows:e;return{columns:Math.ceil(e/t),rows:t}}if(this.autoHeight&&this.columns){let t=e>this.columns?this.columns:e;return{columns:t,rows:Math.ceil(e/t)}}throw Error(`Something went wrong.`)})(),r=this.autoWidth?-1:this.width-this.padding*2,i=this.autoWidth?-1:(r-this.spacing*(t-1))/t;if(this.autoHeight&&!this.autoWidth){let r=0,a=this.padding;for(let o=0;o<n&&r!==e;o++){let n=0,o=[];for(let a=0;a<t;a++){let t=this.reversed?e-r:r;if(r===e)break;let a=this.content[t],s=a.width,c=i/(a.width/a.height);o.push([r,i,c,i/s]),c>n&&(n=c),r++}for(let r=0;r<t&&o[r];r++){let t=this.world.getPoints(),i=o[r][0],s=o[r][1],c=o[r][2],l=o[r][3],u=this.padding+r*(this.spacing+s),d=a+(n-c)/2,f=this.reversed?e-i:i,p=t[f*5+1],m=t[f*5+2];this.world.scaleWorldObject(i,l),(p!==u||m!==d)&&this.world.translateWorldObject(f,u-p,d-m)}a+=n+this.spacing}this.height=a+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}},Ye=o(((e,t)=>{var n=!1,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){if(!n){n=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),v=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(m=/\b(iPhone|iP[ao]d)/.exec(e),h=/\b(iP[ao]d)/.exec(e),f=/Android/i.exec(e),g=/FBAN\/\w+;/i.exec(e),_=/Mobile/i.exec(e),p=!!/Win64/.exec(e),t){r=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,r&&document&&document.documentMode&&(r=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);c=y?parseFloat(y[1])+4:r,i=t[2]?parseFloat(t[2]):NaN,a=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),s=t&&t[1]?parseFloat(t[1]):NaN):s=NaN}else r=i=a=s=o=NaN;if(v){if(v[1]){var b=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=b?parseFloat(b[1].replace(`_`,`.`)):!0}else l=!1;u=!!v[2],d=!!v[3]}else l=u=d=!1}}var y={ie:function(){return v()||r},ieCompatibilityMode:function(){return v()||c>r},ie64:function(){return y.ie()&&p},firefox:function(){return v()||i},opera:function(){return v()||a},webkit:function(){return v()||o},safari:function(){return y.webkit()},chrome:function(){return v()||s},windows:function(){return v()||u},osx:function(){return v()||l},linux:function(){return v()||d},iphone:function(){return v()||m},mobile:function(){return v()||m||h||f||_},nativeApp:function(){return v()||g},android:function(){return v()||f},ipad:function(){return v()||h}};t.exports=y})),Xe=o(((e,t)=>{var n=!!(typeof window<`u`&&window.document&&window.document.createElement);t.exports={canUseDOM:n,canUseWorkers:typeof Worker<`u`,canUseEventListeners:n&&!!(window.addEventListener||window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n}})),Ze=o(((e,t)=>{var n=Xe(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`@atlas-viewer/dna`),u=require(`node:crypto`),d=require(`@atlas-viewer/iiif-image-api`),f=require(`@iiif/helpers/thumbnail`),p=require(`react`);p=c(p);let m=require(`react-use-measure`);m=c(m);let h=require(`react/jsx-runtime`),g=require(`react-reconciler`);g=c(g);const _=`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`.split(`.`);function v(){return _.reduce((e,t)=>(e[t]=[],e),{})}const y=_.reduce((e,t)=>(e[t.slice(2).toLowerCase()]=t,e[t]=t,e),{});function b(e,t,n=1){let r=t.length;if(r===0)throw Error(`No resources passed in.`);let i=0,a=1/0;for(let o=0;o<r&&!(!t[o]||!t[o].display);o++){let r=x(t[o].display.scale,e/(n||1));r<a&&(a=r,i=o)}return i}function x(e,t){return Math.abs(e-t)}function S(e,t){let n=x(e.x,t.x),r=x(e.y,t.y);return Math.sqrt(n**2+r**2)}function C(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function w(e){"@babel/helpers - typeof";return w=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},w(e)}function T(e,t){if(w(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(w(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ee(e){var t=T(e,`string`);return w(t)==`symbol`?t:t+``}function E(e,t,n){return(t=ee(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var D=class e{constructor(e,t,n){E(this,`element`,void 0),E(this,`runtime`,void 0),E(this,`unsubscribe`,void 0),E(this,`activatedEvents`,[]),E(this,`eventHandlers`,[]),E(this,`bounds`,void 0),E(this,`listening`,void 0),E(this,`pointerMoveEvent`,void 0),E(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),E(this,`options`,void 0),E(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),E(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),E(this,`onContextMenu`,e=>{e.preventDefault();let t=`onContextMenu`;if(this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),E(this,`onTouchEvent`,e=>{let t=y[e.type],n=[],r=e.touches.length;for(let t=0;t<r;t++){let r=e.touches.item(t);if(!r)continue;let{x:i,y:a}=this.runtime.viewerToWorld(r.clientX-this.bounds.left,r.clientY-this.bounds.top),o={id:r.identifier,x:i,y:a};n.push(o)}n.length&&this.assignToEvent(e,n[0].x,n[0].y),t!==`onTouchEnd`&&t!==`onTouchCancel`?(this.pointerEventState.lastTouches=n,e.atlasTouches=n,this.runtime.world.propagateTouchEvent(t,e,n)):(e.atlasTouches=[],this.runtime.world.propagateTouchEvent(t,e,this.pointerEventState.lastTouches),this.pointerEventState.lastTouches=[])}),E(this,`onPointerEvent`,e=>{if(e.button===2)return;let t=y[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),E(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))}),E(this,`onPointerUp`,e=>{if(e.button!==2){if(this.pointerEventState.isClicking){let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onClick`,e,t,n)}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)}}),E(this,`onPointerMove`,e=>{this.pointerMoveEvent=void 0;let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);if(Number.isNaN(t)||Number.isNaN(n))return;this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onPointerMove`,e,t,n);let r=this.runtime.world.propagatePointerEvent(`onMouseMove`,e,t,n),i=[],a=[];for(let t of r)i.push(t.id),a.push(t),this.pointerEventState.mousedOver.indexOf(t)===-1&&(t.dispatchEvent(`onMouseEnter`,e),t.dispatchEvent(`onPointerEnter`,e),t.dispatchEvent(`onMouseOver`,e),t.dispatchEvent(`onPointerOver`,e));for(let t of this.pointerEventState.mousedOver)i.indexOf(t.id)===-1&&(t.dispatchEvent(`onMouseLeave`,e),t.dispatchEvent(`onPointerLeave`,e),t.dispatchEvent(`onMouseOut`,e),t.dispatchEvent(`onPointerOut`,e));if(this.pointerEventState.isDragging)for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent(`onDrag`,e);if(this.pointerEventState.isPressed&&!this.pointerEventState.isDragging&&S(this.pointerEventState.mouseDownStart,{x:e.clientX,y:e.clientY})>50){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,atlas:{x:t.x,y:t.y}},t.x,t.y)}this.pointerEventState.mousedOver=a}),this.element=e,this.runtime=t,this.unsubscribe=t.world.addLayoutSubscriber(this.layoutSubscriber.bind(this)),this.bounds=e.getBoundingClientRect(),this.listening=!1,this.options={simulationRate:0,...n||{}};let r=0;t.registerHook(`useFrame`,e=>{r+=e,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==0&&this.activateEvents()}assignToEvent(t,n,r){e.eventPool.atlas.x=n,e.eventPool.atlas.y=r,t.atlas=e.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)}};E(D,`eventPool`,{atlas:{x:0,y:0}});const O=typeof performance==`object`&&performance&&typeof performance.now==`function`?performance:Date,k=typeof AbortController==`function`?AbortController:class{constructor(){this.signal=new M}abort(e=Error(`This operation was aborted`)){this.signal.reason=this.signal.reason||e,this.signal.aborted=!0,this.signal.dispatchEvent({type:`abort`,target:this.signal})}},A=typeof AbortSignal==`function`,j=typeof k.AbortSignal==`function`,M=A?AbortSignal:j?k.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(e=>e!==t))}},N=new Set,P=(e,t)=>{let n=`LRU_CACHE_OPTION_${e}`;L(n)&&ne(n,`${e} option`,`options.${t}`,H)},F=(e,t)=>{let n=`LRU_CACHE_METHOD_${e}`;if(L(n)){let{prototype:r}=H,{get:i}=Object.getOwnPropertyDescriptor(r,e);ne(n,`${e} method`,`cache.${t}()`,i)}},te=(e,t)=>{let n=`LRU_CACHE_PROPERTY_${e}`;if(L(n)){let{prototype:r}=H,{get:i}=Object.getOwnPropertyDescriptor(r,e);ne(n,`${e} property`,`cache.${t}`,i)}},I=(...e)=>{typeof process==`object`&&process&&typeof process.emitWarning==`function`?process.emitWarning(...e):console.error(...e)},L=e=>!N.has(e),ne=(e,t,n,r)=>{N.add(e),I(`The ${t} is deprecated. Please use ${n} instead.`,`DeprecationWarning`,e,r)},R=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),z=e=>R(e)?e<=2**8?Uint8Array:e<=2**16?Uint16Array:e<=2**32?Uint32Array:e<=2**53-1?B:null:null;var B=class extends Array{constructor(e){super(e),this.fill(0)}},V=class{constructor(e){if(e===0)return[];this.heap=new(z(e))(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},H=class e{constructor(t={}){let{max:n=0,ttl:r,ttlResolution:i=1,ttlAutopurge:a,updateAgeOnGet:o,updateAgeOnHas:s,allowStale:c,dispose:l,disposeAfter:u,noDisposeOnSet:d,noUpdateTTL:f,maxSize:p=0,maxEntrySize:m=0,sizeCalculation:h,fetchMethod:g,fetchContext:_,noDeleteOnFetchRejection:v,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:b,allowStaleOnFetchAbort:x,ignoreFetchAbort:S}=t,{length:C,maxAge:w,stale:T}=t instanceof e?{}:t;if(n!==0&&!R(n))throw TypeError(`max option must be a nonnegative integer`);let ee=n?z(n):Array;if(!ee)throw Error(`invalid max value: `+n);if(this.max=n,this.maxSize=p,this.maxEntrySize=m||this.maxSize,this.sizeCalculation=h||C,this.sizeCalculation){if(!this.maxSize&&!this.maxEntrySize)throw TypeError(`cannot set sizeCalculation without setting maxSize or maxEntrySize`);if(typeof this.sizeCalculation!=`function`)throw TypeError(`sizeCalculation set to non-function`)}if(this.fetchMethod=g||null,this.fetchMethod&&typeof this.fetchMethod!=`function`)throw TypeError(`fetchMethod must be a function if specified`);if(this.fetchContext=_,!this.fetchMethod&&_!==void 0)throw TypeError(`cannot set fetchContext without fetchMethod`);if(this.keyMap=new Map,this.keyList=Array(n).fill(null),this.valList=Array(n).fill(null),this.next=new ee(n),this.prev=new ee(n),this.head=0,this.tail=0,this.free=new V(n),this.initialFill=1,this.size=0,typeof l==`function`&&(this.dispose=l),typeof u==`function`?(this.disposeAfter=u,this.disposed=[]):(this.disposeAfter=null,this.disposed=null),this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!v,this.allowStaleOnFetchRejection=!!b,this.allowStaleOnFetchAbort=!!x,this.ignoreFetchAbort=!!S,this.maxEntrySize!==0){if(this.maxSize!==0&&!R(this.maxSize))throw TypeError(`maxSize must be a positive integer if specified`);if(!R(this.maxEntrySize))throw TypeError(`maxEntrySize must be a positive integer if specified`);this.initializeSizeTracking()}if(this.allowStale=!!c||!!T,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!s,this.ttlResolution=R(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||w||0,this.ttl){if(!R(this.ttl))throw TypeError(`ttl must be a positive integer if specified`);this.initializeTTLTracking()}if(this.max===0&&this.ttl===0&&this.maxSize===0)throw TypeError(`At least one of max, maxSize, or ttl is required`);if(!this.ttlAutopurge&&!this.max&&!this.maxSize){let t=`LRU_CACHE_UNBOUNDED`;L(t)&&(N.add(t),I(`TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.`,`UnboundedCacheWarning`,t,e))}T&&P(`stale`,`allowStale`),w&&P(`maxAge`,`ttl`),C&&P(`length`,`sizeCalculation`)}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new B(this.max),this.starts=new B(this.max),this.setItemTTL=(e,t,n=O.now())=>{if(this.starts[e]=t===0?0:n,this.ttls[e]=t,t!==0&&this.ttlAutopurge){let n=setTimeout(()=>{this.isStale(e)&&this.delete(this.keyList[e])},t+1);n.unref&&n.unref()}},this.updateItemAge=e=>{this.starts[e]=this.ttls[e]===0?0:O.now()},this.statusTTL=(n,r)=>{n&&(n.ttl=this.ttls[r],n.start=this.starts[r],n.now=e||t(),n.remainingTTL=n.now+n.ttl-n.start)};let e=0,t=()=>{let t=O.now();if(this.ttlResolution>0){e=t;let n=setTimeout(()=>e=0,this.ttlResolution);n.unref&&n.unref()}return t};this.getRemainingTTL=n=>{let r=this.keyMap.get(n);return r===void 0?0:this.ttls[r]===0||this.starts[r]===0?1/0:this.starts[r]+this.ttls[r]-(e||t())},this.isStale=n=>this.ttls[n]!==0&&this.starts[n]!==0&&(e||t())-this.starts[n]>this.ttls[n]}updateItemAge(e){}statusTTL(e,t){}setItemTTL(e,t,n){}isStale(e){return!1}initializeSizeTracking(){this.calculatedSize=0,this.sizes=new B(this.max),this.removeItemSize=e=>{this.calculatedSize-=this.sizes[e],this.sizes[e]=0},this.requireSize=(e,t,n,r)=>{if(this.isBackgroundFetch(t))return 0;if(!R(n))if(r){if(typeof r!=`function`)throw TypeError(`sizeCalculation must be a function`);if(n=r(t,e),!R(n))throw TypeError(`sizeCalculation return invalid (expect positive integer)`)}else throw TypeError(`invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.`);return n},this.addItemSize=(e,t,n)=>{if(this.sizes[e]=t,this.maxSize){let t=this.maxSize-this.sizes[e];for(;this.calculatedSize>t;)this.evict(!0)}this.calculatedSize+=this.sizes[e],n&&(n.entrySize=t,n.totalCalculatedSize=this.calculatedSize)}}removeItemSize(e){}addItemSize(e,t){}requireSize(e,t,n,r){if(n||r)throw 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 n of this.indexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;if(i!==void 0&&e(i,this.keyList[n],this))return this.get(this.keyList[n],t)}}forEach(e,t=this){for(let n of this.indexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;i!==void 0&&e.call(t,i,this.keyList[n],this)}}rforEach(e,t=this){for(let n of this.rindexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;i!==void 0&&e.call(t,i,this.keyList[n],this)}}get prune(){return F(`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 n=this.keyList[t],r=this.valList[t],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;if(i===void 0)continue;let a={value:i};if(this.ttls){a.ttl=this.ttls[t];let e=O.now()-this.starts[t];a.start=Math.floor(Date.now()-e)}this.sizes&&(a.size=this.sizes[t]),e.unshift([n,a])}return e}load(e){this.clear();for(let[t,n]of e){if(n.start){let e=Date.now()-n.start;n.start=O.now()-e}this.set(t,n.value,n)}}dispose(e,t,n){}set(e,t,{ttl:n=this.ttl,start:r,noDisposeOnSet:i=this.noDisposeOnSet,size:a=0,sizeCalculation:o=this.sizeCalculation,noUpdateTTL:s=this.noUpdateTTL,status:c}={}){if(a=this.requireSize(e,t,a,o),this.maxEntrySize&&a>this.maxEntrySize)return c&&(c.set=`miss`,c.maxEntrySizeExceeded=!0),this.delete(e),this;let l=this.size===0?void 0:this.keyMap.get(e);if(l===void 0)l=this.newIndex(),this.keyList[l]=e,this.valList[l]=t,this.keyMap.set(e,l),this.next[this.tail]=l,this.prev[l]=this.tail,this.tail=l,this.size++,this.addItemSize(l,a,c),c&&(c.set=`add`),s=!1;else{this.moveToTail(l);let n=this.valList[l];if(t!==n){if(this.isBackgroundFetch(n)?n.__abortController.abort(Error(`replaced`)):i||(this.dispose(n,e,`set`),this.disposeAfter&&this.disposed.push([n,e,`set`])),this.removeItemSize(l),this.valList[l]=t,this.addItemSize(l,a,c),c){c.set=`replace`;let e=n&&this.isBackgroundFetch(n)?n.__staleWhileFetching:n;e!==void 0&&(c.oldValue=e)}}else c&&(c.set=`update`)}if(n!==0&&this.ttl===0&&!this.ttls&&this.initializeTTLTracking(),s||this.setItemTTL(l,n,r),this.statusTTL(c,l),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.initialFill++:this.free.pop()}pop(){if(this.size){let e=this.valList[this.head];return this.evict(!0),e}}evict(e){let t=this.head,n=this.keyList[t],r=this.valList[t];return this.isBackgroundFetch(r)?r.__abortController.abort(Error(`evicted`)):(this.dispose(r,n,`evict`),this.disposeAfter&&this.disposed.push([r,n,`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(n),this.size--,t}has(e,{updateAgeOnHas:t=this.updateAgeOnHas,status:n}={}){let r=this.keyMap.get(e);if(r!==void 0)if(this.isStale(r))n&&(n.has=`stale`,this.statusTTL(n,r));else return t&&this.updateItemAge(r),n&&(n.has=`hit`),this.statusTTL(n,r),!0;else n&&(n.has=`miss`);return!1}peek(e,{allowStale:t=this.allowStale}={}){let n=this.keyMap.get(e);if(n!==void 0&&(t||!this.isStale(n))){let e=this.valList[n];return this.isBackgroundFetch(e)?e.__staleWhileFetching:e}}backgroundFetch(e,t,n,r){let i=t===void 0?void 0:this.valList[t];if(this.isBackgroundFetch(i))return i;let a=new k;n.signal&&n.signal.addEventListener(`abort`,()=>a.abort(n.signal.reason));let o={signal:a.signal,options:n,context:r},s=(r,i=!1)=>{let{aborted:s}=a.signal,c=n.ignoreFetchAbort&&r!==void 0;return n.status&&(s&&!i?(n.status.fetchAborted=!0,n.status.fetchError=a.signal.reason,c&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),s&&!c&&!i?l(a.signal.reason):(this.valList[t]===d&&(r===void 0?d.__staleWhileFetching?this.valList[t]=d.__staleWhileFetching:this.delete(e):(n.status&&(n.status.fetchUpdated=!0),this.set(e,r,o.options))),r)},c=e=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=e),l(e)),l=r=>{let{aborted:i}=a.signal,o=i&&n.allowStaleOnFetchAbort,s=o||n.allowStaleOnFetchRejection,c=s||n.noDeleteOnFetchRejection;if(this.valList[t]===d&&(!c||d.__staleWhileFetching===void 0?this.delete(e):o||(this.valList[t]=d.__staleWhileFetching)),s)return n.status&&d.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),d.__staleWhileFetching;if(d.__returned===d)throw r},u=(t,r)=>{this.fetchMethod(e,i,o).then(e=>t(e),r),a.signal.addEventListener(`abort`,()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(t(),n.allowStaleOnFetchAbort&&(t=e=>s(e,!0)))})};n.status&&(n.status.fetchDispatched=!0);let d=new Promise(u).then(s,c);return d.__abortController=a,d.__staleWhileFetching=i,d.__returned=null,t===void 0?(this.set(e,d,{...o.options,status:void 0}),t=this.keyMap.get(e)):this.valList[t]=d,d}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:n=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:o=0,sizeCalculation:s=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:l=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:u=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:f=this.allowStaleOnFetchAbort,fetchContext:p=this.fetchContext,forceRefresh:m=!1,status:h,signal:g}={}){if(!this.fetchMethod)return h&&(h.fetch=`get`),this.get(e,{allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:r,status:h});let _={allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:r,ttl:i,noDisposeOnSet:a,size:o,sizeCalculation:s,noUpdateTTL:c,noDeleteOnFetchRejection:l,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:f,ignoreFetchAbort:d,status:h,signal:g},v=this.keyMap.get(e);if(v===void 0){h&&(h.fetch=`miss`);let t=this.backgroundFetch(e,v,_,p);return t.__returned=t}else{let r=this.valList[v];if(this.isBackgroundFetch(r)){let e=t&&r.__staleWhileFetching!==void 0;return h&&(h.fetch=`inflight`,e&&(h.returnedStale=!0)),e?r.__staleWhileFetching:r.__returned=r}let i=this.isStale(v);if(!m&&!i)return h&&(h.fetch=`hit`),this.moveToTail(v),n&&this.updateItemAge(v),this.statusTTL(h,v),r;let a=this.backgroundFetch(e,v,_,p),o=a.__staleWhileFetching!==void 0,s=o&&t;return h&&(h.fetch=o&&i?`stale`:`refresh`,s&&i&&(h.returnedStale=!0)),s?a.__staleWhileFetching:a.__returned=a}}get(e,{allowStale:t=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:i}={}){let a=this.keyMap.get(e);if(a!==void 0){let o=this.valList[a],s=this.isBackgroundFetch(o);return this.statusTTL(i,a),this.isStale(a)?(i&&(i.get=`stale`),s?(i&&(i.returnedStale=t&&o.__staleWhileFetching!==void 0),t?o.__staleWhileFetching:void 0):(r||this.delete(e),i&&(i.returnedStale=t),t?o:void 0)):(i&&(i.get=`hit`),s?o.__staleWhileFetching:(this.moveToTail(a),n&&this.updateItemAge(a),o))}else i&&(i.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 F(`del`,`delete`),this.delete}delete(e){let t=!1;if(this.size!==0){let n=this.keyMap.get(e);if(n!==void 0)if(t=!0,this.size===1)this.clear();else{this.removeItemSize(n);let t=this.valList[n];this.isBackgroundFetch(t)?t.__abortController.abort(Error(`deleted`)):(this.dispose(t,e,`delete`),this.disposeAfter&&this.disposed.push([t,e,`delete`])),this.keyMap.delete(e),this.keyList[n]=null,this.valList[n]=null,n===this.tail?this.tail=this.prev[n]:n===this.head?this.head=this.next[n]:(this.next[this.prev[n]]=this.next[n],this.prev[this.next[n]]=this.prev[n]),this.size--,this.free.push(n)}}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(Error(`deleted`));else{let n=this.keyList[e];this.dispose(t,n,`delete`),this.disposeAfter&&this.disposed.push([t,n,`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 F(`reset`,`clear`),this.clear}get length(){return te(`length`,`size`),this.size}static get AbortController(){return k}static get AbortSignal(){return M}},U=H;const W=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,re=128;let G,ie;function ae(e){!G||G.length<e?(G=Buffer.allocUnsafe(e*128),u.webcrypto.getRandomValues(G),ie=0):ie+e>G.length&&(u.webcrypto.getRandomValues(G),ie=0),ie+=e}function K(e=21){ae(e-=0);let t=``;for(let n=ie-e;n<ie;n++)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[G[n]&63];return t}var oe=class{get crop(){return this._crop}set crop(e){this._crop=e}getObjectsAt(e){return[]}getAllPointsAt(e,t,n){return[]}getScheduledUpdates(e,t){return[]}constructor(){E(this,`__id`,void 0),E(this,`__revision`,0),E(this,`__host`,void 0),E(this,`__onCreate`,void 0),E(this,`__parent`,void 0),E(this,`__owner`,{value:void 0}),E(this,`__state`,{}),E(this,`eventHandlers`,void 0),E(this,`scale`,1),E(this,`layers`,[]),E(this,`time`,[]),E(this,`_crop`,void 0),E(this,`cropData`,void 0),E(this,`id`,void 0),E(this,`addEventListener`,(e,t,n)=>{let r=y[e];if(!this.eventHandlers[r])throw Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)}),E(this,`removeEventListener`,(e,t)=>{let n=y[e];if(!this.eventHandlers[n]){console.warn(`Unknown event ${n}`);return}this.eventHandlers[n].indexOf(t)!==-1&&(this.eventHandlers[n]=this.eventHandlers[n].filter(e=>e!==t))}),this.id=this.__id=K(),this.eventHandlers=v()}dispatchEvent(e,t){let n=this.eventHandlers[e],r=n?n.length:0,i=!1;if(r)for(let a=0;a<r;a++)try{n[a]?.(t),i=!0}catch(t){console.error(e,t)}return i}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,l.mutate)(this.points,(0,l.translate)(e,t))}atScale(e){(0,l.mutate)(this.points,(0,l.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,l.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};const q=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,se={},ce=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var le=class extends oe{constructor(){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`points`,void 0),E(this,`hoverEvents`,!1),E(this,`activeEvents`,!1),E(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),E(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`props`,{}),E(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),E(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),E(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),E(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=K(12),this.points=(0,l.dna)(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps(e={}){let t=!1;if(e.interactive!==this.props.interactive&&(t=!0,this.props.interactive=e.interactive),e.style){let n=e.border||e.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let e=se[n]||q.exec(n)||q.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=se[n]=e)}if(this._parsed.border.id&&(e.style.borderWidth=this._parsed.border.match[1],e.style.borderStyle=`solid`,e.style.borderColor=this._parsed.border.match[4]),e.style.outline!==this._parsed.outline.id)if(!e.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let t=se[e.style.outline]||q.exec(e.style.outline)||q.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=se[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of ce)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}};const ue=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,de={},fe=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var pe=class extends oe{constructor(){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`isShape`,!0),E(this,`points`,void 0),E(this,`hoverEvents`,!1),E(this,`activeEvents`,!1),E(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),E(this,`boundingBox`,null),E(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`props`,{}),E(this,`shape`,{type:`none`}),E(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),E(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),E(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),E(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=K(12),this.points=(0,l.dna)(5),this.shape={type:`none`}}updateBoundingBox(){if(this.shape.type===`none`)return;let e=this.shape.points;if(this.shape.points.length>2){let t=Math.min(...e.map(e=>e[0])),n=Math.min(...e.map(e=>e[1])),r=Math.max(0,...e.map(e=>e[0])),i=Math.max(0,...e.map(e=>e[1]));this.boundingBox={x:t,y:n,width:r-t,height:i-n};return}this.boundingBox=null}intersects(e){if(!e||this.shape.type===`none`)return!1;let[t,n]=e,r=this.shape.points,i=this.boundingBox;if(i||(this.updateBoundingBox(),i=this.boundingBox),!i||t<i.x||t>i.x+i.width||n<i.y||n>i.height+i.y)return!1;let a=!1;for(let e=0,i=r.length-1;e<r.length;i=e++)r[e][1]>n!=r[i][1]>n&&t<(r[i][0]-r[e][0])*(n-r[e][1])/(r[i][1]-r[e][1])+r[e][0]&&(a=!a);return a}getAllPointsAt(e,t){return e[3]-e[1]===1&&e[4]-e[2]===1?this.intersects([e[1],e[2]])?[[this,this.points,t]]:[]:[[this,this.points,t]]}applyProps(e={}){let t=!1;if(e.points)if(this.shape.type!==`polygon`||this.shape.points.length!==e.points.length)this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox();else{let t=!1,n=e.points.length;for(let r=0;r<n;r++)if(e.points[r][0]!==this.shape.points[r][0]||e.points[r][1]!==this.shape.points[r][1]){t=!0;break}t&&(this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox())}if(e.interactive!==this.props.interactive&&(t=!0,this.props.interactive=e.interactive),(e.open||e.open===!1)&&(t=!0,this.shape.open=e.open),e.style){let n=e.border||e.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let e=de[n]||ue.exec(n)||ue.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=de[n]=e)}if(this._parsed.border.id&&(e.style.borderWidth=this._parsed.border.match[1],e.style.borderStyle=`solid`,e.style.borderColor=this._parsed.border.match[4]),e.style.outline!==this._parsed.outline.id)if(!e.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let t=de[e.style.outline]||ue.exec(e.style.outline)||ue.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=de[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of fe)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}},J=class e extends oe{constructor(e){if(super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`uri`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`priority`,void 0),E(this,`style`,{opacity:1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:l.DnaFactory.singleBox(e.width/t,e.height/t),rotation:e?.rotation}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;if(this.id=e.id||e.uri,this.uri=e.uri,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y)),e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.crop){this.cropData=e.crop;let t=l.DnaFactory.singleBox(e.crop.width,e.crop.height,e.crop.x,e.crop.y);(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=(0,l.dna)(t)}e.display?(this.display.scale=n,this.display.width=e.display.width,this.display.height=e.display.height,this.display.rotation=e.display.rotation,this.display.points=l.DnaFactory.singleBox(e.display.width,e.display.height)):(this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.display.points=l.DnaFactory.singleBox(e.target.width/n,e.target.height/n))}getAllPointsAt(e,t,n){return[[this,this.crop||this.points,t]]}static fromSvg(t,n,r,i){return e.fromImage(`data:image/svg+xml;base64,`+btoa(t),n,r,i)}static fromImage(t,n,r,i){let a=new e;return a.applyProps({uri:t,id:i,display:r,target:n}),a}getImageUrl(){return this.uri}};function me(e,t,n){return Math.min(Math.max(e,t),n)}var Y=class e extends oe{constructor(e){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`display`,void 0),E(this,`tileWidth`,void 0),E(this,`tileHeight`,void 0),E(this,`columns`,void 0),E(this,`rows`,void 0),E(this,`style`,{opacity:1}),E(this,`points`,void 0),E(this,`service`,void 0),E(this,`format`,`jpg`),E(this,`crop2`,void 0),E(this,`version3`,void 0),E(this,`tileUrl`,void 0),this.tileUrl=C(e.url),this.id=e.id||`${this.tileUrl}--${e.scaleFactor}--${e.tileWidth}x${e.tileHeight}`,this.points=e.displayPoints?e.displayPoints:(0,l.transform)(e.points,(0,l.scale)(e.scaleFactor)),this.tileWidth=e.tileWidth,this.tileHeight=e.tileHeight,this.columns=e.columns,this.rows=e.rows,this.version3=e.version3,this.display={x:0,y:0,width:e.width/e.scaleFactor,height:e.height/e.scaleFactor,points:e.points,scale:e.scaleFactor},e.format&&(this.format=e.format)}applyProps(e){if(e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.service!==this.service&&(this.service=e.service),e.format?this.format=e.format:this.format=`jpg`,e.version3!==void 0&&(this.version3=e.version3),e.crop){this.cropData=e.crop;let t=(0,l.dna)([...this.points]),n=t.length/5,r=e.crop.x||0,i=e.crop.y||0,a=e.crop.x+e.crop.width,o=e.crop.y+e.crop.height;for(let e=0;e<n;e++){let n=e*5;t[n+1]<a&&t[n+3]>r&&t[n+2]<o&&t[n+4]>i?(t[n+1]=me(t[n+1],r,a),t[n+3]=me(t[n+3],r,a),t[n+2]=me(t[n+2],i,o),t[n+4]=me(t[n+4],i,o)):t[n]=0}(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=t}}static fromTile(t,n,r,i,a,o,s,c){let u=r.height?r.height:r.width,d=s?Math.floor(n.width/i):Math.ceil(n.width/i),f=s?Math.floor(n.height/i):Math.ceil(n.height/i),p=Math.ceil(d/r.width),m=Math.ceil(f/u),h=l.DnaFactory.grid(p,m),g=l.DnaFactory.grid(p,m),_=a&&a[`@context`]?Array.isArray(a[`@context`])?a[`@context`]:[a[`@context`]]:[],v=c===void 0?_.indexOf(`http://iiif.io/api/image/3/context.json`)!==-1:c;for(let e=0;e<m;e++)for(let t=0;t<p;t++){let a=t*r.width,o=e*u;g.addPoints(a*i,o*i,t===p-1?n.width:(a+r.width)*i,e===m-1?n.height:(o+u)*i),h.addPoints(a,o,t===p-1?d:a+r.width,e===m-1?f:o+u)}let y=new e({url:t,scaleFactor:i,points:h.build(),displayPoints:g.build(),width:n.width,height:n.height,tileWidth:r.width,tileHeight:u,columns:p,rows:m,format:o,version3:v});return y.applyProps({service:a}),y}getImageUrl(e){let t=this.points.slice(e*5,e*5+5),n=t[3]-t[1],r=t[4]-t[2],i=Math.ceil(n/this.display.scale),a=Math.ceil(r/this.display.scale),o=`${i>this.tileWidth?this.tileWidth:i},`;return this.version3&&(o+=`${a>this.tileHeight?this.tileHeight:a}`),`${this.tileUrl}/${t[1]},${t[2]},${n},${r}/${o}/0/default.${this.format||`jpg`}`}getAllPointsAt(e,t,n){let r=(0,l.hidePointsOutsideRegion)(this.crop||this.points,e);return[[this,r,t]]}transform(e){(0,l.mutate)(this.points,e)}getScheduledUpdates(e,t){return[]}};function he(e,t,n){if(!t||t[0]===0)return null;let r=e[3]-e[1],i=e[4]-e[2],a=t[3]-t[1],o=t[4]-t[2],s=r<a,c=i<o,l=t[1]+a/2-r/2,u=t[2]+o/2-i/2;return{minX:s?t[1]-n:l,maxX:s?t[3]-r+n:l,minY:c?t[2]-n:u,maxY:c?t[4]-i+n:u}}function ge(e){if(!e.enableFilters||!e.filters.brightness&&!e.filters.contrast&&!e.filters.grayscale&&!e.filters.invert&&!e.filters.sepia&&!e.filters.saturate&&!e.filters.hueRotate&&!e.filters.blur)return`none`;let t=``;return e.filters.brightness&&(t+=`brightness(${~~(100+e.filters.brightness*100)}%) `),e.filters.contrast&&(t+=`contrast(${~~(100+e.filters.contrast*100)}%) `),e.filters.grayscale&&(t+=`grayscale(${~~(e.filters.grayscale*100)}%) `),e.filters.invert&&(t+=`invert(${~~(e.filters.invert*100)}%) `),e.filters.sepia&&(t+=`sepia(${~~(e.filters.sepia*100)}%) `),e.filters.saturate&&(t+=`saturate(${~~(100+e.filters.saturate*100)}%) `),e.filters.hueRotate&&(t+=`hue-rotate(${e.filters.hueRotate}deg) `),e.filters.blur&&(t+=`blur(${e.filters.blur}px) `),t.trim()}function _e(e,t,n){return Math.max(t,Math.min(n,e))}function ve(){if(typeof navigator>`u`)return;let e=navigator;return e.connection||e.mozConnection||e.webkitConnection}function ye(e){let t=10;return typeof navigator<`u`&&typeof navigator.hardwareConcurrency==`number`&&(t=_e(Math.round(navigator.hardwareConcurrency*.75),4,10)),e?.saveData?3:e?.effectiveType===`slow-2g`||e?.effectiveType===`2g`?2:e?.effectiveType===`3g`?Math.min(t,4):t}function X(e,t){return t?.saveData||t?.effectiveType===`slow-2g`||t?.effectiveType===`2g`?0:t?.effectiveType===`3g`?2:Math.min(e+2,12)}function be(e={}){let t=ve(),n=ye(t),r=typeof e.maxConcurrentRequests==`number`?Math.max(1,Math.floor(e.maxConcurrentRequests)):n;return{maxConcurrentRequests:r,maxPrefetchPerFrame:typeof e.maxPrefetchPerFrame==`number`?Math.max(0,Math.floor(e.maxPrefetchPerFrame)):X(r,t),timeoutMs:typeof e.timeoutMs==`number`?Math.max(250,Math.floor(e.timeoutMs)):8e3,maxAttempts:typeof e.maxAttempts==`number`?Math.max(1,Math.floor(e.maxAttempts)):3,baseDelayMs:typeof e.baseDelayMs==`number`?Math.max(0,Math.floor(e.baseDelayMs)):250,maxDelayMs:typeof e.maxDelayMs==`number`?Math.max(0,Math.floor(e.maxDelayMs)):3e3,jitterRatio:typeof e.jitterRatio==`number`?_e(e.jitterRatio,0,1):.2,errorRetryIntervalMs:typeof e.errorRetryIntervalMs==`number`?Math.max(0,Math.floor(e.errorRetryIntervalMs)):3e4,revealDelayFrames:typeof e.revealDelayFrames==`number`?Math.max(0,Math.floor(e.revealDelayFrames)):1,revealBatchWindowFrames:typeof e.revealBatchWindowFrames==`number`?Math.max(0,Math.floor(e.revealBatchWindowFrames)):1,skipFadeIfLoadedWithinMs:typeof e.skipFadeIfLoadedWithinMs==`number`?Math.max(0,Math.floor(e.skipFadeIfLoadedWithinMs)):120}}function xe(e,t,n=Math.random){let r=Math.max(1,Math.floor(t)),i=e.baseDelayMs*2**(r-1),a=Math.min(e.maxDelayMs,i),o=a*e.jitterRatio;return o?Math.max(0,Math.floor(a+(n()*2-1)*o)):a}var Se=class extends Error{constructor(e=`Image request cancelled`,t=!0){super(e),E(this,`silent`,void 0),this.name=`ImageRequestCancelledError`,this.silent=t}};function Ce(e){return e instanceof Se}let we=0;function Te(e){return we+=1,`${we}:${e}`}function Ee(e){return Error(`Image load timeout: ${e}`)}function De(e,t){let n,r=document.createElement(`img`);r.decoding=`async`,t.crossOrigin&&(r.crossOrigin=t.crossOrigin);let i=!1;return{promise:new Promise((a,o)=>{let s=()=>{n&&clearTimeout(n),r.onload=null,r.onerror=null};r.onload=()=>{i||(i=!0,s(),a(r))},r.onerror=e=>{i||(i=!0,s(),o(e))},n=setTimeout(()=>{i||(i=!0,s(),o(Ee(e)))},t.timeoutMs),r.src=e,r.complete&&r.naturalWidth>0&&(i=!0,s(),a(r))}),abort:()=>{i||(i=!0,n&&clearTimeout(n),r.onload=null,r.onerror=null,r.src=``)}}}var Oe=class{constructor(e){E(this,`timeoutMs`,void 0),E(this,`crossOrigin`,void 0),E(this,`useFetch`,void 0),E(this,`cache`,void 0),E(this,`inFlight`,new Map),E(this,`knownConsumers`,new Map),this.timeoutMs=e.timeoutMs,this.crossOrigin=e.crossOrigin,this.useFetch=!!e.useFetch&&typeof fetch<`u`&&typeof AbortController<`u`,this.cache=e.cache||new Map}acquire(e,t){let n=this.cache.get(e);if(n&&n.naturalWidth>0)return{requestKey:`cached:${e}`,promise:Promise.resolve(n),release:()=>{}};let r=this.inFlight.get(e);r||(r={url:e,requestKey:Te(e),consumers:new Set,promise:Promise.resolve(document.createElement(`img`)),settled:!1,cancelled:!1,silentCancellation:!0},r.promise=this.createRequest(r).then(t=>(r.settled=!0,this.cache.set(e,t),t)).catch(e=>{throw r.settled=!0,r.cancelled?new Se(`Image request cancelled`,r.silentCancellation):e}).finally(()=>{r&&r.consumers.size===0&&this.inFlight.delete(e)}),this.inFlight.set(e,r)),r.consumers.add(t);let i=this.knownConsumers.get(t)||new Set;return i.add(e),this.knownConsumers.set(t,i),{requestKey:r.requestKey,promise:r.promise,release:n=>{this.release(e,t,n)}}}release(e,t,n={}){let r=this.knownConsumers.get(t);r&&(r.delete(e),r.size===0&&this.knownConsumers.delete(t));let i=this.inFlight.get(e);if(i&&(i.consumers.delete(t),n.silent===!1&&(i.silentCancellation=!1),!(i.consumers.size>0))){if(!i.settled){i.cancelled=!0,i.abortController&&i.abortController.abort(),i.abortDomImage&&i.abortDomImage();return}this.inFlight.delete(e)}}releaseConsumer(e,t={}){let n=this.knownConsumers.get(e);if(n)for(let r of[...n])this.release(r,e,t)}cancelAll(e={}){let t=[...this.knownConsumers.keys()];for(let n of t)this.releaseConsumer(n,e)}async createRequest(e){if(this.useFetch){let t=new AbortController;e.abortController=t;let n=setTimeout(()=>{t.abort(Ee(e.url))},this.timeoutMs);try{let n=this.crossOrigin===`use-credentials`?`include`:`same-origin`,r=await fetch(e.url,{signal:t.signal,credentials:n});if(!r.ok)throw Error(`Image request failed (${r.status}): ${e.url}`);let i=await r.blob(),a=URL.createObjectURL(i);try{let{promise:t,abort:n}=De(a,{timeoutMs:this.timeoutMs,crossOrigin:void 0});return e.abortDomImage=n,await t}finally{URL.revokeObjectURL(a)}}finally{clearTimeout(n)}}let{promise:t,abort:n}=De(e.url,{timeoutMs:this.timeoutMs,crossOrigin:this.crossOrigin});return e.abortDomImage=n,t}};const Z=/(-?[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,Q={},ke=typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(`firefox`),Ae=new Map;var je=class{constructor(e,t){E(this,`canvas`,void 0),E(this,`ctx`,void 0),E(this,`options`,void 0),E(this,`imagesPending`,0),E(this,`imagesLoaded`,0),E(this,`imageIdsLoaded`,[]),E(this,`frameIsRendering`,!1),E(this,`pendingDrawCall`,!1),E(this,`firstMeaningfulPaint`,!1),E(this,`parallelTasks`,6),E(this,`maxPrefetchPerFrame`,8),E(this,`imageLoadingConfig`,void 0),E(this,`imageRequestPool`,void 0),E(this,`frameTasks`,0),E(this,`loadingQueueOrdered`,!0),E(this,`loadingQueue`,[]),E(this,`currentTask`,Promise.resolve()),E(this,`tasksRunning`,0),E(this,`inFlightImageLoads`,new Map),E(this,`requiredTileKeys`,new Set),E(this,`requiredPrefetchTileKeys`,new Set),E(this,`requestGeneration`,0),E(this,`frameCounter`,0),E(this,`pendingTileReveals`,new Map),E(this,`stats`,void 0),E(this,`averageJobTime`,64),E(this,`lastKnownScale`,1),E(this,`visible`,[]),E(this,`previousVisible`,[]),E(this,`rendererPosition`,void 0),E(this,`dpi`,void 0),E(this,`drawCalls`,[]),E(this,`lastPaintedObject`,void 0),E(this,`hostCache`,void 0),E(this,`invalidated`,[]),E(this,`fallbackRevealTimeout`,null),E(this,`framePrefetchCount`,0),E(this,`hasTilesFading`,!1),E(this,`hasActiveLayerClip`,!1),E(this,`_worker`,()=>{if(this.loadingQueue.length&&this.tasksRunning<this.parallelTasks&&this.frameTasks<this.parallelTasks){let e=this.loadingQueue.pop();e&&(this.tasksRunning++,this.frameTasks++,this.currentTask=e.task().then(()=>{this.tasksRunning--}).catch(()=>{this.tasksRunning--}))}}),E(this,`_scheduled`,0),E(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.imageLoadingConfig=be(this.options.imageLoading),this.parallelTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Oe({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:this.options.crossOrigin?`anonymous`:void 0,useFetch:!!this.options.crossOrigin,cache:Ae}),this.canvas.style.transition=`opacity .3s`,this.dpi=t?.dpi||1,this.options.readiness===`immediate`&&(this.firstMeaningfulPaint=!0,this.canvas.style.opacity=`1`),this.hostCache=t?.lruCache?new U({maxSize:1024*512*512,dispose:(e,t,n)=>{this.invalidated.push(t),e.width=0,e.height=0},sizeCalculation:(e,t)=>e.width*e.height}):{store:{},get(e){return this.store[e]},set(e,t){this.store[e]=t}}}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}resize(){this.rendererPosition=this.canvas.getBoundingClientRect()}getCompositeOwner(e){let t=e?.__parent;return t&&t.renderOptions?t:void 0}compareCompositeLoadPriority(e,t){let n=this.getCompositeOwner(e),r=this.getCompositeOwner(t);return!n||n!==r?0:(e?.display.scale||0)-(t?.display.scale||0)}isReady(){return this.firstMeaningfulPaint}afterFrame(e){if(this.clearTransform(),this.lastPaintedObject=void 0,this.frameIsRendering=!1,this.imagesPending=this.loadingQueue.length+this.tasksRunning+this.inFlightImageLoads.size+this.pendingTileReveals.size,this.imagesLoaded=0,this.loadingQueueOrdered||(this.loadingQueue=this.loadingQueue.sort((e,t)=>{let n=this.compareCompositeLoadPriority(e.paint,t.paint);return n===0?e.network&&t.network&&e.scale===t.scale?t.distance-e.distance:e.scale-t.scale:n}),this.loadingQueueOrdered=!0),this.scheduleSingleImageLookahead(e),this.previousVisible=this.visible,this.pruneStaleTileWork(),this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let e=0;e<this.drawCalls.length;e++){let e=this.drawCalls.shift();e&&e()}this.doOffscreenWork(),this.options.debug&&this.stats&&this.stats.end()}doOffscreenWork(){this.frameTasks=0,this.loadingQueue.length&&(this._worker(),this.loadingQueue.length&&this.tasksRunning<this.parallelTasks&&(this._scheduled||(this._scheduled=setInterval(this._doWork,0))))}getScale(e,t,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}beforeFrame(e,t,n,r){this.options.debug&&this.stats&&this.stats.begin(),this.frameIsRendering=!0,this.frameCounter+=1,this.visible=[],this.framePrefetchCount=0,this.hasTilesFading=!1,this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.flushTileRevealBatch(),this.options.beforeFrame&&this.options.beforeFrame(t);let i=this.getCanvasDims();this.ctx.globalAlpha=1,this.canvas.dataset.background===`transparent`?this.ctx.clearRect(0,0,i.width,i.height):(this.ctx.fillStyle=this.canvas.dataset.background??`rgb(0, 0, 0)`,this.ctx.fillRect(0,0,i.width,i.height));let a=ge(r);this.ctx.filter!==a&&(this.ctx.filter=a)}applyTransform(e,t,n,r,i){let a=e.__owner.value;if(a&&a.rotation){this.ctx.save();let e=t+r/2,o=n+i/2;this.ctx.translate(e,o),this.ctx.rotate(a.rotation*Math.PI/180),this.ctx.translate(-e,-o),this.lastPaintedObject=a}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}getTileKey(e,t){return`${e.id}::${e.display.scale}::${t}`}nextRequestKey(e){return this.requestGeneration+=1,`${e}::${this.requestGeneration}`}markTileRequired(e,t){if(t){this.requiredPrefetchTileKeys.add(e);return}this.requiredTileKeys.add(e)}isTileRequired(e){return this.requiredTileKeys.has(e)||this.requiredPrefetchTileKeys.has(e)}shouldSkipFade(e,t=performance.now()){return e?.requestedAt?t-e.requestedAt<=this.imageLoadingConfig.skipFadeIfLoadedWithinMs:!1}enqueueTileReveal(e,t,n){let r=performance.now();if(this.imageLoadingConfig.revealDelayFrames===0&&this.imageLoadingConfig.revealBatchWindowFrames===0){let e=this.getTileState(t,n);this.setTileState(t,n,{...e,loadedAt:r,skipFade:this.shouldSkipFade(e,r)});return}this.pendingTileReveals.set(e,{imageBuffer:t,index:n,queuedFrame:this.frameCounter})}flushTileRevealBatch(){if(this.pendingTileReveals.size===0)return;let e=this.imageLoadingConfig.revealDelayFrames,t=this.imageLoadingConfig.revealBatchWindowFrames,n=performance.now(),r=[...this.pendingTileReveals.entries()].sort((e,t)=>e[1].queuedFrame-t[1].queuedFrame),i=0;for(;i<r.length;){let a=r[i];if(this.frameCounter-a[1].queuedFrame<e)break;let o=a[1].queuedFrame+t;for(;i<r.length&&r[i][1].queuedFrame<=o;){let[e,t]=r[i],a=this.getTileState(t.imageBuffer,t.index);a.state===`decoded`&&!a.loadedAt&&this.setTileState(t.imageBuffer,t.index,{...a,loadedAt:n,skipFade:this.shouldSkipFade(a,n)}),this.pendingTileReveals.delete(e),i+=1}}}emitImageError(e){this.options.onImageError&&this.options.onImageError({renderer:`canvas`,...e})}releaseInFlightTileLoad(e,t={}){let n=this.inFlightImageLoads.get(e);n&&(n.release(t),this.inFlightImageLoads.delete(e))}pruneStaleTileWork(){let e=[];for(let t of this.loadingQueue){if(!t.tileKey||this.isTileRequired(t.tileKey)){e.push(t);continue}if(t.paint&&typeof t.index==`number`){let e=this.ensureImageBuffer(t.paint),n=this.getTileState(e,t.index);n.lastRequestKey===t.requestKey&&(n.state===`queued`||n.state===`loading`)&&this.setTileState(e,t.index,{...n,state:`idle`,cancelledAt:performance.now()})}t.tileKey&&this.pendingTileReveals.delete(t.tileKey)}this.loadingQueue=e;let t=[];for(let[e,n]of this.inFlightImageLoads.entries()){if(this.isTileRequired(e))continue;t.push(e);let r=this.getTileState(n.imageBuffer,n.index);r.lastRequestKey===n.requestKey&&r.state===`loading`&&this.setTileState(n.imageBuffer,n.index,{...r,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e)}for(let e of t)this.releaseInFlightTileLoad(e,{silent:!0})}ensureImageBuffer(e){(!e.__host||!e.__host.canvas)&&this.createImageHost(e);let t=e.__host.canvas;return t.tiles||(t.tiles={}),t.indices||(t.indices=[]),t.loaded||(t.loaded=[]),t.canvases||(t.canvases=[]),t}getTileState(e,t){return e.tiles||(e.tiles={}),e.tiles[t]||(e.tiles[t]={state:`idle`},this.syncBufferState(e)),e.tiles[t]}setTileState(e,t,n){e.tiles||(e.tiles={}),e.tiles[t]=n,this.syncBufferState(e)}syncBufferState(e){let t=[],n=[],r=e.tiles||{},i=Object.keys(r);for(let e=0;e<i.length;e++){let a=parseInt(i[e],10),o=r[a].state;(o===`queued`||o===`loading`)&&t.push(a),o===`decoded`&&n.push(a)}e.indices=t,e.loaded=n,e.loading=t.length>0}getCompositeRenderOptions(e){return e.__parent?.renderOptions}shouldClipLayerToBounds(e){return e instanceof J||e instanceof Y?!!this.getCompositeRenderOptions(e)?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}getLayerPolicy(e){return this.getCompositeRenderOptions(e)?.layerPolicy||`fallback-only`}isLayerActive(e){let t=e.__parent;return!t||this.getLayerPolicy(e)===`always-blend`?!0:typeof t.isImageActive==`function`?!!t.isImageActive(e):!0}getPrefetchRadius(e){let t=this.getCompositeRenderOptions(e);return t?typeof t.prefetchRadius==`number`?Math.max(0,t.prefetchRadius):t.loadingBias===`speed`?2:t.loadingBias===`data`?0:1:0}getFadeAlpha(e,t,n){if(t?.skipFade)return 1;if(t?.state===`decoded`&&!t.loadedAt&&(this.imageLoadingConfig.revealDelayFrames>0||this.imageLoadingConfig.revealBatchWindowFrames>0))return 0;let r=this.getCompositeRenderOptions(e);if(!r||!r.fadeInMs||r.fadeInMs<=0)return 1;let i=performance.now(),a=1;if(n&&r.fadeOnLayerChange&&r.layerPolicy!==`active-only`){let t=e.__parent;if(t&&typeof t.getImageActivatedAt==`function`){let n=t.getImageActivatedAt(e);typeof n==`number`&&(a=Math.min(a,Math.max(0,Math.min(1,(i-n)/r.fadeInMs))))}}return t?.loadedAt&&(n||r.fadeFallbackTiles)&&(a=Math.min(a,Math.max(0,Math.min(1,(i-t.loadedAt)/r.fadeInMs)))),a}schedulePrefetchNeighbours(e,t,n,r){if(!(t instanceof Y)||this.framePrefetchCount>=this.maxPrefetchPerFrame||this.getCompositeRenderOptions(t)?.loadingBias===`data`)return;let i=this.getPrefetchRadius(t);if(i<=0)return;let a=t.columns,o=t.rows;if(!a||!o)return;let s=n%a,c=Math.floor(n/a);for(let n=1;n<=i;n++)for(let i=-n;i<=n;i++)for(let l=-n;l<=n;l++){if(Math.max(Math.abs(l),Math.abs(i))!==n)continue;let u=s+l,d=c+i;if(u<0||d<0||u>=a||d>=o)continue;let f=d*a+u,p=this.getTileKey(t,f);if(this.markTileRequired(p,!0),this.schedulePaintToCanvas(e,t,f,r+n*1e3,!0)&&(this.framePrefetchCount++,this.framePrefetchCount>=this.maxPrefetchPerFrame))return}}scheduleSingleImageLookahead(e){if(this.maxPrefetchPerFrame<=0||this.framePrefetchCount>=this.maxPrefetchPerFrame||e.hasActiveZone())return;let t=1/0,n=-1/0,r=new Set;for(let e=0;e<this.visible.length;e++){let i=this.visible[e].__owner?.value;!i||i.type!==`world-object`||i.points[0]===0||(r.add(i),t=Math.min(t,i.points[2]),n=Math.max(n,i.points[4]))}if(!Number.isFinite(t)||!Number.isFinite(n))return;let i=n-t;if(i<=0)return;let a=i*1.5,o=n+a,s=t-a,c,l,u=e.getObjects();for(let e=0;e<u.length;e++){let i=u[e];if(!i||i.type!==`world-object`||i.points[0]===0||r.has(i))continue;let a=i.points[2],d=i.points[4],f=a>=n&&a<=o,p=d<=t&&d>=s;if(!f&&!p)continue;let m;for(let e=0;e<i.layers.length;e++){let t=i.layers[e];if(t instanceof J){m=t;break}}if(m){if(f){let e=a-n;(!c||e<c.distance)&&(c={image:m,distance:e})}if(p){let e=t-d;(!l||e<l.distance)&&(l={image:m,distance:e})}}}let d=[c,l].filter(Boolean);for(let e of d){if(this.framePrefetchCount>=this.maxPrefetchPerFrame)break;let t=this.ensureImageBuffer(e.image);this.schedulePaintToCanvas(t,e.image,0,1e4+e.distance,!0)&&this.framePrefetchCount++}}paint(e,t,n,r,i,a){let o=this.ctx.globalAlpha,s=typeof e.__zoneVisibilityAlpha==`number`?e.__zoneVisibilityAlpha:1;if(e instanceof J||e instanceof Y){let c=e.display.rotation||0,l=c!==0;try{if(l){this.ctx.save();let o=n+i/2,s=r+a/2;e.crop&&(o-=e.crop[t*5+1],s-=e.crop[t*5+2]),this.ctx.translate(o,s),this.ctx.rotate(c*Math.PI/180),this.ctx.translate(-o,-s)}let u=this.options.paintImages!==!1,d=this.options.shouldPaintImage?this.options.shouldPaintImage(e,t):!0;if(!u||!d)return;this.visible.push(e);let f=(e.style?.opacity===void 0?1:e.style.opacity)*s;if(!f)return;this.ctx.globalAlpha=o*f;let p=this.ensureImageBuffer(e),m=this.getTileState(p,t);m.lastUsedAt=performance.now(),this.setTileState(p,t,m);let h=this.getTileKey(e,t);this.markTileRequired(h,!1);let g=this.isLayerActive(e),_=this.getCanvasDims(),v=S({x:n+i/2,y:r+a/2},{x:_.width/2,y:_.height/2}),y=this.invalidated.indexOf(p.canvases[t])!==-1,b=this.hostCache.get(p.canvases[t]),x=!!b&&!y;if(y&&this.setTileState(p,t,{...m,state:`idle`}),(y||!x||m.state===`idle`||m.state===`error`)&&g&&(this.schedulePaintToCanvas(p,e,t,v,!1),this.schedulePrefetchNeighbours(p,e,t,v)),!this.firstMeaningfulPaint)return;if(b&&!y){let s=this.getFadeAlpha(e,m,g);if(s<1&&(this.hasTilesFading=!0),this.ctx.globalAlpha=o*f*s,e.crop&&e.cropData){if(e.crop[t*5]){let o=[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];o[0]+=e.cropData.x/e.display.scale,o[1]+=e.cropData.y/e.display.scale;let s=e.x*this.lastKnownScale,c=e.y*this.lastKnownScale,l=[n+s,r+c,i,a];l[0]+=s,l[1]+=c,this.ctx.drawImage(b,o[0],o[1],o[2],o[3],l[0],l[1],l[2]+1,l[3]+1)}}else ke?this.ctx.drawImage(b,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],n,r,i+1,a+1):this.ctx.drawImage(b,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],n,r,i+Number.MIN_VALUE+.5,a+Number.MIN_VALUE+.5)}}catch{}finally{l&&this.ctx.restore(),this.ctx.globalAlpha=o}}let c=e instanceof le&&this.options.box,l=e instanceof pe&&this.options.polygon;if((c||l)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let t=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),c=e.props.relativeStyle?1:i/e.width,u=t.opacity===void 0?1:t.opacity;this.ctx.globalAlpha=o*u*s;let d=0;t.borderWidth!==void 0&&(d=parseInt(t.borderWidth,10)*c);let f=0;t.outlineWidth!==void 0&&(f=parseInt(t.outlineWidth,10)*c);let p=0;if(t.outlineOffset!==void 0&&(p=parseInt(t.outlineOffset,10)*c),t.borderColor&&(this.ctx.strokeStyle=t.borderColor),t.boxShadow){let e=t.boxShadow.split(/,(?![^(]*\))/);for(let t of e){let e=Q[t]||Z.exec(t)||Z.exec(t);Q[t]=e,e&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(e[1])*this.dpi*c,this.ctx.shadowOffsetY=parseInt(e[3])*this.dpi*c,this.ctx.shadowBlur=parseInt(e[5])*this.dpi*c,this.ctx.shadowColor=e[9],this.ctx.fillStyle=`rgba(0,0,0,1)`,this.ctx.fillRect(n+d,r+d,i,a),this.ctx.restore())}}if(this.ctx.fillStyle=t.backgroundColor||`transparent`,this.ctx.lineWidth=d,l){let t=e.shape,i=t.points||[],a=i.length;this.ctx.beginPath();for(let e=0;e<a;e++)this.ctx.lineTo(n+i[e][0]*this.lastKnownScale,r+i[e][1]*this.lastKnownScale);t.open||this.ctx.closePath(),d&&this.ctx.stroke(),t.open||this.ctx.fill()}else d&&this.ctx.strokeRect(n+d/2,r+d/2,i+d,a+d),this.ctx.fillRect(n+d,r+d,i,a);f&&(t.outlineColor&&(this.ctx.strokeStyle=t.outlineColor),this.ctx.lineWidth=f,this.ctx.strokeRect(n-f/2-p,r-f/2-p,i+d*2+f+p*2,a+d*2+f+p*2))}this.ctx.globalAlpha=o}}schedulePaintToCanvas(e,t,n,r,i=!1){let a=this.getTileState(e,n),o=performance.now(),s=this.getTileKey(t,n);if(this.markTileRequired(s,i),this.pendingTileReveals.delete(s),a.nextRetryAt&&a.nextRetryAt>o||a.state===`queued`||a.state===`loading`||a.state===`decoded`)return!1;let c=`${t.id}--${t.display.scale}-${n}`,l=this.nextRequestKey(s);e.canvases[n]=c;let u=this.invalidated.indexOf(c);return u!==-1&&this.invalidated.splice(u,1),this.setTileState(e,n,{...a,state:`queued`,requestedAt:o,error:void 0,lastRequestKey:l,cancelledAt:void 0,skipFade:!1}),this.loadingQueueOrdered=!1,this.loadingQueue.push({id:c,scale:t.display.scale,kind:`network`,tileKey:s,requestKey:l,network:!0,distance:r,paint:t,index:n,prefetch:i,task:async()=>{let a=this.getTileState(e,n);if(a.lastRequestKey!==l||a.state!==`queued`&&a.state!==`loading`)return;let o=this.visible.indexOf(t)!==-1,u=this.previousVisible.indexOf(t)!==-1;if(!i&&!o&&!u){this.setTileState(e,n,{...a,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(s);return}let d=t.getImageUrl(n);this.setTileState(e,n,{...a,state:`loading`,url:d,requestedAt:a.requestedAt||performance.now(),error:void 0});try{let a=`${s}::${l}`,o=this.imageRequestPool.acquire(d,a);this.inFlightImageLoads.set(s,{tileKey:s,requestKey:l,url:d,consumerId:a,paint:t,imageBuffer:e,index:n,release:o.release});let u=await o.promise;this.releaseInFlightTileLoad(s,{silent:!0});let f=this.getTileState(e,n);if(f.lastRequestKey!==l||f.state!==`loading`)return;this.loadingQueueOrdered=!1,this.loadingQueue.push({id:`${c}--decode`,scale:t.display.scale,kind:`decode`,tileKey:s,requestKey:l,distance:r,paint:t,index:n,prefetch:i,task:()=>new Promise(r=>{let i=this.getTileState(e,n);if(i.lastRequestKey!==l||i.state!==`loading`){r();return}let a=t.display.points.slice(n*5,n*5+5),o=document.createElement(`canvas`),c=o.getContext(`2d`);o.width=a[3]-a[1],o.height=a[4]-a[2],this.hostCache.set(e.canvases[n],o),this.drawCalls.push(()=>{let t=this.getTileState(e,n);if(t.lastRequestKey!==l||t.state!==`loading`){r();return}c.drawImage(u,0,0,a[3]-a[1],a[4]-a[2]);let i=this.getTileState(e,n);this.setTileState(e,n,{...i,state:`decoded`,loadedAt:void 0,error:void 0,attempts:0,nextRetryAt:void 0}),this.enqueueTileReveal(s,e,n),this.imagesLoaded++,r()})})})}catch(r){if(this.releaseInFlightTileLoad(s,{silent:!0}),Ce(r)){let t=this.getTileState(e,n);t.lastRequestKey===l&&this.setTileState(e,n,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(s);return}let i=this.getTileState(e,n);if(i.lastRequestKey!==l)return;let a=(i.attempts||0)+1,o=a<this.imageLoadingConfig.maxAttempts,c=o?performance.now()+xe(this.imageLoadingConfig,a):performance.now()+this.imageLoadingConfig.errorRetryIntervalMs;this.setTileState(e,n,{...i,state:o?`idle`:`error`,error:r,attempts:a,nextRetryAt:c}),this.pendingTileReveals.delete(s),this.emitImageError({severity:`recoverable`,imageUrl:d,contentId:t.id,tileIndex:n,attempt:a,maxAttempts:this.imageLoadingConfig.maxAttempts,willRetry:o,nextRetryAt:c,error:r})}}}),!0}afterPaintLayer(e,t){}prepareLayer(e,t){if(this.hasActiveLayerClip=!1,e.__owner.value&&(e.cropData&&this.lastKnownScale*(1/e.display.scale),this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2])),this.shouldClipLayerToBounds(e)){let e=this.getBoundsFromPoints(t);e&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(e.x,e.y,e.width,e.height),this.ctx.clip(),this.hasActiveLayerClip=!0)}(!e.__host||!e.__host.canvas)&&(e instanceof J||e instanceof Y)&&this.createImageHost(e)}finishLayer(){this.hasActiveLayerClip&&(this.ctx.restore(),this.hasActiveLayerClip=!1),this.lastPaintedObject&&this.clearTransform()}createImageHost(e){e.__host=e.__host?e.__host:{},e.__host.canvas={canvas:void 0,canvases:[],tiles:{},indices:[],loaded:[],loading:!1}}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getViewportBounds(e,t,n){let r=e.getActiveZone();if(r){r.recalculateBounds();let e=he(t,r.points,n);if(e){let n=t[3]-t[1],r=t[4]-t[2];return{x1:e.minX,y1:e.minY,x2:e.maxX+n,y2:e.maxY+r}}}return null}pendingUpdate(){this.imagesPending=this.loadingQueue.length+this.tasksRunning+this.inFlightImageLoads.size+this.pendingTileReveals.size;let e=!this.pendingDrawCall&&this.drawCalls.length===0&&this.loadingQueue.length===0&&this.tasksRunning===0&&this.inFlightImageLoads.size===0&&this.pendingTileReveals.size===0;return!e&&this.visible.length===0&&this.options.readiness!==`immediate`&&this.fallbackRevealTimeout===null&&(this.fallbackRevealTimeout=setTimeout(()=>{this.canvas.style.opacity=`1`,this.firstMeaningfulPaint=!0,this.fallbackRevealTimeout=null},500)),!this.firstMeaningfulPaint&&e&&(this.visible.length||this.options.readiness===`immediate`)?(this.canvas.style.opacity=`1`,this.firstMeaningfulPaint=e,!0):this.options.debug||this.hasTilesFading?!0:!e}getRendererScreenPosition(){return this.rendererPosition}resetReadyState(){this.options.readiness!==`immediate`&&(this.firstMeaningfulPaint=!1,this.fallbackRevealTimeout&&(clearTimeout(this.fallbackRevealTimeout),this.fallbackRevealTimeout=null))}reset(){this.loadingQueue=[],this.drawCalls=[],this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);for(let e of[...this.inFlightImageLoads.keys()])this.releaseInFlightTileLoad(e,{silent:!0});this.imageRequestPool.cancelAll({silent:!0}),this.inFlightImageLoads.clear(),this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.pendingTileReveals.clear(),this.requestGeneration+=1,this.frameCounter=0,this.fallbackRevealTimeout&&(clearTimeout(this.fallbackRevealTimeout),this.fallbackRevealTimeout=null),this.imagesPending=0,this.imagesLoaded=0,this.hasTilesFading=!1}},Me=class{constructor(e){E(this,`renderers`,[]),E(this,`length`,void 0);for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].afterFrame(e,t,n,r)}afterPaintLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].afterPaintLayer(e,t)}beforeFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].beforeFrame(e,t,n,r)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,n,r){return this.renderers[0].getPointsAt(e,t,n,r)}getScale(e,t){return this.renderers[0].getScale(e,t)}getViewportBounds(e,t,n){return this.renderers[0].getViewportBounds(e,t,n)}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,n,r,i,a){for(let o=0;o<this.length;o++)this.renderers[o].paint(e,t,n,r,i,a)}pendingUpdate(){for(let e=0;e<this.length;e++)if(this.renderers[e].pendingUpdate())return!0;return!1}prepareLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].prepareLayer(e,t)}finishLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].finishLayer(e,t)}resize(e,t){for(let n=0;n<this.length;n++)this.renderers[n].resize(e,t)}reset(){for(let e=0;e<this.length;e++)this.renderers[e].reset()}resetReadyState(){for(let e=0;e<this.length;e++)this.renderers[e].resetReadyState&&this.renderers[e].resetReadyState()}},Ne=class extends oe{constructor(...e){super(...e),E(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},Pe=class extends Ne{constructor(e){super(),E(this,`id`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`images`,[]),E(this,`allImages`,[]),E(this,`scaleFactors`,[]),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`lazyLoader`,void 0),E(this,`isFullyLoaded`,!1),E(this,`isLoadingFullResource`,!1),E(this,`maxScaleFactor`,0),E(this,`layerSelection`,new WeakMap),E(this,`layerSelectionFrame`,0),E(this,`renderOptions`,void 0),E(this,`_scheduleSortByScales`,!1),E(this,`_sortByScales`,()=>{this._scheduleSortByScales=!1,this.allImages.sort((e,t)=>t.display.width-e.display.width),this.images=[];let e=.1;for(let t of this.allImages)if(!(t.display.width<this.renderOptions.minSize&&t.display.height<this.renderOptions.minSize&&!t.priority)&&!(t instanceof J&&(t.display.width>this.renderOptions.maxImageSize||t.display.height>this.renderOptions.maxImageSize)&&!t.priority)){if(Math.abs(t.display.scale-e)<.25||t.priority){let e=this.images.pop();e&&(e instanceof J||e.priority)?(t.priority&&this.images.push(t),this.images.push(e)):t&&this.images.push(t)}else t&&this.images.push(t);e=t.display.scale}this.images.length===0&&(this.images=[...this.allImages]),this.scaleFactors=this.images.map(e=>e.display.scale),this.maxScaleFactor=this.scaleFactors.length?Math.max(...this.scaleFactors):0}),E(this,`loadFullResource`,async()=>{if(!(this.isFullyLoaded||this.isLoadingFullResource)&&this.lazyLoader){this.isLoadingFullResource=!0;try{let e=await this.lazyLoader();this.addImages(e||[]),this.isFullyLoaded=!0}finally{this.isLoadingFullResource=!1}}}),E(this,`fallback`,[this.loadFullResource]),this.id=e.id,this.points=l.DnaFactory.singleBox(e.width,e.height),this.lazyLoader=e.loadFullImages,e.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:l.DnaFactory.singleBox(e.width,e.height),height:e.height,width:e.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:2,minSize:255,maxImageSize:2048,quality:1.3,useDevicePixelRatio:!0,layerPolicy:`always-blend`,loadingBias:`balanced`,prefetchRadius:1,fadeInMs:300,fadeFallbackTiles:!1,fadeOnLayerChange:!1,clipToBounds:!1,...e.renderOptions||{}},this.addImages(e.images)}applyProps(e){let t=!1;e.renderSmallestFallback!==void 0&&e.renderSmallestFallback!==this.renderOptions.renderSmallestFallback&&(this.renderOptions.renderSmallestFallback=e.renderSmallestFallback),e.renderLayers!==void 0&&e.renderLayers!==this.renderOptions.renderLayers&&(this.renderOptions.renderLayers=e.renderLayers),e.minSize!==void 0&&e.minSize!==this.renderOptions.minSize&&(this.renderOptions.minSize=e.minSize,t=!0),e.maxImageSize!==void 0&&e.maxImageSize!==this.renderOptions.maxImageSize&&(this.renderOptions.maxImageSize=e.maxImageSize,t=!0),e.quality!==void 0&&e.quality!==this.renderOptions.quality&&(this.renderOptions.quality=e.quality),e.useDevicePixelRatio!==void 0&&e.useDevicePixelRatio!==this.renderOptions.useDevicePixelRatio&&(this.renderOptions.useDevicePixelRatio=e.useDevicePixelRatio),e.layerPolicy!==void 0&&e.layerPolicy!==this.renderOptions.layerPolicy&&(this.renderOptions.layerPolicy=e.layerPolicy),e.loadingBias!==void 0&&e.loadingBias!==this.renderOptions.loadingBias&&(this.renderOptions.loadingBias=e.loadingBias),e.prefetchRadius!==void 0&&e.prefetchRadius!==this.renderOptions.prefetchRadius&&(this.renderOptions.prefetchRadius=e.prefetchRadius),e.fadeInMs!==void 0&&e.fadeInMs!==this.renderOptions.fadeInMs&&(this.renderOptions.fadeInMs=e.fadeInMs),e.fadeFallbackTiles!==void 0&&e.fadeFallbackTiles!==this.renderOptions.fadeFallbackTiles&&(this.renderOptions.fadeFallbackTiles=e.fadeFallbackTiles),e.fadeOnLayerChange!==void 0&&e.fadeOnLayerChange!==this.renderOptions.fadeOnLayerChange&&(this.renderOptions.fadeOnLayerChange=e.fadeOnLayerChange),e.clipToBounds!==void 0&&e.clipToBounds!==this.renderOptions.clipToBounds&&(this.renderOptions.clipToBounds=e.clipToBounds),t&&this.sortByScales()}appendChild(e){this.addImages([e])}removeChild(e){if(this.images.indexOf(e)===-1&&this.allImages.indexOf(e)===-1)return;let t=this.getImageDedupeKey(e);this.images=this.images.filter(n=>n!==e&&this.getImageDedupeKey(n)!==t),this.allImages=this.allImages.filter(n=>n!==e&&this.getImageDedupeKey(n)!==t),this.sortByScales()}insertBefore(e,t){this.addImages([e])}hideInstance(){}addImages(e){let t=new Set(this.allImages),n=new Set(this.allImages.map(e=>this.getImageDedupeKey(e)));for(let r of e){if(!r||t.has(r))continue;let e=this.getImageDedupeKey(r);n.has(e)||(r.__parent=this,r.__owner=this.__owner,this.allImages.push(r),t.add(r),n.add(e))}this.sortByScales()}getImageDedupeKey(e){return`${e.id}::${e.display.scale}`}sortByScales(){this._scheduleSortByScales=!0}getScheduledUpdates(e,t){return this._scheduleSortByScales?[this._sortByScales]:this.isFullyLoaded?[]:t>1/this.maxScaleFactor?this.fallback:[]}getAllPointsAt(e,t,n){if(this.images.length===0)return[];let r=this.renderOptions.useDevicePixelRatio&&typeof window<`u`&&window.devicePixelRatio||1,i=b(1/(n||1)/r,this.images,this.renderOptions.quality),a=this.images.length,o=t?(0,l.compose)(t,(0,l.translate)(this.x,this.y)):(0,l.translate)(this.x,this.y),s=[i];if(i!==this.images.length-1&&this.images[i+1]){s=[];for(let e=a-1;e>=i;e--)s.push(e);let e=s[0];this.renderOptions.renderLayers&&(s=s.slice(-Math.min(s.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&s.indexOf(e)===-1&&s.unshift(e)}s.sort((e,t)=>{let n=this.images[e],r=this.images[t],i=n?n.display.scale:0;return(r?r.display.scale:0)-i});let c=new Set;switch(this.renderOptions.layerPolicy){case`always-blend`:for(let e of s)c.add(e);break;case`active-only`:c.add(i),s=[i];break;case`fallback-only`:default:c.add(i),this.renderOptions.renderSmallestFallback&&s.length&&c.add(s[0]);break}let u=new Set;for(let e of c){let t=this.images[e];t&&u.add(t)}this.layerSelectionFrame+=1;let d=this.getNow(),f=d-Math.max(0,this.renderOptions.fadeInMs);for(let e of this.allImages){let t=this.layerSelection.get(e);if(!u.has(e)){this.layerSelection.set(e,{active:!1,frame:this.layerSelectionFrame});continue}let n=!!t&&t.frame===this.layerSelectionFrame-1,r=n&&t.active;this.layerSelection.set(e,{active:!0,frame:this.layerSelectionFrame,activatedAt:r&&typeof t.activatedAt==`number`?t.activatedAt:n?d:f})}let p=[];for(let t=0;t<s.length;t++){let r=s[t],i=this.images[r];p.push(...i.getAllPointsAt(e,o,n))}return p}isImageActive(e){let t=this.layerSelection.get(e);return!!t&&t.frame===this.layerSelectionFrame&&t.active}getImageActivatedAt(e){let t=this.layerSelection.get(e);if(!(!t||t.frame!==this.layerSelectionFrame||!t.active))return t.activatedAt}getNow(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}},Fe=class extends oe{constructor(e){if(super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`uri`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`getTexture`,void 0),this.getTexture=()=>({source:void 0,hash:-1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:t===1?this.points:l.DnaFactory.singleBox(e.width/t,e.height/t)}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;this.id=e.id,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height)),this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.getTexture=e.getTexture,this.display.points=n===1?this.points:l.DnaFactory.singleBox(e.target.width/n,e.target.height/n)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}};const Ie=85.05112878;function Le(e,t){if(!Number.isFinite(e))throw Error(`${t} must be a finite number`)}function Re(e,t){if(Le(e,t),e<=0)throw Error(`${t} must be greater than 0`)}function ze(e){if(!Number.isFinite(e))throw Error(`Latitude must be a finite number`);return e>Ie?Ie:e<-Ie?-Ie:e}function Be(e){if(Le(e.west,`Map bounds west`),Le(e.south,`Map bounds south`),Le(e.east,`Map bounds east`),Le(e.north,`Map bounds north`),e.west<-180||e.west>180)throw Error(`Map bounds west must be within [-180, 180]`);if(e.east<-180||e.east>180)throw Error(`Map bounds east must be within [-180, 180]`);if(e.south<-90||e.south>90)throw Error(`Map bounds south must be within [-90, 90]`);if(e.north<-90||e.north>90)throw Error(`Map bounds north must be within [-90, 90]`);if(e.west>=e.east)throw Error(`Map bounds must satisfy west < east (antimeridian crossing is not supported)`);if(e.south>=e.north)throw Error(`Map bounds must satisfy south < north`);return e}function Ve(e){if(!Number.isFinite(e))throw Error(`Longitude must be a finite number`);return(e+180)/360}function He(e){let t=ze(e)*Math.PI/180;return(1-Math.log(Math.tan(t)+1/Math.cos(t))/Math.PI)/2}function Ue(e){if(!Number.isFinite(e))throw Error(`Mercator X must be a finite number`);return e*360-180}function We(e){if(!Number.isFinite(e))throw Error(`Mercator Y must be a finite number`);let t=Math.PI*(1-2*e);return 180/Math.PI*Math.atan(Math.sinh(t))}function Ge(e,t){return Ve(e)*2**t}function Ke(e,t){return He(e)*2**t}function qe(e,t){return Ue(e/2**t)}function Je(e,t){return We(e/2**t)}function Ye(e){let t=Be(e.bounds);Re(e.width,`Map world width`),Re(e.height,`Map world height`);let n=Ve(t.west),r=Ve(t.east),i=He(t.north),a=He(t.south),o=r-n,s=a-i;if(!(o>0))throw Error(`Map bounds produce an invalid mercator X span`);if(!(s>0))throw Error(`Map bounds produce an invalid mercator Y span`);let c=(t,r)=>{let a=Ve(t),c=He(r);return{x:(a-n)/o*e.width,y:(c-i)/s*e.height}},l=(t,r)=>{Le(t,`World x`),Le(r,`World y`);let a=n+t/e.width*o,c=i+r/e.height*s;return{lng:Ue(a),lat:We(c)}};return{lngLatToWorld:c,worldToLngLat:l,lngLatBoundsToWorldRect:e=>{Be(e);let t=c(e.west,e.north),n=c(e.east,e.south);return{x:t.x,y:t.y,width:n.x-t.x,height:n.y-t.y}},worldRectToLngLatBounds:e=>{Le(e.x,`World rect x`),Le(e.y,`World rect y`),Le(e.width,`World rect width`),Le(e.height,`World rect height`);let t=l(e.x,e.y),n=l(e.x+e.width,e.y+e.height);return{west:t.lng,south:n.lat,east:n.lng,north:t.lat}},projectRing:e=>{let t=[];for(let[n,r]of e){let e=c(n,r);t.push([e.x,e.y])}return t}}}const Xe=`https://tile.openstreetmap.org/{z}/{x}/{y}.png`;function Ze(e){if(e.s)return e.s;let t=e.subdomains||[];if(t.length!==0)return t[Math.abs(e.x+e.y+e.z)%t.length]}function Qe(e,t){let n=Ze(t)||``;return e.replace(/\{z\}/g,`${t.z}`).replace(/\{x\}/g,`${t.x}`).replace(/\{y\}/g,`${t.y}`).replace(/\{s\}/g,n)}function $e(e,t){let n=e||Xe;return typeof n==`function`?n(t):Qe(n,t)}function et(e,t,n){return Math.min(n,Math.max(t,e))}function tt(e){Be(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=2**t,r=n-1,i=Ge(e.bounds.west,t),a=Ge(e.bounds.east,t),o=Ke(e.bounds.north,t),s=Ke(e.bounds.south,t),c=et(i,0,n),l=et(a,0,n),u=et(o,0,n),d=et(s,0,n),f=Math.max(1e-9,l-c),p=Math.max(1e-9,d-u),m=et(Math.floor(i),0,r),h=et(Math.ceil(a)-1,0,r),g=et(Math.floor(o),0,r),_=et(Math.ceil(s)-1,0,r),v=Math.max(1,h-m+1),y=Math.max(1,_-g+1);return{columns:v,rows:y,count:v*y,minTileX:m,maxTileX:h,minTileY:g,maxTileY:_,westTile:c,eastTile:l,northTile:u,southTile:d,tileSpanX:f,tileSpanY:p}}function nt(e){Be(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=Ye({bounds:e.bounds,width:e.worldWidth,height:e.worldHeight}),r=tt({bounds:e.bounds,zoom:t}),i=typeof e.maxTiles==`number`?e.maxTiles:1/0;if(r.count>i)throw Error(`Map tile grid too large at zoom ${t}: ${r.count} tiles exceeds the configured max (${i})`);let a=[],o=[];for(let e=r.minTileY;e<=r.maxTileY;e++)for(let i=r.minTileX;i<=r.maxTileX;i++){let r=qe(i,t),s=qe(i+1,t),c=Je(e,t),l=Je(e+1,t),u=n.lngLatToWorld(r,c),d=n.lngLatToWorld(s,l);a.push(1,u.x,u.y,d.x,d.y),o.push({x:i,y:e,z:t})}return{points:(0,l.dna)(a.length?a:[0]),tiles:o,columns:r.columns,rows:r.rows,count:r.count,minTileX:r.minTileX,maxTileX:r.maxTileX,minTileY:r.minTileY,maxTileY:r.maxTileY}}var rt=class extends Y{constructor(e){let t=e.scaleFactor||1,n=e.tileSize||256,r=e.tileSource||e.tileUrlTemplate||Xe,i=nt({bounds:e.bounds,zoom:e.zoom,worldWidth:e.worldWidth,worldHeight:e.worldHeight}),a=e.id||`map-tiled-image-z${e.zoom}-${e.worldWidth}x${e.worldHeight}-${i.minTileX}:${i.maxTileX}-${i.minTileY}:${i.maxTileY}`;super({id:a,url:`map://tile-source`,scaleFactor:t,points:i.points,displayPoints:i.points,tileWidth:n,tileHeight:n,width:e.worldWidth,height:e.worldHeight,columns:i.columns,rows:i.rows,format:`png`,version3:!1}),E(this,`zoom`,void 0),E(this,`bounds`,void 0),E(this,`worldWidth`,void 0),E(this,`worldHeight`,void 0),E(this,`tileSize`,void 0),E(this,`tileSource`,void 0),E(this,`subdomains`,void 0),E(this,`tileCoordinates`,void 0),E(this,`minTileX`,void 0),E(this,`maxTileX`,void 0),E(this,`minTileY`,void 0),E(this,`maxTileY`,void 0),this.zoom=Math.max(0,Math.floor(e.zoom)),this.bounds={...e.bounds},this.worldWidth=e.worldWidth,this.worldHeight=e.worldHeight,this.tileSize=n,this.tileSource=r,this.subdomains=[...e.subdomains||[]],this.tileCoordinates=i.tiles,this.minTileX=i.minTileX,this.maxTileX=i.maxTileX,this.minTileY=i.minTileY,this.maxTileY=i.maxTileY}getImageUrl(e){let t=this.tileCoordinates[e];return t?$e(this.tileSource,{z:t.z,x:t.x,y:t.y,tileSize:this.tileSize,subdomains:this.subdomains}):``}},it=class{constructor(e){E(this,`canvas`,void 0),E(this,`context`,void 0),E(this,`heightRatio`,1),E(this,`widthRatio`,1),E(this,`target`,new Float32Array(5)),E(this,`initialWidth`,void 0),E(this,`initialHeight`,void 0),E(this,`bounds`,void 0),E(this,`aggregate`,void 0),E(this,`delta`,0),E(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,l.scale)(1)}isReady(){return!0}resize(){this.initialWidth=this.canvas.width,this.initialHeight=this.canvas.height,this.renderNextFrame=!0}afterFrame(e,t,n){if(this.renderNextFrame){this.context.clearRect(0,0,this.canvas.width,this.canvas.height);let t=this.initialWidth/e.width,r=this.initialHeight/e.height,i=this.widthRatio>this.heightRatio?t:r;if(this.target=n,this.bounds){let t=e.getPointsAt(this.bounds,this.aggregate,i);for(let[e,n]of t)if(e instanceof J&&e.__host.canvas){let t=n.length/5;for(let r=0;r<t;r++)e.__host.canvas.canvases[r]&&(n[r+1]*i,n[r+2]*i,(n[r+3]-n[r+1])*i,(n[r+4]-n[r+2])*i)}}e.getPoints().forEach((e,t,n)=>{if(t%5==0&&e){let e={x1:n[t+1]*i,y1:n[t+2]*i,x2:n[t+3]*i,y2:n[t+4]*i,width:(n[t+3]-n[t+1])*i,height:(n[t+4]-n[t+2])*i};this.context.strokeStyle=`red`,this.context.strokeRect(e.x1,e.y1,e.width,e.height)}}),n&&(this.context.strokeStyle=`red`,this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(n[1]*i,n[2]*i,(n[3]-n[1])*i,(n[4]-n[2])*i))}}getActiveZone(e){return null}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=l.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,n,r,i,a){this.renderNextFrame=!0}prepareLayer(e){}pendingUpdate(){return!1}hasActiveZone(){return!1}getViewportBounds(e,t,n){return null}getRendererScreenPosition(){return this.canvas.getBoundingClientRect()}finishLayer(){}reset(){}};function at(e,t,n,r,i){let a=Math.PI/180*i,o=Math.cos(a),s=Math.sin(a);return[o*(n-e)+s*(r-t)+e,o*(r-t)-s*(n-e)+t]}var ot=class e extends oe{constructor(e,t){super(),E(this,`id`,void 0),E(this,`type`,`world-object`),E(this,`scale`,void 0),E(this,`layers`,void 0),E(this,`points`,void 0),E(this,`worldPoints`,void 0),E(this,`intersectionBuffer`,(0,l.dna)(5)),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`invertedBuffer`,(0,l.dna)(9)),E(this,`rotation`,0),E(this,`filteredPointsBuffer`,void 0),E(this,`_updatedList`,[]),E(this,`geometry`,void 0);let{x:n=0,y:r=0}=t||{};e?(this.id=e.id||``,this.scale=1,this.layers=e.layers,this.points=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.worldPoints=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.filteredPointsBuffer=(0,l.dna)(e.layers.length*5)):(this.id=``,this.scale=1,this.layers=[],this.points=(0,l.dna)(5),this.worldPoints=(0,l.dna)(5),this.filteredPointsBuffer=(0,l.dna)(5))}static createWithProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){let t=e.x||0,n=e.y||0;e.id!==void 0&&(this.id=e.id);let r=e.scale===void 0?this.scale:e.scale;this.points[0]=1,this.points[1]=t,this.points[2]=n,this.points[3]=t+e.width,this.points[4]=n+e.height,this.rotation=e.rotation||0,this.worldPoints[3]=this.worldPoints[1]+e.width,this.worldPoints[4]=this.worldPoints[2]+e.height,e.scale&&e.scale!==1&&this.atScale(r),this.scale=r}appendChild(e){e.points[0]===0&&e.points.set(this.points),e.__owner.value=this,this.addLayers([e])}removeChild(e){this.layers=this.layers.filter(t=>t!==e),this.filteredPointsBuffer=(0,l.dna)(this.layers.length*5)}insertBefore(e,t){let n=this.layers.indexOf(t);if(n===-1||this.layers.indexOf(e)!==-1)return;let r=this.layers.slice(0,n),i=this.layers.slice(n);this.layers=[...r,e,...i]}hideInstance(){console.warn(`hideInstance: not yet implemented`)}getObjectsAt(e,t){if(this.rotation&&(e=this.applyRotation(e)),(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer)[0]===0)return[];let n=this.layers.length,r=[];for(let i=0;i<n;i++){let n=this.layers[i];if(t&&n.isShape){let t=(0,l.transform)(n.points,(0,l.translate)(this.x,this.y));if(!n.intersects([e[1]-t[1],e[2]-t[2]]))continue}if((0,l.hidePointsOutsideRegion)((0,l.transform)(n.points,(0,l.translate)(this.x,this.y)),e,this.filteredPointsBuffer)[0]!==0&&r.push(n),t){let i=n;r.push(...i.getObjectsAt(e,t))}}return r}applyRotation(e){if(this.rotation){let t={x:e[1],y:e[2]},n={x:e[1],y:e[4]},r={x:e[3],y:e[2]},i={x:e[3],y:e[4]},a=this.points[1]+(this.points[3]-this.points[1])/2,o=this.points[2]+(this.points[4]-this.points[2])/2,[s,c]=at(a,o,t.x,t.y,this.rotation),[u,d]=at(a,o,n.x,n.y,this.rotation),[f,p]=at(a,o,r.x,r.y,this.rotation),[m,h]=at(a,o,i.x,i.y,this.rotation),g=Math.min(s,u,f,m),_=Math.max(s,u,f,m),v=Math.min(c,d,p,h),y=Math.max(c,d,p,h);return(0,l.dna)([e[0],g,v,_,y])}return e}getAllPointsAt(e,t,n){let r=(0,l.compose)((0,l.translate)(this.x,this.y),(0,l.scale)(this.scale),this.aggregateBuffer);this.rotation&&(e=this.applyRotation(e));let i=(0,l.getIntersection)(e,this.points,this.intersectionBuffer),a=this.layers.length,o=[],s=(0,l.transform)(i,(0,l.compose)((0,l.scale)(1/this.scale),(0,l.translate)(-this.x,-this.y),this.invertedBuffer)),c=t?(0,l.compose)(t,r,this.aggregateBuffer):r,u=n*this.scale;for(let e=0;e<a;e++)o.push(...this.layers[e].getAllPointsAt(s,c,u));return o}addLayers(e){let t=[];for(let n of e)this.layers.indexOf(n)===-1&&(t.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,l.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(t),this.filteredPointsBuffer=(0,l.dna)(this.layers.length*5)}getScheduledUpdates(e,t){let n=this.layers.length;this._updatedList=[];let r=t*this.scale;for(let t=0;t<n;t++){let n=this.layers[t].getScheduledUpdates(e,r);n&&this._updatedList.push(...n)}return this._updatedList}},st=class e extends oe{get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}constructor(e=0,t=0,n=100,r=`left-to-right`){super(),E(this,`id`,`world`),E(this,`_width`,void 0),E(this,`_height`,void 0),E(this,`aspectRatio`,void 0),E(this,`viewingDirection`,void 0),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`isDirty`,!1),E(this,`zones`,[]),E(this,`filteredPointsBuffer`,void 0),E(this,`selectedZone`,void 0),E(this,`triggerQueue`,[]),E(this,`activatedEvents`,[]),E(this,`_updatedList`,[]),E(this,`translationBuffer`,(0,l.dna)(9)),E(this,`needsRecalculate`,!0),E(this,`emptyPaintables`,[]),E(this,`renderOrder`,[]),E(this,`debugSubscribers`,new Set),E(this,`zoneVisibilityFadeDurationMs`,220),E(this,`zoneOutsideOpacity`,.2),E(this,`zoneVisibilityFade`,void 0),E(this,`points`,void 0),E(this,`objects`,[]),E(this,`subscriptions`,[]),E(this,`_propagateEventTargets`,[]),E(this,`_alreadyFlushed`,[]),this._width=e,this._height=t,this.aspectRatio=Number.isNaN(e/t)?1:e/t,this.viewingDirection=r,this.points=(0,l.dna)(n*5),this.filteredPointsBuffer=(0,l.dna)(n*5)}static withProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){e.width!==void 0&&e.height!==void 0&&(e.width!==this._width||e.height!==this._height)&&this.resize(e.width,e.height),e.viewingDirection!==this.viewingDirection&&(this.viewingDirection=e.viewingDirection,this.triggerRepaint())}propagateTouchEvent(e,t,n){let r=[];for(let e of n)if(e.x&&e.y){let t=l.DnaFactory.singleBox(1,1,e.x,e.y);r.push(this.getObjectsAt(t,!0).reverse())}return this.emitDebug({type:`touch`,at:performance.now(),event:e,touches:n.length}),r.map(n=>this.propagateEvent(e,t,n,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(e,t,n,r,i={}){let a=l.DnaFactory.singleBox(1,1,n,r),o=this.getObjectsAt(a,!0).reverse(),s=this.propagateEvent(e,t,o,i);return this.emitDebug({type:`pointer`,at:performance.now(),event:e,x:n,y:r,targets:s.length}),s}propagateEvent(e,t,n,{bubbles:r=!1,cancelable:i=!1}={}){t.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let a=!1;t.stopPropagation=()=>{a=!0};let o=n.length;for(let e=o-1;e>=0;e--){this._propagateEventTargets.unshift(n[e][0]);let t=n[e][1].length;if(t)for(let r=0;r<t;r++)this._propagateEventTargets.unshift(n[e][1][r])}let s=this._propagateEventTargets.length,c=!1;for(let n=0;n<s&&(t.atlasTarget=this._propagateEventTargets[n],t.atlasWorld=this,c=this._propagateEventTargets[n].dispatchEvent(e,t)||c,!a);n++);return c&&this.triggerRepaint(),this._propagateEventTargets}appendChild(e){let t=this.appendWorldObject(e);this.renderOrder.push(t/5)}removeChild(e){let t=this.objects.indexOf(e);if(t===-1){for(let t of this.objects)if(t&&t.id===e.id){this.removeChild(t);return}return}this.objects[t]=null,this.renderOrder=this.renderOrder.filter(e=>e!==t),this.points[t*5]=0;for(let t of this.zones){let n=t.objects.indexOf(e);n!==-1&&(t.objects.splice(n,1),t.recalculateBounds())}this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(e,t){let n=this.objects.indexOf(t);if(n===-1)return;let r=this.appendWorldObject(e);this.renderOrder.splice(n-1,0,r/5)}hideInstance(){}asWorldObject(){return null}addZone(e){this.zones.push(e)}removeZone(e){let t=this.zones.indexOf(e);if(t!==-1&&(this.zones.splice(t,1),this.selectedZone!==void 0)){if(this.selectedZone===t){this.selectedZone=void 0,this.trigger(`zone-changed`);return}this.selectedZone>t&&--this.selectedZone}}getZoneById(e){for(let t of this.zones)if(t.id===e)return t}hasZone(e){return this.getZoneById(e)!==void 0}selectZone(e){if(typeof e==`string`){let t=this.getZoneById(e);t&&(this.selectedZone=this.zones.indexOf(t),this.zoneVisibilityFade={zoneId:t.id,startedAt:performance.now()},this.trigger(`zone-changed`))}else this.zones[e]&&(this.selectedZone=e,this.zoneVisibilityFade={zoneId:this.zones[e].id,startedAt:performance.now()},this.trigger(`zone-changed`))}deselectZone(){this.selectedZone=void 0,this.zoneVisibilityFade=void 0,this.trigger(`zone-changed`)}getActiveZone(){if(this.selectedZone!==void 0)return this.zones[this.selectedZone]}hasActiveZone(){return this.selectedZone!==void 0}checkResizeInternalBuffer(){if((0,l.dnaLength)(this.points)===this.objects.length){let e=this.points,t=(0,l.dna)(this.points.length*2);t.set(e,0),this.points=t}}appendWorldObject(e){this.checkResizeInternalBuffer();let t=this.objects.length*5,n=e.points;return e.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),e.points[1]=n[1],e.points[2]=n[2],e.points[3]=n[3],e.points[4]=n[4],this.objects.push(e),this.filteredPointsBuffer=(0,l.dna)(this.objects.length*5),this.needsRecalculate=!0,this.triggerRepaint(),t}recalculateWorldSize(){let e=!1;if(this.needsRecalculate){let t=new Int32Array(this.objects.length),n=new Int32Array(this.objects.length),r=this.renderOrder.length;for(let e=0;e<r;e++){let r=this.renderOrder[e];this.objects[r]&&(t[e]=this.points[r*5+3],n[e]=this.points[r*5+4])}let i=Math.max(...t);i!==this._width&&(this._width=i,e=!0);let a=Math.max(...n);a!==this._height&&(this._height=a,e=!0),e&&this.trigger(`recalculate-world-size`,{width:i,height:a}),this.needsRecalculate=!1}return e}addObjectAt(e,t){t.width&&!t.height?t.height=t.width/e.width*e.height:t.height&&!t.width&&(t.width=t.height/e.height*e.width),(!t||!t.width||!t.height)&&(t.width=e.width,t.height=e.height);let{width:n,x:r,y:i}=t,a=n/e.width;this.checkResizeInternalBuffer(),this.points.set(l.DnaFactory.singleBox(e.width,e.height,0,0),this.objects.length*5);let o=new ot(e);return o.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(o),this.scaleWorldObject(this.objects.length-1,a),this.translateWorldObject(this.objects.length-1,r,i),this.filteredPointsBuffer=(0,l.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,o}scaleWorldObject(e,t){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.scaleAtOrigin)(t,this.points[e*5+1],this.points[e*5+2]));let n=this.objects[e];n&&(n.atScale(t),this.triggerRepaint())}translateWorldObject(e,t,n){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.translate)(t,n));let r=this.objects[e];r&&(r.translate(t,n),this.triggerRepaint())}resize(e,t){return this._width=e,this._height=t,this.aspectRatio=e/t,this.triggerRepaint(),this}getObjects(){return this.objects}getPoints(){return this.points}getPointsFromViewer(e,t){let n=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y);return this.getPointsAt(n,t,e.scale)}addLayoutSubscriber(e){return this.subscriptions.push(e),()=>{this.subscriptions.splice(this.subscriptions.indexOf(e),1)}}getScheduledUpdates(e,t){let n=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),r=this.objects.length;this._updatedList=[];for(let i=0;i<r;i++)if(n[i*5]!==0){if(!this.objects[i])continue;this._updatedList.push(...this.objects[i].getScheduledUpdates(e,t))}return this._updatedList}isZoneOutsideVisibilityFading(e){return!!(this.zoneVisibilityFade&&this.zoneVisibilityFade.zoneId===e.id&&performance.now()-this.zoneVisibilityFade.startedAt<this.zoneVisibilityFadeDurationMs)}getZoneOutsideVisibility(e){let t=this.zoneOutsideOpacity;if(!this.zoneVisibilityFade||this.zoneVisibilityFade.zoneId!==e.id)return t;let n=performance.now()-this.zoneVisibilityFade.startedAt;return n>=this.zoneVisibilityFadeDurationMs?t:1-Math.max(0,Math.min(1,n/this.zoneVisibilityFadeDurationMs))*(1-t)}getObjectsAt(e,t=!1,n=!1){let r=this.getActiveZone(),i=r&&n?this.getZoneOutsideVisibility(r)>0:!1,a=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),o=this.renderOrder.length,s=[];for(let n=0;n<o;n++){let o=this.renderOrder[n];if(a[o*5]!==0){let n=this.objects[o],a=!r||r.objects.indexOf(n)!==-1;if(!n||!a&&!i)continue;if(n.type!==`world-object`){s.push([n,[n]]);continue}t?s.push([n,n.getObjectsAt(e,t)]):s.push([n,this.emptyPaintables])}}return s}getPointsAt(e,t,n=1){let r=this.getActiveZone(),i=r?this.getZoneOutsideVisibility(r):0,a=this.getObjectsAt(e,!1,!0),o=(0,l.compose)((0,l.scale)(n),(0,l.translate)(-e[1],-e[2]),this.translationBuffer),s=t?(0,l.compose)(t,o,this.aggregateBuffer):o,c=a.length,u=[];for(let t=0;t<c;t++)if(a[t]){let o=a[t][0],c=o.getAllPointsAt(e,s,n),l=!r||r.objects.indexOf(o)!==-1?1:i;for(let e=0;e<c.length;e++)c[e][0].__zoneVisibilityAlpha=l;u.push(...c)}return r&&this.isZoneOutsideVisibilityFading(r)&&this.triggerRepaint(),u}flushSubscriptions(){if(this.triggerQueue.length){this._alreadyFlushed=[];let e=this.triggerQueue.length;for(let t=0;t<e;t++){if(this._alreadyFlushed.indexOf(this.triggerQueue[t][0])!==-1)continue;this.triggerQueue[t][1]===void 0&&this._alreadyFlushed.push(this.triggerQueue[t][0]);let e=this.subscriptions.length;for(let n=0;n<e;n++)this.subscriptions[n].apply(null,this.triggerQueue[t])}this.triggerQueue=[]}}trigger(e,t){this.emitDebug({type:`trigger`,at:performance.now(),event:e,data:t}),this.triggerQueue.push([e,t])}triggerEventActivation(){this.trigger(`event-activation`)}triggerRepaint(){this.trigger(`repaint`)}gotoRegion(e){this.trigger(`goto-region`,e)}goHome(e=!1,t){this.trigger(`go-home`,{immediate:e,paddingPx:t})}zoomTo(e,t,n){this.trigger(`zoom-to`,{point:t,factor:e,stream:n})}zoomIn(e){this.trigger(`zoom-to`,{point:e,factor:.5})}zoomOut(e){this.trigger(`zoom-to`,{point:e,factor:2})}constraintBounds(e){this.trigger(`constrain-bounds`,{immediate:e})}hasPendingAnimation(){return!!(this.zoneVisibilityFade&&performance.now()-this.zoneVisibilityFade.startedAt<this.zoneVisibilityFadeDurationMs)}addDebugSubscriber(e){return this.debugSubscribers.add(e),()=>{this.removeDebugSubscriber(e)}}removeDebugSubscriber(e){this.debugSubscribers.delete(e)}emitDebug(e){if(this.debugSubscribers.size!==0)for(let t of this.debugSubscribers)t(e)}},ct=class{constructor(){E(this,`autoWidth`,!1),E(this,`autoHeight`,!0),E(this,`width`,void 0),E(this,`height`,void 0),E(this,`world`,void 0),E(this,`content`,[]),E(this,`viewingDirection`,`left-to-right`),E(this,`rows`,void 0),E(this,`columns`,4),E(this,`spacing`,20),E(this,`reversed`,!1),E(this,`padding`,20),this.world=st.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(e=>this.world.addObjectAt(e,{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 Error(`Cannot set auto height without setting a width`);if(this.autoWidth&&!this.height)throw 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,{columns:t,rows:n}=(()=>{if(this.autoWidth&&this.rows){let t=e>this.rows?this.rows:e;return{columns:Math.ceil(e/t),rows:t}}if(this.autoHeight&&this.columns){let t=e>this.columns?this.columns:e;return{columns:t,rows:Math.ceil(e/t)}}throw Error(`Something went wrong.`)})(),r=this.autoWidth?-1:this.width-this.padding*2,i=this.autoWidth?-1:(r-this.spacing*(t-1))/t;if(this.autoHeight&&!this.autoWidth){let r=0,a=this.padding;for(let o=0;o<n&&r!==e;o++){let n=0,o=[];for(let a=0;a<t;a++){let t=this.reversed?e-r:r;if(r===e)break;let a=this.content[t],s=a.width,c=i/(a.width/a.height);o.push([r,i,c,i/s]),c>n&&(n=c),r++}for(let r=0;r<t&&o[r];r++){let t=this.world.getPoints(),i=o[r][0],s=o[r][1],c=o[r][2],l=o[r][3],u=this.padding+r*(this.spacing+s),d=a+(n-c)/2,f=this.reversed?e-i:i,p=t[f*5+1],m=t[f*5+2];this.world.scaleWorldObject(i,l),(p!==u||m!==d)&&this.world.translateWorldObject(f,u-p,d-m)}a+=n+this.spacing}this.height=a+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};function lt(e){return e.id||e[`@id`]}function ut(){return typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}function dt(){let e=ut();if(e.IIIF_VAULT!==void 0)return e.IIIF_VAULT;if(e.IIIFVault===void 0)throw Error(`Vault not found`);return e.IIIF_VAULT=new e.IIIFVault.Vault,e.IIIF_VAULT}const ft={};function pt(){return ft.helper||(ft.vault=dt(),ft.loader=new d.ImageServiceLoader,ft.helper=(0,f.createThumbnailHelper)(ft.vault,{imageServiceLoader:ft.loader})),ft}async function mt(e,t,n){let{loader:r}=pt(),i=await r.loadService({id:e,width:t,height:n});return{id:lt(i),width:t,height:n,imageService:i,thumbnail:void 0}}async function ht(e,t=512){let{vault:n,loader:r,helper:i}=pt(),a=[];for(let o of e.items)for(let s of n.get(o).items){let o=n.get(n.get(s).body[0]).service[0],c=await mt(o.id,e.width,e.height),{best:l}=await i.getBestThumbnailAtSize(n,r,e,{maxHeight:t,maxWidth:t},!0);l&&(c.thumbnail=l),a.push(c)}return a}async function gt(e){let{vault:t}=pt(),n=[];for(let r of e.items){let e=t.get(r);n.push(...await ht(e))}return n}async function _t(e){try{let{vault:t}=pt(),n=await t.loadManifest(e);return n?gt(n):[]}catch(e){return console.log(`ERR`,e),[]}}var vt=class{constructor(e,t={}){this.adapter=e,this.hooks=t,E(this,`controlPoints`,[]),E(this,`transformationType`,`projective`)}getState(){return{controlPoints:[...this.controlPoints],transformationType:this.transformationType}}setControlPoints(e){this.controlPoints=[...e],this.adapter.setMapGcps(this.controlPoints),this.hooks.onControlPointsChange&&this.hooks.onControlPointsChange(this.controlPoints),this.update(`gcps`)}setTransformationType(e){this.transformationType=e,this.adapter.setMapTransformationType(e),this.hooks.onTransformationTypeChange&&this.hooks.onTransformationTypeChange(e),this.update(`transformation`)}update(e=`manual`){this.adapter.update(e),this.hooks.onUpdate&&this.hooks.onUpdate(e)}};function yt(e,t){return new vt(e,t)}const bt={background:`rgba(15, 23, 42, 0.7)`,objectFill:`rgba(56, 189, 248, 0.22)`,objectStroke:`rgba(56, 189, 248, 0.62)`,viewportFill:`rgba(251, 191, 36, 0.22)`,viewportStroke:`rgba(250, 204, 21, 1)`,viewportLineWidth:2};function xt(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return Math.floor(e)}function St(e,t){if(!e||t<=1)return null;let n=xt(e.total),r=xt(e.before),i=xt(e.after),a=n===void 0?r!==void 0||i!==void 0?Math.max(1,Math.max(0,r||0)+Math.max(0,i||0)+1):9:Math.max(1,n),o=r===void 0?void 0:Math.max(0,r),s=i===void 0?void 0:Math.max(0,i);o===void 0&&s===void 0?(o=Math.floor((a-1)/2),s=a-o-1):o===void 0?o=Math.max(0,a-(s||0)-1):s===void 0&&(s=Math.max(0,a-o-1));let c=o+s+1;return c!==a&&(a=c),a=Math.max(1,Math.min(t,a)),o=Math.min(o,a-1),s=a-o-1,{total:a,before:o,after:s}}function Ct(e){let t=[];for(let n=0;n<e.zones.length;n++){let r=e.zones[n];r.recalculateBounds(),r.points[0]!==0&&t.push({zone:r,minX:r.points[1],minY:r.points[2],maxX:r.points[3],maxY:r.points[4]})}return t.sort((e,t)=>e.minY===t.minY?e.minX===t.minX?(e.zone?.id||``).localeCompare(t.zone?.id||``):e.minX-t.minX:e.minY-t.minY),t}function wt(e,t){let n=St(t.zoneWindow,e.zones.length);if(!n)return null;let r=Ct(e);if(r.length<=n.total)return r;let i=Et(r,t.target)-n.before,a=i+n.total-1;return i<0&&(i=0,a=n.total-1),a>=r.length&&(a=r.length-1,i=Math.max(0,a-n.total+1)),r.slice(i,a+1)}function Tt(e){if(!e)return null;if(Array.isArray(e)||ArrayBuffer.isView(e)){let t=e;return t[0]===0?null:{x:(t[1]+t[3])/2,y:(t[2]+t[4])/2}}return{x:e.x+e.width/2,y:e.y+e.height/2}}function Et(e,t){if(e.length===0)return 0;let n=Tt(t);if(!n)return 0;for(let t=0;t<e.length;t++){let r=e[t];if(n.x>=r.minX&&n.x<=r.maxX&&n.y>=r.minY&&n.y<=r.maxY)return t}let r=0,i=1/0;for(let t=0;t<e.length;t++){let a=e[t],o=(a.minY+a.maxY)/2,s=Math.abs(n.y-o);s<i&&(i=s,r=t)}return r}function Dt(e){if(e.length===0)return null;let t=e[0].minX,n=e[0].minY,r=e[0].maxX,i=e[0].maxY;for(let a=1;a<e.length;a++){let o=e[a];t=Math.min(t,o.minX),n=Math.min(n,o.minY),r=Math.max(r,o.maxX),i=Math.max(i,o.maxY)}return{x:t,y:n,width:Math.max(1,r-t),height:Math.max(1,i-n)}}function Ot(e,t,n,r,i=0,a=0){let o=Math.max(1,e),s=Math.max(1,t),c=Math.min(n/o,r/s),l=o*c,u=s*c;return{scale:c,offsetX:(n-l)/2,offsetY:(r-u)/2,worldX:i,worldY:a,worldWidth:o,worldHeight:s}}function kt(e,t={}){let n=e.getActiveZone();if(n&&(n.recalculateBounds(),n.points[0]!==0))return{x:n.points[1],y:n.points[2],width:Math.max(1,n.points[3]-n.points[1]),height:Math.max(1,n.points[4]-n.points[2])};let r=wt(e,t);if(r&&r.length>0){let e=Dt(r);if(e)return e}return{x:0,y:0,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function At(e,t={}){let n=e.getActiveZone();if(n)return n.recalculateBounds(),n.points[0]===0?new Set:new Set([n.id]);let r=wt(e,t);if(!r)return null;let i=new Set;for(let e of r)i.add(e.zone.id);return i}function jt(e,t,n){if(!e.scale||!Number.isFinite(e.scale))return{x:e.worldX,y:e.worldY};let r=e.worldX+(t-e.offsetX)/e.scale,i=e.worldY+(n-e.offsetY)/e.scale;return{x:Math.max(e.worldX,Math.min(e.worldX+e.worldWidth,r)),y:Math.max(e.worldY,Math.min(e.worldY+e.worldHeight,i))}}var Mt=class extends it{constructor(e,t={}){super(e),E(this,`style`,void 0),E(this,`maxRects`,void 0),E(this,`minVisibleRectSize`,void 0),E(this,`drawFallbackBoxes`,void 0),E(this,`zoneWindow`,void 0),E(this,`sharedCanvasRenderer`,void 0),E(this,`onRequestRender`,void 0),E(this,`onDebugEvent`,void 0),E(this,`baseCanvas`,void 0),E(this,`baseContext`,void 0),E(this,`worldTarget`,l.DnaFactory.singleBox(1,1,0,0)),E(this,`previewImageCache`,new Map),E(this,`worldLayerDirty`,!0),E(this,`lastWorldWidth`,0),E(this,`lastWorldHeight`,0),E(this,`lastTargetX`,NaN),E(this,`lastTargetY`,NaN),E(this,`lastTargetX2`,NaN),E(this,`lastTargetY2`,NaN),E(this,`lastRegionX`,NaN),E(this,`lastRegionY`,NaN),E(this,`lastRegionWidth`,NaN),E(this,`lastRegionHeight`,NaN),E(this,`worldLayerInvalidationVersion`,0),E(this,`sharedCanvasResourcesPending`,!1),this.style={...bt,...t.style||{}},this.maxRects=Math.max(100,t.maxRects||5e3),this.minVisibleRectSize=Math.max(1,t.minVisibleRectSize||1),this.drawFallbackBoxes=t.drawFallbackBoxes!==!1,this.zoneWindow=t.zoneWindow,this.sharedCanvasRenderer=t.sharedCanvasRenderer,this.onRequestRender=t.onRequestRender,this.onDebugEvent=t.onDebugEvent,this.context.globalAlpha=1,this.context.imageSmoothingEnabled=!1,this.baseCanvas=document.createElement(`canvas`),this.baseContext=this.baseCanvas.getContext(`2d`),this.baseContext.imageSmoothingEnabled=!0,this.syncBaseLayerCanvas()}emitDebugEvent(e){this.onDebugEvent&&this.onDebugEvent(e)}requestRender(e){this.onRequestRender&&(this.emitDebugEvent({type:`render-request-forwarded`,reason:e}),this.onRequestRender())}invalidateWorldLayer(e=`manual`){this.worldLayerInvalidationVersion++,this.worldLayerDirty=!0,this.renderNextFrame=!0,this.emitDebugEvent({type:`world-layer-invalidated`,reason:e}),this.requestRender(e)}resize(){super.resize(),this.syncBaseLayerCanvas(),this.invalidateWorldLayer(`resize`)}beforeFrame(e){(e.width!==this.lastWorldWidth||e.height!==this.lastWorldHeight)&&(this.lastWorldWidth=e.width,this.lastWorldHeight=e.height,this.invalidateWorldLayer(`world-size-changed`))}paint(){this.renderNextFrame=!0}pendingUpdate(){return this.renderNextFrame||this.worldLayerDirty}afterFrame(e,t,n){let r=this.worldLayerInvalidationVersion;if(this.canvas.width<=0||this.canvas.height<=0){this.emitDebugEvent({type:`frame-skipped-zero-size-canvas`,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,baseCanvasWidth:this.baseCanvas.width,baseCanvasHeight:this.baseCanvas.height}),this.renderNextFrame=!0;return}let i=kt(e,{target:n,zoneWindow:this.zoneWindow});this.hasRegionChanged(i)&&(this.worldLayerDirty=!0);let a=this.hasViewportChanged(n);if(this.renderNextFrame||this.worldLayerDirty||a){if((this.baseCanvas.width!==this.canvas.width||this.baseCanvas.height!==this.canvas.height)&&(this.syncBaseLayerCanvas(),this.worldLayerDirty=!0),this.baseCanvas.width<=0||this.baseCanvas.height<=0){this.emitDebugEvent({type:`frame-skipped-zero-size-canvas`,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,baseCanvasWidth:this.baseCanvas.width,baseCanvasHeight:this.baseCanvas.height}),this.renderNextFrame=!0;return}if(this.worldLayerDirty){let t=this.worldLayerInvalidationVersion;this.sharedCanvasResourcesPending=!1,this.emitDebugEvent({type:`world-layer-render-start`,region:i});try{this.renderWorldLayer(e,i)}finally{this.emitDebugEvent({type:`world-layer-render-end`,region:i})}this.worldLayerDirty=this.sharedCanvasResourcesPending||t!==this.worldLayerInvalidationVersion}this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.drawImage(this.baseCanvas,0,0),this.renderViewportBox(n,i),this.lastTargetX=n[1],this.lastTargetY=n[2],this.lastTargetX2=n[3],this.lastTargetY2=n[4],this.lastRegionX=i.x,this.lastRegionY=i.y,this.lastRegionWidth=i.width,this.lastRegionHeight=i.height,this.renderNextFrame=this.sharedCanvasResourcesPending||r!==this.worldLayerInvalidationVersion}}hasViewportChanged(e){return this.lastTargetX!==e[1]||this.lastTargetY!==e[2]||this.lastTargetX2!==e[3]||this.lastTargetY2!==e[4]}hasRegionChanged(e){return this.lastRegionX!==e.x||this.lastRegionY!==e.y||this.lastRegionWidth!==e.width||this.lastRegionHeight!==e.height}syncBaseLayerCanvas(){this.baseCanvas.width=this.canvas.width,this.baseCanvas.height=this.canvas.height}shouldClipImagePaintToBounds(e){return e instanceof J||e instanceof Y?!!e.__parent?.renderOptions?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}getLayerClipBounds(e,t,n){if(!this.shouldClipImagePaintToBounds(e))return;let r=e.__parent,i=r?.crop||r?.points;if(!i)return;let a=t?(0,l.transform)(i,t):i,o=this.getBoundsFromPoints(a);if(o)return{x:o.x+n.offsetX,y:o.y+n.offsetY,width:o.width,height:o.height}}renderWorldLayer(e,t){let n=this.baseContext;n.clearRect(0,0,this.baseCanvas.width,this.baseCanvas.height),n.fillStyle=this.style.background,n.fillRect(0,0,this.baseCanvas.width,this.baseCanvas.height);let r=e.getActiveZone(),i=Ot(t.width,t.height,this.baseCanvas.width,this.baseCanvas.height,t.x,t.y);this.worldTarget[1]=t.x,this.worldTarget[2]=t.y,this.worldTarget[3]=t.x+t.width,this.worldTarget[4]=t.y+t.height;let a=e.getPointsAt(this.worldTarget,this.aggregate,i.scale),o=0;for(let e=0;e<a.length&&!(o>=this.maxRects);e++){let t=a[e][0],s=a[e][1],c=a[e][2],u=c?(0,l.transform)(s,c):s,d=u.length/5,f=this.getLayerClipBounds(t,c,i);f&&(n.save(),n.beginPath(),n.rect(f.x,f.y,f.width,f.height),n.clip());try{for(let e=0;e<d&&!(o>=this.maxRects);e++){let a=e*5;if(u[a]===0)continue;if(r){let e=t?.__owner?.value;if(!e||r.objects.indexOf(e)===-1)continue}let s=u[a+1]+i.offsetX,c=u[a+2]+i.offsetY,l=Math.max(this.minVisibleRectSize,u[a+3]-u[a+1]),d=Math.max(this.minVisibleRectSize,u[a+4]-u[a+2]);t instanceof pe?this.renderGeometry(n,t,s,c,i.scale):t instanceof le?this.renderBox(n,t,s,c,l,d,i.scale):this.renderImagePaint(n,t,e,s,c,l,d)||this.drawFallbackBoxes&&this.renderFallbackBox(n,s,c,l,d),o++}}finally{f&&n.restore()}}}renderFallbackBox(e,t,n,r,i){let a=Math.round(t),o=Math.round(n),s=Math.max(1,Math.round(r)),c=Math.max(1,Math.round(i));e.fillStyle=this.style.objectFill,e.strokeStyle=this.style.objectStroke,e.lineWidth=1,e.fillRect(a,o,s,c),s>2&&c>2&&e.strokeRect(a+.5,o+.5,s-1,c-1)}renderImagePaint(e,t,n,r,i,a,o){if(a<=0||o<=0)return!1;let s;if(t instanceof Fe)s=t.getTexture()?.source;else if(t instanceof J||t instanceof Y){let c=this.renderSharedCanvasImage(e,t,n,r,i,a,o);if(c!==null)return c;if(typeof t.getImageUrl!=`function`)return!1;let l=t.getImageUrl(n);s=this.getLoadedPreviewImage(l)}if(!s)return!1;let c=Math.max(1,Math.round(a)),l=Math.max(1,Math.round(o));return e.drawImage(s,Math.round(r),Math.round(i),c,l),!0}ensureSharedCanvasImageBuffer(e){return e.__host?.canvas||this.sharedCanvasRenderer?.createImageHost?.(e),e.__host||(e.__host={}),e.__host.canvas||(e.__host.canvas={canvases:[],tiles:{}}),e.__host.canvas.canvases||(e.__host.canvas.canvases=[]),e.__host.canvas.tiles||(e.__host.canvas.tiles={}),e.__host.canvas}drawSharedCanvasTile(e,t,n,r,i,a,o,s){let c=Math.max(1,Math.round(o)),l=Math.max(1,Math.round(s));if(t.crop&&t.cropData){let o=n*5;if(!t.crop[o])return!1;let s=t.crop[o+1]/t.display.scale-t.display.points[o+1]+t.cropData.x/t.display.scale,u=t.crop[o+2]/t.display.scale-t.display.points[o+2]+t.cropData.y/t.display.scale,d=1+(t.crop[o+3]-t.crop[o+1])/t.display.scale,f=1+(t.crop[o+4]-t.crop[o+2])/t.display.scale;return e.drawImage(r,s,u,d,f,Math.round(i),Math.round(a),c,l),!0}let u=n*5,d=t.display.points[u+3]-t.display.points[u+1],f=t.display.points[u+4]-t.display.points[u+2];return e.drawImage(r,0,0,d,f,Math.round(i),Math.round(a),c,l),!0}renderSharedCanvasImage(e,t,n,r,i,a,o){let s=this.sharedCanvasRenderer;if(!s?.hostCache)return null;let c=this.ensureSharedCanvasImageBuffer(t),l=c.canvases?.[n],u=!!l&&!!s.invalidated?.includes(l),d=l&&!u?s.hostCache.get(l):void 0;if(d)return this.drawSharedCanvasTile(e,t,n,d,r,i,a,o);let f=c.tiles?.[n],p=Math.hypot(r+a/2-this.baseCanvas.width/2,i+o/2-this.baseCanvas.height/2);return(s.schedulePaintToCanvas?.(c,t,n,p,!1)||f?.state===`queued`||f?.state===`loading`||f?.state===`decoded`)&&(this.sharedCanvasResourcesPending=!0),!1}getLoadedPreviewImage(e){let t=this.previewImageCache.get(e);if(t){if(t.status===`loading`&&t.image.complete){if(t.image.naturalWidth>0&&t.image.naturalHeight>0)return t.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!0}),this.invalidateWorldLayer(`preview-image-loaded`),t.image;t.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e});return}return t.status===`loaded`?t.image:void 0}let n=new Image,r={image:n,status:`loading`};return this.previewImageCache.set(e,r),this.emitDebugEvent({type:`preview-image-requested`,imageUrl:e}),n.onload=()=>{r.status===`loading`&&(r.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!1}),this.invalidateWorldLayer(`preview-image-loaded`))},n.onerror=()=>{r.status===`loading`&&(r.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e}))},n.src=e,n.complete&&(n.naturalWidth>0&&n.naturalHeight>0?(r.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!0}),this.invalidateWorldLayer(`preview-image-loaded`)):(r.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e}))),r.status===`loaded`?n:void 0}renderBox(e,t,n,r,i,a,o){let s=t.props?.style;if(!s){this.renderFallbackBox(e,n,r,i,a);return}let c=s.backgroundColor||this.style.objectFill,l=s.borderColor||this.style.objectStroke,u=s.borderWidth?parseInt(s.borderWidth,10):0,d=Math.max(0,u*(t.props?.relativeStyle?1:o));e.globalAlpha=typeof s.opacity==`number`?s.opacity:1,e.fillStyle=c,e.fillRect(Math.round(n),Math.round(r),Math.max(1,Math.round(i)),Math.max(1,Math.round(a))),d>0&&(e.strokeStyle=l,e.lineWidth=Math.max(1,d),e.strokeRect(Math.round(n)+e.lineWidth/2,Math.round(r)+e.lineWidth/2,Math.max(1,Math.round(i))-e.lineWidth,Math.max(1,Math.round(a))-e.lineWidth)),e.globalAlpha=1}renderGeometry(e,t,n,r,i){let a=t.shape;if(a.type!==`polygon`||a.points.length===0)return;let o=t.props?.style||{},s=o.backgroundColor||this.style.objectFill,c=o.borderColor||this.style.objectStroke,l=o.borderWidth?parseInt(o.borderWidth,10):0,u=Math.max(0,l*(t.props?.relativeStyle?1:i));e.globalAlpha=typeof o.opacity==`number`?o.opacity:1,e.beginPath();for(let t=0;t<a.points.length;t++){let o=n+a.points[t][0]*i,s=r+a.points[t][1]*i;t===0?e.moveTo(o,s):e.lineTo(o,s)}a.open||(e.closePath(),e.fillStyle=s,e.fill()),(u>0||a.open)&&(e.strokeStyle=c,e.lineWidth=Math.max(1,u||1),e.stroke()),e.globalAlpha=1}renderViewportBox(e,t){let n=Ot(t.width,t.height,this.canvas.width,this.canvas.height,t.x,t.y),r=(e[1]-n.worldX)*n.scale+n.offsetX,i=(e[2]-n.worldY)*n.scale+n.offsetY,a=(e[3]-e[1])*n.scale,o=(e[4]-e[2])*n.scale,s=Math.round(r),c=Math.round(i),l=Math.max(1,Math.round(a)),u=Math.max(1,Math.round(o));this.context.fillStyle=this.style.viewportFill,this.context.fillRect(s,c,l,u),this.context.strokeStyle=this.style.viewportStroke,this.context.lineWidth=Math.max(1,this.style.viewportLineWidth),this.context.strokeRect(s+.5,c+.5,Math.max(1,l-1),Math.max(1,u-1))}},Nt=class extends oe{constructor(){super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`points`,void 0),E(this,`color`,`#000`),E(this,`backgroundColor`,void 0),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`text`,``),E(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:(0,l.dna)(5)}),E(this,`className`,void 0),E(this,`html`,void 0),E(this,`interactive`,!1),E(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,l.dna)(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps({id:e,target:t,text:n,color:r,backgroundColor:i,fontSize:a=18,interactive:o,fontFamily:s=`Arial, sans-serif`,...c}){c.font=`${a}px ${s}`,this.interactive=o||!1,n!==void 0&&(this.text=n||``),r&&(this.color=r),i&&(this.backgroundColor=i),e&&(this.id=e),t&&(this.points=l.DnaFactory.singleBox(t.width,t.height,t.x,t.y),this.display.points=this.points,this.display.width=t.width,this.display.height=t.height),this.props={...this.props,...c},this.__revision++}};function Pt(e,t){let n=t?e:JSON.stringify(e),r=5381,i=n.length;for(;i;)r=r*33^n.charCodeAt(--i);let a=(r>>>0).toString(16);return a.length%2?`0`+a:a}var Ft=class{constructor(e){E(this,`$element`,void 0),E(this,`stylesheetClasses`,void 0),E(this,`activeStylesheetClasses`,void 0),E(this,`sheetsDidUpdate`,void 0),E(this,`sheetPrefix`,void 0),E(this,`stylesheetEntries`,void 0),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(),n=this.sheetPrefix+Pt(t,!0);return this.stylesheetClasses.indexOf(n)===-1?(this.stylesheetClasses.push(n),this.activeStylesheetClasses.push(n),this.stylesheetEntries[n]=t,this.sheetsDidUpdate=!0,n):n}removeStylesheet(e){let t=this.sheetPrefix+Pt(e,!0);this.stylesheetClasses.indexOf(t)&&(this.stylesheetClasses=this.stylesheetClasses.filter(e=>e!==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])}},It=class{constructor(e,t){E(this,`htmlContainer`,void 0),E(this,`visible`,[]),E(this,`previousVisible`,[]),E(this,`htmlIds`,[]),E(this,`firstMeaningfulPaint`,!1),E(this,`rendererPosition`,void 0),E(this,`stylesheet`,void 0),E(this,`options`,void 0),E(this,`paintTx`,1),E(this,`zIndex`,0),E(this,`classes`,void 0),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 Ft({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
2
+ background: ${this.options.background};
3
+ `)),this.classes={hostClassName:this.stylesheet.addStylesheet(`
4
+ position: absolute;
5
+ transform-origin: 0px 0px;
6
+ `),interactive:this.stylesheet.addStylesheet(`pointer-events: all`),nonInteractive:this.stylesheet.addStylesheet(`pointer-events: none`)},this.stylesheet.updateSheet()}createHtmlHost(e){if(this.htmlContainer&&(e instanceof Nt&&this.options.text||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 n=e.props.hrefTarget||`_blank`;t.target=n,n!==`_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,n){if(e.__revision!==e.__host.revision){let r=e.__host.element,i=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?r.style.pointerEvents=`all`:i.push(this.classes.interactive):this.options.inlineStyles?r.style.pointerEvents=`none`:i.push(this.classes.nonInteractive),e.props.href){r.style.display=`block`,r.href=e.props.href;let t=e.props.hrefTarget||`_blank`;r.target=t,t===`_self`?r.rel=``:r.rel=`noopener noreferrer`}else r.href&&r.removeAttribute(`href`);if(e.props.title&&(r.title=e.props.title||``),e.props.className&&(i.push(e.props.className),e.hovering&&i.push(`${e.props.className}--hover`),e.pressing&&i.push(`${e.props.className}--active`)),e.props.relativeStyle?(r.style.width=`${t||e.width}px`,r.style.height=`${n||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 Nt){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 t=i.join(` `);r.className=t,r.part=t}e instanceof le&&(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 a=i.join(` `);r.className=a,r.part=a}}afterFrame(e,t,n){this.stylesheet.updateSheet();for(let e of this.previousVisible)this.visible.indexOf(e)===-1&&this.htmlContainer&&e.__id&&this.htmlIds.indexOf(e.__id)!==-1&&this.htmlContainer.removeChild(e.__host.element);this.previousVisible=this.visible}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.paintTx++,this.zIndex=0,this.visible=[]}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){let n=this.rendererPosition.width/e,r=this.rendererPosition.height/t;return n<r?r:n}getViewportBounds(e,t,n){return null}isReady(){return!0}paint(e,t,n,r,i,a){if(this.zIndex++,(this.options.text&&e instanceof Nt||e instanceof le&&(this.options.box||e.props.className||e.props.html))&&e.__host&&e.__host.tx!==this.paintTx&&(this.visible.push(e),e.__host.tx=this.paintTx,this.htmlContainer)){this.updateHtmlHost(e,i,a);let t=i/e.width,o=e.__host.element;o.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px)`:o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px) scale(${t})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(o),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof Nt||e instanceof le)&&this.createHtmlHost(e)}resize(e,t){e!==void 0&&t!==void 0&&(this.htmlContainer.style.width=`${e}px`,this.htmlContainer.style.height=`${t}px`),this.rendererPosition=this.htmlContainer.getBoundingClientRect()}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}},Lt=o(((e,t)=>{var n=!1,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){if(!n){n=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),v=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(m=/\b(iPhone|iP[ao]d)/.exec(e),h=/\b(iP[ao]d)/.exec(e),f=/Android/i.exec(e),g=/FBAN\/\w+;/i.exec(e),_=/Mobile/i.exec(e),p=!!/Win64/.exec(e),t){r=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,r&&document&&document.documentMode&&(r=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);c=y?parseFloat(y[1])+4:r,i=t[2]?parseFloat(t[2]):NaN,a=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),s=t&&t[1]?parseFloat(t[1]):NaN):s=NaN}else r=i=a=s=o=NaN;if(v){if(v[1]){var b=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=b?parseFloat(b[1].replace(`_`,`.`)):!0}else l=!1;u=!!v[2],d=!!v[3]}else l=u=d=!1}}var y={ie:function(){return v()||r},ieCompatibilityMode:function(){return v()||c>r},ie64:function(){return y.ie()&&p},firefox:function(){return v()||i},opera:function(){return v()||a},webkit:function(){return v()||o},safari:function(){return y.webkit()},chrome:function(){return v()||s},windows:function(){return v()||u},osx:function(){return v()||l},linux:function(){return v()||d},iphone:function(){return v()||m},mobile:function(){return v()||m||h||f||_},nativeApp:function(){return v()||g},android:function(){return v()||f},ipad:function(){return v()||h}};t.exports=y})),Rt=o(((e,t)=>{var n=!!(typeof window<`u`&&window.document&&window.document.createElement);t.exports={canUseDOM:n,canUseWorkers:typeof Worker<`u`,canUseEventListeners:n&&!!(window.addEventListener||window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n}})),zt=o(((e,t)=>{var n=Rt(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);
2
7
  /**
3
8
  * Checks if an event is supported in the current execution environment.
4
9
  *
@@ -13,16 +18,18 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
13
18
  * @internal
14
19
  * @license Modernizr 3.0.0pre (Custom Build) | MIT
15
20
  */
16
- function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),Qe=o(((e,t)=>{var n=Ye(),r=Ze(),i=10,a=40,o=800;function s(e){var t=0,n=0,r=0,s=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*i,s=n*i,`deltaY`in e&&(s=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode==1?(r*=a,s*=a):(r*=o,s*=o)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:s}}s.getEventType=function(){return n.firefox()?`DOMMouseScroll`:r(`wheel`)?`wheel`:`mousewheel`},t.exports=s})),$e=o(((e,t)=>{t.exports=Qe()})),et=c($e(),1);const tt=`pan`,nt=`scroll`,rt=`gesture`,it={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},at=(e={})=>({start:function(t){let{zoomWheelConstant:n,enableWheel:r,enableClickToZoom:i,ignoreSingleFingerTouch:a,enablePanOnWait:o,panOnWaitDelay:s,parentElement:c,requireMetaKeyForWheelZoom:u}={...it,...e},d={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:(0,l.dna)(5),multiTouch:{distance:0}};t.world.activatedEvents.push(`onMouseUp`,`onMouseDown`,`onMouseMove`,`onTouchStart`,`onTouchEnd`,`onTouchMove`,`onContextMenu`);function f(){g=0,v=``,b(),b(void 0,`notice`),_=0}function p(){t.world.constraintBounds(),f()}function m(e){if(e.which>1){d.isPressing=!1;return}t.mode===`explore`&&(e.preventDefault(),d.pointerStart.x=e.atlas.x,d.pointerStart.y=e.atlas.y,t.transitionManager.stopTransition(),d.isPressing=!0)}function h(){f(),d.isPressing&&(t.mode===`explore`&&t.world.constraintBounds(),d.isPressing=!1)}let g=0,_=0,v=``;function y(e){if(t.mode===`explore`){if(e.atlasTouches.length===1&&(_=performance.now(),a==0&&e.preventDefault(),d.pointerStart.x=e.atlasTouches[0].x,d.pointerStart.y=e.atlasTouches[0].y),e.atlasTouches.length===2){v=`gesture`,e.preventDefault();let t=e.atlasTouches[0].x,n=e.atlasTouches[1].x;d.pointerStart.x=(t+n)/2;let r=e.atlasTouches[0].y,i=e.atlasTouches[1].y;d.pointerStart.y=(r+i)/2,g=M({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY})}t.transitionManager.stopTransition(),d.isPressing=!0}}function b(e,t=`intent`){c&&(c.dataset[t]=e)}function x(e){let n=null,r=null,i=0;if(d.isPressing&&e.touches.length===2&&(n=(e.touches[0].clientX+e.touches[1].clientX)/2,r=(e.touches[0].clientY+e.touches[1].clientY)/2,i=M({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY})),b(v),d.isPressing&&e.touches.length===1){if(o&&(performance.now()-_<s&&v==``&&(v=nt),v==``&&(v=`pan`)),b(v),v==``&&a==1||v==nt){b(`require-two-finger`,`notice`);return}let t=e.touches[0];n=t.clientX,r=t.clientY}if(n!==null&&r!==null){let e=t.getRendererScreenPosition();if(e){let{x:a,y:o}=t.viewerToWorld(n-e.x,r-e.y),s=i&&g?i/g:1;t.transitionManager.customTransition(e=>{e.from=(0,l.dna)(t.target),e.to=(0,l.transform)(e.from,(0,l.compose)((0,l.translate)(d.pointerStart.x-a,d.pointerStart.y-o),(0,l.scaleAtOrigin)(1/s,a,o)),d.mousemoveBuffer),e.elapsed_time=0,e.total_time=0,e.timingFunction=G.easeInOutExpo,e.done=!1})}g=i}v==`pan`&&e.preventDefault()}function S(e){if(d.isPressing){let n=t.getRendererScreenPosition();if(n){let{x:r,y:i}=t.viewerToWorld(e.clientX-n.x,e.clientY-n.y);t.transitionManager.customTransition(e=>{e.from=(0,l.dna)(t.target),e.to=(0,l.transform)(e.from,(0,l.translate)(d.pointerStart.x-r,d.pointerStart.y-i),d.mousemoveBuffer),e.elapsed_time=0,e.total_time=0,e.timingFunction=G.easeInOutExpo,e.done=!1})}}}function C(e){t.mode===`explore`&&t.world.zoomIn(e.atlas)}function w(e){let r=1+(0,et.default)(e).spinY/n;t.world.zoomTo(r,e.atlas,!0)}function T(e){return u&&e.metaKey==0?(b(`meta-required`,`notice`),e.stopPropagation(),!1):!0}t.world.addEventListener(`mouseup`,p),t.world.addEventListener(`touchend`,p),t.world.addEventListener(`touchstart`,y),t.world.addEventListener(`mousedown`,m),window.addEventListener(`touchend`,h),window.addEventListener(`mouseup`,h),window.addEventListener(`mousemove`,S),c&&c.addEventListener(`touchmove`,x),i&&(t.world.activatedEvents.push(`onClick`),t.world.addEventListener(`click`,C)),r&&(t.world.activatedEvents.push(`onWheel`),u&&c?.addEventListener(`wheel`,T,{passive:!0,capture:!0}),t.world.addEventListener(`wheel`,w));let E=t.world.addLayoutSubscriber((e,n)=>{if(e===`zone-changed`&&t.transitionManager.constrainBounds({transition:{duration:0}}),e===`zoom-to`&&n&&t.transitionManager.zoomTo(n.factor,{origin:n.point,stream:n.stream}),e===`go-home`){let e=n.immediate?{duration:0}:void 0,r=n?.paddingPx===void 0?t.homePaddingPx:n.paddingPx,i=t.getHomeTargetStrand({paddingPx:r});t.transitionManager.applyTransition(i,e,{duration:1e3,easing:G.easeOutExpo,constrain:!0},{stream:!1}),t.updateNextFrame()}if(e===`goto-region`&&n){let e=n.immediate?{duration:0}:{};if(n.paddingPx!==void 0){let r=t.getScaleFactor(!1);if(typeof n.paddingPx==`number`){let i=n.paddingPx/r,a={x:n.x,y:n.y,width:n.width,height:n.height,padding:i};t.transitionManager.goToRegion(a,{transition:e})}else{let i=n.paddingPx.left?n.paddingPx.left/r:0,a=n.paddingPx.right?n.paddingPx.right/r:0,o=n.paddingPx.top?n.paddingPx.top/r:0,s=n.paddingPx.bottom?n.paddingPx.bottom/r:0,c={x:n.x-i,y:n.y-o,width:n.width+i+a,height:n.height+o+s};t.transitionManager.goToRegion(c,{transition:e})}}else t.transitionManager.goToRegion(n,{transition:e})}e===`constrain-bounds`&&t.transitionManager.constrainBounds({transition:n?.immediate?{duration:0}:void 0})});return()=>{t.world.removeEventListener(`mouseup`,p),t.world.removeEventListener(`touchend`,p),t.world.removeEventListener(`touchstart`,y),t.world.removeEventListener(`mousedown`,m),window.removeEventListener(`touchend`,h),window.removeEventListener(`mouseup`,h),t.world.removeEventListener(`mousemove`,S),c&&(c.removeEventListener(`touchmove`,S),c.removeEventListener(`wheel`,T,{passive:!0,capture:!0})),i&&t.world.removeEventListener(`click`,C),r&&t.world.removeEventListener(`wheel`,w),E()}},updatePosition(){}}),q=d.default.createContext(`explore`);q.displayName=`Mode`;const ot=()=>(0,d.useContext)(q);function st(e){return(0,f.jsx)(q.Provider,{value:e.mode,children:e.children})}const J=d.default.createContext(null);J.displayName=`Atlas`;const ct=d.default.createContext(null);ct.displayName=`Bounds`;let lt;if(typeof performance==`object`&&typeof performance.now==`function`){let e=performance;lt=()=>e.now()}else{let e=Date,t=e.now();lt=()=>e.now()-t}const ut=typeof m.default==`function`?m.default:null,dt=8,ft=32,pt=2,mt=0;function ht(e,t){e&&e.appendChild&&t&&e.appendChild(t)}function gt(e,t){e&&e.removeChild&&t&&e.removeChild(t)}function _t(e,t){return gt(e.world,t)}function vt(e,t,n){return yt(e.world,t,n)}function yt(e,t,n){e&&e instanceof ye&&(e=e.world),e&&e.insertBefore&&e.insertBefore(t,n)}function bt(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof k))for(let r of _){let i=r.slice(2).toLowerCase();n[r]!==t[r]&&(t[r]&&e.removeEventListener(i,t[r]),e.addEventListener(i,n[r]))}}function xt(e,t){let n=Object.keys(t),r=!1;for(let t of n)if(_.indexOf(t)!==-1){let n=y[t];if(n){if(e.activatedEvents.indexOf(n)!==-1)continue;r=!0,e.activatedEvents.push(n)}}r&&e.triggerEventActivation()}const St=new Map,Ct={};function wt(e,{args:t=[],...n},r,i,a){if(!(r instanceof ye)&&a){let e=t=>t.return?e(t.return):t.stateNode&&t.stateNode.containerInfo;r=e(a)}let o,s=r.world;switch(e){case`world`:o=R.withProps({width:n.width,height:n.height,viewingDirection:`left-to-right`}),o.activatedEvents=s.activatedEvents,o.eventHandlers=s.eventHandlers,o.subscriptions=s.subscriptions,o.triggerEventActivation(),s=o;break;case`box`:o=new B;break;case`shape`:o=new Ce;break;case`worldObject`:case`world-object`:o=new L;break;case`worldImage`:case`world-image`:o=new A;break;case`texture`:o=new te;break;case`compositeImage`:case`composite-image`:o=new F({id:n.id,width:n.width,height:n.height,images:[],renderOptions:n.renderOptions});break;case`tiledImage`:case`tiled-image`:o=P.fromTile(n.uri,n.display,n.tile,n.scaleFactor,void 0,n.format,n.useFloorCalc,n.version3);break;case`paragraph`:o=new V,o.text=n.children;break;default:return}return xt(s,n),bt(o,{},n),o}function Tt(e,t){if(t instanceof R)e.world=t;else if(t instanceof L)e.world.appendChild(t);else if(t)throw Error(`Invalid root`)}let Et=0;const Y=ut?ut({unstable_now:lt,now:lt,createInstance:wt,removeChild:gt,appendChild:ht,appendInitialChild:ht,insertBefore:yt,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:Tt,removeChildFromContainer:_t,createTextInstance(){},insertInContainerBefore:vt,prepareUpdate(e,t,n,r,i){return xt(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&bt(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return Ct},getRootHostContext(){return Ct},prepareForCommit(e){return e.isCommitting=!0,null},preparePortalMount(){},hideInstance(e){e&&e.points&&(e.points[0]=0)},unhideInstance(e,t){e&&e.points&&(e.points[0]=1)},getPublicInstance(e){return e},hideTextInstance(){throw Error(`Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.`)},resetAfterCommit(e){e.isCommitting=!1,e.pendingUpdate=!0,e.world&&e.world.needsRecalculate&&(e.world.recalculateWorldSize(),e.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(e){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return 32},getInstanceFromNode(e){throw Error(`Not implemented`)},getInstanceFromScope(e){throw Error(`Not implemented`)},prepareScopeUpdate(e,t){throw Error(`Not implemented`)},logRecoverableError(){},requestPostPaintCallback(){},rendererPackageName:`@atlas-viewer/atlas`,rendererVersion:d.version,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(e){Et=e},getCurrentUpdatePriority(){return Et},resolveUpdatePriority(){if(Et!==0)return Et;switch(typeof window<`u`&&window.event?.type){case`click`:case`contextmenu`:case`dblclick`:case`pointercancel`:case`pointerdown`:case`pointerup`:return 2;case`pointermove`:case`pointerout`:case`pointerover`:case`pointerenter`:case`pointerleave`:case`wheel`:return 8;default:return 32}},resetFormInstance(){}}):null;Y&&Y.injectIntoDevTools();function Dt(e,t){let n=St.get(e);if(n){if(!Y)return;Y.updateContainer(null,n,null,()=>{St.delete(e),t&&t(e)})}}const Ot={render(e,t){let n=St.get(t);if(Y)if(n)Y.updateContainer(e,n,null);else{let n=Y.createContainer(t,0,null,!1,null,``,()=>{},null);Y.updateContainer(e,n,null),St.set(t,n)}},unmountComponentAtNode(e,t){Dt(e,t)}},X=typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)?d.useLayoutEffect:d.useEffect,kt=d.default.memo(({children:e,setIsReady:t,onCreated:n,bounds:r,preset:i,mode:a=`explore`})=>{let o=(0,d.useCallback)(function(e){let r=(0,d.useRef)(!1),a=()=>{t(!0)};return(0,d.useEffect)(()=>{if(i&&!r.current){i.runtime.goHome();let e=n&&n(i);e&&e.then?e.then(a):a();return}return()=>{}},[]),(0,d.useEffect)(()=>{r.current=!0},[]),e.children},[i]);return X(()=>{if(i){let t=i.runtime;a!==t.mode&&(t.mode=a),Ot.render((0,f.jsx)(d.default.StrictMode,{children:(0,f.jsx)(o,{children:(0,f.jsx)(ct.Provider,{value:r,children:(0,f.jsx)(q.Provider,{value:a,children:(0,f.jsx)(J.Provider,{value:i,children:e})})})})}),t)}},[i,a,e]),X(()=>{if(i){let e=i.runtime;return()=>{Ot.unmountComponentAtNode(e)}}return()=>{}},[i]),null});var At=class{constructor(e,t){O(this,`canvas`,void 0),O(this,`gl`,void 0),O(this,`program`,void 0),O(this,`fragmentShader`,void 0),O(this,`vertexShader`,void 0),O(this,`rectBuffer`,void 0),O(this,`fragmentShaderSource`,`
21
+ function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),Bt=o(((e,t)=>{var n=Lt(),r=zt(),i=10,a=40,o=800;function s(e){var t=0,n=0,r=0,s=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*i,s=n*i,`deltaY`in e&&(s=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode==1?(r*=a,s*=a):(r*=o,s*=o)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:s}}s.getEventType=function(){return n.firefox()?`DOMMouseScroll`:r(`wheel`)?`wheel`:`mousewheel`},t.exports=s})),Vt=o(((e,t)=>{t.exports=Bt()})),Ht=c(Vt(),1);const $=Math.pow,Ut=Math.sqrt,Wt=Math.sin,Gt=Math.cos,Kt=Math.PI,qt=1.70158,Jt=qt*1.525,Yt=qt+1,Xt=2*Kt/3,Zt=2*Kt/4.5,Qt=function(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},$t={linear:e=>e,easeInQuad:function(e){return e*e},easeOutQuad:function(e){return 1-(1-e)*(1-e)},easeInOutQuad:function(e){return e<.5?2*e*e:1-$(-2*e+2,2)/2},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return 1-$(1-e,3)},easeInOutCubic:function(e){return e<.5?4*e*e*e:1-$(-2*e+2,3)/2},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1-$(1-e,4)},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-$(-2*e+2,4)/2},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1-$(1-e,5)},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1-$(-2*e+2,5)/2},easeInSine:function(e){return 1-Gt(e*Kt/2)},easeOutSine:function(e){return Wt(e*Kt/2)},easeInOutSine:function(e){return-(Gt(Kt*e)-1)/2},easeInExpo:function(e){return e===0?0:$(2,10*e-10)},easeOutExpo:function(e){return e===1?1:1-$(2,-10*e)},easeInOutExpo:function(e){return e===0?0:e===1?1:e<.5?$(2,20*e-10)/2:(2-$(2,-20*e+10))/2},easeInCirc:function(e){return 1-Ut(1-$(e,2))},easeOutCirc:function(e){return Ut(1-$(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-Ut(1-$(2*e,2)))/2:(Ut(1-$(-2*e+2,2))+1)/2},easeInBack:function(e){return Yt*e*e*e-qt*e*e},easeOutBack:function(e){return 1+Yt*$(e-1,3)+qt*$(e-1,2)},easeInOutBack:function(e){return e<.5?$(2*e,2)*((Jt+1)*2*e-Jt)/2:($(2*e-2,2)*((Jt+1)*(e*2-2)+Jt)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-$(2,10*e-10)*Wt((e*10-10.75)*Xt)},easeOutElastic:function(e){return e===0?0:e===1?1:$(2,-10*e)*Wt((e*10-.75)*Xt)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-($(2,20*e-10)*Wt((20*e-11.125)*Zt))/2:$(2,-20*e+10)*Wt((20*e-11.125)*Zt)/2+1},easeInBounce:function(e){return 1-Qt(1-e)},easeOutBounce:Qt,easeInOutBounce:function(e){return e<.5?(1-Qt(1-2*e))/2:(1+Qt(2*e-1))/2}},en=`pan`,tn=`scroll`,nn=`gesture`,rn={zoomOutFactor:.8,zoomInFactor:1.25,maxZoomFactor:1,minZoomFactor:.05,zoomDuration:300,zoomWheelConstant:20,zoomClamp:.6,panBounceStiffness:120,panBounceDamping:15,panTimeConstant:325,panPower:.1,enablePanMomentum:!0,panMomentumStrength:1,nudgeDistance:100,panPadding:0,devicePixelRatio:1,enableWheel:!0,enableClickToZoom:!0,enableDoubleTapZoom:!0,ignoreSingleFingerTouch:!1,enablePanOnWait:!1,requireMetaKeyForWheelZoom:!1,wheelInExploreModeOnly:!1,panOnWaitDelay:40,onPanInSketchMode:()=>{},parentElement:null},an=(e={})=>({start:t=>{let{zoomWheelConstant:n,enableWheel:r,enableClickToZoom:i,enableDoubleTapZoom:a,ignoreSingleFingerTouch:o,enablePanOnWait:s,panOnWaitDelay:c,parentElement:u,requireMetaKeyForWheelZoom:d,wheelInExploreModeOnly:f,enablePanMomentum:p,panMomentumStrength:m,panBounceStiffness:h,panBounceDamping:g,panTimeConstant:_,panPadding:v}={...rn,...e},y={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:(0,l.dna)(5),multiTouch:{distance:0},hasMovedSincePress:!1},b=[],x={active:!1,vx:0,vy:0},C=null,w,T=0,ee,E;function D(){b.length=0}function O(e,t){let n=performance.now(),r=b[b.length-1];if(r&&r.x===e&&r.y===t){r.t=n;return}for(b.push({x:e,y:t,t:n});b.length>1&&n-b[0].t>140;)b.shift()}function k(){x.active=!1,x.vx=0,x.vy=0}function A(){C=null,w=void 0}function j(){if(!a||t.mode!==`explore`||y.hasMovedSincePress||!E)return!1;let e=performance.now();if(U&&e-U>250)return!1;let n=ee&&T>0&&e-T<=350&&S(ee,E)<=100;if(T=e,ee={...E},!n)return!1;let r=t.isViewportAtHomeZoomLevel({tolerance:.1})?t.getHomeTarget({cover:!0}):t.getHomeTarget();return t.transitionManager.goToRegion(r,{transition:{duration:500,easing:$t.easeInOutQuad}}),T=0,ee=void 0,!0}function M(e,t,n,r){let i=Math.min(n,32)/1e3,a=t*1e3,o=e+a*i,s=o-r,c=-h*s-g*a,l=a+c*i;return{position:o+.5*c*i*i,velocity:l/1e3}}function N(e){t.transitionManager.customTransition(n=>{n.from=(0,l.dna)(t.target),n.to=e,n.elapsed_time=0,n.total_time=0,n.timingFunction=$t.easeInOutExpo,n.done=!1})}function P(){if(b.length<2)return null;let e=b[b.length-1],t=b[0];for(let n=b.length-2;n>=0&&(t=b[n],!(e.t-t.t>=80));n--);let n=e.t-t.t;return n<=0?null:{vx:(e.x-t.x)/n,vy:(e.y-t.y)/n}}function F(){if(!p||!y.hasMovedSincePress||b.length<2)return!1;let e=P();if(!e)return!1;let n=Math.max(0,m),r=e.vx*n,i=e.vy*n;return Math.hypot(r,i)*t.getScaleFactor()<.08?!1:(x.active=!0,x.vx=r,x.vy=i,t.updateNextFrame(),!0)}function te(){if(!y.isPressing){A(),L();return}let e=t.mode===`explore`?F():!1;t.mode===`explore`&&!e&&t.world.constraintBounds(),y.isPressing=!1,y.hasMovedSincePress=!1,D(),A(),L()}function I(){if(!y.isPressing){A(),L();return}if(k(),t.mode===`explore`){let e=t.transitionManager.getPendingTransition(),n=C||(e&&e.total_time===0&&!e.done?e.to:t.target);t.transitionManager.constrainTarget(n,{origin:w,panPadding:v})}y.isPressing=!1,y.hasMovedSincePress=!1,D(),A(),L()}t.world.activatedEvents.push(`onMouseUp`,`onMouseDown`,`onMouseMove`,`onTouchStart`,`onTouchEnd`,`onTouchCancel`,`onTouchMove`,`onContextMenu`);function L(){H=0,W=``,G(),G(void 0,`notice`),U=0,E=void 0}function ne(){te()}function R(e){if(W===nn&&e.touches.length<2){I();return}e.touches.length===0&&(j(),te())}function z(e){if(W===nn){I();return}te()}function B(e){if(e.which>1){y.isPressing=!1;return}t.mode===`explore`&&(e.preventDefault(),k(),D(),y.hasMovedSincePress=!1,y.pointerStart.x=e.atlas.x,y.pointerStart.y=e.atlas.y,O(t.target[1],t.target[2]),t.transitionManager.stopTransition(),y.isPressing=!0)}function V(){te()}let H=0,U=0,W=``;function re(e){if(t.mode===`explore`){if(k(),D(),y.hasMovedSincePress=!1,e.atlasTouches.length===1&&(U=performance.now(),o==0&&e.preventDefault(),y.pointerStart.x=e.atlasTouches[0].x,y.pointerStart.y=e.atlasTouches[0].y,E={x:e.atlasTouches[0].x,y:e.atlasTouches[0].y},O(t.target[1],t.target[2])),e.atlasTouches.length===2){W=nn,e.preventDefault();let t=e.atlasTouches[0].x,n=e.atlasTouches[1].x;y.pointerStart.x=(t+n)/2;let r=e.atlasTouches[0].y,i=e.atlasTouches[1].y;y.pointerStart.y=(r+i)/2,H=S({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY}),D(),A()}t.transitionManager.stopTransition(),y.isPressing=!0}}function G(e,t=`intent`){u&&(u.dataset[t]=e)}function ie(e){let n=null,r=null,i=0,a=!1;if(y.isPressing&&e.touches.length===2&&(n=(e.touches[0].clientX+e.touches[1].clientX)/2,r=(e.touches[0].clientY+e.touches[1].clientY)/2,i=S({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY})),G(W),y.isPressing&&e.touches.length===1){if(s&&(performance.now()-U<c&&W==``&&(W=tn),W==``&&(W=`pan`)),G(W),W==``&&o==1||W==tn){G(`require-two-finger`,`notice`);return}let t=e.touches[0];n=t.clientX,r=t.clientY,a=!0}if(n!==null&&r!==null){let o=t.getRendererScreenPosition();if(o){let{x:s,y:c}=t.viewerToWorld(n-o.x,r-o.y),u=i&&H?i/H:1,d=(0,l.transform)((0,l.dna)(t.target),(0,l.compose)((0,l.translate)(y.pointerStart.x-s,y.pointerStart.y-c),(0,l.scaleAtOrigin)(1/u,s,c)),y.mousemoveBuffer);if(a){let e=b[b.length-1];e&&(e.x!==d[1]||e.y!==d[2])&&(y.hasMovedSincePress=!0),O(d[1],d[2])}e.touches.length===2&&(C=(0,l.dna)(d),w={x:s,y:c}),N(d)}H=i}W==`pan`&&e.preventDefault()}function ae(e){if(y.isPressing){let n=t.getRendererScreenPosition();if(n){let{x:r,y:i}=t.viewerToWorld(e.clientX-n.x,e.clientY-n.y),a=(0,l.transform)((0,l.dna)(t.target),(0,l.translate)(y.pointerStart.x-r,y.pointerStart.y-i),y.mousemoveBuffer),o=b[b.length-1];o&&(o.x!==a[1]||o.y!==a[2])&&(y.hasMovedSincePress=!0),O(a[1],a[2]),N(a)}}}function K(e){t.mode===`explore`&&t.world.zoomIn(e.atlas)}function oe(e){if(f&&t.mode!==`explore`)return;k();let r=1+(0,Ht.default)(e).spinY/n;t.world.zoomTo(r,e.atlas,!0)}function q(e){return d&&e.metaKey==0?(G(`meta-required`,`notice`),e.stopPropagation(),!1):!0}t.world.addEventListener(`mouseup`,ne),t.world.addEventListener(`touchend`,R),t.world.addEventListener(`touchcancel`,z),t.world.addEventListener(`touchstart`,re),t.world.addEventListener(`mousedown`,B),window.addEventListener(`touchend`,V),window.addEventListener(`mouseup`,V),window.addEventListener(`mousemove`,ae),u&&u.addEventListener(`touchmove`,ie),i&&(t.world.activatedEvents.push(`onClick`),t.world.addEventListener(`click`,K)),r&&(t.world.activatedEvents.push(`onWheel`),d&&u?.addEventListener(`wheel`,q,{passive:!0,capture:!0}),t.world.addEventListener(`wheel`,oe));let se=t.world.addLayoutSubscriber((e,n)=>{if(e===`zone-changed`&&(k(),t.transitionManager.hasPending()||t.transitionManager.constrainBounds()),e===`zoom-to`&&n&&(k(),t.transitionManager.zoomTo(n.factor,{origin:n.point,stream:n.stream})),e===`go-home`){k();let e=n.immediate?{duration:0}:void 0,r=n?.paddingPx,i=t.getHomeTarget({paddingPx:r});t.transitionManager.goToRegion(i,{transition:e})}if(e===`goto-region`&&n){k();let e=n.immediate?{duration:0}:{};if(n.paddingPx!==void 0){let r=t.getHomeTarget({position:l.DnaFactory.singleBox(n.width,n.height,n.x,n.y),paddingPx:n.paddingPx});t.transitionManager.goToRegion(r,{transition:e})}else t.transitionManager.goToRegion(n,{transition:e})}e===`constrain-bounds`&&(k(),t.transitionManager.constrainBounds({panPadding:v,transition:n?.immediate?{duration:0}:void 0}))}),ce=t.registerHook(`useFrame`,e=>{if(!x.active)return;let n=Math.exp(-e/Math.max(1,_)),r=t.target[3]-t.target[1],i=t.target[4]-t.target[2],a=(0,l.transform)((0,l.dna)(t.target),(0,l.translate)(x.vx*e,x.vy*e),y.mousemoveBuffer),[,o]=t.constrainBounds(a,{panPadding:v}),s=a[1]!==o[1],c=a[2]!==o[2],u=s?x.vx:x.vx*n,d=c?x.vy:x.vy*n,f=(0,l.dna)(a);if(s){let n=M(t.target[1],x.vx,e,o[1]);f[1]=n.position,f[3]=n.position+r,u=n.velocity}else f[1]=t.target[1]+u*e,f[3]=f[1]+r;if(c){let n=M(t.target[2],x.vy,e,o[2]);f[2]=n.position,f[4]=n.position+i,d=n.velocity}else f[2]=t.target[2]+d*e,f[4]=f[2]+i;x.vx=u,x.vy=d;let[,p]=t.constrainBounds(f,{panPadding:v}),m=Math.hypot(f[1]-p[1],f[2]-p[2])*t.getScaleFactor(),h=Math.hypot(x.vx,x.vy)*t.getScaleFactor();if(m<=.5&&h<=.02){k(),N(p);return}N(f),t.updateNextFrame()});return()=>{k(),t.world.removeEventListener(`mouseup`,ne),t.world.removeEventListener(`touchend`,R),t.world.removeEventListener(`touchcancel`,z),t.world.removeEventListener(`touchstart`,re),t.world.removeEventListener(`mousedown`,B),window.removeEventListener(`touchend`,V),window.removeEventListener(`mouseup`,V),window.removeEventListener(`mousemove`,ae),u&&(u.removeEventListener(`touchmove`,ie),u.removeEventListener(`wheel`,q,{passive:!0,capture:!0})),i&&t.world.removeEventListener(`click`,K),r&&t.world.removeEventListener(`wheel`,oe),ce(),se()}},updatePosition(){}});var on=c(Vt(),1);const sn={scrollWheelFactor:1,scrollLoadAheadFactor:1,clickDragThresholdPx:6,touchScrollMomentumStrength:1.4,touchScrollMomentumMinStartPxPerMs:.04},cn=.09999999999999998/2,ln=.8,un=.08,dn=.02,fn=80,pn=140;let mn=1;const hn=new WeakMap;function gn(e){return{x:e.x,y:e.y,width:e.width,height:e.height}}function _n(e,t,n){return e.points[0]!==0&&t>=e.points[1]&&t<=e.points[3]&&n>=e.points[2]&&n<=e.points[4]}const vn=(e={})=>({start(t){let n=mn++;hn.set(t,n);let r=()=>hn.get(t)===n,{scrollWheelFactor:i,scrollLoadAheadFactor:a,clickDragThresholdPx:o,touchScrollMomentumStrength:s,touchScrollMomentumMinStartPxPerMs:c,enablePanMomentum:l=!0,panMomentumStrength:u=1,panTimeConstant:d=325}={...sn,...e},f=()=>{w||(w=!0,window.requestAnimationFrame(()=>{w=!1,r()&&t.updateNextFrame()}))},p=t.mode,m=t.manualHomePosition,h=`scroll-mode`,g=!1,_=!1,v=!1,y,b,x=!1,S,C=performance.now()+5e3,w=!1,T=0,ee=0,E=0,D=0,O=null,k=!1,A=null,j=!1,M=!1,N=0,P,F=!0,te=-1,I=-1,L=-1,ne=-1,R=-1,z=[],B={active:!1,vy:0},V=an({...e,enableWheel:!0,enableClickToZoom:!1,wheelInExploreModeOnly:!0}),H=e=>{t.world.activatedEvents.indexOf(e)===-1&&t.world.activatedEvents.push(e)},U=e=>{h=e,t.mode=e===`zone-active`?`explore`:`sketch`},W=()=>{z.length=0},re=e=>{let t=performance.now(),n=z[z.length-1];if(n&&n.y===e){n.t=t;return}for(z.push({y:e,t});z.length>1&&t-z[0].t>140;)z.shift()},G=()=>{B.active=!1,B.vy=0},ie=()=>{if(z.length<2)return null;let e=z[z.length-1],t=z[0];for(let n=z.length-2;n>=0&&(t=z[n],!(e.t-t.t>=80));n--);let n=e.y-t.y,r=e.t-t.t;return r<=0||Math.abs(n)<=.5?null:n/r},ae=({strengthMultiplier:e=1,minStartPxPerMs:n=un}={})=>{if(!l||z.length<2)return!1;let r=ie();if(r===null)return!1;let i=r*Math.max(0,u)*Math.max(0,e);return Math.abs(i)*t.getScaleFactor()<n?!1:(B.active=!0,B.vy=i,t.updateNextFrame(),!0)},K=()=>{let e=h===`zone-active`?`explore`:`sketch`;t.mode!==e&&(t.mode=e)},oe=()=>{F=!0},q=(e,t)=>Math.abs(e.x-t.x)>.01||Math.abs(e.y-t.y)>.01||Math.abs(e.width-t.width)>.01||Math.abs(e.height-t.height)>.01,se=()=>{let e,n=0;for(let r of t.world.zones)r.recalculateBounds(),r.points[0]!==0&&(!e||r.points[2]<n)&&(e=r,n=r.points[2]);return e},ce=()=>{let e=t.getRendererScreenPosition(),n=Math.max(0,e?.height||0);if(n===0)return;let r=Math.round(n*.04999999999999999);return{top:r,bottom:r}},le=()=>{let e=se();if(e)return e.points[2];let n=!1,r=0;for(let e of t.world.getObjects())!e||e.points[0]===0||(!n||e.points[2]<r)&&(r=e.points[2],n=!0);return n?r:0},ue=()=>{let e=t.getRendererScreenPosition(),n=Math.round((e?.width||t.width||0)*100)/100,r=Math.round((e?.height||t.height||0)*100)/100,i=e?.width&&e?.height?`renderer`:`runtime`,a=se();if(a)return[`zone`,a.id,a.points[1],a.points[2],a.points[3]-a.points[1],a.points[4]-a.points[2],`screen:${n}x${r}:${i}`].join(`:`);let o=-1,s=0,c=t.world.getObjects();for(let e=0;e<c.length;e++){let t=c[e];!t||t.points[0]===0||(o===-1||t.points[2]<s)&&(o=e,s=t.points[2])}if(o!==-1){let e=c[o];return[`object`,e.id||o,e.points[1],e.points[2],e.points[3]-e.points[1],e.points[4]-e.points[2],`screen:${n}x${r}:${i}`].join(`:`)}},de=()=>{if(!r()||x||h!==`scroll-mode`||g||M||_||t.world.hasActiveZone())return;let e=ue();if(!e){performance.now()<C&&t.updateNextFrame();return}e!==S&&(S=e,N=le(),me(N),f())},fe=()=>{let e=t.world.width,n=t.world.height,r=t.getRendererScreenPosition(),i=Math.max(1,r?.width||t.width),a=Math.max(1,r?.height||t.height),o=t.world.zones.length;if(!F&&P&&te===e&&I===n&&L===i&&ne===a&&R===o)return P;let s=se(),c;if(s){let e=t.getHomeTarget({position:s.points,paddingPx:ce()});c={x:e.x,y:e.y,width:e.width,height:e.height}}else c=e>0&&n>0?{x:0,y:0,width:e,height:e/i*a}:void 0;return P=c,F=!1,te=e,I=n,L=i,ne=a,R=o,P},pe=e=>{let n=fe();if(!n)return;let r=t.world.height,i=Math.max(1,a),o=n.width*i,s=n.height,c=n.height*i,l=Math.min(0,r-s),u=Math.max(0,r-s);return{x:n.x-(o-n.width)/2,y:Math.min(u,Math.max(l,e)),width:o,height:c}},J=e=>{if(e.recalculateBounds(),e.points[0]!==0)return pe(e.points[2])},me=e=>{let n=pe(e);if(!n)return;N=n.y;let r=t.getViewport();!t.transitionManager.hasPending()&&!q(r,n)||(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame())},Y=e=>{let n=pe(e);return n?(N=n.y,t.transitionManager.goToRegion(n),t.updateNextFrame(),!0):!1},he=()=>{if(h!==`scroll-mode`||g||_||t.world.hasActiveZone())return;let e=t.getViewport(),n=pe(e.y);n&&(N=n.y,q(e,n)&&(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame()))},ge=(e,n)=>{for(let r of t.world.zones)if(r.recalculateBounds(),_n(r,e,n))return r},_e=e=>{r()&&(G(),W(),x=!0,b||(b=gn({...t.getViewport(),y:N})),v=!0,t.goToZone(e)?U(`zone-active`):v=!1)},ve=()=>{if(!r())return;let e=Y(b?b.y:N);b=void 0,_=e,e||(_=!1,g=!1,me(N)),t.updateNextFrame()},ye=()=>{if(!r()||h!==`zone-active`)return!1;let e=t.world.getActiveZone();if(!e||(e.recalculateBounds(),e.points[0]===0))return!1;let n=t.getViewport();if(n.width<=0||n.height<=0)return!1;let i=e.points[3]-e.points[1],a=e.points[4]-e.points[2],o=i/n.width,s=a/n.height;return o<ln&&s<ln},X=()=>{r()&&h===`zone-active`&&(G(),W(),U(`scroll-mode`),g=!0,t.deselectZone(),ve())},be=(e,t)=>{G(),W(),x=!0,M=!0,j=!1,E=e,D=t,T=t,ee=N,re(N)},xe=(e,n)=>{if(!M)return!1;Math.hypot(e-E,n-D)>o&&(j=!0);let r=(n-T)/Math.max(1e-4,t.getScaleFactor());return me(ee-r),re(N),!0},Se=({allowMomentum:e=!0,momentumStrengthMultiplier:t=1,momentumMinStartPxPerMs:n=un}={})=>{let r=M,i=j;return M=!1,j=!1,r?(e&&h===`scroll-mode`&&!_?ae({strengthMultiplier:t,minStartPxPerMs:n}):G(),W(),{releasedDrag:!0,tapSuppressed:i}):(W(),{releasedDrag:!1,tapSuppressed:i})},Ce=()=>{M=!1,j=!1,W(),G()},we=()=>{O=null,k=!1,A=null,j=!1},Te=e=>{if(!r()||(K(),j||_))return;if(h===`scroll-mode`){let t=ge(e.x,e.y);t&&_e(t.id);return}let n=t.world.getActiveZone();(!n||!_n(n,e.x,e.y))&&X()},Ee=e=>{r()&&e.atlas&&Te(e.atlas)},De=e=>{if(!r())return;if(K(),_){e.stopPropagation();return}if(h!==`scroll-mode`)return;G(),x=!0,e.stopPropagation();let n=((0,on.default)(e).pixelY||e.deltaY||0)/Math.max(1e-4,t.getScaleFactor())*i;me(N+n)},Oe=e=>{r()&&(K(),!(h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),be(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Z=e=>{r()&&(K(),!(!M||h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),xe(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Q=()=>{r()&&Se()},ke=e=>{if(!r())return;if(K(),h===`zone-active`){if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,j=!1,E=t.clientX,D=t.clientY,A={x:n.x,y:n.y};return}if(h!==`scroll-mode`||_)return;if(e.preventDefault(),e.stopPropagation?.(),!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we(),Ce();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,A={x:n.x,y:n.y},be(t.clientX,t.clientY)},Ae=e=>{if(!r())return;if(K(),h===`zone-active`){if(!k)return;if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we();return}let t=e.atlasTouches.find(e=>e.id===O)||e.atlasTouches[0],n=Array.from(e.touches).find(e=>e.identifier===t.id)||e.touches[0];A={x:t.x,y:t.y},Math.hypot(n.clientX-E,n.clientY-D)>o&&(j=!0);return}if(h!==`scroll-mode`||_||!M)return;if(e.preventDefault(),e.stopPropagation?.(),!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we(),Ce();return}let t=e.atlasTouches.find(e=>e.id===O)||e.atlasTouches[0],n=Array.from(e.touches).find(e=>e.identifier===t.id)||e.touches[0];O=t.id,A={x:t.x,y:t.y},xe(n.clientX,n.clientY)},je=e=>{if(!r())return;if(K(),h===`zone-active`){let t=A,n=k&&!j&&e.touches.length===0;we(),t&&n&&Te(t);return}if(h!==`scroll-mode`)return;if(e.preventDefault(),e.stopPropagation?.(),e.touches.length>0){we(),Ce();return}let t=A,n=Se({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c});we(),t&&!n.tapSuppressed&&Te(t)},Me=e=>{if(r()){if(K(),h===`zone-active`){we();return}h===`scroll-mode`&&(e.preventDefault(),e.stopPropagation?.(),we(),Ce())}},Ne=()=>{if(r()){if(h===`zone-active`){we();return}Se({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c}),we()}},Pe=e=>{r()&&e.key===`Escape`&&X()};H(`onClick`),H(`onWheel`),H(`onMouseDown`),H(`onMouseMove`),H(`onMouseUp`),H(`onTouchStart`),H(`onTouchMove`),H(`onTouchEnd`),H(`onTouchCancel`),t.world.addEventListener(`click`,Ee),t.world.addEventListener(`wheel`,De),t.world.addEventListener(`mousedown`,Oe),t.world.addEventListener(`mousemove`,Z),t.world.addEventListener(`mouseup`,Q),t.world.addEventListener(`touchstart`,ke),t.world.addEventListener(`touchmove`,Ae),t.world.addEventListener(`touchend`,je),t.world.addEventListener(`touchcancel`,Me),window.addEventListener(`mouseup`,Q),window.addEventListener(`touchend`,Ne),window.addEventListener(`touchcancel`,Me),window.addEventListener(`keydown`,Pe),t.manualHomePosition=!0,U(`scroll-mode`),N=le(),de();let Fe=V.start(t),Ie=t.registerHook(`useFrame`,e=>{if(!B.active)return;if(!r()||h!==`scroll-mode`||g||_||M||t.world.hasActiveZone()){G();return}let n=Math.exp(-e/Math.max(1,d));if(B.vy*=n,Math.abs(B.vy)*t.getScaleFactor()<=.02){G();return}let i=N;if(me(N+B.vy*e),Math.abs(N-i)<=.01){G();return}t.updateNextFrame()}),Le=t.registerHook(`useAfterFrame`,()=>{if(r()){if(K(),he(),de(),_&&!t.transitionManager.hasPending()&&(_=!1,g=!1),y&&h===`zone-active`&&!t.transitionManager.hasPending()){let e=t.world.getActiveZone();if(e&&e.id===y){let t=J(e);t&&(b=gn(t),N=t.y)}y=void 0}g||ye()&&X()}}),Re=t.world.addLayoutSubscriber(e=>{if(r()){if((e===`recalculate-world-size`||e===`zone-changed`)&&oe(),e===`goto-region`&&(g=!1),e===`recalculate-world-size`&&h===`scroll-mode`&&!g){let e=b?b.y:N;t.world.zones.length&&e===0&&(N=le()),me(N),f()}if(e===`zone-changed`){if(t.world.hasActiveZone()){G(),W(),x=!0;let e=t.world.getActiveZone();!v&&e?y=e.id:b||(b=gn({...t.getViewport(),y:N})),v=!1,U(`zone-active`);return}let e=h===`zone-active`;if(y=void 0,U(`scroll-mode`),_)return;e?(g=!0,ve()):g||me(N)}}});return()=>{G(),W(),Fe(),Ie(),Le(),Re(),t.world.removeEventListener(`click`,Ee),t.world.removeEventListener(`wheel`,De),t.world.removeEventListener(`mousedown`,Oe),t.world.removeEventListener(`mousemove`,Z),t.world.removeEventListener(`mouseup`,Q),t.world.removeEventListener(`touchstart`,ke),t.world.removeEventListener(`touchmove`,Ae),t.world.removeEventListener(`touchend`,je),t.world.removeEventListener(`touchcancel`,Me),window.removeEventListener(`mouseup`,Q),window.removeEventListener(`touchend`,Ne),window.removeEventListener(`touchcancel`,Me),window.removeEventListener(`keydown`,Pe),r()&&(hn.delete(t),t.manualHomePosition=m,t.mode=p)}},updatePosition(){}}),yn=p.default.createContext(null);yn.displayName=`Atlas`;const bn=p.default.createContext(null);bn.displayName=`Bounds`;const xn=p.default.createContext(`explore`);xn.displayName=`Mode`;const Sn=()=>(0,p.useContext)(xn);function Cn(e){return(0,h.jsx)(xn.Provider,{value:e.mode,children:e.children})}var wn=class{constructor(e){E(this,`runtime`,void 0),E(this,`pendingTransition`,void 0),E(this,`lastZoomTo`,null),E(this,`isConstraining`,!1),E(this,`lastGoToRegion`,null),this.runtime=e,this.pendingTransition={from:(0,l.dna)(5),to:(0,l.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:$t.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,l.dna)(this.runtime.target),this.pendingTransition.to=(0,l.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 n=this.pendingTransition,r=n.total_time===0?0:(n.elapsed_time+t)/n.total_time,i=n.total_time===0?1:r===0?0:n.timingFunction(r);e[1]=n.from[1]+(n.to[1]-n.from[1])*i,e[2]=n.from[2]+(n.to[2]-n.from[2])*i,e[3]=n.from[3]+(n.to[3]-n.from[3])*i,e[4]=n.from[4]+(n.to[4]-n.from[4])*i,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:$t.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:n,stream:r=!1,transition:i}=t;this.lastZoomTo={factor:e,options:t};let a=this.runtime.getZoomedPosition(e,{origin:n}),o=Math.abs(1-e);this.applyTransition(a,i,{duration:2e3*o,easing:$t.easeOutExpo,constrain:!0,callback:()=>{this.lastZoomTo=null}},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){this.isConstraining=!0;let[n,r]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});if(n){this.applyTransition(r,e,{duration:500,easing:$t.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}constrainTarget(e,{origin:t,transition:n,panPadding:r=0}={}){this.isConstraining=!0;let[i,a]=this.runtime.constrainTarget(e,{origin:t,panPadding:r});if(i){this.applyTransition(a,n,{duration:500,easing:$t.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}applyTransition(e,t,n,{stream:r}={}){this.pendingTransition.from=(0,l.dna)(this.runtime.target),this.pendingTransition.to=e,r||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=t?.duration===void 0?n?.duration===void 0?1e3:n.duration:t.duration,this.pendingTransition.constrain=t?.constrain===void 0?n?.constrain===void 0?!1:n.constrain:t.constrain,this.pendingTransition.timingFunction=t?.easing||n?.easing||$t.easeInOutSine}goToRegion(e,{transition:t}={}){this.lastGoToRegion={target:e,options:{transition:t}};let n=this.runtime.clampRegion(e);this.applyTransition(l.DnaFactory.singleBox(n.width,n.height,n.x,n.y),t,{duration:1e3,easing:$t.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};Number.MIN_VALUE+1;var Tn=class{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}constructor(e,t,n,r=[],i){E(this,`id`,K()),E(this,`ready`,!1),E(this,`readyCycle`,0),E(this,`readyReason`,`initial`),E(this,`readyTimestamp`,void 0),E(this,`renderer`,void 0),E(this,`world`,void 0),E(this,`target`,void 0),E(this,`homePosition`,void 0),E(this,`manualHomePosition`,void 0),E(this,`manualFocalPosition`,void 0),E(this,`focalPosition`,void 0),E(this,`homePaddingPx`,void 0),E(this,`transitionManager`,void 0),E(this,`aggregate`,void 0),E(this,`transformBuffer`,(0,l.dna)(500)),E(this,`lastTarget`,(0,l.dna)(5)),E(this,`zoomBuffer`,(0,l.dna)(5)),E(this,`logNextRender`,!1),E(this,`pendingUpdate`,!0),E(this,`isCommitting`,!1),E(this,`firstRender`,!0),E(this,`lastTime`,void 0),E(this,`stopId`,void 0),E(this,`mode`,`explore`),E(this,`controllers`,[]),E(this,`controllersRunning`,!1),E(this,`controllerStopFunctions`,[]),E(this,`maxScaleFactor`,1),E(this,`_viewerToWorld`,{x:0,y:0}),E(this,`_lastGoodScale`,1),E(this,`debugFrame`,0),E(this,`debugSubscribers`,new Set),E(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),E(this,`fpsLimit`,void 0),E(this,`options`,void 0),E(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),E(this,`_viewport`,{x:0,y:0,width:0,height:0}),E(this,`setViewport`,e=>{let t=Math.round(e.x===void 0?this.target[1]:e.x),n=Math.round(e.y===void 0?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]=n+e.height:this.target[4]=this.target[4]-this.target[2]+n,Math.abs(this.target[1]-t)>.01&&(this.target[1]=t),Math.abs(this.target[2]-n)>.01&&(this.target[2]=n),this.pendingUpdate=!0}),E(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 n=this.pendingUpdate,r=this.renderer.pendingUpdate(),i=this.world.hasPendingAnimation(),a=this.hasDebugSubscribers();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,n=!0,this.updateControllerPosition()),i&&(this.pendingUpdate=!0,n=!0),!this.firstRender&&!n&&!r&&!i&&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;let o=++this.debugFrame,s=0;a&&this.emitDebug({type:`frame-start`,at:e,runtimeId:this.id,frame:o,delta:t,mode:this.mode,pendingUpdate:n,rendererPendingUpdate:r,target:[this.target[1],this.target[2],this.target[3],this.target[4]]}),this.hook(`useBeforeFrame`,t),this.renderer.beforeFrame(this.world,t,this.target,this.hookOptions);let c=this.getScaleFactor(),u=this.renderer.getPointsAt(this.world,this.target,this.aggregate,c),d=u.length;for(let t=0;t<d;t++){let n=u[t][0],r=u[t][1],i=u[t][2],c=i?(0,l.transform)(r,i,this.transformBuffer):r;this.renderer.prepareLayer(n,n.__parent&&i?(0,l.transform)(n.__parent.crop||n.__parent.points,i):c);let d=c.length/5;for(let r=0;r<d;r++){let i=r*5;if(c[i]!==0){if(this.renderer.paint(n,r,c[i+1],c[i+2],c[i+3]-c[i+1],c[i+4]-c[i+2]),s++,a){let a;if(n.getImageUrl)try{a=n.getImageUrl(r)}catch{a=void 0}this.emitDebug({type:`paint`,at:e,runtimeId:this.id,frame:o,layerIndex:t,tileIndex:r,x:c[i+1],y:c[i+2],width:c[i+3]-c[i+1],height:c[i+4]-c[i+2],paintId:n.id||`${t}:${r}`,paintType:n?.constructor?.name||n.type||`UnknownPaint`,ownerId:n.__owner?.value?.id,compositeId:n.__parent?.id,imageUrl:a})}this.hook(`useAfterPaint`,n)}}this.renderer.finishLayer(n,r)}this.renderer.afterFrame(this.world,t,this.target,this.hookOptions),this.pendingUpdate=!1,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.logNextRender=!1,!this.ready&&this.renderer.isReady()&&(this.ready=!0,this.readyTimestamp=performance.now(),this.world.trigger(`ready`)),a&&this.emitDebug({type:`frame-end`,at:e,runtimeId:this.id,frame:o,delta:t,scaleFactor:c,paintCount:s,ready:this.ready,pendingUpdate:this.pendingUpdate,worldWidth:this.world.width,worldHeight:this.world.height,target:[this.target[1],this.target[2],this.target[3],this.target[4]]}),this.world.flushSubscriptions();let f=this.world.getScheduledUpdates(this.target,c),p=f.length;if(p>0)for(let e=0;e<p;e++){let t=f[p-e-1]();t?t.then(()=>{this.pendingUpdate=!0}):this.pendingUpdate=!0}}),this.renderer=e,this.world=t,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1,...i||{}},this.target=l.DnaFactory.projection(n),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=l.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new wn(this),this.aggregate=(0,l.scale)(1),this.world.addLayoutSubscriber(e=>{(e===`repaint`||e===`zone-changed`)&&(this.pendingUpdate=!0),e===`recalculate-world-size`&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=r,this.render(this.lastTime),this.startControllers(),this.homePaddingPx=void 0}setHomePosition(e){this.homePosition.set(l.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}setHomePaddingPx(e){this.homePaddingPx=e,this.pendingUpdate=!0}getHomePaddingPx(){return this.homePaddingPx}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}}normalizePadding(e){return typeof e==`number`?{left:e,right:e,top:e,bottom:e}:e?{left:e.left||0,right:e.right||0,top:e.top||0,bottom:e.bottom||0}:{left:0,right:0,top:0,bottom:0}}getHomeTarget(e={}){let t=this.getRendererScreenPosition(),n=t?.width||this.width,r=t?.height||this.height,i=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,a=this.normalizePadding(i),o=Math.max(1,n-a.left-a.right),s=Math.max(1,r-a.top-a.bottom),c=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]},l=o/s,u=c.width/c.height,d,f,p,m;(e.cover?u<l:u>l)?(d=c.width,f=c.width/l,p=c.x,m=c.y-(f-c.height)/2):(f=c.height,d=c.height*l,p=c.x-(d-c.width)/2,m=c.y);let h=d/o,g=a.left*h,_=a.right*h,v=a.top*h,y=a.bottom*h;return{x:p-g,y:m-v,width:d+g+_,height:f+v+y}}isViewportAtHome(e={}){let{cover:t=!1,tolerance:n=1,target:r=this.getViewport()}=e,i=this.getHomeTarget({cover:t});return Math.abs(r.x-i.x)<=n&&Math.abs(r.y-i.y)<=n&&Math.abs(r.width-i.width)<=n&&Math.abs(r.height-i.height)<=n}isViewportAtHomeZoomLevel(e={}){let{cover:t=!1,tolerance:n=.05,target:r=this.getViewport()}=e,i=this.getHomeTarget({cover:t}),a=this.renderer.getScale(r.width,r.height)||this._lastGoodScale,o=this.renderer.getScale(i.width,i.height)||this._lastGoodScale;return o===0?!1:Math.abs(a/o-1)<=n}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,n=this.normalizePadding(t);if(n.left>0||n.right>0||n.top>0||n.bottom>0){let t=this.getHomeTarget(e);this.target[1]=Math.round(t.x),this.target[2]=Math.round(t.y),this.target[3]=Math.round(t.x+t.width),this.target[4]=Math.round(t.y+t.height)}else{let t=this.getScaleFactor(),n=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,i=this.height*t,a=n.width/r,o=n.height/i,s=r/i;if(e.cover?a>o:a<o){let e=s*n.height,t=(e-n.width)/2;this.target[1]=Math.round(-t+n.x),this.target[2]=Math.round(n.y),this.target[3]=Math.round(e-t+n.x),this.target[4]=Math.round(n.height+n.y)}else{let e=n.width/s,t=(e-n.height)/2;this.target[1]=Math.round(n.x),this.target[2]=Math.round(n.y-t),this.target[3]=Math.round(n.x+n.width),this.target[4]=Math.round(n.y+e-t)}}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,n,r){this.transitionManager.hasPending()&&this.transitionManager.stopTransition(),this.updateFocalPosition(e-t,n-r);let i=t/e,a=r/n;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*i,this.target[4]=this.target[2]+(this.target[4]-this.target[2])*a,this.goHome({position:this.focalPosition}),this.renderer.resize(t,r),this.pendingUpdate=!0,this.transitionManager.resumeTransition()}updateFocalPosition(e,t){if(!this.manualFocalPosition){let e=this.width,t=this.height,n=Math.min(e,t),r=this.x+0,i=this.y+0;if(e<t){let e=this.height-this.width;this.focalPosition=l.DnaFactory.projection({x:r,y:i+e/2,width:n-0,height:n-0}),this.pendingUpdate=!0}else{let e=this.width-this.height;this.focalPosition=l.DnaFactory.projection({x:r+e/2,y:i,width:n-0,height:n-0}),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:n=!1}={}){let{minX:r,maxX:i,minY:a,maxY:o}=this.getBounds({target:e,padding:t}),s=!1,c=n?e:(0,l.dna)(e),u=Math.round(e[3]-e[1]),d=Math.round(e[4]-e[2]);return r>e[1]&&(s=!0,c[1]=r,c[3]=r+u),a>e[2]&&(s=!0,c[2]=a,c[4]=a+d),i<e[1]&&(s=!0,c[1]=i,c[3]=i+u),o<e[2]&&(s=!0,c[2]=o,c[4]=o+d),[s,c]}getBounds(e){let t=e.target||this.target,n=e.padding,r=this.options.visibilityRatio,i=Math.abs(1-r);if(this.world.hasActiveZone()){let e=this.world.getActiveZone();if(e){e.recalculateBounds();let r=he(t,e.points,n);if(r)return r}}let a=t[3]-t[1],o=this.world.width,s=-a*i,c=o-a-s,l=t[4]-t[2],u=this.world.height,d=-l*i,f=u-l-d,p=Math.round(Math.max(s,c)),m=Math.round(Math.min(s,c)),h=Math.round(Math.max(d,f));return{minX:m,maxX:p,minY:Math.round(Math.min(d,f)),maxY:h}}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)}copyStrandValues(e,t){e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]}getZoomConstraintState(e){let t=e[3]-e[1],n=e[4]-e[2],r=this.renderer.getScale(t,n),i=r===0?this._lastGoodScale:r;r!==0&&(this._lastGoodScale=r);let a=t*i,o=n*i,s=this.world.width/a>this.world.height/o?a*this.options.maxUnderZoom/this.world.width:o*this.options.maxUnderZoom/this.world.height,c=this.getRendererScreenPosition()?.width,l=c?c/this.world.width:1;return{scaleFactor:i,minScale:s,maxScale:Math.max(l||1,this.options.maxOverZoom)}}constrainTarget(e,{origin:t,panPadding:n=0,ref:r=!1}={}){let i=!1,a=r?e:(0,l.dna)(e),{scaleFactor:o,minScale:s,maxScale:c}=this.getZoomConstraintState(a),u=Math.max(s,Math.min(c,o));if(Math.abs(u-o)>1e-6){let e=t||{x:a[1]+(a[3]-a[1])/2,y:a[2]+(a[4]-a[2])/2},n=(0,l.transform)(a,(0,l.scaleAtOrigin)(o/u,e.x,e.y),this.zoomBuffer);this.copyStrandValues(a,n),i=!0}let[d]=this.constrainBounds(a,{ref:!0,panPadding:n});return[i||d,a]}getZoomedPosition(e,{origin:t,fromPos:n}){let r=n||this.target,{scaleFactor:i,minScale:a,maxScale:o}=this.getZoomConstraintState(r),s=1/e,c=i*s;s<1?c<a&&(e=i/a):c>o&&(e=i/o);let u=(0,l.transform)(r,(0,l.scaleAtOrigin)(e,t?t.x:r[1]+(r[3]-r[1])/2,t?t.y:r[2]+(r[4]-r[2])/2),this.zoomBuffer),d=this.world.hasActiveZone()?0:100;return this.constrainBounds(u,{ref:!0,panPadding:d}),u}clampRegion({x:e,y:t,width:n,height:r,padding:i=0}){let a=this.width,o=this.height,s=n/a<r/o,c=e-i,l=t-i,u=n+i*2,d=r+i*2;if(s){let e=d/o*a;return{x:c-(e-u)/2,y:l,width:e,height:d}}let f=u/a*o;return{x:c,y:l-(f-d)/2,width:u,height:f}}viewerToWorld(e,t){let n=this.getScaleFactor();return this._viewerToWorld.x=this.target[1]+e/n,this._viewerToWorld.y=this.target[2]+t/n,this._viewerToWorld}worldToViewer(e,t,n,r){let i=l.DnaFactory.singleBox(n,r,e,t);return(0,l.mutate)(i,(0,l.compose)((0,l.scale)(this.getScaleFactor()),(0,l.translate)(-this.target[1],-this.target[2]))),{x:i[1],y:i[2],width:i[3]-i[1],height:i[4]-i[2],strand:i}}setScale(e,t){(0,l.mutate)(this.target,(0,l.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 this.stopId!==void 0&&(window.cancelAnimationFrame(this.stopId),this.stopId=void 0),()=>{this.render(performance.now())}}reset(){this.renderer.reset(),this.resetReadyState(`runtime-reset`)}resetReadyState(e=`manual`){this.ready=!1,this.readyCycle+=1,this.readyReason=e,this.readyTimestamp=void 0,this.renderer.resetReadyState&&this.renderer.resetReadyState(),this.pendingUpdate=!0}getReadyState(){return{ready:this.ready,cycle:this.readyCycle,reason:this.readyReason,timestamp:this.readyTimestamp}}selectZone(e){this.world.selectZone(e),this.pendingUpdate=!0}goToZone(e,t={}){let n=this.world.getZoneById(e);if(!n||(n.recalculateBounds(),n.points[0]===0))return!1;this.world.selectZone(e);let r=this.getHomeTarget({position:n.points,paddingPx:t.paddingPx});return t.immediate?(this.transitionManager.stopTransition(),this.setViewport(r),this.constrainBounds(this.target,{ref:!0}),this.updateControllerPosition(),this.pendingUpdate=!0,!0):(this.transitionManager.applyTransition(l.DnaFactory.singleBox(r.width,r.height,r.x,r.y),void 0,{duration:1e3,easing:$t.easeOutExpo,constrain:!1}),this.updateNextFrame(),this.pendingUpdate=!0,!0)}deselectZone(){this.world.deselectZone(),this.pendingUpdate=!0}getZoneRuntimeState(e,t=this.getViewport()){let n=this.world.getZoneById(e);if(!n)return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1};n.recalculateBounds();let r=this.world.getActiveZone()?.id===e;if(n.points[0]===0)return{zoneId:e,exists:!0,active:r,visibleInViewport:!1};let i=n.points[1],a=n.points[2],o=n.points[3]-n.points[1],s=n.points[4]-n.points[2];return{zoneId:e,exists:!0,active:r,visibleInViewport:i<t.x+t.width&&i+o>t.x&&a<t.y+t.height&&a+s>t.y}}hook(e,t){let n=this.hooks[e].length;if(n!==0)for(let r=0;r<n;r++)this.hooks[e][r](t)}registerHook(e,t){return this.hooks[e].push(t),()=>{this.hooks[e]=this.hooks[e].filter(e=>e!==t)}}updateNextFrame(){this.pendingUpdate=!0}addDebugSubscriber(e){return this.debugSubscribers.add(e),()=>{this.removeDebugSubscriber(e)}}removeDebugSubscriber(e){this.debugSubscribers.delete(e)}hasDebugSubscribers(){return this.debugSubscribers.size>0}emitDebug(e){if(this.debugSubscribers.size!==0)for(let t of this.debugSubscribers)t(e)}};const En={margin:0};var Dn=class{constructor(e,t={}){E(this,`id`,void 0),E(this,`config`,void 0),E(this,`points`,void 0),E(this,`objects`,void 0),Array.isArray(e)?(this.id=e.map(e=>e.id).join(`$$`),this.config={...En,...t},this.objects=[...e]):(this.id=e.id,this.config={...En,margin:typeof e.margin==`number`?e.margin:En.margin,x:e.x,y:e.y,width:e.width,height:e.height},this.objects=[...e.objects||[]]),this.points=(0,l.dna)(5),this.recalculateBounds()}applyProps(e){e.id!==void 0&&(this.id=e.id),this.config={...this.config,...e},this.recalculateBounds()}addObject(e){this.objects.indexOf(e)===-1&&(this.objects.push(e),this.recalculateBounds())}removeObject(e){this.objects=this.objects.filter(t=>t!==e),this.recalculateBounds()}recalculateBounds(){if(!(Number.isFinite(this.config.x)&&Number.isFinite(this.config.y)&&Number.isFinite(this.config.width)&&Number.isFinite(this.config.height)&&this.config.width>0&&this.config.height>0)){this.points.set([0,0,0,0,0]);return}let e=this.config.margin,t=this.config.x,n=this.config.y,r=this.config.width,i=this.config.height;this.points.set([1,t-e,n-e,t+r+e,n+i+e])}getPointsAt(e,t,n){return[]}};let On;if(typeof performance==`object`&&typeof performance.now==`function`){let e=performance;On=()=>e.now()}else{let e=Date,t=e.now();On=()=>e.now()-t}const kn=typeof g.default==`function`?g.default:typeof g.default?.default==`function`?g.default.default:null,An=8,jn=32,Mn=2,Nn=0;var Pn=class{constructor(e){E(this,`world`,void 0),E(this,`zone`,void 0),E(this,`isRegistered`,!1),E(this,`directWorldObjects`,[]),this.world=e,this.zone=new Dn({id:``})}applyProps(e){this.zone.applyProps({id:e.id,x:e.x,y:e.y,width:e.width,height:e.height,margin:e.margin})}appendChild(e){e instanceof ot&&(this.registerDirectWorldObject(e),this.world.appendChild(e))}removeChild(e){e instanceof ot&&(this.unregisterDirectWorldObject(e),this.world.removeChild(e))}insertBefore(e,t){if(e instanceof ot){if(this.registerDirectWorldObject(e),t instanceof ot){this.world.insertBefore(e,t);return}this.world.appendChild(e)}}hideInstance(){}attachToWorld(e){this.isRegistered&&this.world!==e&&(this.world.removeZone(this.zone),this.isRegistered=!1),this.world=e,this.isRegistered||(this.world.addZone(this.zone),this.isRegistered=!0)}unmount(){this.directWorldObjects=[],this.isRegistered&&(this.world.removeZone(this.zone),this.isRegistered=!1)}registerDirectWorldObject(e){this.directWorldObjects.indexOf(e)===-1&&this.directWorldObjects.push(e),this.zone.addObject(e)}unregisterDirectWorldObject(e){this.directWorldObjects=this.directWorldObjects.filter(t=>t!==e),this.zone.removeObject(e)}};function Fn(e,t){if(e instanceof st&&t instanceof Pn){t.attachToWorld(e);return}if(e instanceof Pn){e.appendChild(t);return}e&&e.appendChild&&t&&e.appendChild(t)}function In(e,t){if(e instanceof st&&t instanceof Pn){t.unmount();return}if(e instanceof Pn){e.removeChild(t);return}e&&e.removeChild&&t&&e.removeChild(t)}function Ln(e,t){if(t instanceof Pn){t.unmount();return}return In(e.world,t)}function Rn(e,t,n){if(t instanceof Pn){t.attachToWorld(e.world);return}return zn(e.world,t,n)}function zn(e,t,n){if(e&&e instanceof Tn&&(e=e.world),!(e instanceof st&&t instanceof Pn)){if(e instanceof Pn){e.insertBefore(t,n);return}e&&e.insertBefore&&e.insertBefore(t,n)}}function Bn(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof oe))for(let r of _){let i=r.slice(2).toLowerCase();n[r]!==t[r]&&(t[r]&&e.removeEventListener(i,t[r]),e.addEventListener(i,n[r]))}}function Vn(e,t){let n=Object.keys(t),r=!1;for(let t of n)if(_.indexOf(t)!==-1){let n=y[t];if(n){if(e.activatedEvents.indexOf(n)!==-1)continue;r=!0,e.activatedEvents.push(n)}}r&&e.triggerEventActivation()}const Hn=new Map,Un={};function Wn(e,{args:t=[],...n},r,i,a){if(!(r instanceof Tn)&&a){let e=t=>t.return?e(t.return):t.stateNode&&t.stateNode.containerInfo;r=e(a)}let o,s=r.world;switch(e){case`world`:o=st.withProps({width:n.width,height:n.height,viewingDirection:`left-to-right`}),o.activatedEvents=s.activatedEvents,o.eventHandlers=s.eventHandlers,o.subscriptions=s.subscriptions,o.triggerEventActivation(),s=o;break;case`box`:o=new le;break;case`shape`:o=new pe;break;case`worldObject`:case`world-object`:o=new ot;break;case`zone`:o=new Pn(s);break;case`worldImage`:case`world-image`:o=new J;break;case`texture`:o=new Fe;break;case`compositeImage`:case`composite-image`:o=new Pe({id:n.id,width:n.width,height:n.height,images:[],renderOptions:n.renderOptions});break;case`tiledImage`:case`tiled-image`:o=Y.fromTile(n.uri,n.display,n.tile,n.scaleFactor,void 0,n.format,n.useFloorCalc,n.version3);break;case`mapTiledImage`:case`map-tiled-image`:o=new rt({id:n.id,bounds:n.bounds,worldWidth:n.worldWidth,worldHeight:n.worldHeight,zoom:n.zoom,tileSize:n.tileSize,scaleFactor:n.scaleFactor,tileSource:n.tileSource,tileUrlTemplate:n.tileUrlTemplate,subdomains:n.subdomains});break;case`paragraph`:o=new Nt,o.text=n.children;break;default:return}return Vn(s,n),Bn(o,{},n),o}function Gn(e,t){if(t instanceof st)e.world=t;else if(t instanceof Pn)t.attachToWorld(e.world);else if(t instanceof ot)e.world.appendChild(t);else if(t)throw Error(`Invalid root`)}let Kn=0;const qn=kn?kn({unstable_now:On,now:On,createInstance:Wn,removeChild:In,appendChild:Fn,appendInitialChild:Fn,insertBefore:zn,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:Gn,removeChildFromContainer:Ln,createTextInstance(){},insertInContainerBefore:Rn,prepareUpdate(e,t,n,r,i){return Vn(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&Bn(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return Un},getRootHostContext(){return Un},prepareForCommit(e){return e.isCommitting=!0,null},preparePortalMount(){},hideInstance(e){e&&e.points&&(e.points[0]=0)},unhideInstance(e,t){e&&e.points&&(e.points[0]=1)},getPublicInstance(e){return e},hideTextInstance(){throw Error(`Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.`)},resetAfterCommit(e){e.isCommitting=!1,e.pendingUpdate=!0,e.world&&e.world.needsRecalculate&&(e.world.recalculateWorldSize(),e.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(e){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return 32},getInstanceFromNode(e){throw Error(`Not implemented`)},getInstanceFromScope(e){throw Error(`Not implemented`)},prepareScopeUpdate(e,t){throw Error(`Not implemented`)},logRecoverableError(){},requestPostPaintCallback(){},rendererPackageName:`@atlas-viewer/atlas`,rendererVersion:p.version,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(e){Kn=e},getCurrentUpdatePriority(){return Kn},resolveUpdatePriority(){if(Kn!==0)return Kn;switch(typeof window<`u`&&window.event?.type){case`click`:case`contextmenu`:case`dblclick`:case`pointercancel`:case`pointerdown`:case`pointerup`:return 2;case`pointermove`:case`pointerout`:case`pointerover`:case`pointerenter`:case`pointerleave`:case`wheel`:return 8;default:return 32}},resetFormInstance(){}}):null;qn&&qn.injectIntoDevTools();function Jn(e,t){let n=Hn.get(e);if(n){if(!qn)return;qn.updateContainer(null,n,null,()=>{Hn.delete(e),t&&t(e)})}}const Yn={render(e,t){let n=Hn.get(t);if(qn)if(n)qn.updateContainer(e,n,null);else{let n=qn.createContainer(t,0,null,!1,null,``,()=>{},null);qn.updateContainer(e,n,null),Hn.set(t,n)}},unmountComponentAtNode(e,t){Jn(e,t)}},Xn=typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)?p.useLayoutEffect:p.useEffect,Zn=p.default.memo(({children:e,setIsReady:t,onCreated:n,bounds:r,preset:i,mode:a=`explore`,interactionMode:o=`popmotion`})=>{let s=(0,p.useRef)(new WeakSet);return(0,p.useEffect)(()=>{if(!i||s.current.has(i))return;s.current.add(i),o!==`pdf-scroll-zone`&&i.runtime.goHome();let e=!1;return Promise.resolve(n?.(i)).then(()=>{e||t(!0)}),()=>{e=!0}},[o,n,i,t]),Xn(()=>{if(i){let t=i.runtime;a!==t.mode&&(t.mode=a),Yn.render((0,h.jsx)(p.default.StrictMode,{children:(0,h.jsx)(bn.Provider,{value:r,children:(0,h.jsx)(xn.Provider,{value:a,children:(0,h.jsx)(yn.Provider,{value:i,children:e})})})}),t)}},[i,a,r,e]),Xn(()=>{if(i){let e=i.runtime;return()=>{Yn.unmountComponentAtNode(e)}}return()=>{}},[i]),null}),Qn=p.default.forwardRef((e,t)=>(0,h.jsx)(`div`,{...e,ref:t,part:e.className})),$n=()=>(0,p.useContext)(yn),er=()=>{let e=$n();return e?e.runtime:void 0},tr=new Set,nr=new Map,rr=new Map,ir=[];let ar,or,sr={activeCandidateId:void 0,selectedRuntimeId:void 0,candidates:[],runtimes:[]};function cr(){let e=Array.from(nr.entries()).map(([e,t],n)=>({id:e,runtime:t.runtime,preset:t.preset,label:`Atlas ${n+1} (${e.slice(0,6)})`}));sr={activeCandidateId:ar,selectedRuntimeId:or,candidates:[...ir],runtimes:e}}function lr(){cr();for(let e of tr)e()}function ur(){if(or&&nr.has(or))return;let e=nr.keys().next();or=e.done?void 0:e.value}function dr(){ar&&rr.has(ar)||(ar=ir[0])}function fr(e){return tr.add(e),()=>{tr.delete(e)}}function pr(){return sr}function mr(e){let t=e.runtime.id;return nr.set(t,{runtime:e.runtime,preset:e}),ur(),lr(),()=>{hr(t)}}function hr(e){nr.delete(e),ur(),lr()}function gr(e){return rr.get(e.id)||ir.push(e.id),rr.set(e.id,e),dr(),!or&&e.runtimeId&&nr.has(e.runtimeId)&&(or=e.runtimeId),ur(),lr(),()=>{vr(e.id)}}function _r(e,t){let n=rr.get(e);n&&(n.runtimeId=t,!or&&t&&nr.has(t)&&(or=t),ur(),lr())}function vr(e){rr.delete(e);let t=ir.indexOf(e);t!==-1&&ir.splice(t,1),dr(),lr()}function yr(e){if(!e){or=void 0,ur(),lr();return}nr.has(e)&&(or=e,lr())}function br(e){if(e)return nr.get(e)}cr();function xr(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)xr(n,t);return t}return t.push(e),t}function Sr(e,t,n,r){if(e){if(e instanceof ot){if(Array.isArray(e.layers))for(let n of e.layers)Sr(n,t,e.id,r);return}if(e instanceof Pe){let r=e.id,i=new Set([...e.allImages,...e.images]);for(let e of i)Sr(e,t,n,r);return}if(e instanceof J||e instanceof Y){let i={id:e.id,type:e.constructor.name,ownerId:n,compositeId:r,anomalies:[]};e.__host?.canvas&&(i.canvas={loading:!!e.__host.canvas.loading,indices:e.__host.canvas.indices?.length||0,loaded:e.__host.canvas.loaded?.length||0},i.canvas.loading&&i.canvas.indices===0&&i.anomalies.push(`Canvas host marked loading with empty queue.`),i.canvas.loaded>i.canvas.indices&&i.canvas.indices>0&&i.anomalies.push(`Canvas loaded count exceeds scheduled indices.`)),e.__host?.webgl&&(i.webgl={loading:e.__host.webgl.loading?.length||0,loaded:e.__host.webgl.loaded?.length||0,textures:e.__host.webgl.textures?.filter(Boolean)?.length||0},i.webgl.loading>0&&i.webgl.textures===0&&i.webgl.loaded===0&&i.anomalies.push(`WebGL has pending loads but no loaded textures.`)),t.push(i)}}}function Cr(e){let t=[],n=e.getObjects();for(let e of n)e&&Sr(e,t,e.id,void 0);return t}function wr(e){let t=xr(e.renderer);return{rendererTypes:t.map(e=>e?.constructor?.name||`UnknownRenderer`),canvas:t.filter(e=>e?.loadingQueue!==void 0).map(e=>({type:e?.constructor?.name||`CanvasRenderer`,loadingQueue:e.loadingQueue?.length||0,imagesPending:e.imagesPending||0,imagesLoaded:e.imagesLoaded||0,tasksRunning:e.tasksRunning||0,firstMeaningfulPaint:!!e.firstMeaningfulPaint})),webgl:t.filter(e=>e?.gl!==void 0).map(e=>({type:e?.constructor?.name||`WebGLRenderer`}))}}function Tr(e,t=30){let n=new Map;for(let t of e){if(t.type!==`paint`||!t.compositeId)continue;n.has(t.frame)||n.set(t.frame,new Map);let e=n.get(t.frame);e.has(t.compositeId)||e.set(t.compositeId,[]),e.get(t.compositeId).push({paintId:t.paintId,paintType:t.paintType,tileIndex:t.tileIndex,imageUrl:t.imageUrl})}return Array.from(n.entries()).sort((e,t)=>t[0]-e[0]).slice(0,t).map(([e,t])=>({frame:e,composites:Array.from(t.entries()).map(([e,t])=>({compositeId:e,layers:t}))}))}function Er(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)Er(n,t);return t}return t.push(e),t}function Dr(e,t){if(e){if(e instanceof J||e instanceof Y){t.push(e);return}if(e instanceof Pe){let n=new Set([...e.allImages,...e.images]);for(let e of n)Dr(e,t);return}if(e instanceof ot&&Array.isArray(e.layers))for(let n of e.layers)Dr(n,t)}}function Or(e){let t=[],n=e.getObjects();for(let e of n)e&&Dr(e,t);return t}function kr(e){let t=Or(e.world),n=0;for(let e of t)n++,e.__host||(e.__host={}),e.__host.canvas={canvas:void 0,canvases:[],tiles:{},indices:[],loaded:[],loading:!1},e.__host.webgl&&(e.__host.webgl.loading=[],e.__host.webgl.loaded=[],Array.isArray(e.__host.webgl.textures)&&(e.__host.webgl.textures=[...Array(e.points.length/5)]));let r=Er(e.renderer),i=0;for(let e of r)i++,Array.isArray(e.loadingQueue)&&(e.loadingQueue=[]),Array.isArray(e.tileRequestQueue)&&(e.tileRequestQueue=[]),Array.isArray(e.drawCalls)&&(e.drawCalls=[]),Array.isArray(e.invalidated)&&(e.invalidated=[]),Array.isArray(e.imageIdsLoaded)&&(e.imageIdsLoaded=[]),e.hostCache?.clear&&e.hostCache.clear(),typeof e.tasksRunning==`number`&&(e.tasksRunning=0),typeof e.imagesPending==`number`&&(e.imagesPending=0),typeof e.imagesLoaded==`number`&&(e.imagesLoaded=0),typeof e.pendingDrawCall==`boolean`&&(e.pendingDrawCall=!1),typeof e.loadingQueueOrdered==`boolean`&&(e.loadingQueueOrdered=!0),e.requiredTileKeys?.clear&&e.requiredTileKeys.clear(),e.requiredPrefetchTileKeys?.clear&&e.requiredPrefetchTileKeys.clear(),e.queuedTileRequestKeys?.clear&&e.queuedTileRequestKeys.clear(),e.imageRequestPool?.cancelAll&&e.imageRequestPool.cancelAll({silent:!0}),e.inFlightImageLoads?.clear&&e.inFlightImageLoads.clear(),typeof e.reset==`function`&&e.reset();return e.updateNextFrame(),{imageHostsReset:n,renderersReset:i}}async function Ar(e,t,n){if(p.version.startsWith(`18.`)||p.version.startsWith(`19.`)){let r=await import(`react-dom/client`),i=r.default?r.default.createRoot:r.createRoot;n.current||(n.current=i(e)),n.current.render(t)}else if(typeof ReactDOM<`u`){let{render:r,unmountComponentAtNode:i}=ReactDOM;r(t,e),n.current={unmount(){i(e)}}}else{let r=await import(`react-dom`),i=r.default?r.default.render:r.render,a=r.default?r.default.unmountComponentAtNode:r.unmountComponentAtNode;i(t,e),n.current={unmount(){a(e)}}}}const jr=[`Overview`,`World`,`Inspector`,`Events`,`Images`,`Actions`];let Mr=0;const Nr=e=>{let t=er(),n=e.runtimeId||t?.id,r=(0,p.useRef)(null),i=(0,p.useRef)(null);return(0,p.useEffect)(()=>{if(typeof document>`u`)return;let e=document.createElement(`div`);return e.dataset.atlasDevtools=`true`,document.body.appendChild(e),r.current=e,()=>{i.current?.unmount&&i.current.unmount(),e.remove(),r.current=null}},[]),(0,p.useEffect)(()=>{let t=r.current;t&&Ar(t,(0,h.jsx)(zr,{...e,runtimeId:n}),i)}),null};function Pr(e,t,n){e.push(t),e.length>n&&e.splice(0,e.length-n)}function Fr(e){if(!(!e||e.length<5))return{x1:Number(e[1].toFixed?e[1].toFixed(2):e[1]),y1:Number(e[2].toFixed?e[2].toFixed(2):e[2]),x2:Number(e[3].toFixed?e[3].toFixed(2):e[3]),y2:Number(e[4].toFixed?e[4].toFixed(2):e[4])}}function Ir(e){return e?.constructor?.name||e?.type||`Unknown`}function Lr(e){let t=[],n=new Set,r=(e,i,a)=>{if(!e||n.has(e))return;n.add(e);let o=e.id?` #${e.id}`:``;if(t.push({key:a,depth:i,label:`${Ir(e)}${o}`,ref:e}),Array.isArray(e.layers))for(let t=0;t<e.layers.length;t++)r(e.layers[t],i+1,`${a}.layers.${t}`);if(Array.isArray(e.images)||Array.isArray(e.allImages)){let t=new Set([...e.allImages||[],...e.images||[]]),n=0;for(let e of t)r(e,i+1,`${a}.images.${n}`),n++}};r(e.world,0,`world`);let i=e.world.getObjects();for(let e=0;e<i.length;e++){let t=i[e];t&&r(t,1,`world.objects.${e}`)}return t}function Rr(e){return e?.__host?e.__host.canvas?`Canvas host loading=${!!e.__host.canvas.loading} indices=${e.__host.canvas.indices?.length||0} loaded=${e.__host.canvas.loaded?.length||0}`:e.__host.webgl?`WebGL host loading=${e.__host.webgl.loading?.length||0} loaded=${e.__host.webgl.loaded?.length||0}`:`Host attached`:`No host`}const zr=({initialOpen:e=!1,bottom:t=16,right:n=16,zIndex:r=1e3,maxEvents:i=500,maxRuntimeEvents:a=1e3,runtimeId:o,className:s,style:c})=>{let u=(0,p.useRef)(`devtools-${++Mr}`),[d,f]=(0,p.useState)(e),[m,g]=(0,p.useState)(`Overview`),[_,v]=(0,p.useState)(!1),[y,b]=(0,p.useState)(!1),[x,S]=(0,p.useState)(null),[C,w]=(0,p.useState)(`explore`),[T,ee]=(0,p.useState)(``),[E,D]=(0,p.useState)(!1),[O,k]=(0,p.useState)(``),[A,j]=(0,p.useState)(`all`),[,M]=(0,p.useState)(0),N=(0,p.useRef)([]),P=(0,p.useRef)([]),F=(0,p.useRef)(null),te=(0,p.useRef)(!1),I=()=>{te.current||(te.current=!0,requestAnimationFrame(()=>{te.current=!1,M(e=>e+1)}))},L=o;(0,p.useEffect)(()=>gr({id:u.current,runtimeId:L}),[]),(0,p.useEffect)(()=>{_r(u.current,L)},[L]);let ne=(0,p.useSyncExternalStore)(fr,pr,pr),R=ne.activeCandidateId===u.current,z=ne.selectedRuntimeId||L||ne.runtimes[0]?.id,B=br(z),V=B?.runtime,H=B?.preset;if((0,p.useEffect)(()=>{z&&z!==ne.selectedRuntimeId&&yr(z)},[z,ne.selectedRuntimeId]),(0,p.useEffect)(()=>{V&&w(V.mode)},[V?.id]),(0,p.useEffect)(()=>{if(!R||!d||!V)return;let e=V.addDebugSubscriber(e=>{_||(Pr(N.current,e,a),I())}),t=V.world.addDebugSubscriber(e=>{_||(Pr(P.current,e,i),I())});return()=>{e(),t()}},[R,d,V?.id,_,i,a]),(0,p.useEffect)(()=>{if(!R||!d)return;let e=setInterval(()=>{M(e=>e+1)},250);return()=>{clearInterval(e)}},[R,d]),(0,p.useEffect)(()=>{if(!y||!V||!H?.em?.element)return;let e=H.em.element,t=t=>{let n=e.getBoundingClientRect(),{x:r,y:i}=V.viewerToWorld(t.clientX-n.left,t.clientY-n.top),a=l.DnaFactory.singleBox(1,1,r,i),o=V.world.getObjectsAt(a,!0),s=o[o.length-1];if(s){let e=s[1];S(e.length?e[e.length-1]:s[0])}g(`Inspector`),b(!1),I(),t.preventDefault(),t.stopPropagation()};return e.addEventListener(`pointerdown`,t,!0),()=>{e.removeEventListener(`pointerdown`,t,!0)}},[y,V?.id,H?.em?.element]),(0,p.useEffect)(()=>()=>{let e=F.current;e&&(F.current=null,e())},[]),typeof window>`u`||typeof document>`u`||!R)return null;let U=V?Lr(V):[],W=x||U[0]?.ref,re=V?wr(V):{rendererTypes:[],canvas:[],webgl:[]},G=V?Cr(V.world):[],ie=Tr(N.current,15),ae=P.current.filter(e=>A===`all`||e.type===A),K=(()=>{if(!V)return{width:220,height:220,rects:[],viewport:null};let e=V.world.getPoints(),t=Math.max(1,V.world.width),n=Math.max(1,V.world.height),r=220/t,i=220/n,a=[],o=Math.min(e.length/5,300);for(let t=0;t<o;t++){let n=t*5;e[n]!==0&&a.push({x:e[n+1]*r,y:e[n+2]*i,width:Math.max(1,(e[n+3]-e[n+1])*r),height:Math.max(1,(e[n+4]-e[n+2])*i)})}return{width:220,height:220,rects:a,viewport:{x:V.target[1]*r,y:V.target[2]*i,width:Math.max(1,(V.target[3]-V.target[1])*r),height:Math.max(1,(V.target[4]-V.target[2])*i)}}})(),oe={position:`fixed`,right:n,bottom:t,zIndex:r,color:`#eef1ff`,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace`,pointerEvents:`auto`,...c||{}},q={background:`#111827`,color:`#f9fafb`,border:`1px solid #374151`,borderRadius:999,fontSize:12,padding:`8px 12px`,cursor:`pointer`,boxShadow:`0 8px 24px rgba(0, 0, 0, 0.35)`},se={width:460,maxHeight:`70vh`,overflow:`hidden`,background:`#0f172a`,border:`1px solid #334155`,borderRadius:10,boxShadow:`0 12px 36px rgba(0, 0, 0, 0.4)`,marginBottom:10,display:`flex`,flexDirection:`column`},ce={padding:10,overflow:`auto`,fontSize:12,lineHeight:1.4,display:`grid`,gap:8},le=()=>{!V||F.current||(F.current=V.stop(),D(!0))},ue=()=>{let e=F.current;F.current=null,e&&e(),D(!1)},de=()=>{if(V){if(F.current){let e=F.current;F.current=null,e(),requestAnimationFrame(()=>{V&&(F.current=V.stop(),D(!0))});return}V.updateNextFrame()}},fe=()=>{N.current=[],P.current=[],k(`Logs cleared`),I()};return(0,h.jsxs)(`div`,{className:s,style:oe,children:[d?(0,h.jsxs)(`div`,{style:se,children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:10,borderBottom:`1px solid #1f2937`},children:[(0,h.jsx)(`strong`,{style:{fontSize:12,letterSpacing:.4},children:`Atlas DevTools`}),(0,h.jsx)(`select`,{style:{marginLeft:`auto`,fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},value:z||``,onChange:e=>yr(e.target.value),children:ne.runtimes.map(e=>(0,h.jsx)(`option`,{value:e.id,children:e.label},e.id))}),(0,h.jsx)(`button`,{style:q,onClick:()=>f(!1),children:`Close`})]}),(0,h.jsx)(`div`,{style:{display:`flex`,gap:6,padding:8,borderBottom:`1px solid #1f2937`,flexWrap:`wrap`},children:jr.map(e=>(0,h.jsx)(`button`,{style:{...q,padding:`4px 8px`,borderRadius:6,background:m===e?`#334155`:`#111827`},onClick:()=>g(e),children:e},e))}),(0,h.jsxs)(`div`,{style:ce,children:[V?null:(0,h.jsx)(`div`,{children:`No Atlas runtime available.`}),V&&m===`Overview`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{children:[`Runtime id: `,V.id]}),(0,h.jsxs)(`div`,{children:[`Mode: `,V.mode]}),(0,h.jsxs)(`div`,{children:[`Scale factor: `,V.getScaleFactor().toFixed(4)]}),(0,h.jsxs)(`div`,{children:[`World: `,V.world.width,` x `,V.world.height]}),(0,h.jsxs)(`div`,{children:[`Target: `,JSON.stringify(Fr(V.target))]}),(0,h.jsxs)(`div`,{children:[`Pending update: `,String(V.pendingUpdate)]}),(0,h.jsxs)(`div`,{children:[`Renderer chain: `,re.rendererTypes.join(` -> `)||`None`]}),(0,h.jsxs)(`div`,{children:[`Runtime log entries: `,N.current.length]}),(0,h.jsxs)(`div`,{children:[`World log entries: `,P.current.length]})]}):null,V&&m===`World`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{children:[`World dimensions: `,V.world.width,` x `,V.world.height]}),(0,h.jsxs)(`div`,{children:[`Viewport target: `,JSON.stringify(Fr(V.target))]}),(0,h.jsxs)(`svg`,{width:K.width,height:K.height,style:{background:`#020617`,border:`1px solid #334155`},children:[K.rects.map((e,t)=>(0,h.jsx)(`rect`,{x:e.x,y:e.y,width:e.width,height:e.height,fill:`rgba(56, 189, 248, 0.18)`,stroke:`rgba(56, 189, 248, 0.7)`},`rect-${t}`)),K.viewport?(0,h.jsx)(`rect`,{x:K.viewport.x,y:K.viewport.y,width:K.viewport.width,height:K.viewport.height,fill:`rgba(251, 191, 36, 0.1)`,stroke:`rgba(251, 191, 36, 1)`}):null]})]}):null,V&&m===`Inspector`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{style:{display:`flex`,gap:8},children:(0,h.jsx)(`button`,{style:q,onClick:()=>b(e=>!e),children:y?`Cancel Pick`:`Pick in Viewport`})}),(0,h.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6},children:U.map(e=>(0,h.jsx)(`button`,{onClick:()=>S(e.ref),style:{width:`100%`,display:`block`,textAlign:`left`,padding:`2px 6px 2px ${6+e.depth*14}px`,background:W===e.ref?`#1e293b`:`transparent`,color:`#e2e8f0`,border:0,cursor:`pointer`,fontSize:12},children:e.label},e.key))}),W?(0,h.jsxs)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[(0,h.jsxs)(`div`,{children:[`Type: `,Ir(W)]}),(0,h.jsxs)(`div`,{children:[`ID: `,W.id||`(none)`]}),(0,h.jsxs)(`div`,{children:[`Points: `,JSON.stringify(Fr(W.points))]}),(0,h.jsxs)(`div`,{children:[`Display scale: `,W.display?.scale??`(n/a)`]}),(0,h.jsxs)(`div`,{children:[`Crop: `,W.cropData?JSON.stringify(W.cropData):`(none)`]}),(0,h.jsxs)(`div`,{children:[`Host: `,Rr(W)]})]}):null]}):null,V&&m===`Events`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:()=>v(e=>!e),children:_?`Resume Log`:`Pause Log`}),(0,h.jsx)(`button`,{style:q,onClick:fe,children:`Clear`}),(0,h.jsxs)(`select`,{value:A,onChange:e=>j(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,h.jsx)(`option`,{value:`all`,children:`All`}),(0,h.jsx)(`option`,{value:`trigger`,children:`Trigger`}),(0,h.jsx)(`option`,{value:`pointer`,children:`Pointer`}),(0,h.jsx)(`option`,{value:`touch`,children:`Touch`})]})]}),(0,h.jsx)(`div`,{style:{maxHeight:240,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:ae.slice().reverse().map((e,t)=>(0,h.jsxs)(`div`,{style:{marginBottom:4},children:[`[`,e.type,`] `,JSON.stringify(e)]},`event-${t}`))})]}):null,V&&m===`Images`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{children:`Renderer health`}),re.canvas.map((e,t)=>(0,h.jsxs)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[(0,h.jsx)(`div`,{children:e.type}),(0,h.jsxs)(`div`,{children:[`loadingQueue: `,e.loadingQueue]}),(0,h.jsxs)(`div`,{children:[`imagesPending: `,e.imagesPending]}),(0,h.jsxs)(`div`,{children:[`imagesLoaded: `,e.imagesLoaded]}),(0,h.jsxs)(`div`,{children:[`tasksRunning: `,e.tasksRunning]}),(0,h.jsxs)(`div`,{children:[`firstMeaningfulPaint: `,String(e.firstMeaningfulPaint)]})]},`canvas-${t}`)),re.webgl.map((e,t)=>(0,h.jsx)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:(0,h.jsx)(`div`,{children:e.type})},`webgl-${t}`)),(0,h.jsxs)(`div`,{children:[`Image hosts (`,G.length,`)`]}),(0,h.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:G.map(e=>(0,h.jsxs)(`div`,{style:{marginBottom:6},children:[(0,h.jsxs)(`div`,{children:[e.type,` #`,e.id]}),(0,h.jsxs)(`div`,{children:[`owner: `,e.ownerId||`(none)`,` composite: `,e.compositeId||`(none)`]}),(0,h.jsxs)(`div`,{children:[`canvas: `,e.canvas?JSON.stringify(e.canvas):`(none)`]}),(0,h.jsxs)(`div`,{children:[`webgl: `,e.webgl?JSON.stringify(e.webgl):`(none)`]}),e.anomalies.length?(0,h.jsxs)(`div`,{children:[`anomalies: `,e.anomalies.join(` | `)]}):null]},`${e.type}-${e.id}-${e.ownerId||`none`}`))}),(0,h.jsx)(`div`,{children:`Chosen composite layers by frame`}),(0,h.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:ie.map(e=>(0,h.jsxs)(`div`,{style:{marginBottom:8},children:[(0,h.jsxs)(`div`,{children:[`frame `,e.frame]}),e.composites.map(t=>(0,h.jsxs)(`div`,{style:{paddingLeft:8},children:[(0,h.jsxs)(`div`,{children:[`composite `,t.compositeId]}),t.layers.map((e,n)=>(0,h.jsxs)(`div`,{style:{paddingLeft:10},children:[e.paintType,` #`,e.paintId,` tile=`,e.tileIndex]},`${t.compositeId}-${n}`))]},`${e.frame}-${t.compositeId}`))]},`frame-${e.frame}`))})]}):null,V&&m===`Actions`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:E?ue:le,children:E?`Resume Loop`:`Pause Loop`}),(0,h.jsx)(`button`,{style:q,onClick:de,children:`Step Frame`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.updateNextFrame(),children:`Repaint`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.triggerResize(),children:`Trigger Resize`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,h.jsxs)(`select`,{value:C,onChange:e=>w(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,h.jsx)(`option`,{value:`explore`,children:`explore`}),(0,h.jsx)(`option`,{value:`sketch`,children:`sketch`}),(0,h.jsx)(`option`,{value:`static`,children:`static`})]}),(0,h.jsx)(`button`,{style:q,onClick:()=>{V.mode=C,V.updateNextFrame()},children:`Apply Mode`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.goHome(),children:`goHome`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.zoomIn(),children:`zoomIn`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.zoomOut(),children:`zoomOut`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.constraintBounds(!0),children:`constrain-bounds`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,h.jsxs)(`select`,{value:T,onChange:e=>ee(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,h.jsx)(`option`,{value:``,children:`Select zone`}),V.world.zones.map((e,t)=>(0,h.jsx)(`option`,{value:String(e.id||t),children:e.id||`zone-${t}`},`${e.id}-${t}`))]}),(0,h.jsx)(`button`,{style:q,onClick:()=>{T&&V.selectZone(T)},children:`Select Zone`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.deselectZone(),children:`Deselect Zone`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:()=>{let e=kr(V);k(`Reset image hosts=${e.imageHostsReset}, renderers=${e.renderersReset}`),I()},children:`Recover Images`}),(0,h.jsx)(`button`,{style:q,onClick:fe,children:`Clear Logs`})]}),O?(0,h.jsx)(`div`,{children:O}):null]}):null]})]}):null,(0,h.jsx)(`button`,{style:q,onClick:()=>f(e=>!e),children:d?`Hide DevTools`:`Open DevTools`})]})};function Br(e){return(0,p.useMemo)(()=>Pt(e),e)}function Vr(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i],a=t[i];r!==a&&(n[i]={before:r,after:a})}return Object.keys(n).length>0?n:null}function Hr(e,t=``,n=!1){let r=(0,p.useRef)(e);r.current&&n&&(console.log(`Diff:`,t,Vr(r.current,e)),r.current=e)}function Ur(e,t){return!(!(e instanceof J||e instanceof Y)||e.crop||e.cropData||e.display.rotation||e.style&&e.style.opacity!==void 0&&e.style.opacity!==1||e.__owner?.value?.rotation)}const Wr=new Map;var Gr=class{constructor(e,t){E(this,`canvas`,void 0),E(this,`gl`,void 0),E(this,`options`,void 0),E(this,`fatalImageError`,void 0),E(this,`program`,void 0),E(this,`fragmentShader`,void 0),E(this,`vertexShader`,void 0),E(this,`rectBuffer`,void 0),E(this,`fragmentShaderSource`,`
17
22
  precision mediump float;
18
23
 
19
24
  uniform sampler2D u_image;
25
+ uniform float u_alpha;
20
26
  varying vec2 v_texCoord;
21
27
 
22
28
  void main() {
23
- gl_FragColor = texture2D(u_image, v_texCoord);
29
+ vec4 color = texture2D(u_image, v_texCoord);
30
+ gl_FragColor = vec4(color.rgb, color.a * u_alpha);
24
31
  }
25
- `),O(this,`vertexShaderSource`,`
32
+ `),E(this,`vertexShaderSource`,`
26
33
  attribute vec2 a_position;
27
34
  uniform vec2 u_resolution;
28
35
  varying vec4 v_color;
@@ -43,35 +50,34 @@ function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;va
43
50
  vec2 clipSpace = zeroToTwo - 1.0;
44
51
 
45
52
  gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);
46
-
53
+
47
54
  v_texCoord = a_texCoord;
48
55
  }
49
- `),O(this,`attributes`,void 0),O(this,`uniforms`,void 0),O(this,`buffers`,void 0),O(this,`rendererPosition`,void 0),O(this,`dpi`,void 0),O(this,`lastResize`,0),O(this,`lastKnownScale`,1),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.gl=e.getContext(`webgl2`),this.fragmentShader=this.createShader(this.gl.FRAGMENT_SHADER,this.fragmentShaderSource),this.vertexShader=this.createShader(this.gl.VERTEX_SHADER,this.vertexShaderSource),this.program=this.createProgram(this.vertexShader,this.fragmentShader),this.dpi=t?.dpi||1,this.attributes={position:this.gl.getAttribLocation(this.program,`a_position`),texCoord:this.gl.getAttribLocation(this.program,`a_texCoord`)},this.uniforms={resolution:this.gl.getUniformLocation(this.program,`u_resolution`),texture:this.gl.getUniformLocation(this.program,`u_texture`)},this.buffers={position:this.createArrayBuffer(),texCoord:this.createArrayBuffer(new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]))},this.rectBuffer=new Float32Array(12),this.resize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.useProgram(this.program),this.gl.enableVertexAttribArray(this.attributes.position)}resize(){this.resizeCanvasToDisplaySize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return!0}beforeFrame(e,t,n){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 A||e instanceof P)&&this.createImageHost(e),e instanceof te&&this.createTextureHost(e))}createTextureHost(e){e.__host=e.__host?e.__host:{};let t=this.gl,n=this.gl.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1);let r;if(e instanceof te){let n=e.getTexture();n.source&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n.source),r=n}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:n,lastImage:r}}createImageHost(e){let t=[...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:(t,n)=>{let r=this.gl,i=this.gl.createTexture();r.bindTexture(r.TEXTURE_2D,i),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[t]=i,e.__host.webgl.loaded.push(t)}}}paint(e,t,n,r,i,a){if(e.type===`spacial-content`&&e.__host&&e.__host.webgl){if(e.getTexture){let t=e?.getTexture();if(t&&e.__host.webgl.lastImage!==t.hash&&t.source&&!e.__host.webgl.error)try{let n=this.gl.RGBA,r=this.gl.RGBA,i=this.gl.UNSIGNED_BYTE;this.gl.bindTexture(this.gl.TEXTURE_2D,e.__host.webgl.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,n,r,i,t.source),e.__host.webgl.lastImage=t.hash}catch(t){e.__host.webgl.error=t}}if(e.__host.webgl.loading&&e.__host.webgl.loading.indexOf(t)===-1&&e.getImageUrl){e.__host.webgl.loading.push(t);let n=document.createElement(`img`);n.decoding=`async`,n.crossOrigin=`anonymous`,n.src=e.getImageUrl(t),n.onload=()=>(n.onload=null,e.__host.webgl.onLoad(t,n))}let o=e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures[t];o&&(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,o),this.gl.uniform1i(this.uniforms.texture,0),this.setRectangle(n,r,i,a),this.gl.drawArrays(this.gl.TRIANGLES,0,6))}}afterPaintLayer(e,t){}pendingUpdate(){return!0}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}afterFrame(){}getScale(e,t,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}getViewportBounds(e,t,n){return null}createShader(e,t){let n=this.gl.createShader(e);if(n){if(this.gl.shaderSource(n,t),this.gl.compileShader(n),this.gl.getShaderParameter(n,this.gl.COMPILE_STATUS))return n;let e=this.gl.getShaderInfoLog(n);if(this.gl.deleteShader(n),e)throw Error(e)}throw Error(`Invalid shader`)}createProgram(e,t){let n=this.gl.createProgram();if(n){if(this.gl.attachShader(n,e),this.gl.attachShader(n,t),this.gl.linkProgram(n),this.gl.getProgramParameter(n,this.gl.LINK_STATUS))return n;let r=this.gl.getProgramInfoLog(n);if(this.gl.deleteProgram(n),r)throw Error(r)}throw Error(`Invalid program`)}resizeCanvasToDisplaySize(){let e=this.gl.canvas,t=e.clientWidth,n=e.clientHeight,r=e.width!==t||e.height!==n;return r&&(e.width=t,e.height=n),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 Error(`Cannot create buffer`);return t}setRectangle(e,t,n,r){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,n,r),this.gl.STATIC_DRAW)}getRectangle(e,t,n,r){let i=e,a=e+n,o=t,s=t+r;return this.rectBuffer.set([i,o,a,o,i,s,i,s,a,o,a,s]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}};function jt(e,t){let n=t?e:JSON.stringify(e),r=5381,i=n.length;for(;i;)r=r*33^n.charCodeAt(--i);let a=(r>>>0).toString(16);return a.length%2?`0`+a:a}var Mt=class{constructor(e){O(this,`$element`,void 0),O(this,`stylesheetClasses`,void 0),O(this,`activeStylesheetClasses`,void 0),O(this,`sheetsDidUpdate`,void 0),O(this,`sheetPrefix`,void 0),O(this,`stylesheetEntries`,void 0),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(),n=this.sheetPrefix+jt(t,!0);return this.stylesheetClasses.indexOf(n)===-1?(this.stylesheetClasses.push(n),this.activeStylesheetClasses.push(n),this.stylesheetEntries[n]=t,this.sheetsDidUpdate=!0,n):n}removeStylesheet(e){let t=this.sheetPrefix+jt(e,!0);this.stylesheetClasses.indexOf(t)&&(this.stylesheetClasses=this.stylesheetClasses.filter(e=>e!==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])}},Nt=class{constructor(e,t){O(this,`htmlContainer`,void 0),O(this,`visible`,[]),O(this,`previousVisible`,[]),O(this,`htmlIds`,[]),O(this,`firstMeaningfulPaint`,!1),O(this,`rendererPosition`,void 0),O(this,`stylesheet`,void 0),O(this,`options`,void 0),O(this,`paintTx`,1),O(this,`zIndex`,0),O(this,`classes`,void 0),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 Mt({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
50
- background: ${this.options.background};
51
- `)),this.classes={hostClassName:this.stylesheet.addStylesheet(`
52
- position: absolute;
53
- transform-origin: 0px 0px;
54
- `),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 n=e.props.hrefTarget||`_blank`;t.target=n,n!==`_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,n){if(e.__revision!==e.__host.revision){let r=e.__host.element,i=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?r.style.pointerEvents=`all`:i.push(this.classes.interactive):this.options.inlineStyles?r.style.pointerEvents=`none`:i.push(this.classes.nonInteractive),e.props.href){r.style.display=`block`,r.href=e.props.href;let t=e.props.hrefTarget||`_blank`;r.target=t,t===`_self`?r.rel=``:r.rel=`noopener noreferrer`}else r.href&&r.removeAttribute(`href`);if(e.props.title&&(r.title=e.props.title||``),e.props.className&&(i.push(e.props.className),e.hovering&&i.push(`${e.props.className}--hover`),e.pressing&&i.push(`${e.props.className}--active`)),e.props.relativeStyle?(r.style.width=`${t||e.width}px`,r.style.height=`${n||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 V){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 t=i.join(` `);r.className=t,r.part=t}e instanceof B&&(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 a=i.join(` `);r.className=a,r.part=a}}afterFrame(e,t,n){this.stylesheet.updateSheet();for(let e of this.previousVisible)this.visible.indexOf(e)===-1&&this.htmlContainer&&e.__id&&this.htmlIds.indexOf(e.__id)!==-1&&this.htmlContainer.removeChild(e.__host.element);this.previousVisible=this.visible}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.paintTx++,this.zIndex=0,this.visible=[]}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){let n=this.rendererPosition.width/e,r=this.rendererPosition.height/t;return n<r?r:n}getViewportBounds(e,t,n){return null}isReady(){return!1}paint(e,t,n,r,i,a){if(this.zIndex++,(this.options.text&&e instanceof V||e instanceof B&&(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,i,a);let t=i/e.width,o=e.__host.element;o.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px)`:o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px) scale(${t})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(o),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof V||e instanceof B)&&this.createHtmlHost(e)}resize(e,t){e!==void 0&&t!==void 0&&(this.htmlContainer.style.width=`${e}px`,this.htmlContainer.style.height=`${t}px`),this.rendererPosition=this.htmlContainer.getBoundingClientRect()}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}},Pt=class e{constructor(e,t,n){O(this,`element`,void 0),O(this,`runtime`,void 0),O(this,`unsubscribe`,void 0),O(this,`activatedEvents`,[]),O(this,`eventHandlers`,[]),O(this,`bounds`,void 0),O(this,`listening`,void 0),O(this,`pointerMoveEvent`,void 0),O(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),O(this,`options`,void 0),O(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),O(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),O(this,`onContextMenu`,e=>{e.preventDefault();let t=`onContextMenu`;if(this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),O(this,`onTouchEvent`,e=>{let t=y[e.type],n=[],r=e.touches.length;for(let t=0;t<r;t++){let r=e.touches.item(t);if(!r)continue;let{x:i,y:a}=this.runtime.viewerToWorld(r.clientX-this.bounds.left,r.clientY-this.bounds.top),o={id:r.identifier,x:i,y:a};n.push(o)}n.length&&this.assignToEvent(e,n[0].x,n[0].y),t===`onTouchEnd`?(e.atlasTouches=[],this.runtime.world.propagateTouchEvent(t,e,this.pointerEventState.lastTouches),this.pointerEventState.lastTouches=[]):(this.pointerEventState.lastTouches=n,e.atlasTouches=n,this.runtime.world.propagateTouchEvent(t,e,n))}),O(this,`onPointerEvent`,e=>{if(e.button===2)return;let t=y[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),O(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))}),O(this,`onPointerUp`,e=>{if(e.button!==2){if(this.pointerEventState.isClicking){let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onClick`,e,t,n)}if(this.pointerEventState.isDragging){for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent(`onDragEnd`,e);this.pointerEventState.isDragging=!1}this.pointerEventState.isClicking=!1,this.pointerEventState.isPressed=!1,this.pointerEventState.itemsBeingDragged=[],this.onPointerEvent(e)}}),O(this,`onPointerMove`,e=>{this.pointerMoveEvent=void 0;let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);if(Number.isNaN(t)||Number.isNaN(n))return;this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onPointerMove`,e,t,n);let r=this.runtime.world.propagatePointerEvent(`onMouseMove`,e,t,n),i=[],a=[];for(let t of r)i.push(t.id),a.push(t),this.pointerEventState.mousedOver.indexOf(t)===-1&&(t.dispatchEvent(`onMouseEnter`,e),t.dispatchEvent(`onPointerEnter`,e),t.dispatchEvent(`onMouseOver`,e),t.dispatchEvent(`onPointerOver`,e));for(let t of this.pointerEventState.mousedOver)i.indexOf(t.id)===-1&&(t.dispatchEvent(`onMouseLeave`,e),t.dispatchEvent(`onPointerLeave`,e),t.dispatchEvent(`onMouseOut`,e),t.dispatchEvent(`onPointerOut`,e));if(this.pointerEventState.isDragging)for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent(`onDrag`,e);if(this.pointerEventState.isPressed&&!this.pointerEventState.isDragging&&M(this.pointerEventState.mouseDownStart,{x:e.clientX,y:e.clientY})>50){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,atlas:{x:t.x,y:t.y}},t.x,t.y)}this.pointerEventState.mousedOver=a}),this.element=e,this.runtime=t,this.unsubscribe=t.world.addLayoutSubscriber(this.layoutSubscriber.bind(this)),this.bounds=e.getBoundingClientRect(),this.listening=!1,this.options={simulationRate:0,...n||{}};let r=0;t.registerHook(`useFrame`,e=>{r+=e,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==0&&this.activateEvents()}assignToEvent(t,n,r){e.eventPool.atlas.x=n,e.eventPool.atlas.y=r,t.atlas=e.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)}};O(Pt,`eventPool`,{atlas:{x:0,y:0}});function Ft({interactive:e=!0,viewport:t,forceRefresh:n,canvasElement:r,overlayElement:i,controllerConfig:a,unstable_webglRenderer:o,dpi:s,debug:c,canvasBox:l=!0,polygon:u=!0,navigatorElement:d,runtimeOptions:f}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let p=e?at({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,m=new Ke([o?new At(r,{dpi:s}):new Ge(r,{dpi:s,debug:c,box:l,polygon:u}),i?new Nt(i,{box:o||!l,text:!0,triggerResize:n}):void 0,d?new qe(d):void 0]),h=new ye(m,new R(1024,1024),t,p?[p]:[],f),g=new Pt(r,h);return{name:`default-preset`,em:g,runtime:h,renderer:m,controller:p,canvas:r,navigator:d,unmount(){Dt(h),h.stopControllers(),h.stop(),h.reset(),g&&g.stop()}}}const Z=1+Number.MIN_VALUE;var It=class{constructor(e,t){O(this,`container`,void 0),O(this,`width`,void 0),O(this,`height`,void 0),O(this,`pending`,!0),O(this,`options`,void 0),O(this,`stylesheet`,void 0),O(this,`zIndex`,0),O(this,`lastKnownScale`,1),O(this,`rendererPosition`,void 0),O(this,`currentlyVisible`,[]),O(this,`previouslyVisible`,[]),this.container=e,this.rendererPosition=e.getBoundingClientRect();let{width:n,height:r}=this.rendererPosition;this.width=n,this.height=r,this.options={addPart:!1,setDraggableFalse:!1,imageClass:``,widthStylesheet:!1,sheetPrefix:`position-`,background:`#000`,...t||{}},this.stylesheet=new Mt({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
56
+ `),E(this,`attributes`,void 0),E(this,`uniforms`,void 0),E(this,`buffers`,void 0),E(this,`rendererPosition`,void 0),E(this,`dpi`,void 0),E(this,`maxConcurrentTasks`,6),E(this,`maxPrefetchPerFrame`,8),E(this,`imageLoadingConfig`,void 0),E(this,`imageRequestPool`,void 0),E(this,`framePrefetchCount`,0),E(this,`loadingCount`,0),E(this,`hasTilesFading`,!1),E(this,`firstMeaningfulPaint`,!1),E(this,`frameSawFastPathCandidate`,!1),E(this,`requiresRepaint`,!0),E(this,`tileRequestQueue`,[]),E(this,`queuedTileRequestKeys`,new Set),E(this,`inFlightImageLoads`,new Map),E(this,`requiredTileKeys`,new Set),E(this,`requiredPrefetchTileKeys`,new Set),E(this,`requestGeneration`,0),E(this,`frameCounter`,0),E(this,`pendingTileReveals`,new Map),E(this,`activeLayerScissorRect`,void 0),E(this,`onContextLost`,e=>{e.preventDefault(),this.emitFatalImageError({reason:`webgl-context-lost`,error:e})}),E(this,`lastResize`,0),E(this,`lastKnownScale`,1),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.options=t||{},this.imageLoadingConfig=be(this.options.imageLoading),this.maxConcurrentTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Oe({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:`anonymous`,useFetch:!0,cache:Wr});let n=e.getContext(`webgl2`);if(!n)throw this.emitFatalImageError({reason:`webgl-context-unavailable`,error:Error(`WebGL2 context unavailable`)}),Error(`WebGL2 context unavailable`);this.gl=n,this.canvas.addEventListener(`webglcontextlost`,this.onContextLost),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`),alpha:this.gl.getUniformLocation(this.program,`u_alpha`)},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),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.isImmediateReadiness()&&(this.firstMeaningfulPaint=!0)}isImmediateReadiness(){return this.options.readiness===`immediate`}emitFatalImageError(e){if(this.fatalImageError)return;let t={from:`webgl`,to:`canvas`,...e};this.fatalImageError=t,this.options.onFatalImageError&&this.options.onFatalImageError(t)}resize(){this.resizeCanvasToDisplaySize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return this.isImmediateReadiness()||this.firstMeaningfulPaint?!0:this.frameSawFastPathCandidate?!1:this.tileRequestQueue.length===0&&this.loadingCount===0&&this.inFlightImageLoads.size===0&&this.pendingTileReveals.size===0}beforeFrame(e,t,n,r){this.hasTilesFading=!1,this.requiresRepaint=!1,this.frameSawFastPathCandidate=!1,this.framePrefetchCount=0,this.frameCounter+=1,this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.flushTileRevealBatch();let i=ge(r);this.canvas.style.filter!==i&&(this.canvas.style.filter=i),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.disable(this.gl.SCISSOR_TEST),this.activeLayerScissorRect=void 0,this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.uniform2f(this.uniforms.resolution,this.gl.canvas.width/this.dpi,this.gl.canvas.height/this.dpi),this.lastResize>1e3&&(this.lastResize=0,this.resizeCanvasToDisplaySize()),this.lastResize+=t}getCompositeRenderOptions(e){return e.__parent?.renderOptions}shouldClipLayerToBounds(e){return e instanceof J||e instanceof Y?!!this.getCompositeRenderOptions(e)?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}toScissorRect(e){let t=this.gl.canvas.width/this.dpi,n=this.gl.canvas.height/this.dpi,r=Math.max(0,Math.min(t,e.x)),i=Math.max(0,Math.min(n,e.y)),a=Math.max(0,Math.min(t,e.x+e.width)),o=Math.max(0,Math.min(n,e.y+e.height));if(a<=r||o<=i)return;let s=Math.floor(r*this.dpi),c=Math.floor((n-o)*this.dpi),l=Math.ceil((a-r)*this.dpi),u=Math.ceil((o-i)*this.dpi);if(s<0&&(l+=s,s=0),c<0&&(u+=c,c=0),l=Math.min(l,this.gl.canvas.width-s),u=Math.min(u,this.gl.canvas.height-c),!(l<=0||u<=0))return{x:s,y:c,width:l,height:u}}prepareLayer(e,t){if(this.activeLayerScissorRect=void 0,t&&this.shouldClipLayerToBounds(e)){let e=this.getBoundsFromPoints(t);if(e){let t=this.toScissorRect(e);t?(this.activeLayerScissorRect=t,this.gl.enable(this.gl.SCISSOR_TEST),this.gl.scissor(t.x,t.y,t.width,t.height)):(this.gl.enable(this.gl.SCISSOR_TEST),this.gl.scissor(0,0,0,0),this.activeLayerScissorRect={x:0,y:0,width:0,height:0})}}(!e.__host||!e.__host.webgl)&&((e instanceof J||e instanceof Y)&&Ur(e,0)&&this.createImageHost(e),e instanceof Fe&&this.createTextureHost(e))}createTextureHost(e){e.__host=e.__host?e.__host:{};let t=this.gl,n=this.gl.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1);let r;if(e instanceof Fe){let n=e.getTexture();if(n.source)try{t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n.source)}catch(t){this.emitFatalImageError({reason:`teximage-security`,contentId:e.id,error:t})}r=n}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:n,lastImage:r}}createImageHost(e){let t=[...Array(e.points.length/5)];e.__host=e.__host?e.__host:{},e.__host.webgl={height:e.height,width:e.width,textures:t,loading:[],loaded:[],loadedAt:[],tileState:{},lastLevelRendered:-1,onLoad:(t,n)=>{let r=this.gl,i=this.gl.createTexture();r.bindTexture(r.TEXTURE_2D,i),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1);try{r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n)}catch(n){this.emitFatalImageError({reason:`teximage-security`,imageUrl:e.getImageUrl?e.getImageUrl(t):void 0,contentId:e.id,tileIndex:t,error:n}),this.removeLoadingIndex(e,t);return}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[t]=i,e.__host.webgl.loaded.push(t),e.__host.webgl.loadedAt[t]=void 0,this.setTileState(e,t,{...this.getTileState(e,t),state:`decoded`,attempts:0,nextRetryAt:void 0,error:void 0}),this.enqueueTileReveal(this.getTileKey(e,t),e,t),this.requiresRepaint=!0,this.removeLoadingIndex(e,t)}}}removeLoadingIndex(e,t){if(!e.__host?.webgl?.loading)return;let n=e.__host.webgl.loading.indexOf(t);n!==-1&&(e.__host.webgl.loading.splice(n,1),this.loadingCount=Math.max(0,this.loadingCount-1),this.requiresRepaint=!0)}getTileKey(e,t){return`${e.id}::${e.display.scale}::${t}`}nextRequestKey(e){return this.requestGeneration+=1,`${e}::${this.requestGeneration}`}getTileState(e,t){let n=e.__host?.webgl;return n?(n.tileState||(n.tileState={}),n.tileState[t]||(n.tileState[t]={state:`idle`}),n.tileState[t]):{state:`idle`}}setTileState(e,t,n){let r=e.__host?.webgl;r&&(r.tileState||(r.tileState={}),r.tileState[t]=n)}markTileRequired(e,t){if(t){this.requiredPrefetchTileKeys.add(e);return}this.requiredTileKeys.add(e)}isTileRequired(e){return this.requiredTileKeys.has(e)||this.requiredPrefetchTileKeys.has(e)}shouldSkipFade(e,t=performance.now()){return e?.requestedAt?t-e.requestedAt<=this.imageLoadingConfig.skipFadeIfLoadedWithinMs:!1}enqueueTileReveal(e,t,n){let r=performance.now();if(this.imageLoadingConfig.revealDelayFrames===0&&this.imageLoadingConfig.revealBatchWindowFrames===0){t.__host?.webgl?.loadedAt&&(t.__host.webgl.loadedAt[n]=r);let e=this.getTileState(t,n);this.setTileState(t,n,{...e,skipFade:this.shouldSkipFade(e,r)});return}this.pendingTileReveals.set(e,{paint:t,index:n,queuedFrame:this.frameCounter})}flushTileRevealBatch(){if(this.pendingTileReveals.size===0)return;let e=this.imageLoadingConfig.revealDelayFrames,t=this.imageLoadingConfig.revealBatchWindowFrames,n=performance.now(),r=[...this.pendingTileReveals.entries()].sort((e,t)=>e[1].queuedFrame-t[1].queuedFrame),i=0;for(;i<r.length;){let a=r[i];if(this.frameCounter-a[1].queuedFrame<e)break;let o=a[1].queuedFrame+t;for(;i<r.length&&r[i][1].queuedFrame<=o;){let[e,t]=r[i],a=t.paint.__host?.webgl,o=this.getTileState(t.paint,t.index);a?.loadedAt&&o.state===`decoded`&&!a.loadedAt[t.index]&&(a.loadedAt[t.index]=n,this.setTileState(t.paint,t.index,{...o,skipFade:this.shouldSkipFade(o,n)}),this.requiresRepaint=!0),this.pendingTileReveals.delete(e),i+=1}}}emitImageError(e){this.options.onImageError&&this.options.onImageError({renderer:`webgl`,...e})}releaseInFlightTileLoad(e,t={}){let n=this.inFlightImageLoads.get(e);n&&(n.release(t),this.inFlightImageLoads.delete(e))}pruneStaleTileWork(){this.tileRequestQueue=this.tileRequestQueue.filter(e=>{if(this.isTileRequired(e.tileKey))return!0;this.queuedTileRequestKeys.delete(e.key);let t=this.getTileState(e.paint,e.index);return t.lastRequestKey===e.requestKey&&t.state===`queued`&&this.setTileState(e.paint,e.index,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e.tileKey),!1});for(let[e,t]of[...this.inFlightImageLoads.entries()]){if(this.isTileRequired(e))continue;let n=this.getTileState(t.paint,t.index);n.lastRequestKey===t.requestKey&&n.state===`loading`&&this.setTileState(t.paint,t.index,{...n,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e),this.removeLoadingIndex(t.paint,t.index),this.releaseInFlightTileLoad(e,{silent:!0})}}getPrefetchRadius(e){let t=this.getCompositeRenderOptions(e);return t?typeof t.prefetchRadius==`number`?Math.max(0,t.prefetchRadius):t.loadingBias===`speed`?2:t.loadingBias===`data`?0:1:0}isLayerActive(e){let t=e.__parent;return t&&typeof t.isImageActive==`function`?!!t.isImageActive(e):!0}shouldDrawLayer(e,t,n){return(this.getCompositeRenderOptions(e)?.layerPolicy||`fallback-only`)===`active-only`?n?!0:!!(e.__host?.webgl?.texture?e.__host.webgl.texture:e.__host?.webgl?.textures?.[t]):!0}getFadeAlpha(e,t,n){if(this.getTileState(e,t).skipFade)return 1;if(this.getTileState(e,t).state===`decoded`&&!e.__host?.webgl?.loadedAt?.[t]&&(this.imageLoadingConfig.revealDelayFrames>0||this.imageLoadingConfig.revealBatchWindowFrames>0))return 0;let r=this.getCompositeRenderOptions(e);if(!r||!r.fadeInMs||r.fadeInMs<=0)return 1;let i=performance.now(),a=1;if(n&&r.fadeOnLayerChange&&r.layerPolicy!==`active-only`){let t=e.__parent;if(t&&typeof t.getImageActivatedAt==`function`){let n=t.getImageActivatedAt(e);typeof n==`number`&&(a=Math.min(a,Math.max(0,Math.min(1,(i-n)/r.fadeInMs))))}}let o=e.__host?.webgl?.loadedAt?.[t];return o&&(n||r.fadeFallbackTiles)&&(a=Math.min(a,Math.max(0,Math.min(1,(i-o)/r.fadeInMs)))),a}getTileRequestKey(e,t){return`${e.id}::${e.display.scale}::${t}`}getCompositeOwner(e){let t=e?.__parent;return t&&t.renderOptions?t:void 0}compareCompositeLoadPriority(e,t){let n=this.getCompositeOwner(e),r=this.getCompositeOwner(t);if(!n||n!==r)return 0;let i=e?.display.scale||0;return(t?.display.scale||0)-i}enqueueTileRequest(e,t,n,r){if(!e.getImageUrl||!e.__host?.webgl)return!1;let i=this.getTileKey(e,t);if(this.markTileRequired(i,r),(e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures?.[t])||e.__host.webgl.loading&&e.__host.webgl.loading.indexOf(t)!==-1)return!1;let a=this.getTileState(e,t),o=performance.now();if(a.nextRetryAt&&a.nextRetryAt>o)return!1;let s=this.getTileRequestKey(e,t);if(this.queuedTileRequestKeys.has(s))return!1;let c=this.nextRequestKey(i);return this.pendingTileReveals.delete(i),this.setTileState(e,t,{...a,state:`queued`,requestedAt:o,lastRequestKey:c,cancelledAt:void 0,error:void 0,skipFade:!1}),this.tileRequestQueue.push({key:s,tileKey:i,requestKey:c,paint:e,index:t,url:e.getImageUrl(t),priority:n,scale:e.display.scale,prefetch:r}),this.queuedTileRequestKeys.add(s),this.requiresRepaint=!0,!0}schedulePrefetchNeighbours(e,t,n){if(this.framePrefetchCount>=this.maxPrefetchPerFrame||this.getCompositeRenderOptions(e)?.loadingBias===`data`)return;let r=this.getPrefetchRadius(e);if(r<=0||!e.columns||!e.rows)return;let i=t%e.columns,a=Math.floor(t/e.columns);for(let t=1;t<=r;t++)for(let r=-t;r<=t;r++)for(let o=-t;o<=t;o++){if(Math.max(Math.abs(o),Math.abs(r))!==t)continue;let s=i+o,c=a+r;if(s<0||c<0||s>=e.columns||c>=e.rows)continue;let l=c*e.columns+s;if(this.enqueueTileRequest(e,l,n+t*1e3,!0)&&(this.framePrefetchCount++,this.framePrefetchCount>=this.maxPrefetchPerFrame))return}}processTileQueue(){if(this.tileRequestQueue.length)for(this.tileRequestQueue.sort((e,t)=>{if(e.prefetch!==t.prefetch)return e.prefetch?1:-1;let n=this.compareCompositeLoadPriority(e.paint,t.paint);return n===0?e.priority===t.priority?t.scale-e.scale:e.priority-t.priority:n});this.loadingCount<this.maxConcurrentTasks&&this.tileRequestQueue.length;){let e=this.tileRequestQueue.shift();this.queuedTileRequestKeys.delete(e.key);let t=e.paint.__host?.webgl;if(!t||!e.paint.getImageUrl)continue;let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey||(t.texture?t.texture:t.textures?.[e.index])||t.loading&&t.loading.indexOf(e.index)!==-1)continue;this.setTileState(e.paint,e.index,{...n,state:`loading`,url:e.url,requestedAt:n.requestedAt||performance.now()}),t.loading.push(e.index),this.loadingCount++,this.requiresRepaint=!0;let r=`${e.tileKey}::${e.requestKey}`,i=this.imageRequestPool.acquire(e.url,r);this.inFlightImageLoads.set(e.tileKey,{tileKey:e.tileKey,requestKey:e.requestKey,consumerId:r,paint:e.paint,index:e.index,release:i.release}),i.promise.then(t=>{this.releaseInFlightTileLoad(e.tileKey,{silent:!0});let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey||n.state!==`loading`){this.removeLoadingIndex(e.paint,e.index);return}e.paint.__host?.webgl?.onLoad(e.index,t)}).catch(t=>{if(this.releaseInFlightTileLoad(e.tileKey,{silent:!0}),Ce(t)){let t=this.getTileState(e.paint,e.index);t.lastRequestKey===e.requestKey&&this.setTileState(e.paint,e.index,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e.tileKey),this.removeLoadingIndex(e.paint,e.index);return}let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey){this.removeLoadingIndex(e.paint,e.index);return}let r=(n.attempts||0)+1,i=r<this.imageLoadingConfig.maxAttempts,a=i?performance.now()+xe(this.imageLoadingConfig,r):performance.now()+this.imageLoadingConfig.errorRetryIntervalMs;this.setTileState(e.paint,e.index,{...n,state:i?`idle`:`error`,attempts:r,nextRetryAt:a,error:t}),this.pendingTileReveals.delete(e.tileKey),this.removeLoadingIndex(e.paint,e.index),this.emitImageError({severity:`recoverable`,imageUrl:e.url,contentId:e.paint.id,tileIndex:e.index,attempt:r,maxAttempts:this.imageLoadingConfig.maxAttempts,willRetry:i,nextRetryAt:a,error:t}),!i&&this.options.fallbackOnImageLoadError&&this.emitFatalImageError({reason:`image-cors-or-load`,imageUrl:e.url,contentId:e.paint.id,tileIndex:e.index,error:t})}).finally(()=>{this.processTileQueue()})}}paint(e,t,n,r,i,a){if(e.type!==`spacial-content`||!e.__host||!e.__host.webgl)return;let o=e instanceof J||e instanceof Y;if(o&&!Ur(e,t))return;o&&(this.frameSawFastPathCandidate=!0);let s=o?this.isLayerActive(e):!0;if(e.getTexture){let n=e.getTexture();if(n&&e.__host.webgl.lastImage!==n.hash&&n.source&&!e.__host.webgl.error)try{let t=this.gl.RGBA,r=this.gl.RGBA,i=this.gl.UNSIGNED_BYTE;this.gl.bindTexture(this.gl.TEXTURE_2D,e.__host.webgl.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,t,r,i,n.source),e.__host.webgl.lastImage=n.hash}catch(n){e.__host.webgl.error=n,this.emitFatalImageError({reason:`teximage-security`,contentId:e.id,tileIndex:t,error:n})}}let c=e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures[t];if(o&&s){let o=this.gl.canvas.width/this.dpi/2,s=this.gl.canvas.height/this.dpi/2,l=n+i/2,u=r+a/2,d=Math.hypot(l-o,u-s);c||this.enqueueTileRequest(e,t,d,!1),e instanceof Y&&this.schedulePrefetchNeighbours(e,t,d)}if(!(o&&!this.shouldDrawLayer(e,t,s))&&c){let l=o&&typeof e.style?.opacity==`number`?e.style.opacity:1,u=typeof e.__zoneVisibilityAlpha==`number`?e.__zoneVisibilityAlpha:1;if(!l)return;let d=o?this.getFadeAlpha(e,t,s):1;d<1&&(this.hasTilesFading=!0);let f=l*d*u;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,c),this.gl.uniform1i(this.uniforms.texture,0),this.gl.uniform1f(this.uniforms.alpha,f),this.setRectangle(n,r,i,a),this.gl.drawArrays(this.gl.TRIANGLES,0,6),!this.isImmediateReadiness()&&o&&f>0&&(this.firstMeaningfulPaint=!0)}}afterPaintLayer(e,t){}pendingUpdate(){return this.requiresRepaint||this.tileRequestQueue.length>0||this.loadingCount>0||this.inFlightImageLoads.size>0||this.pendingTileReveals.size>0||this.hasTilesFading}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}afterFrame(){this.pruneStaleTileWork(),this.processTileQueue()}getScale(e,t,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}getViewportBounds(e,t,n){return null}createShader(e,t){let n=this.gl.createShader(e);if(n){if(this.gl.shaderSource(n,t),this.gl.compileShader(n),this.gl.getShaderParameter(n,this.gl.COMPILE_STATUS))return n;let e=this.gl.getShaderInfoLog(n);if(this.gl.deleteShader(n),e)throw Error(e)}throw Error(`Invalid shader`)}createProgram(e,t){let n=this.gl.createProgram();if(n){if(this.gl.attachShader(n,e),this.gl.attachShader(n,t),this.gl.linkProgram(n),this.gl.getProgramParameter(n,this.gl.LINK_STATUS))return n;let r=this.gl.getProgramInfoLog(n);if(this.gl.deleteProgram(n),r)throw Error(r)}throw Error(`Invalid program`)}resizeCanvasToDisplaySize(){let e=this.gl.canvas,t=e.clientWidth,n=e.clientHeight,r=Math.round(t*this.dpi),i=Math.round(n*this.dpi),a=e.width!==r||e.height!==i;return a&&(e.width=r,e.height=i),a}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 Error(`Cannot create buffer`);return t}setRectangle(e,t,n,r){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,n,r),this.gl.STATIC_DRAW)}getRectangle(e,t,n,r){let i=e,a=e+n,o=t,s=t+r;return this.rectBuffer.set([i,o,a,o,i,s,i,s,a,o,a,s]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){this.activeLayerScissorRect&&(this.gl.disable(this.gl.SCISSOR_TEST),this.activeLayerScissorRect=void 0)}resetReadyState(){this.isImmediateReadiness()||(this.firstMeaningfulPaint=!1)}reset(){this.canvas.removeEventListener(`webglcontextlost`,this.onContextLost),this.canvas.style.filter=`none`,this.framePrefetchCount=0,this.loadingCount=0,this.hasTilesFading=!1,this.requiresRepaint=!1,this.tileRequestQueue=[],this.queuedTileRequestKeys.clear();for(let e of[...this.inFlightImageLoads.keys()])this.releaseInFlightTileLoad(e,{silent:!0});this.imageRequestPool.cancelAll({silent:!0}),this.inFlightImageLoads.clear(),this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.pendingTileReveals.clear(),this.requestGeneration+=1,this.frameCounter=0,this.frameSawFastPathCandidate=!1,this.firstMeaningfulPaint=this.isImmediateReadiness()}};function Kr({interactive:e=!0,viewport:t,forceRefresh:n,canvasElement:r,parityCanvasElement:i,overlayElement:a,controllerConfig:o,interactionMode:s=`popmotion`,unstable_webglRenderer:c,dpi:l,debug:u,canvasBox:d=!0,polygon:f=!0,navigatorElement:p,runtimeOptions:m,onWebGLFallback:h,onImageError:g,imageLoading:_,webglFallbackOnImageLoadError:v,webglReadiness:y,navigatorRendererOptions:b}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let x=e?(s===`pdf-scroll-zone`?vn:an)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...o||{}}):void 0,S,C;if(c)try{S=new Gr(r,{dpi:l,onFatalImageError:h,onImageError:g,imageLoading:_,fallbackOnImageLoadError:v,readiness:y})}catch{S=new je(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g})}else S=new je(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g});let w=S instanceof Gr;w&&i&&(C=new je(i,{dpi:l,debug:u,box:d,polygon:f,paintImages:!0,shouldPaintImage:(e,t)=>!Ur(e,t),readiness:`immediate`,imageLoading:_,onImageError:g}));let T=w&&!C?!0:!d,ee={},E=b?.onRequestRender,O=p?new Mt(p,{...b||{},sharedCanvasRenderer:S instanceof je?S:void 0,onRequestRender:()=>{E&&E(),ee.current&&ee.current.updateNextFrame()}}):void 0,k=new Me([S,C,a?new It(a,{box:T,text:!0,triggerResize:n}):void 0,O]),A=new Tn(k,new st(1024,1024),t,x?[x]:[],m);ee.current=A;let j=new D(r,A);return{name:`default-preset`,em:j,runtime:A,renderer:k,controller:x,canvas:r,parityCanvas:C?i:void 0,navigator:p,unmount(){Jn(A),A.stopControllers(),A.stop(),A.reset(),j&&j.stop()}}}const qr=1+Number.MIN_VALUE;var Jr=class{constructor(e,t){E(this,`container`,void 0),E(this,`width`,void 0),E(this,`height`,void 0),E(this,`pending`,!0),E(this,`options`,void 0),E(this,`stylesheet`,void 0),E(this,`zIndex`,0),E(this,`lastKnownScale`,1),E(this,`rendererPosition`,void 0),E(this,`currentlyVisible`,[]),E(this,`previouslyVisible`,[]),this.container=e,this.rendererPosition=e.getBoundingClientRect();let{width:n,height:r}=this.rendererPosition;this.width=n,this.height=r,this.options={addPart:!1,setDraggableFalse:!1,imageClass:``,widthStylesheet:!1,sheetPrefix:`position-`,background:`#000`,...t||{}},this.stylesheet=new Ft({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
55
57
  background: ${this.options.background};
56
- `)),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,n){this.stylesheet.updateSheet();for(let e of this.previouslyVisible)this.currentlyVisible.indexOf(e)===-1&&this.container.removeChild(e);for(let e of this.currentlyVisible)this.previouslyVisible.indexOf(e)===-1&&this.container.appendChild(e);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[]}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let n=this.width/e,r=this.height/t,i=n<r?r:n;return Number.isNaN(i)||(this.lastKnownScale=i),this.lastKnownScale}getViewportBounds(e,t,n){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,n,r,i,a){if(this.pending=!1,this.zIndex++,e instanceof A){if(!e.__host){let t=this.createImage();t.src=e.uri,e.__host=t,this.container.appendChild(e.__host)}let t=e.__host;this.currentlyVisible.push(t),t.style.zIndex=`${this.zIndex}`,t.style.opacity=`${e.style.opacity}`,this.options.widthStylesheet?t.className=this.options.imageClass+` `+this.stylesheet.addStylesheet(`width:${(i+Z).toFixed(2)}px;height:${(a+Z).toFixed(2)}px;`):(t.style.width=`${i+Z}px`,t.style.height=`${a+Z}px`),t.style.transform=`translate(${n}px, ${r}px)`}if(e instanceof P){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let n=e.getImageUrl(t),r=this.createImage();r.src=n,e.__host.images[t]=r,this.container.appendChild(r)}let o=e.__host.images[t];o.style.zIndex=`${this.zIndex}`,o.style.opacity=`${e.style.opacity}`,this.currentlyVisible.push(o),this.options.widthStylesheet?o.className=this.options.imageClass+` `+this.stylesheet.addStylesheet(`width:${(i+Z).toFixed(2)}px;height:${(a+Z).toFixed(2)}px;`):(o.style.width=`${i+Z}px`,o.style.height=`${a+Z}px`),o.style.transform=`translate(${n}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){}};function Lt({interactive:e,viewport:t,forceRefresh:n,containerElement:r,overlayElement:i,controllerConfig:a}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let o=e?at({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,s=new It(r,{addPart:!1,setDraggableFalse:!1,imageClass:`atlas-static-image`}),c=i?new Ke([s,new Nt(i,{box:!0,text:!0,triggerResize:n})]):s,l=new ye(c,new R(1024,1024),t,o?[o]:[]),u=new Pt(r,l);return{name:`static-preset`,em:u,runtime:l,renderer:c,controller:o,container:r,overlay:i,unmount(){Dt(l),l.stopControllers(),l.stop(),u&&u.stop()}}}const Rt={"default-preset":Ft,"static-preset":Lt},zt={};function Bt(e,t){let n=(0,d.useRef)(),r=(0,d.useRef)(),i=(0,d.useRef)(),a=(0,d.useRef)(),o=(0,d.useRef)({width:t.width,height:t.height,didUpdate:!0}),[s=`default-preset`,c=zt]=Array.isArray(e)?e||[]:[e],[l,u]=(0,d.useState)(null);return(0,d.useLayoutEffect)(()=>{let e=r.current,l=a.current,d=n.current,f=i.current,p=(Rt[s]||Ft)({containerElement:l,canvasElement:e,overlayElement:d,navigatorElement:f,viewport:o.current,dpi:window.devicePixelRatio||1,forceRefresh:t.forceRefresh,unstable_webglRenderer:t.unstable_webglRenderer,...c||{}});return u(p),()=>{p&&(p.unmount(),e&&(e.height=0,e.width=0),d&&(d.innerHTML=``),f&&(f.height=0,f.width=0))}},[s,c]),[s,l,o,(0,d.useMemo)(()=>({canvas:r,overlay:n,container:a,navigator:i}),[])]}function Vt(e){return(0,d.useMemo)(()=>jt(e),e)}const Ht=d.default.forwardRef((e,t)=>(0,f.jsx)(`div`,{...e,ref:t,part:e.className}));function Ut(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i],a=t[i];r!==a&&(n[i]={before:r,after:a})}return Object.keys(n).length>0?n:null}function Wt(e,t=``,n=!1){let r=(0,d.useRef)(e);r.current&&n&&(console.log(`Diff:`,t,Ut(r.current,e)),r.current=e)}const Gt=[`brightness`,`contrast`,`grayscale`,`hueRotate`,`invert`,`saturate`,`sepia`,`blur`],Kt=(0,d.memo)(function(e){let{htmlChildren:t,renderPreset:n,onCreated:r,mode:i=`explore`,resetWorldOnChange:a=!0,unstable_webglRenderer:o=!1,unstable_noReconciler:s=!1,hideInlineStyle:c=!1,controllerConfig:l,children:u,overlayStyle:m,containerStyle:h,enableNavigator:g,className:_,containerProps:v={},homePosition:y,homeOnResize:b,homeCover:x,background:S,runtimeOptions:C,debug:w,filters:T,homePaddingPx:E,...D}=e;Wt(e,`Atlas.tsx`,e.debug);let[ee,O]=(0,d.useState)(i),[k,A]=(0,d.useState)(!1),te=(0,d.useRef)(!1),j=(0,d.useMemo)(()=>(typeof n==`string`&&(n=[n,{}]),w?n?[n[0],{debug:w,...n[1]||{}}]:[`default-preset`,{debug:w}]:n||`default-preset`),[n,w]),[ne,M,re]=(0,p.default)({scroll:!0}),N=(0,d.useRef)(),P=e=>{N.current=e,ne(e)},[ie,F,I,L]=Bt(j,{width:D.width,height:D.height,forceRefresh:re,unstable_webglRenderer:o}),[R,ae]=(0,d.useState)(``);(0,d.useEffect)(()=>{O(i)},[i]),(0,d.useEffect)(()=>{F&&F.em&&F.em.updateBounds()},[F,M]),(0,d.useEffect)(()=>{F?.runtime.setOptions(C||{})},[C]),(0,d.useEffect)(()=>{F&&F.runtime&&(F.runtime.mode=ee),k&&F&&(F.ready=!0)},[F,k,ee]),(0,d.useEffect)(()=>{F&&(x||(F.runtime.manualHomePosition=!!y,F.runtime.setHomePosition(y)))},[F,x,y]),(0,d.useEffect)(()=>{F&&F.runtime.setHomePaddingPx(E)},[F,E]),(0,d.useEffect)(()=>{if(F){let e=F.runtime;e.resize(I.current.width,D.width,I.current.height,D.height),I.current.width=D.width,I.current.height=D.height,e.updateNextFrame(),I.current.didUpdate=!0}},[F,D.width,D.height,I]),(0,d.useEffect)(()=>{if(T&&F){let e=F.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of Gt)T[n]?T[n]!==F.runtime.hookOptions.filters[n]&&(e.hookOptions.filters[n]=T[n],t=!0):e.hookOptions.filters[n]&&(e.hookOptions.filters[n]=0,t=!0);t&&e.updateNextFrame()}else if(F){let e=F.runtime;for(let t of Gt)e.hookOptions.filters[t]=0;e.hookOptions.enableFilters=!1,e.updateNextFrame()}},[F,T]);function oe(){if(F&&(F.overlay&&(F.overlay.style.width=`${M.width}px`,F.overlay.style.height=`${M.height}px`),F.container&&(F.container.style.width=`${M.width}px`,F.container.style.height=`${M.height}px`),x)){let e=F.runtime.world.width,t=F.runtime.world.height,n=e/t,r=I.current.width,i=I.current.height,a=r/i;if(n>a){a=i/r,F.runtime.manualHomePosition=!0;let n=(e-t/a)/2;x===`start`&&(n=0),x===`end`&&(n=e-t/a);let o={x:n,y:0,width:t/a,height:t};F.runtime.setHomePosition(o)}else{let n=(t-e/a)/2;x===`start`&&(n=0),x===`end`&&(n=t-e/a),F.runtime.manualHomePosition=!0;let r={x:0,y:n,width:e,height:e/a};F.runtime.setHomePosition(r)}b&&F.runtime.goHome({})}}X(()=>{oe()},[F,e.runtimeOptions?.maxOverZoom,M.height,M.width,x]),X(()=>{let e=()=>{if(F){let e=F.runtime;I.current.width!==D.width&&I.current.height!==D.height&&(e.resize(I.current.width,D.width,I.current.height,D.height),I.current.width=D.width,I.current.height=D.height,e.updateNextFrame(),I.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[F,D.height,D.width]);let se={width:120},z=()=>{if(F&&F.navigator){let e=F.runtime.world.height,t=F.runtime.world.width,n=window.devicePixelRatio||1,r=se.width,i=se.width/t*e;F.navigator.width=r*n,F.navigator.height=i*n,F.navigator.style.width=r+`px`,F.navigator.style.height=i+`px`}};X(()=>{if(F){z();let e=F.runtime;return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&(z(),oe(),e.resize(I.current.width,D.width,I.current.height,D.height))})}return()=>{}},[F,D.width,D.height]);let ce=(0,d.useCallback)(function(e){let t=()=>{A(!0)};return(0,d.useEffect)(()=>{if(F){F.runtime.goHome();let e=r&&r(F);e&&e.then?e.then(t):t();return}else throw Error(`Invalid configuration - no runtime found`)},[]),e.children},[F]);(0,d.useEffect)(()=>{if(F){let e=F.runtime;if(a)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome()})}return()=>{}},[F,a]),(0,d.useEffect)(()=>F?F.runtime.registerHook(`useBeforeFrame`,()=>{if(I.current.didUpdate&&F.canvas){let e=window.devicePixelRatio||1,t=I.current.width,n=I.current.height;F.canvas.width=t*e,F.canvas.height=n*e,F.canvas.style.width=t+`px`,F.canvas.style.height=n+`px`,F.canvas.getContext(`2d`)?.scale(e,e),F&&F.em&&F.em.updateBounds(),I.current.didUpdate=!1}}):()=>{},[F,a]),(0,d.useEffect)(()=>{let e=()=>{F&&(O(`sketch`),ae(`mode-sketch`)),window.removeEventListener(`keyup`,e)},t=t=>{if(t.code===`Space`&&F&&F.runtime.mode===`sketch`){let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||t.target?.isContentEditable)return;t.preventDefault(),O(`explore`),ae(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[F]),te.current=!0;let{height:le,width:B,...V}=D,H=Vt([D.width,D.height]),U=!0;return j&&Array.isArray(j)&&j.length>1&&j[1].interactive===!1&&(U=!1),S=S??`#000`,N.current&&(S=getComputedStyle(N.current).getPropertyValue(`--atlas-background`)||S),(0,f.jsxs)(Ht,{ref:P,className:[`atlas`,c?``:`atlas-width-${H}`,R,_,`atlas-${ie}`].filter(Boolean).join(` `).trim(),style:{...h,...c?{}:{width:D.width,height:D.height}},children:[ie===`static-preset`?(0,f.jsx)(Ht,{className:`atlas-static-container`,ref:L.container,tabIndex:0,...v}):(0,f.jsx)(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...V,...v,ref:L.canvas,"data-background":S}),(0,f.jsx)(Ht,{className:[`atlas-overlay`,U?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...m||{}},ref:L.overlay,children:s?(0,f.jsx)(ce,{children:(0,f.jsx)(ct.Provider,{value:M,children:(0,f.jsx)(q.Provider,{value:ee,children:(0,f.jsx)(J.Provider,{value:F,children:u})})})}):(0,f.jsx)(kt,{bounds:M,preset:F,mode:ee,setIsReady:A,onCreated:r,children:u})}),g?(0,f.jsx)(Ht,{className:`atlas-navigator`,children:(0,f.jsx)(`canvas`,{className:`atlas-navigator-canvas`,part:`atlas-navigator-canvas`,ref:L.navigator})}):null,c?(0,f.jsx)(`style`,{children:`.atlas-width-${H} { width: ${D.width}px; height: ${D.height}px; }`}):(0,f.jsx)(`style`,{children:`
57
- .atlas { position: relative; display: flex; background: ${S}; 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; }
58
- .atlas-width-${H} { width: ${D.width}px; height: ${D.height}px; }
58
+ `)),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,this.pending=!0}getRendererScreenPosition(){return this.rendererPosition}afterFrame(e,t,n){this.stylesheet.updateSheet();for(let e of this.previouslyVisible)this.currentlyVisible.indexOf(e)===-1&&this.container.removeChild(e);for(let e of this.currentlyVisible)this.previouslyVisible.indexOf(e)===-1&&this.container.appendChild(e);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[],this.pending=!1}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let n=this.width/e,r=this.height/t,i=n<r?r:n;return Number.isNaN(i)||(this.lastKnownScale=i),this.lastKnownScale}getViewportBounds(e,t,n){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,n,r,i,a){if(this.zIndex++,e instanceof J){if(!e.__host){let t=this.createImage();t.src=e.uri,e.__host=t,this.container.appendChild(e.__host)}let t=e.__host;this.currentlyVisible.push(t),t.style.zIndex=`${this.zIndex}`,t.style.opacity=`${e.style.opacity}`,this.options.widthStylesheet?t.className=this.options.imageClass+` `+this.stylesheet.addStylesheet(`width:${(i+qr).toFixed(2)}px;height:${(a+qr).toFixed(2)}px;`):(t.style.width=`${i+qr}px`,t.style.height=`${a+qr}px`),t.style.transform=`translate(${n}px, ${r}px)`}if(e instanceof Y){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let n=e.getImageUrl(t),r=this.createImage();r.src=n,e.__host.images[t]=r,this.container.appendChild(r)}let o=e.__host.images[t];o.style.zIndex=`${this.zIndex}`,o.style.opacity=`${e.style.opacity}`,this.currentlyVisible.push(o),this.options.widthStylesheet?o.className=this.options.imageClass+` `+this.stylesheet.addStylesheet(`width:${(i+qr).toFixed(2)}px;height:${(a+qr).toFixed(2)}px;`):(o.style.width=`${i+qr}px`,o.style.height=`${a+qr}px`),o.style.transform=`translate(${n}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){this.pending=!0}};function Yr({interactive:e,viewport:t,forceRefresh:n,containerElement:r,overlayElement:i,controllerConfig:a,interactionMode:o=`popmotion`}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let s=e?(o===`pdf-scroll-zone`?vn:an)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,c=new Jr(r,{addPart:!1,setDraggableFalse:!1,imageClass:`atlas-static-image`}),l=i?new Me([c,new It(i,{box:!0,text:!0,triggerResize:n})]):c,u=new Tn(l,new st(1024,1024),t,s?[s]:[]),d=new D(r,u);return{name:`static-preset`,em:d,runtime:u,renderer:l,controller:s,container:r,overlay:i,unmount(){Jn(u),u.stopControllers(),u.stop(),d&&d.stop()}}}const Xr={"default-preset":Kr,"static-preset":Yr},Zr={};function Qr(e,t){let n=(0,p.useRef)(),r=(0,p.useRef)(),i=(0,p.useRef)(),a=(0,p.useRef)(),o=(0,p.useRef)(),s=(0,p.useRef)({x:0,y:0,width:t.width,height:t.height,scale:1,didUpdate:!0}),c=(0,p.useRef)({onWebGLFallback:t.onWebGLFallback,onImageError:t.onImageError}),[l=`default-preset`,u=Zr]=Array.isArray(e)?e||[]:[e],[d,f]=(0,p.useState)(null);return(0,p.useLayoutEffect)(()=>{c.current.onWebGLFallback=t.onWebGLFallback,c.current.onImageError=t.onImageError},[t.onImageError,t.onWebGLFallback]),(0,p.useLayoutEffect)(()=>{let e=r.current,d=o.current,p=n.current,m=a.current,h=(Xr[l]||Kr)({containerElement:d,canvasElement:e,parityCanvasElement:i.current,overlayElement:p,navigatorElement:m,viewport:s.current,dpi:window.devicePixelRatio||1,forceRefresh:t.forceRefresh,controllerConfig:t.controllerConfig,interactionMode:t.interactionMode,unstable_webglRenderer:t.unstable_webglRenderer,onWebGLFallback:e=>{c.current.onWebGLFallback&&c.current.onWebGLFallback(e)},onImageError:e=>{c.current.onImageError&&c.current.onImageError(e)},imageLoading:t.imageLoading,webglFallbackOnImageLoadError:t.webglFallbackOnImageLoadError,webglReadiness:t.webglReadiness,runtimeOptions:t.runtimeOptions,...u||{}});return f(h),()=>{if(h){let t=h.runtime.getViewport();s.current={...s.current,...t,didUpdate:!0},h.unmount(),e&&(e.height=0,e.width=0),p&&(p.innerHTML=``),m&&(m.height=0,m.width=0)}}},[l,u,t.unstable_webglRenderer,t.controllerConfig,t.interactionMode,t.imageLoading,t.webglFallbackOnImageLoadError,t.webglReadiness]),[l,d,s,(0,p.useMemo)(()=>({canvas:r,parityCanvas:i,overlay:n,container:o,navigator:a}),[])]}function $r(e){let t=e;if(Array.isArray(t?.renderers))return`composite`;let n=t?.constructor?.name||``;return n===`CanvasRenderer`?`canvas`:n===`WebGLRenderer`?`webgl`:n===`StaticRenderer`?`static`:`unknown`}const ei=1,ti=[`brightness`,`contrast`,`grayscale`,`hueRotate`,`invert`,`saturate`,`sepia`,`blur`],ni=(0,p.memo)(function(e){let{htmlChildren:t,renderPreset:n,onCreated:r,mode:i=`explore`,resetWorldOnChange:a=!0,unstable_webglRenderer:o=!1,onWebGLFallback:s,onReady:c,onImageError:u,readyResetKey:d,webglFallbackOnImageLoadError:f=!1,webglReadiness:g,imageLoading:_,unstable_noReconciler:v=!1,hideInlineStyle:y=!1,controllerConfig:b,interactionMode:x=`popmotion`,children:S,overlayStyle:C,containerStyle:w,enableNavigator:T,className:ee,containerProps:E={},homePosition:D,homeOnResize:O,homeCover:k,background:A,navigatorOptions:j,runtimeOptions:M,debug:N,filters:P,homePaddingPx:F,devTools:te,...I}=e;Hr(e,`Atlas.tsx`,e.debug);let[L,ne]=(0,p.useState)(i),[R,z]=(0,p.useState)(o),B=(0,p.useRef)(!1),V=(0,p.useRef)(null),H=(0,p.useRef)(null),U=(0,p.useRef)(void 0),W=(0,p.useRef)(void 0),[re,G]=(0,p.useState)(!1),ie=(0,p.useRef)(void 0),[ae,K]=(0,p.useState)(!1),[oe,q]=(0,p.useState)(!1),[se,ce]=(0,p.useState)(!1),le=(0,p.useRef)(!1),ue=j?.style?.background,de=j?.style?.objectFill,fe=j?.style?.objectStroke,pe=j?.style?.viewportFill,J=j?.style?.viewportStroke,me=j?.style?.viewportLineWidth,Y=j?.pdfScrollZoneZoneWindow?.total,he=j?.pdfScrollZoneZoneWindow?.before,ge=j?.pdfScrollZoneZoneWindow?.after,_e=(0,p.useMemo)(()=>{if(!(ue===void 0&&de===void 0&&fe===void 0&&pe===void 0&&J===void 0&&me===void 0))return{background:ue,objectFill:de,objectStroke:fe,viewportFill:pe,viewportStroke:J,viewportLineWidth:me}},[ue,de,fe,pe,J,me]),ve=(0,p.useMemo)(()=>{if(x===`pdf-scroll-zone`)return{total:Y??9,before:he,after:ge}},[x,ge,he,Y]),ye=(0,p.useCallback)(e=>{N&&console.debug(`[Atlas navigator]`,e)},[N]),X=(0,p.useMemo)(()=>({width:j?.width??120,idleFade:j?.idleFade??!0,idleMs:j?.idleMs??800,fadeDurationMs:j?.fadeDurationMs??250,opacityActive:j?.opacityActive??.94,opacityIdle:j?.opacityIdle??0,style:_e,zoneWindow:ve}),[j?.fadeDurationMs,j?.idleFade,j?.idleMs,j?.opacityActive,j?.opacityIdle,j?.width,_e,ve]),be=(0,p.useMemo)(()=>{let e=`default-preset`,t={},r=!1;if(Array.isArray(n)?(e=n[0],t={...n[1]||{}},r=!0):typeof n==`string`&&(e=n),N&&(t.debug=N,r=!0),e===`default-preset`){let e={};X.style&&(e.style=X.style),X.zoneWindow&&(e.zoneWindow=X.zoneWindow),N&&(e.onDebugEvent=ye),Object.keys(e).length>0&&(t.navigatorRendererOptions={...t.navigatorRendererOptions||{},...e},r=!0)}return r?[e,t]:n||`default-preset`},[n,N,ye,X.style,X.zoneWindow]),[xe,Se,Ce]=(0,m.default)({scroll:!0}),we=(0,p.useRef)(),Te=e=>{we.current=e,xe(e)},Ee=(0,p.useCallback)(e=>{B.current||(B.current=!0,H.current&&(V.current=H.current.getViewport()),z(!1),s&&s(e))},[s]),De=(0,p.useCallback)(e=>{if(V.current&&(e.runtime.setViewport(V.current),e.runtime.updateNextFrame(),V.current=null),r)return r(e)},[r]),[Oe,Z,Q,ke]=Qr(be,{width:I.width,height:I.height,forceRefresh:Ce,controllerConfig:b,interactionMode:x,unstable_webglRenderer:R,onWebGLFallback:Ee,onImageError:u,webglFallbackOnImageLoadError:f,webglReadiness:g,imageLoading:_,runtimeOptions:M});(0,p.useEffect)(()=>{if(Z)return mr(Z)},[Z]);let[Ae,je]=(0,p.useState)(``);(0,p.useEffect)(()=>{ne(i)},[i]),(0,p.useEffect)(()=>{G(!1),H.current=Z?Z.runtime:null,U.current=void 0,W.current=void 0},[Z]),(0,p.useEffect)(()=>{if(!o){z(!1);return}B.current||z(!0)},[o]),(0,p.useEffect)(()=>{if(!Z||!c)return;let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t!==`ready`)return;let n=e.getReadyState();W.current!==n.cycle&&(W.current=n.cycle,n.timestamp&&c({runtimeId:e.id,cycle:n.cycle,reason:n.reason,renderer:$r(e.renderer),timestamp:n.timestamp}))})},[Z,c]),(0,p.useEffect)(()=>{if(Z){if(d===void 0){U.current=void 0;return}if(U.current===void 0){U.current=d;return}U.current!==d&&(U.current=d,W.current=void 0,Z.runtime.resetReadyState(`ready-reset-key-change`))}},[Z,d]),(0,p.useEffect)(()=>{Z&&Z.em&&Z.em.updateBounds()},[Z,Se]),(0,p.useEffect)(()=>{Z&&Z.runtime.setOptions(M||{})},[Z,M]),(0,p.useEffect)(()=>{Z&&Z.runtime&&(Z.runtime.mode=L),re&&Z&&(Z.ready=!0)},[Z,re,L]),(0,p.useEffect)(()=>{Z&&(k||(Z.runtime.manualHomePosition=x===`pdf-scroll-zone`||!!D,Z.runtime.setHomePosition(D)))},[Z,k,D,x]),(0,p.useEffect)(()=>{Z&&Z.runtime.setHomePaddingPx(F)},[Z,F]),(0,p.useEffect)(()=>{if(Z){let e=Z.runtime;(Q.current.width!==I.width||Q.current.height!==I.height)&&(e.resize(Q.current.width,I.width,Q.current.height,I.height),Q.current.width=I.width,Q.current.height=I.height,Q.current.didUpdate=!0,e.updateNextFrame())}},[Z,I.width,I.height,Q]),(0,p.useEffect)(()=>{if(P&&Z){let e=Z.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of ti)P[n]?P[n]!==Z.runtime.hookOptions.filters[n]&&(e.hookOptions.filters[n]=P[n],t=!0):e.hookOptions.filters[n]&&(e.hookOptions.filters[n]=0,t=!0);t&&e.updateNextFrame()}else if(Z){let e=Z.runtime;for(let t of ti)e.hookOptions.filters[t]=0;e.hookOptions.enableFilters=!1,e.updateNextFrame()}},[Z,P]);function Me(){if(Z&&(Z.overlay&&(Z.overlay.style.width=`${Se.width}px`,Z.overlay.style.height=`${Se.height}px`),Z.container&&(Z.container.style.width=`${Se.width}px`,Z.container.style.height=`${Se.height}px`),k)){let e=Z.runtime.world.width,t=Z.runtime.world.height,n=e/t,r=Q.current.width,i=Q.current.height,a=r/i;if(n>a){a=i/r,Z.runtime.manualHomePosition=!0;let n=(e-t/a)/2;k===`start`&&(n=0),k===`end`&&(n=e-t/a);let o={x:n,y:0,width:t/a,height:t};Z.runtime.setHomePosition(o)}else{let n=(t-e/a)/2;k===`start`&&(n=0),k===`end`&&(n=t-e/a),Z.runtime.manualHomePosition=!0;let r={x:0,y:n,width:e,height:e/a};Z.runtime.setHomePosition(r)}O&&Z.runtime.goHome({})}}Xn(()=>{Me()},[Z,e.runtimeOptions?.maxOverZoom,Se.height,Se.width,k]),Xn(()=>{let e=()=>{if(Z){let e=Z.runtime;(Q.current.width!==I.width||Q.current.height!==I.height)&&(e.resize(Q.current.width,I.width,Q.current.height,I.height),Q.current.width=I.width,Q.current.height=I.height,e.updateNextFrame(),Q.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[Z,I.height,I.width]);let Ne=()=>{if(!Z)return;let e=Z.renderer;if(Array.isArray(e.renderers))return e.renderers.find(e=>typeof e.invalidateWorldLayer==`function`)},Pe=(0,p.useCallback)(()=>{if(!Z)return window.devicePixelRatio||1;let e=Z.renderer,t=(Array.isArray(e.renderers)?e.renderers[0]:e)?.dpi;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:window.devicePixelRatio||1},[Z]),Fe=(0,p.useCallback)(e=>kt(e.world,{target:e.getViewport(),zoneWindow:X.zoneWindow}),[X.zoneWindow]),Ie=(0,p.useCallback)(e=>e.isViewportAtHome({cover:!!k,tolerance:1}),[k,F]),Le=()=>{if(Z&&Z.navigator){let e=Fe(Z.runtime),t=e.height,n=e.width,r=Pe(),i=Math.max(1,n),a=Math.max(1,t),o=Math.max(1,X.width),s=Math.max(1,I.height-20),c=o,l=o/i*a;if(l>s){let e=s/l;l=s,c=Math.max(1,o*e)}Z.navigator.width=c*r,Z.navigator.height=l*r,Z.navigator.style.width=c+`px`,Z.navigator.style.height=l+`px`;let u=Ne();u&&u.invalidateWorldLayer&&u.invalidateWorldLayer()}};Xn(()=>{if(Z){Le();let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t===`repaint`){let e=Ne();e&&e.invalidateWorldLayer&&e.invalidateWorldLayer()}(t===`recalculate-world-size`||t===`zone-changed`)&&(Le(),Me(),t===`recalculate-world-size`&&(Q.current.width!==I.width||Q.current.height!==I.height)&&e.resize(Q.current.width,I.width,Q.current.height,I.height))})}return()=>{}},[Z,I.width,I.height,X.width,Fe,Pe]),(0,p.useEffect)(()=>{if(!Z||!T){ce(!1);return}let e=Z.runtime,t=()=>{let t=Ie(e);ce(e=>e===t?e:t)};return t(),e.world.addLayoutSubscriber(()=>{t()})},[Z,T,Ie]);let Re=(0,p.useCallback)(function(e){let t=()=>{G(!0)};return(0,p.useEffect)(()=>{if(!Z)return;x!==`pdf-scroll-zone`&&Z.runtime.goHome();let e=De&&De(Z);e&&e.then?e.then(t):t()},[]),e.children},[Z,De,x]);(0,p.useEffect)(()=>{if(Z){let e=Z.runtime;if(a)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&x!==`pdf-scroll-zone`&&e.goHome()})}return()=>{}},[Z,a,x]),(0,p.useEffect)(()=>Z?Z.runtime.registerHook(`useBeforeFrame`,()=>{if(Q.current.didUpdate&&Z.canvas){let e=Pe(),t=Q.current.width,n=Q.current.height;Z.canvas.width=t*e,Z.canvas.height=n*e,Z.canvas.style.width=t+`px`,Z.canvas.style.height=n+`px`;let r=Z.canvas.getContext(`2d`);if(r&&(r.setTransform(1,0,0,1,0,0),r.scale(e,e)),Z.parityCanvas){Z.parityCanvas.width=t*e,Z.parityCanvas.height=n*e,Z.parityCanvas.style.width=t+`px`,Z.parityCanvas.style.height=n+`px`;let r=Z.parityCanvas.getContext(`2d`);r&&(r.setTransform(1,0,0,1,0,0),r.scale(e,e))}Z&&Z.em&&Z.em.updateBounds(),Q.current.didUpdate=!1}}):()=>{},[Z,a,Pe]),(0,p.useEffect)(()=>{let e=()=>{Z&&(ne(`sketch`),je(`mode-sketch`)),window.removeEventListener(`keyup`,e)},t=t=>{if(t.code===`Space`&&Z&&Z.runtime.mode===`sketch`){let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||t.target?.isContentEditable)return;t.preventDefault(),ne(`explore`),je(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[Z]);let ze=(0,p.useCallback)(()=>{!T||!X.idleFade||(K(!1),ie.current!==void 0&&window.clearTimeout(ie.current),ie.current=window.setTimeout(()=>{le.current||K(!0)},X.idleMs))},[T,X.idleFade,X.idleMs]);(0,p.useEffect)(()=>()=>{ie.current!==void 0&&(window.clearTimeout(ie.current),ie.current=void 0)},[]),(0,p.useEffect)(()=>{if(!Z?.canvas||!T||!X.idleFade)return;let e=Z.canvas,t=()=>ze(),n=[`pointerdown`,`pointermove`,`pointerup`,`touchstart`,`touchmove`,`touchend`,`wheel`];for(let r of n)e.addEventListener(r,t,{passive:!0});return ze(),()=>{for(let r of n)e.removeEventListener(r,t)}},[Z,T,X.idleFade,ze]),(0,p.useEffect)(()=>{if(!Z?.navigator||!T)return;let e=Z.navigator,t=Z.runtime,n={active:!1,pointerId:-1,offsetX:0,offsetY:0,startClientX:0,startClientY:0,startWorldX:0,startWorldY:0},r=e=>{le.current=e,q(e)},i=n=>{let r=e.getBoundingClientRect();if(r.width<=0||r.height<=0)return{x:0,y:0};let i=n.clientX-r.left,a=n.clientY-r.top,o=Fe(t);return jt(Ot(o.width,o.height,r.width,r.height,o.x,o.y),i,a)},a=(e,r,{preserveOffset:i=!0,constrainAfterMove:a=!1}={})=>{let o=t.getViewport(),s=i?e-n.offsetX:e-o.width/2,c=i?r-n.offsetY:r-o.height/2,u=l.DnaFactory.singleBox(o.width,o.height,s,c),[,d]=t.constrainBounds(u,{ref:!0});t.setViewport({x:d[1],y:d[2],width:d[3]-d[1],height:d[4]-d[2]}),t.updateControllerPosition(),t.updateNextFrame(),a&&t.world.constraintBounds(!0)},o=(e,n)=>{let r=At(t.world,{target:t.getViewport(),zoneWindow:X.zoneWindow});for(let i of t.world.zones)if(!(r&&!r.has(i.id))&&(i.recalculateBounds(),i.points[0]!==0&&e>=i.points[1]&&e<=i.points[3]&&n>=i.points[2]&&n<=i.points[4]))return i},s=o=>{if(o.button!==0)return;ze();let s=i(o),c=t.getViewport(),l=s.x>=c.x&&s.y>=c.y&&s.x<=c.x+c.width&&s.y<=c.y+c.height;n.active=!0,n.pointerId=o.pointerId,n.startClientX=o.clientX,n.startClientY=o.clientY,n.startWorldX=s.x,n.startWorldY=s.y,l?(n.offsetX=s.x-c.x,n.offsetY=s.y-c.y):(n.offsetX=c.width/2,n.offsetY=c.height/2,a(s.x,s.y,{preserveOffset:!0,constrainAfterMove:!0})),r(!0),e.setPointerCapture(o.pointerId),o.preventDefault(),o.stopPropagation()},c=e=>{if(!n.active||e.pointerId!==n.pointerId)return;let t=i(e);a(t.x,t.y,{preserveOffset:!0}),ze(),e.preventDefault(),e.stopPropagation()},u=a=>{if(!n.active||a.pointerId!==n.pointerId)return;i(a);let s=Math.hypot(a.clientX-n.startClientX,a.clientY-n.startClientY),c=!1;if(s<4){let e=o(n.startWorldX,n.startWorldY);e&&(c=t.goToZone(e.id),c&&t.updateNextFrame())}n.active=!1,n.pointerId=-1,r(!1),c||t.world.constraintBounds(!0),e.hasPointerCapture(a.pointerId)&&e.releasePointerCapture(a.pointerId),ze(),a.preventDefault(),a.stopPropagation()},d=t=>{!n.active||t.pointerId!==n.pointerId||(n.active=!1,n.pointerId=-1,r(!1),e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),ze())};return e.addEventListener(`pointerdown`,s),e.addEventListener(`pointermove`,c),e.addEventListener(`pointerup`,u),e.addEventListener(`pointercancel`,d),()=>{r(!1),e.removeEventListener(`pointerdown`,s),e.removeEventListener(`pointermove`,c),e.removeEventListener(`pointerup`,u),e.removeEventListener(`pointercancel`,d)}},[Z,T,ze,Fe]);let{height:Be,width:Ve,...He}=I,Ue=Br([I.width,I.height]),We=!0;be&&Array.isArray(be)&&be.length>1&&be[1].interactive===!1&&(We=!1),A=A??`#000`,we.current&&(A=getComputedStyle(we.current).getPropertyValue(`--atlas-background`)||A);let Ge=typeof te==`object`?te:void 0,Ke=(0,p.useMemo)(()=>({"--atlas-navigator-fade-duration":`${X.fadeDurationMs}ms`,"--atlas-navigator-opacity-active":`${X.opacityActive}`,"--atlas-navigator-opacity-idle":`${X.opacityIdle}`}),[X.fadeDurationMs,X.opacityActive,X.opacityIdle]);return(0,h.jsxs)(Qn,{ref:Te,className:[`atlas`,`atlas-interaction-${x}`,y?``:`atlas-width-${Ue}`,Ae,ee,`atlas-${Oe}`].filter(Boolean).join(` `).trim(),style:{...w,...y?{}:{width:I.width,height:I.height}},children:[Oe===`static-preset`?(0,h.jsx)(Qn,{className:`atlas-static-container`,ref:ke.container,tabIndex:0,...E}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...He,...E,ref:ke.canvas,"data-background":A}),R?(0,h.jsx)(`canvas`,{className:`atlas-parity-canvas`,part:`atlas-parity-canvas`,"aria-hidden":`true`,"data-background":`transparent`,ref:ke.parityCanvas}):null]}),(0,h.jsx)(Qn,{className:[`atlas-overlay`,We?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...C||{}},ref:ke.overlay,children:v?(0,h.jsx)(Re,{children:(0,h.jsx)(bn.Provider,{value:Se,children:(0,h.jsx)(xn.Provider,{value:L,children:(0,h.jsx)(yn.Provider,{value:Z,children:S})})})}):(0,h.jsx)(Zn,{bounds:Se,preset:Z,mode:L,interactionMode:x,setIsReady:G,onCreated:De,children:S})}),T?(0,h.jsx)(Qn,{className:[`atlas-navigator`,se?`atlas-navigator--hidden-at-home`:``,X.idleFade&&ae?`atlas-navigator--idle`:``,oe?`atlas-navigator--dragging`:``].filter(Boolean).join(` `).trim(),style:Ke,children:(0,h.jsx)(`canvas`,{className:`atlas-navigator-canvas`,part:`atlas-navigator-canvas`,ref:ke.navigator})}):null,te?(0,h.jsx)(Nr,{...Ge,runtimeId:Ge?.runtimeId||Z?.runtime.id}):null,y?(0,h.jsx)(`style`,{children:`.atlas-width-${Ue} { width: ${I.width}px; height: ${I.height}px; }`}):(0,h.jsx)(`style`,{children:`
59
+ .atlas { position: relative; display: flex; background: ${A}; 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; }
60
+ .atlas-width-${Ue} { width: ${I.width}px; height: ${I.height}px; }
59
61
  .atlas-canvas { flex: 1 1 0px; }
62
+ .atlas-interaction-pdf-scroll-zone .atlas-canvas,
63
+ .atlas-interaction-pdf-scroll-zone .atlas-static-container { touch-action: none; }
64
+ .atlas-parity-canvas { position: absolute; top: 0; left: 0; pointer-events: none; }
60
65
  .atlas-canvas:focus, .atlas-static-container:focus { outline: none }
61
66
  .atlas-canvas:focus-visible, .atlas-canvas-container:focus-visible { outline: var(--atlas-focus, 2px solid darkorange) }
62
67
  .atlas-static-preset { touch-action: inherit; }
63
68
  .atlas-static-container { position: relative; overflow: hidden; flex: 1 1 0px; }
64
- .atlas-overlay { position: absolute; top: 0; left: 0; none; overflow: hidden; }
69
+ .atlas-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden; }
65
70
  /** setting the pointer events to none means that Atlas will own the touch and mousewheel events **/
66
71
  .atlas-overlay--interactive { pointer-events: none; }
67
72
  .atlas-static-image { position: absolute; user-select: none; transform-origin: 0px 0px; }
68
- .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 }
69
- .atlas-navigator-canvas { width: 100%; }
70
- `}),t]})});function qt(e){return Number(e)==e?`${e}px`:e}const Jt=(0,d.memo)(function({resizeHash:e,aspectRatio:t,containerProps:n={},htmlChildren:r,...i}){let[a,o,s]=(0,p.default)(),{height:c,width:l,...u}=i;(0,d.useEffect)(()=>{s()},[l,c,e,s]);let m=(0,d.useMemo)(()=>t?{width:o.width,height:o.width*(1/t)}:o,[o,t]);return(0,f.jsxs)(Ht,{ref:a,className:`atlas-container`,...n,children:[m.width?(0,f.jsx)(Kt,{width:m.width||100,height:m.height||100,...u,children:i.children}):null,i.hideInlineStyle?null:(0,f.jsx)(`style`,{children:`
71
- .atlas-container {
73
+ .atlas-navigator { position: absolute; top: var(--atlas-navigator-top, 10px); right: var(--atlas-navigator-right, 10px); left: var(--atlas-navigator-left); bottom: var(--atlas-navigator-bottom); opacity: var(--atlas-navigator-opacity-active, .94); transition: opacity var(--atlas-navigator-fade-duration, 250ms) ease; z-index: var(--atlas-navigator-z-index, 30); }
74
+ .atlas-navigator--idle { opacity: var(--atlas-navigator-opacity-idle, .4); }
75
+ .atlas-navigator--hidden-at-home { opacity: 0; pointer-events: none; }
76
+ .atlas-navigator-canvas { width: 100%; height: 100%; display: block; cursor: grab; touch-action: none; border-radius: var(--atlas-navigator-radius, 6px); border: var(--atlas-navigator-border, 1px solid rgba(0, 0, 0, 0.7)); box-shadow: var(--atlas-navigator-shadow, 0 6px 16px rgba(2, 6, 23, 0.45)); box-sizing: border-box; }
77
+ .atlas-navigator--dragging .atlas-navigator-canvas { cursor: grabbing; }
78
+ `}),t]})});function ri(e){return Number(e)==e?`${e}px`:e}const ii=(0,p.memo)(function({resizeHash:e,aspectRatio:t,containerProps:n={},htmlChildren:r,...i}){let[a,o,s]=(0,m.default)(),c=(0,p.useId)(),{height:l,width:u,...d}=i;(0,p.useEffect)(()=>{s()},[u,l,e,s]);let f=(0,p.useMemo)(()=>t?{width:o.width,height:o.width*(1/t)}:o,[o,t]),g=(0,p.useMemo)(()=>`atlas-auto-${c.replace(/[^a-zA-Z0-9_-]/g,``)}`,[c]),_=(0,p.useMemo)(()=>[g,n.className].filter(Boolean).join(` `).trim(),[g,n.className]),v=(0,p.useMemo)(()=>`.${g} {
72
79
  display: var(--atlas-container-display, block);
73
80
  flex: var(--atlas-container-flex, none);
74
- width: var(--atlas-container-width, ${l?`${l}px`:`100%`});
75
- height: var(--atlas-container-height, ${qt(c||(t?m.height:512))})
76
- }
77
- `}),r]})}),Yt=()=>(0,d.useContext)(J),Q=()=>{let e=Yt();return e?e.runtime:void 0},Xt=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useAfterFrame`,e):()=>{},t)},Zt=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useFrame`,e):()=>{},t)},Qt=()=>{let e=Yt();return e&&e.canvas?e.canvas:void 0};function $t(){return(0,d.useContext)(ct)}const en=({onCreate:e})=>{let t=(0,d.useRef)({x:0,y:0}),n=Qt(),r=$t(),i=Q(),[a,o]=(0,d.useState)(),[s,c]=(0,d.useState)(),l=ot();return Zt(()=>{i&&a&&!s&&(i.pendingUpdate=!0)},[a,s]),Xt(()=>{if(a&&n&&i){let e=n.getContext(`2d`);if(e){let{x:n,y:r,width:o,height:c}=i.worldToViewer(a.x,a.y,(s?s.x:t.current.x)-a.x,(s?s.y:t.current.y)-a.y);e.lineWidth=s?3:1,e.strokeStyle=`#fff`,e.strokeRect(n,r,o,c),e.lineWidth=s?3:1,e.strokeStyle=`#000`,e.strokeRect(n+1,r+1,o-2,c-2)}}},[a,s]),(0,d.useEffect)(()=>{let e=e=>{if(r&&i){let{x:n,y:a}=i.viewerToWorld(e.clientX-r.left,e.clientY-r.top);t.current.x=~~n,t.current.y=~~a}};return n?(n.addEventListener(`mousemove`,e),()=>n.removeEventListener(`mousemove`,e)):()=>{}},[r,n,i]),(0,d.useEffect)(()=>{let e=e=>{l===`sketch`&&(o({x:Math.round(t.current.x),y:Math.round(t.current.y)}),c(void 0))};return n?(n.addEventListener(`mousedown`,e),()=>n.removeEventListener(`mousedown`,e)):()=>{}},[n,l]),(0,d.useEffect)(()=>{let e=e=>{a&&!s&&c({x:Math.round(t.current.x),y:Math.round(t.current.y)})};return n?(n.addEventListener(`mouseup`,e),()=>n.removeEventListener(`mouseup`,e)):()=>{}},[n,a,s]),(0,d.useEffect)(()=>{a&&s&&e({x:Math.min(a.x,s.x),y:Math.min(a.y,s.y),width:Math.abs(s.x-a.x),height:Math.abs(s.y-a.y)})},[a,e,s]),null};async function tn(e,t,n){if(d.version.startsWith(`18.`)||d.version.startsWith(`19.`)){let r=await import(`react-dom/client`),i=r.default?r.default.createRoot:r.createRoot;n.current||(n.current=i(e)),n.current.render(t)}else if(typeof ReactDOM<`u`){let{render:r,unmountComponentAtNode:i}=ReactDOM;r(t,e),n.current={unmount(){i(e)}}}else{let r=await import(`react-dom`),i=r.default?r.default.render:r.render,a=r.default?r.default.unmountComponentAtNode:r.unmountComponentAtNode;i(t,e),n.current={unmount(){a(e)}}}}const nn=d.default.forwardRef(({children:e,...t},n)=>{let r=(0,d.useRef)(),i=Q(),a=(0,d.useRef)(0),o=(0,d.useRef)(),s=(0,d.useRef)();return Zt(()=>{if(t.relative){let e=r.current;if(e&&i){let t=i.getScaleFactor();a.current!==t&&(a.current=t,e.style.transformOrigin=`0 0`,e.style.transform=`scale(${1/a.current})`,e.style.width=`${a.current*100}%`,e.style.height=`${a.current*100}%`,r.current&&o.current?.__owner.value?.rotation&&(e.style.transform=`scale(${1/a.current}) translate(50%, 50%) rotate(${o.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[t.relative]),(0,d.useLayoutEffect)(()=>{let i=o.current;n&&i&&(typeof n==`function`?n(i):n.current=i);async function a(){if(i&&i.__host){let n=t.relative?(0,f.jsx)(`div`,{ref:r,children:e}):e;await tn(i.__host.element,n,s)}}i&&i.__host?a():i&&(i.__onCreate=a)},[n,e,o,t.relative]),(0,d.useLayoutEffect)(()=>()=>{s.current&&setTimeout(()=>{s.current.unmount()},0)},[]),(0,f.jsx)(`box`,{html:!0,...t,ref:o})});nn.displayName=`HTMLPortal`;const rn=(e,t,n=[])=>{let r=Q();(0,d.useEffect)(()=>{if(r){let n=t,i=y[e];r.world.activatedEvents.push(i);let a=i.slice(2).toLowerCase();return r.world.addEventListener(a,n),()=>{r.world.removeEventListener(a,n)}}return()=>{}},[r?r.world:void 0,e,...n])};function an(e,t){if(e===0)return[0,1];if(t===0)return[1,0];let n=Math.abs(e)/Math.abs(t);return[n,1-n]}function on(){let e=(0,d.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,d.useLayoutEffect)(()=>{function t(t){t.key===`Shift`&&(e.current.shift=!0),t.key===`Control`&&(e.current.ctrl=!0),t.key===`Alt`&&(e.current.alt=!0)}function n(t){t.key===`Shift`&&(e.current.shift=!1),t.key===`Control`&&(e.current.ctrl=!1),t.key===`Alt`&&(e.current.alt=!1)}return window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,n),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,n)}},[]),e}const sn=(e,t)=>{let n=ot(),r=Q(),i=$t(),a=(0,d.useRef)(),o=(0,d.useRef)(null),s=(0,d.useRef)(),[c,l]=(0,d.useState)(!1),u=(0,d.useRef)(!1),f=(0,d.useRef)({north:0,south:0,east:0,west:0}),p=on(),m=(0,d.useCallback)(e=>t=>{if(u.current=!0,l(!0),i&&r){let{top:n,left:o}=i,c=r.viewerToWorld(t.pageX-o,t.pageY-n);s.current={x:c.x,y:c.y},a.current=e}},[i,r]),h=(0,d.useMemo)(()=>e.width/e.height,[e.width,e.height]),g=(0,d.useCallback)(t=>{if(!Math.abs(t.north-t.south+(t.east-t.west)))return;let n=-t.west+t.east,r=-t.north+t.south,i=e.width+n,a=e.height+r;if(i/a>=h){let e=i-a*h,[n,r]=an(t.east,t.west);t.west+=e*r,t.east-=e*n}else{let e=a-i/h,[n,r]=an(t.north,t.south);t.north+=e*n,t.south-=e*r}},[e.width,e.height,h]);Zt(()=>{s&&r&&r.updateNextFrame()}),(0,d.useEffect)(()=>{r&&r.updateNextFrame()},[r,c]);let _=(0,d.useCallback)(t=>{if(!r||!i||r.mode!==`sketch`)return;let{top:n,left:c}=i,l=r.viewerToWorld(t.pageX-c,t.pageY-n),u=o.current,d=!e.maintainAspectRatio&&p.current.alt,m=!d&&p.current.shift&&a.current?.indexOf(`-`)!==-1;if((a.current===`translate`||a.current===`east`||a.current===`north-east`||a.current===`south-east`)&&(f.current.east=l.x-(s.current?s.current.x:0),d&&(f.current.west=-f.current.east)),(a.current===`translate`||a.current===`west`||a.current===`north-west`||a.current===`south-west`)&&(f.current.west=l.x-(s.current?s.current.x:0),d&&(f.current.east=-f.current.west)),(a.current===`translate`||a.current===`north`||a.current===`north-east`||a.current===`north-west`)&&(f.current.north=l.y-(s.current?s.current.y:0),d&&(f.current.south=-f.current.north)),(a.current===`translate`||a.current===`south`||a.current===`south-west`||a.current===`south-east`)&&(f.current.south=l.y-(s.current?s.current.y:0),d&&(f.current.north=-f.current.south)),(e.maintainAspectRatio||m)&&g(f.current),u){let t=f.current.west,n=f.current.north,i=e.width+f.current.east,a=e.height+f.current.south;u.points[1]=Math.min(t,i),u.points[2]=Math.min(n,a),u.points[3]=Math.max(t,i),u.points[4]=Math.max(n,a),r.updateNextFrame()}},[r,e.width,e.height,e.maintainAspectRatio,i]);rn(`mousemove`,_,[e.width,e.height,i]),rn(`pointermove`,_,[e.width,e.height,i]);let v=(0,d.useRef)();return(0,d.useEffect)(()=>{v.current=()=>{if(u.current){let n=f.current.west,r=f.current.north,i=e.width+f.current.east,o=e.height+f.current.south,c=Math.min(n,i),d=Math.min(r,o),p=Math.max(n,i),m=Math.max(r,o),h={x:(e.x||0)+c,y:(e.y||0)+d,width:p-c||1,height:m-d||1};e.maintainAspectRatio,t(h),a.current=void 0,s.current=void 0,f.current.east=0,f.current.west=0,f.current.north=0,f.current.south=0,u.current=!1,l(!1)}}},[t,e.height,e.width,e.x,e.y]),(0,d.useEffect)(()=>{let e=()=>{v.current&&v.current()};return window.addEventListener(`pointerup`,e),window.addEventListener(`touchend`,e),()=>{window.removeEventListener(`pointerup`,e),window.removeEventListener(`touchend`,e)}},[]),{portalRef:o,mode:n,mouseEvent:m,onPointerMoveCallback:_,isEditing:c}};function cn({handleSize:e,resizable:t,onSave:n,children:r,maintainAspectRatio:i,disableCardinalControls:a,...o}){let s=e===void 0?i?10:8:e,{portalRef:c,mode:l,mouseEvent:u,isEditing:p}=sn({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:i},n),m=(0,d.useMemo)(()=>u(`translate`),[u]),h=(0,d.useMemo)(()=>u(`east`),[u]),g=(0,d.useMemo)(()=>u(`west`),[u]),_=(0,d.useMemo)(()=>u(`south`),[u]),v=(0,d.useMemo)(()=>u(`north`),[u]),y=(0,d.useMemo)(()=>u(`south-east`),[u]),b=(0,d.useMemo)(()=>u(`south-west`),[u]),x=(0,d.useMemo)(()=>u(`north-east`),[u]),S=(0,d.useMemo)(()=>u(`north-west`),[u]),C=l===`sketch`,w={zIndex:999,boxShadow:`0px 2px 3px 0 rgba(0,0,0,0.2)`,border:`1px solid rgba(155,155,155,.7)`,borderRadius:i||a?`50%`:2,position:`absolute`,background:`#fff`,pointerEvents:p?`none`:C?`initial`:`none`};return(0,f.jsx)(f.Fragment,{children:(0,f.jsxs)(`world-object`,{...o,children:[r,C&&t?(0,f.jsx)(nn,{ref:c,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:C&&t?(0,f.jsxs)(f.Fragment,{children:[(0,f.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:p?`none`:C?`initial`:`none`}}),i?null:(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`div`,{title:`east`,onTouchStart:h,onMouseDown:h,style:{...w,cursor:`e-resize`,height:s*2,width:s,right:0,top:`50%`,opacity:a?0:1,transform:`translate(${s/2}px, -${s}px)`}}),(0,f.jsx)(`div`,{title:`west`,onMouseDown:g,style:{...w,cursor:`w-resize`,position:`absolute`,height:s*2,width:s,left:0,top:`50%`,opacity:a?0:1,transform:`translate(-${s/2}px, -${s}px)`}}),(0,f.jsx)(`div`,{title:`north`,onMouseDown:v,style:{...w,cursor:`n-resize`,position:`absolute`,height:s,width:s*2,left:`50%`,top:0,opacity:a?0:1,transform:`translate(-${s}px, -${s/2}px)`}}),(0,f.jsx)(`div`,{title:`south`,onMouseDown:_,style:{...w,cursor:`s-resize`,position:`absolute`,height:s,width:s*2,left:`50%`,bottom:0,opacity:a?0:1,transform:`translate(-${s}px, ${s/2}px)`}})]}),(0,f.jsx)(`div`,{title:`north-east`,onMouseDown:x,style:{...w,cursor:`ne-resize`,position:`absolute`,height:s,width:s,right:0,top:0,transform:`translate(${s/2}px, -${s/2}px)`}}),(0,f.jsx)(`div`,{title:`south-east`,onMouseDown:y,style:{...w,cursor:`se-resize`,position:`absolute`,height:s,width:s,bottom:0,right:0,transform:`translate(${s/2}px, ${s/2}px)`}}),(0,f.jsx)(`div`,{title:`south-west`,onMouseDown:b,style:{...w,cursor:`sw-resize`,position:`absolute`,height:s,width:s,bottom:0,left:0,transform:`translate(-${s/2}px, ${s/2}px)`}}),(0,f.jsx)(`div`,{title:`north-west`,onMouseDown:S,style:{...w,cursor:`nw-resize`,position:`absolute`,height:s,width:s,top:0,left:0,transform:`translate(-${s/2}px, -${s/2}px)`}})]}):null}):null]})})}function ln({interactive:e,region:t,onClick:n,onSave:r,maintainAspectRatio:i,disableCardinalControls:a,isEditing:o,rotation:s,style:c={backgroundColor:`rgba(0,0,0,.5)`}}){let l=(0,d.useCallback)(e=>{r({id:t.id,x:t.x,y:t.y,height:t.height,width:t.width,...e})},[r,t.id,t.x,t.y,t.height,t.width]);return(0,f.jsx)(cn,{x:t.x,y:t.y,rotation:s,width:t.width,height:t.height,resizable:o,onSave:l,maintainAspectRatio:i,disableCardinalControls:a,children:(0,f.jsx)(`box`,{interactive:e,onContextMenu:e=>{e.preventDefault()},onClick:e=>{e.preventDefault(),e.stopPropagation(),n(t)},target:{x:0,y:0,width:t.width,height:t.height},style:c})})}const un=e=>{let t=e.width/(e.crop?.width||e.tiles.width),n=e.tiles.imageService.sizes||[],r=e.enableThumbnail,i=e.enableSizes,a=(0,d.useMemo)(()=>{let t=e.tiles.imageService.id||e.tiles.imageService[`@id`];return t&&t.endsWith(`/info.json`)?t.slice(0,-10):t},[e.tiles.imageService.id]),o=(0,d.useMemo)(()=>{let t=e.tiles.imageService.tiles||[];if(!t.length){let t=e.width,n=[1],r=1;for(;2**r<t;)r*=2,n.push(r);return[]}return t},[e.tiles.imageService]),s=(0,d.useMemo)(()=>{let t=e.tiles.imageService;return(t&&t[`@context`]?Array.isArray(t[`@context`])?t[`@context`]:[t[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1},[e.tiles.imageService.id]);return(0,f.jsx)(`world-object`,{rotation:e.rotation,scale:t,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:(0,f.jsxs)(`composite-image`,{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[r&&e.tiles.thumbnail?(0,f.jsx)(`world-image`,{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,i&&n.map((t,n)=>(0,f.jsx)(`world-image`,{uri:`${a}/full/${t.width},${t.height}/0/default.jpg`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:t.width,height:t.height},crop:e.crop},n)),o.map(t=>(t.scaleFactors||[]).map(n=>(0,f.jsx)(`tiled-image`,{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},tile:t,scaleFactor:n,crop:e.crop,version3:s},`${e.tiles.imageService.id}-tile-${n}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)};function dn(e){return e.id||e[`@id`]}function fn(){return typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}function pn(){let e=fn();if(e.IIIF_VAULT!==void 0)return e.IIIF_VAULT;if(e.IIIFVault===void 0)throw Error(`Vault not found`);return e.IIIF_VAULT=new e.IIIFVault.Vault,e.IIIF_VAULT}const $={};function mn(){return $.helper||($.vault=pn(),$.loader=new h.ImageServiceLoader,$.helper=(0,g.createThumbnailHelper)($.vault,{imageServiceLoader:$.loader})),$}async function hn(e,t,n){let{loader:r}=mn(),i=await r.loadService({id:e,width:t,height:n});return{id:dn(i),width:t,height:n,imageService:i,thumbnail:void 0}}async function gn(e,t=512){let{vault:n,loader:r,helper:i}=mn(),a=[];for(let o of e.items)for(let s of n.get(o).items){let o=n.get(n.get(s).body[0]).service[0],c=await hn(o.id,e.width,e.height),{best:l}=await i.getBestThumbnailAtSize(n,r,e,{maxHeight:t,maxWidth:t},!0);l&&(c.thumbnail=l),a.push(c)}return a}async function _n(e){let{vault:t}=mn(),n=[];for(let r of e.items){let e=t.get(r);n.push(...await gn(e))}return n}async function vn(e){try{let{vault:t}=mn(),n=await t.loadManifest(e);return n?_n(n):[]}catch(e){return console.log(`ERR`,e),[]}}const yn=e=>{let[t,n]=(0,d.useState)();return(0,d.useEffect)(()=>{hn(e.id,e.width,e.height).then(e=>{n(e)})},[e.height,e.id,e.width]),(0,f.jsx)(`world-object`,{x:e.x||0,y:e.y||0,width:e.width,height:e.height,scale:e.scale,children:t?(0,f.jsx)(un,{tiles:t,x:e.x,y:e.y,width:e.crop?.width||e.width,height:e.crop?.height||e.height,rotation:e.rotation,crop:e.crop,enableSizes:e.enableSizes,enableThumbnail:e.enableThumbnail,renderOptions:e.renderOptions,children:e.children}):null})},bn=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useAfterPaint`,e):()=>{},t)},xn=(e,{onCreated:t,resetWorldOnChange:n=!0,mode:r=`explore`,cover:i,containerRef:a,...o})=>{let[s,c]=(0,d.useState)(!1),[l,u]=(0,d.useState)(void 0),[p,m]=(0,d.useState)(void 0),h=(0,d.useRef)(),g=(0,d.useRef)(),_=(0,d.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[v,y,b,x]=Bt(void 0,{width:o.width,height:o.height});X(()=>{let e=document.createElement(`canvas`);e.height=_.height,e.width=_.width,h.current=e},[]),X(()=>{let e=h.current;e&&(e.height=_.height,e.width=_.width)},[_.width,_.height]),(0,d.useEffect)(()=>y?y.runtime.registerHook(`useAfterFrame`,()=>{if(h.current)try{u(h.current.toDataURL())}catch(e){e instanceof Error&&m(e.message)}}):()=>{},[]),(0,d.useEffect)(()=>y?y.runtime.world.addLayoutSubscriber(e=>{e===`ready`&&c(!0)}):()=>{},[]),(0,d.useEffect)(()=>{y&&y.em&&y.em.updateBounds()},[_]),(0,d.useEffect)(()=>{y&&(y.runtime.mode=r)},[r]),(0,d.useEffect)(()=>{if(y){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),i?e.cover():e.goHome(),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}},[o.width,o.height]),X(()=>{let e=g.current;e&&(e.style.width=`${_.width}px`,e.style.height=`${_.height}px`,e.style.pointerEvents=`none`,e.style.overflow=`hidden`)},[_.height,_.width]),X(()=>{let e=()=>{if(y&&y.runtime){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[y,o.height,o.width]);let S=(0,d.useCallback)(function(e){let n=()=>{y&&(y.ready=!0)};return(0,d.useEffect)(()=>{if(y){let e=t&&t(y);e&&e.then?e.then(n):n();return}return()=>{}},[]),e.children},[y]);return(0,d.useEffect)(()=>{if(y&&y.runtime){let e=y.runtime;if(n)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome({cover:i})})}return()=>{}},[y,i,n]),X(()=>{y&&Ot.render((0,f.jsx)(S,{children:(0,f.jsx)(q.Provider,{value:r,children:(0,f.jsx)(J.Provider,{value:y,children:e})})}),y.runtime)},[y,r,e]),{loading:!l&&s,uri:l,imageError:p}},Sn=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useBeforeFrame`,e):()=>{},t)},Cn=(e=[])=>{let[t,n]=(0,d.useState)(e),[r,i]=(0,d.useState)(!1),[a,o]=(0,d.useState)(),s=(0,d.useCallback)(()=>{i(!0),o(void 0)},[]),c=(0,d.useCallback)(e=>{i(!0),o(e)},[]),l=e=>{n(t=>t.map(t=>t.id===e.id?e:t))},u=(0,d.useCallback)(e=>{let t=T();n(n=>[...n,{id:t,...e}]),i(!1),o(void 0)},[]);return{isEditing:r,onDeselect:(0,d.useCallback)(()=>{i(!1),o(void 0)},[]),selectedAnnotation:a,onCreateNewAnnotation:u,annotations:t,onUpdateAnnotation:l,setIsEditing:i,setSelectedAnnotation:o,editAnnotation:c,addNewAnnotation:s}};function wn(e){return e.current===`sketch`}function Tn(e,t){return e?t?{...e,...t||{},":hover":e[`:hover`]?Object.assign(e[`:hover`]||{},t[`:hover`]||{}):t[`:hover`],":active":e[`:active`]?Object.assign(e[`:active`]||{},t[`:active`]||{}):t[`:hover`]}:e:t}exports.Atlas=Kt,exports.AtlasAuto=Jt,exports.AtlasContext=J,exports.BoundsContext=ct,exports.Box=B,exports.BrowserEventManager=Pt,exports.CanvasRenderer=Ge,exports.CompositeRenderer=Ke,exports.CompositeResource=F,exports.DebugRenderer=qe,exports.DrawBox=en,exports.Geometry=Ce,exports.GridBuilder=Je,exports.HTMLPortal=nn,exports.ImageService=yn,exports.ImageTexture=te,exports.ModeContext=q,exports.ModeProvider=st,exports.OverlayRenderer=Nt,exports.ReactAtlas=Ot,exports.RegionHighlight=ln,exports.ResizeWorldItem=cn,exports.Runtime=ye,exports.SingleImage=A,exports.StaticRenderer=It,exports.Text=V,exports.TileSet=un,exports.TiledImage=P,exports.WebGLRenderer=At,exports.World=R,exports.WorldObject=L,exports.Zone=se,exports.activateEvents=xt,exports.applyProps=bt,exports.bounceOut=W,exports.canDrag=wn,exports.createDefaultEventMap=v,exports.defaultConfig=it,exports.defaultPreset=Ft,exports.easingFunctions=G,exports.fromImage=ae,exports.getId=dn,exports.getTileFromCanvas=gn,exports.getTileFromImageService=hn,exports.getTiles=vn,exports.getTilesFromManifest=_n,exports.mergeStyles=Tn,exports.popmotionController=at,exports.presets=Rt,exports.staticPreset=Lt,exports.supportedEventAttributes=_,exports.supportedEventMap=y,exports.unmountComponentAtNode=Dt,exports.useAfterFrame=Xt,exports.useAfterPaint=bn,exports.useAtlas=Yt,exports.useAtlasImage=xn,exports.useBeforeFrame=Sn,exports.useCanvas=Qt,exports.useControlledAnnotationList=Cn,exports.useFrame=Zt,exports.useMode=ot,exports.useResizeWorldItem=sn,exports.useRuntime=Q,exports.useWorldEvent=rn;
81
+ width: var(--atlas-container-width, ${ri(u??`100%`)});
82
+ height: var(--atlas-container-height, ${ri(l||(t?f.height:512))})
83
+ }`,[t,g,f.height,l,u]);return(0,h.jsxs)(Qn,{ref:a,className:_,...n,children:[f.width?(0,h.jsx)(ni,{width:f.width||100,height:f.height||100,...d,children:i.children}):null,i.hideInlineStyle?null:(0,h.jsx)(`style`,{children:v}),r]})}),ai=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useAfterFrame`,e):()=>{},t)},oi=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useFrame`,e):()=>{},t)},si=()=>{let e=$n();return e&&e.canvas?e.canvas:void 0};function ci(){return(0,p.useContext)(bn)}const li=({onCreate:e})=>{let t=(0,p.useRef)({x:0,y:0}),n=si(),r=ci(),i=er(),[a,o]=(0,p.useState)(),[s,c]=(0,p.useState)(),l=Sn();return oi(()=>{i&&a&&!s&&(i.pendingUpdate=!0)},[a,s]),ai(()=>{if(a&&n&&i){let e=n.getContext(`2d`);if(e){let{x:n,y:r,width:o,height:c}=i.worldToViewer(a.x,a.y,(s?s.x:t.current.x)-a.x,(s?s.y:t.current.y)-a.y);e.lineWidth=s?3:1,e.strokeStyle=`#fff`,e.strokeRect(n,r,o,c),e.lineWidth=s?3:1,e.strokeStyle=`#000`,e.strokeRect(n+1,r+1,o-2,c-2)}}},[a,s]),(0,p.useEffect)(()=>{let e=e=>{if(r&&i){let{x:n,y:a}=i.viewerToWorld(e.clientX-r.left,e.clientY-r.top);t.current.x=~~n,t.current.y=~~a}};return n?(n.addEventListener(`mousemove`,e),()=>n.removeEventListener(`mousemove`,e)):()=>{}},[r,n,i]),(0,p.useEffect)(()=>{let e=e=>{l===`sketch`&&(o({x:Math.round(t.current.x),y:Math.round(t.current.y)}),c(void 0))};return n?(n.addEventListener(`mousedown`,e),()=>n.removeEventListener(`mousedown`,e)):()=>{}},[n,l]),(0,p.useEffect)(()=>{let e=e=>{a&&!s&&c({x:Math.round(t.current.x),y:Math.round(t.current.y)})};return n?(n.addEventListener(`mouseup`,e),()=>n.removeEventListener(`mouseup`,e)):()=>{}},[n,a,s]),(0,p.useEffect)(()=>{a&&s&&e({x:Math.min(a.x,s.x),y:Math.min(a.y,s.y),width:Math.abs(s.x-a.x),height:Math.abs(s.y-a.y)})},[a,e,s]),null},ui=p.default.forwardRef(({children:e,...t},n)=>{let r=(0,p.useRef)(),i=er(),a=(0,p.useRef)(0),o=(0,p.useRef)(),s=(0,p.useRef)();return oi(()=>{if(t.relative){let e=r.current;if(e&&i){let t=i.getScaleFactor();a.current!==t&&(a.current=t,e.style.transformOrigin=`0 0`,e.style.transform=`scale(${1/a.current})`,e.style.width=`${a.current*100}%`,e.style.height=`${a.current*100}%`,r.current&&o.current?.__owner.value?.rotation&&(e.style.transform=`scale(${1/a.current}) translate(50%, 50%) rotate(${o.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[t.relative]),(0,p.useLayoutEffect)(()=>{let i=o.current;n&&i&&(typeof n==`function`?n(i):n.current=i);async function a(){if(i&&i.__host){let n=t.relative?(0,h.jsx)(`div`,{ref:r,children:e}):e;await Ar(i.__host.element,n,s)}}i&&i.__host?a():i&&(i.__onCreate=a)},[n,e,o,t.relative]),(0,p.useLayoutEffect)(()=>()=>{s.current&&setTimeout(()=>{s.current.unmount()},0)},[]),(0,h.jsx)(`box`,{html:!0,...t,ref:o})});ui.displayName=`HTMLPortal`;const di=e=>{let t=e.width/(e.crop?.width||e.tiles.width),n=e.tiles.imageService.sizes||[],r=e.enableThumbnail,i=e.enableSizes,a=(0,p.useMemo)(()=>{let t=e.tiles.imageService.id||e.tiles.imageService[`@id`];return t&&t.endsWith(`/info.json`)?t.slice(0,-10):t},[e.tiles.imageService.id]),o=(0,p.useMemo)(()=>{let t=e.tiles.imageService.tiles||[];if(!t.length){let t=e.width,n=[1],r=1;for(;2**r<t;)r*=2,n.push(r);return[]}return t},[e.tiles.imageService]),s=(0,p.useMemo)(()=>{let t=e.tiles.imageService;return(t&&t[`@context`]?Array.isArray(t[`@context`])?t[`@context`]:[t[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1},[e.tiles.imageService.id]);return(0,h.jsx)(`world-object`,{rotation:e.rotation,scale:t,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:(0,h.jsxs)(`composite-image`,{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[r&&e.tiles.thumbnail?(0,h.jsx)(`world-image`,{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,i&&n.map((t,n)=>(0,h.jsx)(`world-image`,{uri:`${a}/full/${t.width},${t.height}/0/default.jpg`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:t.width,height:t.height},crop:e.crop},n)),o.map(t=>(t.scaleFactors||[]).map(n=>(0,h.jsx)(`tiled-image`,{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},tile:t,scaleFactor:n,crop:e.crop,version3:s},`${e.tiles.imageService.id}-tile-${n}-${t.width}x${t.height||t.width}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)},fi=e=>{let[t,n]=(0,p.useState)();return(0,p.useEffect)(()=>{mt(e.id,e.width,e.height).then(e=>{n(e)})},[e.height,e.id,e.width]),(0,h.jsx)(`world-object`,{x:e.x||0,y:e.y||0,width:e.width,height:e.height,scale:e.scale,children:t?(0,h.jsx)(di,{tiles:t,x:e.x,y:e.y,width:e.crop?.width||e.width,height:e.crop?.height||e.height,rotation:e.rotation,crop:e.crop,enableSizes:e.enableSizes,enableThumbnail:e.enableThumbnail,renderOptions:e.renderOptions,children:e.children}):null})},pi=(0,p.createContext)(null);pi.displayName=`MapProjection`;function mi(){let e=(0,p.useContext)(pi);if(!e)throw Error(`useMapProjection must be used within <MapObject />`);return e}function hi(){return mi().projection}function gi(e,t,n,r,i){switch(e.type){case`Point`:{let t=n(e.coordinates[0],e.coordinates[1]);return[{kind:`point`,x:t.x,y:t.y,key:`${r}-point`,feature:i}]}case`MultiPoint`:return e.coordinates.map(([e,t],a)=>{let o=n(e,t);return{kind:`point`,x:o.x,y:o.y,key:`${r}-point-${a}`,feature:i}});case`LineString`:return[{kind:`shape`,open:!0,points:t(e.coordinates),key:`${r}-line`,feature:i}];case`MultiLineString`:return e.coordinates.map((e,n)=>({kind:`shape`,open:!0,points:t(e),key:`${r}-line-${n}`,feature:i}));case`Polygon`:return e.coordinates.map((e,n)=>({kind:`shape`,open:!1,points:t(e),key:`${r}-polygon-${n}`,feature:i}));case`MultiPolygon`:{let n=[];for(let a=0;a<e.coordinates.length;a++){let o=e.coordinates[a];for(let e=0;e<o.length;e++)n.push({kind:`shape`,open:!1,points:t(o[e]),key:`${r}-polygon-${a}-${e}`,feature:i})}return n}default:return[]}}function _i(e,t){if(!e)return[];if(e.type===`FeatureCollection`){let n=e,r=[];for(let e=0;e<n.features.length;e++){let i=n.features[e];i.geometry&&r.push(...gi(i.geometry,t.projectRing,t.lngLatToWorld,`feature-${i.id||e}`,i))}return r}if(e.type===`Feature`){let n=e;return n.geometry?gi(n.geometry,t.projectRing,t.lngLatToWorld,`feature-${n.id||0}`,n):[]}return gi(e,t.projectRing,t.lngLatToWorld,`geometry`)}function vi(){let e=hi();return(0,p.useMemo)(()=>({project:t=>_i(t,e)}),[e])}const yi=({data:e,markerSize:t=8,markerStyle:n={backgroundColor:`rgba(220, 38, 38, 0.9)`,border:`1px solid white`},lineStyle:r={borderColor:`#1d4ed8`,borderWidth:`2`,borderStyle:`solid`},polygonStyle:i={backgroundColor:`rgba(37, 99, 235, 0.25)`,borderColor:`#1d4ed8`,borderWidth:`2`,borderStyle:`solid`},interactive:a})=>{let o=mi(),s=vi().project(e);return p.default.createElement(p.default.Fragment,null,s.map(e=>e.kind===`point`?p.default.createElement(`box`,{key:e.key,interactive:a,target:{x:e.x-t/2,y:e.y-t/2,width:t,height:t},style:n}):p.default.createElement(`shape`,{id:e.key,key:e.key,interactive:a,open:e.open,target:{x:0,y:0,width:o.width,height:o.height},points:e.points,style:e.open?r:i})))},bi=({bounds:e,width:t,height:n,preserveAspectRatio:r=!0,children:i,...a})=>{Be(e);let o=(0,p.useMemo)(()=>{if(!r)return{x:0,y:0,width:t,height:n};let i=(Ve(e.east)-Ve(e.west))/(He(e.south)-He(e.north)),a=t/n;if(!Number.isFinite(i)||i<=0)return{x:0,y:0,width:t,height:n};if(a>i){let e=n*i;return{x:(t-e)/2,y:0,width:e,height:n}}let o=t/i;return{x:0,y:(n-o)/2,width:t,height:o}},[e.east,e.north,e.south,e.west,n,r,t]),s=(0,p.useMemo)(()=>{let t=Ye({bounds:e,width:o.width,height:o.height});return{lngLatToWorld(e,n){let r=t.lngLatToWorld(e,n);return{x:r.x+o.x,y:r.y+o.y}},worldToLngLat(e,n){return t.worldToLngLat(e-o.x,n-o.y)},lngLatBoundsToWorldRect(e){let n=t.lngLatBoundsToWorldRect(e);return{x:n.x+o.x,y:n.y+o.y,width:n.width,height:n.height}},worldRectToLngLatBounds(e){return t.worldRectToLngLatBounds({x:e.x-o.x,y:e.y-o.y,width:e.width,height:e.height})},projectRing(e){return e.map(([e,n])=>{let r=t.lngLatToWorld(e,n);return[r.x+o.x,r.y+o.y]})}}},[e,o.height,o.width,o.x,o.y]),c=(0,p.useMemo)(()=>({bounds:e,width:t,height:n,mapRect:o,projection:s}),[e,n,o,s,t]);return p.default.createElement(pi.Provider,{value:c},p.default.createElement(`world-object`,{width:t,height:n,...a},i))},xi=16e3,Si=12e4,Ci=12,wi=({id:e,tileUrlTemplate:t,tileSource:n,subdomains:r,tileSize:i=256,minZoom:a=0,maxZoom:o=19,maxQualityLevels:s=12,maxTilesPerLayer:c=16e3,maxTotalTiles:l=12e4,useDevicePixelRatio:u=!1,renderOptions:d})=>{let f=mi(),m=Math.max(0,Math.floor(a)),h=Math.max(m,Math.floor(o)),g=n||t||Xe,_=(0,p.useMemo)(()=>{let e=[],t=0;for(let n=m;n<=h;n++){let r=tt({bounds:f.bounds,zoom:n});if(r.count>c||t+r.count>l)break;t+=r.count,e.push({zoom:n,coverage:r})}if(!e.length){let t=m;for(;t>0&&!(tt({bounds:f.bounds,zoom:t}).count<=c);)--t;e.push({zoom:t,coverage:tt({bounds:f.bounds,zoom:t})})}if(e.length>s){let t=e[0],n=e[e.length-1],r=Math.max(t.zoom+1,n.zoom-(s-2));return[t,...e.filter(e=>e.zoom>=r)].filter((e,t,n)=>t===0||e.zoom!==n[t-1].zoom)}return e},[f.bounds,s,c,l,h,m]),v=(0,p.useMemo)(()=>({layerPolicy:`always-blend`,renderLayers:2,renderSmallestFallback:!0,prefetchRadius:0,quality:.9,useDevicePixelRatio:u,fadeInMs:300,fadeFallbackTiles:!0,fadeOnLayerChange:!0,clipToBounds:!0,...d||{}}),[d,u]),y=typeof g==`string`?g:`function-source`,b=e||`map-tile-layer-${f.width}x${f.height}`,x=_.map(({zoom:e,coverage:t})=>{let n=t.tileSpanX*i,a=t.tileSpanY*i,o=Math.max(f.mapRect.width/n,f.mapRect.height/a);return p.default.createElement(`map-tiled-image`,{key:`${b}-${e}-${y}-${i}`,id:`${b}-z${e}`,bounds:f.bounds,worldWidth:f.mapRect.width,worldHeight:f.mapRect.height,zoom:e,scaleFactor:o,tileSize:i,tileSource:g,subdomains:r})}),S=p.default.createElement(`composite-image`,{id:b,width:f.mapRect.width,height:f.mapRect.height,renderOptions:v},x);return f.mapRect.x===0&&f.mapRect.y===0?S:p.default.createElement(`world-object`,{id:`${b}-frame`,x:f.mapRect.x,y:f.mapRect.y,width:f.mapRect.width,height:f.mapRect.height},S)},Ti=(e,t,n=[])=>{let r=er();(0,p.useEffect)(()=>{if(r){let n=t,i=y[e];r.world.activatedEvents.push(i);let a=i.slice(2).toLowerCase();return r.world.addEventListener(a,n),()=>{r.world.removeEventListener(a,n)}}return()=>{}},[r?r.world:void 0,e,...n])};function Ei(e,t){if(e===0)return[0,1];if(t===0)return[1,0];let n=Math.abs(e)/Math.abs(t);return[n,1-n]}function Di(){let e=(0,p.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,p.useLayoutEffect)(()=>{function t(t){t.key===`Shift`&&(e.current.shift=!0),t.key===`Control`&&(e.current.ctrl=!0),t.key===`Alt`&&(e.current.alt=!0)}function n(t){t.key===`Shift`&&(e.current.shift=!1),t.key===`Control`&&(e.current.ctrl=!1),t.key===`Alt`&&(e.current.alt=!1)}return window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,n),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,n)}},[]),e}const Oi=(e,t)=>{let n=Sn(),r=er(),i=ci(),a=(0,p.useRef)(),o=(0,p.useRef)(null),s=(0,p.useRef)(),[c,l]=(0,p.useState)(!1),u=(0,p.useRef)(!1),d=(0,p.useRef)({north:0,south:0,east:0,west:0}),f=Di(),m=(0,p.useCallback)(e=>t=>{if(u.current=!0,l(!0),i&&r){let{top:n,left:o}=i,c=r.viewerToWorld(t.pageX-o,t.pageY-n);s.current={x:c.x,y:c.y},a.current=e}},[i,r]),h=(0,p.useMemo)(()=>e.width/e.height,[e.width,e.height]),g=(0,p.useCallback)(t=>{if(!Math.abs(t.north-t.south+(t.east-t.west)))return;let n=-t.west+t.east,r=-t.north+t.south,i=e.width+n,a=e.height+r;if(i/a>=h){let e=i-a*h,[n,r]=Ei(t.east,t.west);t.west+=e*r,t.east-=e*n}else{let e=a-i/h,[n,r]=Ei(t.north,t.south);t.north+=e*n,t.south-=e*r}},[e.width,e.height,h]);oi(()=>{s&&r&&r.updateNextFrame()}),(0,p.useEffect)(()=>{r&&r.updateNextFrame()},[r,c]);let _=(0,p.useCallback)(t=>{if(!r||!i||r.mode!==`sketch`)return;let{top:n,left:c}=i,l=r.viewerToWorld(t.pageX-c,t.pageY-n),u=o.current,p=!e.maintainAspectRatio&&f.current.alt,m=!p&&f.current.shift&&a.current?.indexOf(`-`)!==-1;if((a.current===`translate`||a.current===`east`||a.current===`north-east`||a.current===`south-east`)&&(d.current.east=l.x-(s.current?s.current.x:0),p&&(d.current.west=-d.current.east)),(a.current===`translate`||a.current===`west`||a.current===`north-west`||a.current===`south-west`)&&(d.current.west=l.x-(s.current?s.current.x:0),p&&(d.current.east=-d.current.west)),(a.current===`translate`||a.current===`north`||a.current===`north-east`||a.current===`north-west`)&&(d.current.north=l.y-(s.current?s.current.y:0),p&&(d.current.south=-d.current.north)),(a.current===`translate`||a.current===`south`||a.current===`south-west`||a.current===`south-east`)&&(d.current.south=l.y-(s.current?s.current.y:0),p&&(d.current.north=-d.current.south)),(e.maintainAspectRatio||m)&&g(d.current),u){let t=d.current.west,n=d.current.north,i=e.width+d.current.east,a=e.height+d.current.south;u.points[1]=Math.min(t,i),u.points[2]=Math.min(n,a),u.points[3]=Math.max(t,i),u.points[4]=Math.max(n,a),r.updateNextFrame()}},[r,e.width,e.height,e.maintainAspectRatio,i]);Ti(`mousemove`,_,[e.width,e.height,i]),Ti(`pointermove`,_,[e.width,e.height,i]);let v=(0,p.useRef)();return(0,p.useEffect)(()=>{v.current=()=>{if(u.current){let n=d.current.west,r=d.current.north,i=e.width+d.current.east,o=e.height+d.current.south,c=Math.min(n,i),f=Math.min(r,o),p=Math.max(n,i),m=Math.max(r,o),h={x:(e.x||0)+c,y:(e.y||0)+f,width:p-c||1,height:m-f||1};e.maintainAspectRatio,t(h),a.current=void 0,s.current=void 0,d.current.east=0,d.current.west=0,d.current.north=0,d.current.south=0,u.current=!1,l(!1)}}},[t,e.height,e.width,e.x,e.y]),(0,p.useEffect)(()=>{let e=()=>{v.current&&v.current()};return window.addEventListener(`pointerup`,e),window.addEventListener(`touchend`,e),()=>{window.removeEventListener(`pointerup`,e),window.removeEventListener(`touchend`,e)}},[]),{portalRef:o,mode:n,mouseEvent:m,onPointerMoveCallback:_,isEditing:c}};function ki({handleSize:e,resizable:t,onSave:n,children:r,maintainAspectRatio:i,disableCardinalControls:a,...o}){let s=e===void 0?i?10:8:e,{portalRef:c,mode:l,mouseEvent:u,isEditing:d}=Oi({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:i},n),f=(0,p.useMemo)(()=>u(`translate`),[u]),m=(0,p.useMemo)(()=>u(`east`),[u]),g=(0,p.useMemo)(()=>u(`west`),[u]),_=(0,p.useMemo)(()=>u(`south`),[u]),v=(0,p.useMemo)(()=>u(`north`),[u]),y=(0,p.useMemo)(()=>u(`south-east`),[u]),b=(0,p.useMemo)(()=>u(`south-west`),[u]),x=(0,p.useMemo)(()=>u(`north-east`),[u]),S=(0,p.useMemo)(()=>u(`north-west`),[u]),C=l===`sketch`,w={zIndex:999,boxShadow:`0px 2px 3px 0 rgba(0,0,0,0.2)`,border:`1px solid rgba(155,155,155,.7)`,borderRadius:i||a?`50%`:2,position:`absolute`,background:`#fff`,pointerEvents:d?`none`:C?`initial`:`none`};return(0,h.jsx)(h.Fragment,{children:(0,h.jsxs)(`world-object`,{...o,children:[r,C&&t?(0,h.jsx)(ui,{ref:c,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:C&&t?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{onMouseDown:f,onTouchStart:f,style:{display:`block`,width:`100%`,height:`100%`,position:`relative`,border:`1px solid rgba(155,155,155, .7)`,boxSizing:`border-box`,pointerEvents:d?`none`:C?`initial`:`none`}}),i?null:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{title:`east`,onTouchStart:m,onMouseDown:m,style:{...w,cursor:`e-resize`,height:s*2,width:s,right:0,top:`50%`,opacity:a?0:1,transform:`translate(${s/2}px, -${s}px)`}}),(0,h.jsx)(`div`,{title:`west`,onMouseDown:g,style:{...w,cursor:`w-resize`,position:`absolute`,height:s*2,width:s,left:0,top:`50%`,opacity:a?0:1,transform:`translate(-${s/2}px, -${s}px)`}}),(0,h.jsx)(`div`,{title:`north`,onMouseDown:v,style:{...w,cursor:`n-resize`,position:`absolute`,height:s,width:s*2,left:`50%`,top:0,opacity:a?0:1,transform:`translate(-${s}px, -${s/2}px)`}}),(0,h.jsx)(`div`,{title:`south`,onMouseDown:_,style:{...w,cursor:`s-resize`,position:`absolute`,height:s,width:s*2,left:`50%`,bottom:0,opacity:a?0:1,transform:`translate(-${s}px, ${s/2}px)`}})]}),(0,h.jsx)(`div`,{title:`north-east`,onMouseDown:x,style:{...w,cursor:`ne-resize`,position:`absolute`,height:s,width:s,right:0,top:0,transform:`translate(${s/2}px, -${s/2}px)`}}),(0,h.jsx)(`div`,{title:`south-east`,onMouseDown:y,style:{...w,cursor:`se-resize`,position:`absolute`,height:s,width:s,bottom:0,right:0,transform:`translate(${s/2}px, ${s/2}px)`}}),(0,h.jsx)(`div`,{title:`south-west`,onMouseDown:b,style:{...w,cursor:`sw-resize`,position:`absolute`,height:s,width:s,bottom:0,left:0,transform:`translate(-${s/2}px, ${s/2}px)`}}),(0,h.jsx)(`div`,{title:`north-west`,onMouseDown:S,style:{...w,cursor:`nw-resize`,position:`absolute`,height:s,width:s,top:0,left:0,transform:`translate(-${s/2}px, -${s/2}px)`}})]}):null}):null]})})}function Ai({interactive:e,region:t,onClick:n,onSave:r,maintainAspectRatio:i,disableCardinalControls:a,isEditing:o,rotation:s,style:c={backgroundColor:`rgba(0,0,0,.5)`}}){let l=(0,p.useCallback)(e=>{r({id:t.id,x:t.x,y:t.y,height:t.height,width:t.width,...e})},[r,t.id,t.x,t.y,t.height,t.width]);return(0,h.jsx)(ki,{x:t.x,y:t.y,rotation:s,width:t.width,height:t.height,resizable:o,onSave:l,maintainAspectRatio:i,disableCardinalControls:a,children:(0,h.jsx)(`box`,{interactive:e,onContextMenu:e=>{e.preventDefault()},onClick:e=>{e.preventDefault(),e.stopPropagation(),n(t)},target:{x:0,y:0,width:t.width,height:t.height},style:c})})}const ji=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useAfterPaint`,e):()=>{},t)},Mi=(e,{onCreated:t,resetWorldOnChange:n=!0,mode:r=`explore`,cover:i,containerRef:a,...o})=>{let[s,c]=(0,p.useState)(!1),[l,u]=(0,p.useState)(void 0),[d,f]=(0,p.useState)(void 0),m=(0,p.useRef)(),g=(0,p.useRef)(),_=(0,p.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[v,y,b,x]=Qr(void 0,{width:o.width,height:o.height});Xn(()=>{let e=document.createElement(`canvas`);e.height=_.height,e.width=_.width,m.current=e},[]),Xn(()=>{let e=m.current;e&&(e.height=_.height,e.width=_.width)},[_.width,_.height]),(0,p.useEffect)(()=>y?y.runtime.registerHook(`useAfterFrame`,()=>{if(m.current)try{u(m.current.toDataURL())}catch(e){e instanceof Error&&f(e.message)}}):()=>{},[]),(0,p.useEffect)(()=>y?y.runtime.world.addLayoutSubscriber(e=>{e===`ready`&&c(!0)}):()=>{},[]),(0,p.useEffect)(()=>{y&&y.em&&y.em.updateBounds()},[_]),(0,p.useEffect)(()=>{y&&(y.runtime.mode=r)},[r]),(0,p.useEffect)(()=>{if(y){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),i?e.cover():e.goHome(),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}},[o.width,o.height]),Xn(()=>{let e=g.current;e&&(e.style.width=`${_.width}px`,e.style.height=`${_.height}px`,e.style.pointerEvents=`none`,e.style.overflow=`hidden`)},[_.height,_.width]),Xn(()=>{let e=()=>{if(y&&y.runtime){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[y,o.height,o.width]);let S=(0,p.useCallback)(function(e){let n=()=>{y&&(y.ready=!0)};return(0,p.useEffect)(()=>{if(y){let e=t&&t(y);e&&e.then?e.then(n):n();return}return()=>{}},[]),e.children},[y]);return(0,p.useEffect)(()=>{if(y&&y.runtime){let e=y.runtime;if(n)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome({cover:i})})}return()=>{}},[y,i,n]),Xn(()=>{y&&Yn.render((0,h.jsx)(S,{children:(0,h.jsx)(xn.Provider,{value:r,children:(0,h.jsx)(yn.Provider,{value:y,children:e})})}),y.runtime)},[y,r,e]),{loading:!l&&s,uri:l,imageError:d}},Ni=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useBeforeFrame`,e):()=>{},t)},Pi=(e=[])=>{let[t,n]=(0,p.useState)(e),[r,i]=(0,p.useState)(!1),[a,o]=(0,p.useState)(),s=(0,p.useCallback)(()=>{i(!0),o(void 0)},[]),c=(0,p.useCallback)(e=>{i(!0),o(e)},[]),l=e=>{n(t=>t.map(t=>t.id===e.id?e:t))},u=(0,p.useCallback)(e=>{let t=K();n(n=>[...n,{id:t,...e}]),i(!1),o(void 0)},[]);return{isEditing:r,onDeselect:(0,p.useCallback)(()=>{i(!1),o(void 0)},[]),selectedAnnotation:a,onCreateNewAnnotation:u,annotations:t,onUpdateAnnotation:l,setIsEditing:i,setSelectedAnnotation:o,editAnnotation:c,addNewAnnotation:s}};function Fi(e){return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1}}const Ii=e=>{let t=er(),[n,r]=(0,p.useState)(()=>Fi(e)),i=(0,p.useCallback)(()=>{let n=t?t.getZoneRuntimeState(e):Fi(e);r(e=>e.zoneId===n.zoneId&&e.exists===n.exists&&e.active===n.active&&e.visibleInViewport===n.visibleInViewport?e:n)},[t,e]);return ai(i,[t,i]),(0,p.useEffect)(()=>(i(),t?t.world.addLayoutSubscriber(e=>{(e===`zone-changed`||e===`goto-region`||e===`recalculate-world-size`)&&i()}):()=>{}),[t,i]),n};function Li(e){return e.current===`sketch`}function Ri(e,t){return e?t?{...e,...t||{},":hover":e[`:hover`]?Object.assign(e[`:hover`]||{},t[`:hover`]||{}):t[`:hover`],":active":e[`:active`]?Object.assign(e[`:active`]||{},t[`:active`]||{}):t[`:hover`]}:e:t}function zi(e){let{src:t,target:n}=e,r=n?n.width:e.width,i=n?n.height:e.height;return new ot({id:t,height:i,width:r,layers:[J.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}exports.Atlas=ni,exports.AtlasAuto=ii,exports.AtlasContext=yn,exports.BoundsContext=bn,exports.Box=le,exports.BrowserEventManager=D,exports.CanvasRenderer=je,exports.CompositeRenderer=Me,exports.CompositeResource=Pe,exports.DEFAULT_OSM_TILE_TEMPLATE=Xe,exports.DebugRenderer=it,exports.DevTools=Nr,exports.DrawBox=li,exports.Geometry=pe,exports.GridBuilder=ct,exports.HTMLPortal=ui,exports.ImageService=fi,exports.ImageTexture=Fe,exports.MAX_MERCATOR_LATITUDE=Ie,exports.MapGeoJSON=yi,exports.MapObject=bi,exports.MapProjectionContext=pi,exports.MapTileLayer=wi,exports.MapTiledImage=rt,exports.ModeContext=xn,exports.ModeProvider=Cn,exports.NavigatorRenderer=Mt,exports.OverlayRenderer=It,exports.ReactAtlas=Yn,exports.RegionHighlight=Ai,exports.ResizeWorldItem=ki,exports.Runtime=Tn,exports.SingleImage=J,exports.StaticRenderer=Jr,exports.Text=Nt,exports.TileSet=di,exports.TiledImage=Y,exports.WarpAdapterController=vt,exports.WebGLRenderer=Gr,exports.World=st,exports.WorldObject=ot,exports.Zone=Dn,exports.activateEvents=Vn,exports.applyProps=Bn,exports.bounceOut=Qt,exports.canDrag=Li,exports.clampMercatorLatitude=ze,exports.createDefaultEventMap=v,exports.createFiniteTileGrid=nt,exports.createMapProjection=Ye,exports.createWarpAdapterController=yt,exports.defaultConfig=rn,exports.defaultPreset=Kr,exports.easingFunctions=$t,exports.estimateFiniteTileGridCoverage=tt,exports.fromImage=zi,exports.getId=lt,exports.getNavigatorVisibleZoneIdSet=At,exports.getNavigatorWorldRegion=kt,exports.getNavigatorWorldTransform=Ot,exports.getRetryDelayMs=xe,exports.getSubdomainForTile=Ze,exports.getTileFromCanvas=ht,exports.getTileFromImageService=mt,exports.getTiles=_t,exports.getTilesFromManifest=gt,exports.latToTileY=Ke,exports.latitudeToMercatorY=He,exports.lngToTileX=Ge,exports.longitudeToMercatorX=Ve,exports.mercatorXToLongitude=Ue,exports.mercatorYToLatitude=We,exports.mergeStyles=Ri,exports.navigatorToWorldPoint=jt,exports.pdfScrollZoneController=vn,exports.popmotionController=an,exports.presets=Xr,exports.projectMapGeoJSON=_i,exports.resolveImageLoadingConfig=be,exports.resolveTileTemplate=Qe,exports.resolveTileUrl=$e,exports.staticPreset=Yr,exports.supportedEventAttributes=_,exports.supportedEventMap=y,exports.tileXToLng=qe,exports.tileYToLat=Je,exports.unmountComponentAtNode=Jn,exports.useAfterFrame=ai,exports.useAfterPaint=ji,exports.useAtlas=$n,exports.useAtlasImage=Mi,exports.useBeforeFrame=Ni,exports.useCanvas=si,exports.useControlledAnnotationList=Pi,exports.useFrame=oi,exports.useMapGeoJSON=vi,exports.useMapProjection=hi,exports.useMapProjectionContext=mi,exports.useMode=Sn,exports.useResizeWorldItem=Oi,exports.useRuntime=er,exports.useWorldEvent=Ti,exports.useZoneRuntimeState=Ii,exports.validateMapBounds=Be;