@atlas-viewer/atlas 3.0.4 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- 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 ee(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 te(e){var t=ee(e,`string`);return E(t)==`symbol`?t:t+``}function D(e,t,n){return(t=te(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=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(){D(this,`__id`,void 0),D(this,`__revision`,0),D(this,`__host`,void 0),D(this,`__onCreate`,void 0),D(this,`__parent`,void 0),D(this,`__owner`,{value:void 0}),D(this,`__state`,{}),D(this,`eventHandlers`,void 0),D(this,`scale`,1),D(this,`layers`,[]),D(this,`time`,[]),D(this,`_crop`,void 0),D(this,`cropData`,void 0),D(this,`id`,void 0),D(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)}),D(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(){}},k=class e extends O{constructor(e){if(super(),D(this,`type`,`spacial-content`),D(this,`id`,void 0),D(this,`uri`,void 0),D(this,`display`,void 0),D(this,`points`,void 0),D(this,`priority`,void 0),D(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}},A=class extends O{constructor(e){if(super(),D(this,`type`,`spacial-content`),D(this,`id`,void 0),D(this,`uri`,void 0),D(this,`display`,void 0),D(this,`points`,void 0),D(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 ne(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=j(t[o].display.scale,e/(n||1));r<a&&(a=r,i=o)}return i}function j(e,t){return Math.abs(e-t)}function re(e,t){let n=j(e.x,t.x),r=j(e.y,t.y);return Math.sqrt(n**2+r**2)}function ie(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function M(e,t,n){return Math.min(Math.max(e,t),n)}var N=class e extends O{constructor(e){super(),D(this,`id`,void 0),D(this,`type`,`spacial-content`),D(this,`display`,void 0),D(this,`tileWidth`,void 0),D(this,`style`,{opacity:1}),D(this,`points`,void 0),D(this,`service`,void 0),D(this,`format`,`jpg`),D(this,`crop2`,void 0),D(this,`version3`,void 0),D(this,`tileUrl`,void 0),this.tileUrl=ie(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]=M(t[n+1],r,a),t[n+3]=M(t[n+3],r,a),t[n+2]=M(t[n+2],i,o),t[n+4]=M(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[]}},P=class extends O{constructor(...e){super(...e),D(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},F=class extends P{constructor(e){super(),D(this,`id`,void 0),D(this,`display`,void 0),D(this,`points`,void 0),D(this,`images`,[]),D(this,`allImages`,[]),D(this,`scaleFactors`,[]),D(this,`aggregateBuffer`,(0,l.dna)(9)),D(this,`lazyLoader`,void 0),D(this,`isFullyLoaded`,!1),D(this,`maxScaleFactor`,0),D(this,`renderOptions`,void 0),D(this,`_scheduleSortByScales`,!1),D(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 k&&(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 k||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)}),D(this,`loadFullResource`,async()=>{if(!this.isFullyLoaded&&this.lazyLoader){this.isFullyLoaded=!0;let e=await this.lazyLoader();this.addImages(e)}}),D(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=ne(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 O{constructor(e,t){super(),D(this,`id`,void 0),D(this,`type`,`world-object`),D(this,`scale`,void 0),D(this,`layers`,void 0),D(this,`points`,void 0),D(this,`worldPoints`,void 0),D(this,`intersectionBuffer`,(0,l.dna)(5)),D(this,`aggregateBuffer`,(0,l.dna)(9)),D(this,`invertedBuffer`,(0,l.dna)(9)),D(this,`rotation`,0),D(this,`filteredPointsBuffer`,void 0),D(this,`_updatedList`,[]),D(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 O{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(),D(this,`id`,`world`),D(this,`_width`,void 0),D(this,`_height`,void 0),D(this,`aspectRatio`,void 0),D(this,`viewingDirection`,void 0),D(this,`aggregateBuffer`,(0,l.dna)(9)),D(this,`isDirty`,!1),D(this,`zones`,[]),D(this,`filteredPointsBuffer`,void 0),D(this,`selectedZone`,void 0),D(this,`triggerQueue`,[]),D(this,`activatedEvents`,[]),D(this,`_updatedList`,[]),D(this,`translationBuffer`,(0,l.dna)(9)),D(this,`needsRecalculate`,!0),D(this,`emptyPaintables`,[]),D(this,`renderOrder`,[]),D(this,`points`,void 0),D(this,`objects`,[]),D(this,`subscriptions`,[]),D(this,`_propagateEventTargets`,[]),D(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){this.trigger(`go-home`,{immediate:e})}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:[k.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}const oe={margin:0};var se=class{constructor(e,t={}){D(this,`id`,void 0),D(this,`config`,void 0),D(this,`points`,void 0),D(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 ce=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,le={},ue=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var z=class extends O{constructor(){super(),D(this,`id`,void 0),D(this,`type`,`spacial-content`),D(this,`points`,void 0),D(this,`hoverEvents`,!1),D(this,`activeEvents`,!1),D(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),D(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),D(this,`hovering`,void 0),D(this,`pressing`,void 0),D(this,`props`,{}),D(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),D(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),D(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),D(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=le[n]||ce.exec(n)||ce.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=le[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=le[e.style.outline]||ce.exec(e.style.outline)||ce.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=le[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 ue)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++}},B=class extends O{constructor(){super(),D(this,`type`,`spacial-content`),D(this,`id`,void 0),D(this,`points`,void 0),D(this,`color`,`#000`),D(this,`backgroundColor`,void 0),D(this,`hovering`,void 0),D(this,`pressing`,void 0),D(this,`text`,``),D(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:(0,l.dna)(5)}),D(this,`className`,void 0),D(this,`html`,void 0),D(this,`interactive`,!1),D(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 V=Math.pow,de=Math.sqrt,H=Math.sin,fe=Math.cos,U=Math.PI,pe=1.70158,me=pe*1.525,he=pe+1,ge=2*U/3,_e=2*U/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-V(-2*e+2,2)/2},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return 1-V(1-e,3)},easeInOutCubic:function(e){return e<.5?4*e*e*e:1-V(-2*e+2,3)/2},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1-V(1-e,4)},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-V(-2*e+2,4)/2},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1-V(1-e,5)},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1-V(-2*e+2,5)/2},easeInSine:function(e){return 1-fe(e*U/2)},easeOutSine:function(e){return H(e*U/2)},easeInOutSine:function(e){return-(fe(U*e)-1)/2},easeInExpo:function(e){return e===0?0:V(2,10*e-10)},easeOutExpo:function(e){return e===1?1:1-V(2,-10*e)},easeInOutExpo:function(e){return e===0?0:e===1?1:e<.5?V(2,20*e-10)/2:(2-V(2,-20*e+10))/2},easeInCirc:function(e){return 1-de(1-V(e,2))},easeOutCirc:function(e){return de(1-V(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-de(1-V(2*e,2)))/2:(de(1-V(-2*e+2,2))+1)/2},easeInBack:function(e){return he*e*e*e-pe*e*e},easeOutBack:function(e){return 1+he*V(e-1,3)+pe*V(e-1,2)},easeInOutBack:function(e){return e<.5?V(2*e,2)*((me+1)*2*e-me)/2:(V(2*e-2,2)*((me+1)*(e*2-2)+me)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-V(2,10*e-10)*H((e*10-10.75)*ge)},easeOutElastic:function(e){return e===0?0:e===1?1:V(2,-10*e)*H((e*10-.75)*ge)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-(V(2,20*e-10)*H((20*e-11.125)*_e))/2:V(2,-20*e+10)*H((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){D(this,`runtime`,void 0),D(this,`pendingTransition`,void 0),D(this,`lastZoomTo`,null),D(this,`isConstraining`,!1),D(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 K=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){D(this,`id`,T()),D(this,`ready`,!1),D(this,`renderer`,void 0),D(this,`world`,void 0),D(this,`target`,void 0),D(this,`homePosition`,void 0),D(this,`manualHomePosition`,void 0),D(this,`manualFocalPosition`,void 0),D(this,`focalPosition`,void 0),D(this,`transitionManager`,void 0),D(this,`aggregate`,void 0),D(this,`transformBuffer`,(0,l.dna)(500)),D(this,`lastTarget`,(0,l.dna)(5)),D(this,`zoomBuffer`,(0,l.dna)(5)),D(this,`logNextRender`,!1),D(this,`pendingUpdate`,!0),D(this,`isCommitting`,!1),D(this,`firstRender`,!0),D(this,`lastTime`,void 0),D(this,`stopId`,void 0),D(this,`mode`,`explore`),D(this,`controllers`,[]),D(this,`controllersRunning`,!1),D(this,`controllerStopFunctions`,[]),D(this,`maxScaleFactor`,1),D(this,`_viewerToWorld`,{x:0,y:0}),D(this,`_lastGoodScale`,1),D(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),D(this,`fpsLimit`,void 0),D(this,`options`,void 0),D(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),D(this,`_viewport`,{x:0,y:0,width:0,height:0}),D(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}),D(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()}setHomePosition(e){this.homePosition.set(l.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=this.getScaleFactor(),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){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 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)}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 ye=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,be={},xe=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var Se=class extends O{constructor(){super(),D(this,`id`,void 0),D(this,`type`,`spacial-content`),D(this,`isShape`,!0),D(this,`points`,void 0),D(this,`hoverEvents`,!1),D(this,`activeEvents`,!1),D(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),D(this,`boundingBox`,null),D(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),D(this,`hovering`,void 0),D(this,`pressing`,void 0),D(this,`props`,{}),D(this,`shape`,{type:`none`}),D(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),D(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),D(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),D(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=be[n]||ye.exec(n)||ye.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=be[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=be[e.style.outline]||ye.exec(e.style.outline)||ye.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=be[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 xe)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 Ce=typeof performance==`object`&&performance&&typeof performance.now==`function`?performance:Date,we=typeof AbortController==`function`?AbortController:class{constructor(){this.signal=new De}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})}},Te=typeof AbortSignal==`function`,Ee=typeof we.AbortSignal==`function`,De=Te?AbortSignal:Ee?we.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))}},Oe=new Set,ke=(e,t)=>{let n=`LRU_CACHE_OPTION_${e}`;Ne(n)&&Pe(n,`${e} option`,`options.${t}`,Re)},Ae=(e,t)=>{let n=`LRU_CACHE_METHOD_${e}`;if(Ne(n)){let{prototype:r}=Re,{get:i}=Object.getOwnPropertyDescriptor(r,e);Pe(n,`${e} method`,`cache.${t}()`,i)}},je=(e,t)=>{let n=`LRU_CACHE_PROPERTY_${e}`;if(Ne(n)){let{prototype:r}=Re,{get:i}=Object.getOwnPropertyDescriptor(r,e);Pe(n,`${e} property`,`cache.${t}`,i)}},Me=(...e)=>{typeof process==`object`&&process&&typeof process.emitWarning==`function`?process.emitWarning(...e):console.error(...e)},Ne=e=>!Oe.has(e),Pe=(e,t,n,r)=>{Oe.add(e),Me(`The ${t} is deprecated. Please use ${n} instead.`,`DeprecationWarning`,e,r)},q=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),Fe=e=>q(e)?e<=2**8?Uint8Array:e<=2**16?Uint16Array:e<=2**32?Uint32Array:e<=2**53-1?Ie:null:null;var Ie=class extends Array{constructor(e){super(e),this.fill(0)}},Le=class{constructor(e){if(e===0)return[];this.heap=new(Fe(e))(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Re=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&&!q(n))throw TypeError(`max option must be a nonnegative integer`);let E=n?Fe(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 Le(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&&!q(this.maxSize))throw TypeError(`maxSize must be a positive integer if specified`);if(!q(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=q(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||w||0,this.ttl){if(!q(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`;Ne(t)&&(Oe.add(t),Me(`TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.`,`UnboundedCacheWarning`,t,e))}T&&ke(`stale`,`allowStale`),w&&ke(`maxAge`,`ttl`),C&&ke(`length`,`sizeCalculation`)}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new Ie(this.max),this.starts=new Ie(this.max),this.setItemTTL=(e,t,n=Ce.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:Ce.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=Ce.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 Ie(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(!q(n))if(r){if(typeof r!=`function`)throw TypeError(`sizeCalculation must be a function`);if(n=r(t,e),!q(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 Ae(`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=Ce.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=Ce.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 we;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 Ae(`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 Ae(`reset`,`clear`),this.clear}get length(){return je(`length`,`size`),this.size}static get AbortController(){return we}static get AbortSignal(){return De}},ze=Re;const Be=/(-?[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,Ve={},He=typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(`firefox`),Ue={};var We=class{constructor(e,t){D(this,`canvas`,void 0),D(this,`ctx`,void 0),D(this,`options`,void 0),D(this,`imagesPending`,0),D(this,`imagesLoaded`,0),D(this,`imageIdsLoaded`,[]),D(this,`frameIsRendering`,!1),D(this,`pendingDrawCall`,!1),D(this,`firstMeaningfulPaint`,!1),D(this,`parallelTasks`,8),D(this,`frameTasks`,0),D(this,`loadingQueueOrdered`,!0),D(this,`loadingQueue`,[]),D(this,`currentTask`,Promise.resolve()),D(this,`tasksRunning`,0),D(this,`stats`,void 0),D(this,`averageJobTime`,64),D(this,`lastKnownScale`,1),D(this,`visible`,[]),D(this,`previousVisible`,[]),D(this,`rendererPosition`,void 0),D(this,`dpi`,void 0),D(this,`drawCalls`,[]),D(this,`lastPaintedObject`,void 0),D(this,`hostCache`,void 0),D(this,`invalidated`,[]),D(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--}))}}),D(this,`_scheduled`,0),D(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 ze({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.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 k||e instanceof N){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,re({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 He?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 z&&this.options.box,c=e instanceof Se&&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=Ve[t]||Be.exec(t)||Be.exec(t);Ve[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(Ue[e]&&Ue[e].naturalWidth>0){t(Ue[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),Ue[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 k||e instanceof N)&&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=[]}},Ge=class{constructor(e){D(this,`renderers`,[]),D(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()}},Ke=class{constructor(e){D(this,`canvas`,void 0),D(this,`context`,void 0),D(this,`heightRatio`,1),D(this,`widthRatio`,1),D(this,`target`,new Float32Array(5)),D(this,`initialWidth`,void 0),D(this,`initialHeight`,void 0),D(this,`bounds`,void 0),D(this,`aggregate`,void 0),D(this,`delta`,0),D(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 k&&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(){}},qe=class{constructor(){D(this,`autoWidth`,!1),D(this,`autoHeight`,!0),D(this,`width`,void 0),D(this,`height`,void 0),D(this,`world`,void 0),D(this,`content`,[]),D(this,`viewingDirection`,`left-to-right`),D(this,`rows`,void 0),D(this,`columns`,4),D(this,`spacing`,20),D(this,`reversed`,!1),D(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}},Je=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})),Ye=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}})),Xe=o(((e,t)=>{var n=Ye(),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(`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 ee(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 te(e){var t=ee(e,`string`);return E(t)==`symbol`?t:t+``}function D(e,t,n){return(t=te(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=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(){D(this,`__id`,void 0),D(this,`__revision`,0),D(this,`__host`,void 0),D(this,`__onCreate`,void 0),D(this,`__parent`,void 0),D(this,`__owner`,{value:void 0}),D(this,`__state`,{}),D(this,`eventHandlers`,void 0),D(this,`scale`,1),D(this,`layers`,[]),D(this,`time`,[]),D(this,`_crop`,void 0),D(this,`cropData`,void 0),D(this,`id`,void 0),D(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)}),D(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(){}},k=class e extends O{constructor(e){if(super(),D(this,`type`,`spacial-content`),D(this,`id`,void 0),D(this,`uri`,void 0),D(this,`display`,void 0),D(this,`points`,void 0),D(this,`priority`,void 0),D(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}},A=class extends O{constructor(e){if(super(),D(this,`type`,`spacial-content`),D(this,`id`,void 0),D(this,`uri`,void 0),D(this,`display`,void 0),D(this,`points`,void 0),D(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 ne(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=j(t[o].display.scale,e/(n||1));r<a&&(a=r,i=o)}return i}function j(e,t){return Math.abs(e-t)}function re(e,t){let n=j(e.x,t.x),r=j(e.y,t.y);return Math.sqrt(n**2+r**2)}function ie(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function M(e,t,n){return Math.min(Math.max(e,t),n)}var N=class e extends O{constructor(e){super(),D(this,`id`,void 0),D(this,`type`,`spacial-content`),D(this,`display`,void 0),D(this,`tileWidth`,void 0),D(this,`style`,{opacity:1}),D(this,`points`,void 0),D(this,`service`,void 0),D(this,`format`,`jpg`),D(this,`crop2`,void 0),D(this,`version3`,void 0),D(this,`tileUrl`,void 0),this.tileUrl=ie(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]=M(t[n+1],r,a),t[n+3]=M(t[n+3],r,a),t[n+2]=M(t[n+2],i,o),t[n+4]=M(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[]}},P=class extends O{constructor(...e){super(...e),D(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},F=class extends P{constructor(e){super(),D(this,`id`,void 0),D(this,`display`,void 0),D(this,`points`,void 0),D(this,`images`,[]),D(this,`allImages`,[]),D(this,`scaleFactors`,[]),D(this,`aggregateBuffer`,(0,l.dna)(9)),D(this,`lazyLoader`,void 0),D(this,`isFullyLoaded`,!1),D(this,`maxScaleFactor`,0),D(this,`renderOptions`,void 0),D(this,`_scheduleSortByScales`,!1),D(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 k&&(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 k||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)}),D(this,`loadFullResource`,async()=>{if(!this.isFullyLoaded&&this.lazyLoader){this.isFullyLoaded=!0;let e=await this.lazyLoader();this.addImages(e)}}),D(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=ne(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 O{constructor(e,t){super(),D(this,`id`,void 0),D(this,`type`,`world-object`),D(this,`scale`,void 0),D(this,`layers`,void 0),D(this,`points`,void 0),D(this,`worldPoints`,void 0),D(this,`intersectionBuffer`,(0,l.dna)(5)),D(this,`aggregateBuffer`,(0,l.dna)(9)),D(this,`invertedBuffer`,(0,l.dna)(9)),D(this,`rotation`,0),D(this,`filteredPointsBuffer`,void 0),D(this,`_updatedList`,[]),D(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 O{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(),D(this,`id`,`world`),D(this,`_width`,void 0),D(this,`_height`,void 0),D(this,`aspectRatio`,void 0),D(this,`viewingDirection`,void 0),D(this,`aggregateBuffer`,(0,l.dna)(9)),D(this,`isDirty`,!1),D(this,`zones`,[]),D(this,`filteredPointsBuffer`,void 0),D(this,`selectedZone`,void 0),D(this,`triggerQueue`,[]),D(this,`activatedEvents`,[]),D(this,`_updatedList`,[]),D(this,`translationBuffer`,(0,l.dna)(9)),D(this,`needsRecalculate`,!0),D(this,`emptyPaintables`,[]),D(this,`renderOrder`,[]),D(this,`points`,void 0),D(this,`objects`,[]),D(this,`subscriptions`,[]),D(this,`_propagateEventTargets`,[]),D(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){this.trigger(`go-home`,{immediate:e})}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:[k.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}const oe={margin:0};var se=class{constructor(e,t={}){D(this,`id`,void 0),D(this,`config`,void 0),D(this,`points`,void 0),D(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 ce=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,le={},ue=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var z=class extends O{constructor(){super(),D(this,`id`,void 0),D(this,`type`,`spacial-content`),D(this,`points`,void 0),D(this,`hoverEvents`,!1),D(this,`activeEvents`,!1),D(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),D(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),D(this,`hovering`,void 0),D(this,`pressing`,void 0),D(this,`props`,{}),D(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),D(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),D(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),D(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=le[n]||ce.exec(n)||ce.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=le[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=le[e.style.outline]||ce.exec(e.style.outline)||ce.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=le[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 ue)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++}},B=class extends O{constructor(){super(),D(this,`type`,`spacial-content`),D(this,`id`,void 0),D(this,`points`,void 0),D(this,`color`,`#000`),D(this,`backgroundColor`,void 0),D(this,`hovering`,void 0),D(this,`pressing`,void 0),D(this,`text`,``),D(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:(0,l.dna)(5)}),D(this,`className`,void 0),D(this,`html`,void 0),D(this,`interactive`,!1),D(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 V=Math.pow,de=Math.sqrt,fe=Math.sin,pe=Math.cos,H=Math.PI,me=1.70158,he=me*1.525,ge=me+1,_e=2*H/3,ve=2*H/4.5,U=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},W={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-V(-2*e+2,2)/2},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return 1-V(1-e,3)},easeInOutCubic:function(e){return e<.5?4*e*e*e:1-V(-2*e+2,3)/2},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1-V(1-e,4)},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-V(-2*e+2,4)/2},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1-V(1-e,5)},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1-V(-2*e+2,5)/2},easeInSine:function(e){return 1-pe(e*H/2)},easeOutSine:function(e){return fe(e*H/2)},easeInOutSine:function(e){return-(pe(H*e)-1)/2},easeInExpo:function(e){return e===0?0:V(2,10*e-10)},easeOutExpo:function(e){return e===1?1:1-V(2,-10*e)},easeInOutExpo:function(e){return e===0?0:e===1?1:e<.5?V(2,20*e-10)/2:(2-V(2,-20*e+10))/2},easeInCirc:function(e){return 1-de(1-V(e,2))},easeOutCirc:function(e){return de(1-V(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-de(1-V(2*e,2)))/2:(de(1-V(-2*e+2,2))+1)/2},easeInBack:function(e){return ge*e*e*e-me*e*e},easeOutBack:function(e){return 1+ge*V(e-1,3)+me*V(e-1,2)},easeInOutBack:function(e){return e<.5?V(2*e,2)*((he+1)*2*e-he)/2:(V(2*e-2,2)*((he+1)*(e*2-2)+he)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-V(2,10*e-10)*fe((e*10-10.75)*_e)},easeOutElastic:function(e){return e===0?0:e===1?1:V(2,-10*e)*fe((e*10-.75)*_e)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-(V(2,20*e-10)*fe((20*e-11.125)*ve))/2:V(2,-20*e+10)*fe((20*e-11.125)*ve)/2+1},easeInBounce:function(e){return 1-U(1-e)},easeOutBounce:U,easeInOutBounce:function(e){return e<.5?(1-U(1-2*e))/2:(1+U(2*e-1))/2}};var ye=class{constructor(e){D(this,`runtime`,void 0),D(this,`pendingTransition`,void 0),D(this,`lastZoomTo`,null),D(this,`isConstraining`,!1),D(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:W.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:W.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:W.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:W.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||W.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:W.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};Number.MIN_VALUE+1;var G=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){D(this,`id`,T()),D(this,`ready`,!1),D(this,`renderer`,void 0),D(this,`world`,void 0),D(this,`target`,void 0),D(this,`homePosition`,void 0),D(this,`manualHomePosition`,void 0),D(this,`manualFocalPosition`,void 0),D(this,`focalPosition`,void 0),D(this,`transitionManager`,void 0),D(this,`aggregate`,void 0),D(this,`transformBuffer`,(0,l.dna)(500)),D(this,`lastTarget`,(0,l.dna)(5)),D(this,`zoomBuffer`,(0,l.dna)(5)),D(this,`logNextRender`,!1),D(this,`pendingUpdate`,!0),D(this,`isCommitting`,!1),D(this,`firstRender`,!0),D(this,`lastTime`,void 0),D(this,`stopId`,void 0),D(this,`mode`,`explore`),D(this,`controllers`,[]),D(this,`controllersRunning`,!1),D(this,`controllerStopFunctions`,[]),D(this,`maxScaleFactor`,1),D(this,`_viewerToWorld`,{x:0,y:0}),D(this,`_lastGoodScale`,1),D(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),D(this,`fpsLimit`,void 0),D(this,`options`,void 0),D(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),D(this,`_viewport`,{x:0,y:0,width:0,height:0}),D(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}),D(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 ye(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()}setHomePosition(e){this.homePosition.set(l.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=this.getScaleFactor(),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){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 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)}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 O{constructor(){super(),D(this,`id`,void 0),D(this,`type`,`spacial-content`),D(this,`isShape`,!0),D(this,`points`,void 0),D(this,`hoverEvents`,!1),D(this,`activeEvents`,!1),D(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),D(this,`boundingBox`,null),D(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),D(this,`hovering`,void 0),D(this,`pressing`,void 0),D(this,`props`,{}),D(this,`shape`,{type:`none`}),D(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),D(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),D(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),D(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){D(this,`canvas`,void 0),D(this,`ctx`,void 0),D(this,`options`,void 0),D(this,`imagesPending`,0),D(this,`imagesLoaded`,0),D(this,`imageIdsLoaded`,[]),D(this,`frameIsRendering`,!1),D(this,`pendingDrawCall`,!1),D(this,`firstMeaningfulPaint`,!1),D(this,`parallelTasks`,8),D(this,`frameTasks`,0),D(this,`loadingQueueOrdered`,!0),D(this,`loadingQueue`,[]),D(this,`currentTask`,Promise.resolve()),D(this,`tasksRunning`,0),D(this,`stats`,void 0),D(this,`averageJobTime`,64),D(this,`lastKnownScale`,1),D(this,`visible`,[]),D(this,`previousVisible`,[]),D(this,`rendererPosition`,void 0),D(this,`dpi`,void 0),D(this,`drawCalls`,[]),D(this,`lastPaintedObject`,void 0),D(this,`hostCache`,void 0),D(this,`invalidated`,[]),D(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--}))}}),D(this,`_scheduled`,0),D(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.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 k||e instanceof N){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,re({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 z&&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 k||e instanceof N)&&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){D(this,`renderers`,[]),D(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){D(this,`canvas`,void 0),D(this,`context`,void 0),D(this,`heightRatio`,1),D(this,`widthRatio`,1),D(this,`target`,new Float32Array(5)),D(this,`initialWidth`,void 0),D(this,`initialHeight`,void 0),D(this,`bounds`,void 0),D(this,`aggregate`,void 0),D(this,`delta`,0),D(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 k&&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(){D(this,`autoWidth`,!1),D(this,`autoHeight`,!0),D(this,`width`,void 0),D(this,`height`,void 0),D(this,`world`,void 0),D(this,`content`,[]),D(this,`viewingDirection`,`left-to-right`),D(this,`rows`,void 0),D(this,`columns`,4),D(this,`spacing`,20),D(this,`reversed`,!1),D(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);
2
2
  /**
3
3
  * Checks if an event is supported in the current execution environment.
4
4
  *
@@ -13,7 +13,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
13
13
  * @internal
14
14
  * @license Modernizr 3.0.0pre (Custom Build) | MIT
15
15
  */
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})),Ze=o(((e,t)=>{var n=Je(),r=Xe(),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})),Qe=o(((e,t)=>{t.exports=Ze()})),$e=c(Qe(),1);function et(e){return{x:e[1],y:e[2],width:e[3]-e[1],height:e[4]-e[2]}}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=re({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=re({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,$e.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;t.transitionManager.goToRegion(et(t.homePosition),{transition:e})}if(e===`goto-region`&&n){let e=n.immediate?{duration:0}:{};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(){}}),J=d.default.createContext(`explore`);J.displayName=`Mode`;const ot=()=>(0,d.useContext)(J);function st(e){return(0,f.jsx)(J.Provider,{value:e.mode,children:e.children})}const Y=d.default.createContext(null);Y.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=8,dt=32,ft=2,pt=0;function mt(e,t){e&&e.appendChild&&t&&e.appendChild(t)}function ht(e,t){e&&e.removeChild&&t&&e.removeChild(t)}function gt(e,t){return ht(e.world,t)}function _t(e,t,n){return vt(e.world,t,n)}function vt(e,t,n){e&&e instanceof K&&(e=e.world),e&&e.insertBefore&&e.insertBefore(t,n)}function yt(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof O))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 bt(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 xt=new Map,St={};function Ct(e,{args:t=[],...n},r,i,a){if(!(r instanceof K)&&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 z;break;case`shape`:o=new Se;break;case`worldObject`:case`world-object`:o=new L;break;case`worldImage`:case`world-image`:o=new k;break;case`texture`:o=new A;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=N.fromTile(n.uri,n.display,n.tile,n.scaleFactor,void 0,n.format,n.useFloorCalc,n.version3);break;case`paragraph`:o=new B,o.text=n.children;break;default:return}return bt(s,n),yt(o,{},n),o}function wt(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 Tt=0;const Et=(0,m.default)({unstable_now:lt,now:lt,createInstance:Ct,removeChild:ht,appendChild:mt,appendInitialChild:mt,insertBefore:vt,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:wt,removeChildFromContainer:gt,createTextInstance(){},insertInContainerBefore:_t,prepareUpdate(e,t,n,r,i){return bt(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&yt(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return St},getRootHostContext(){return St},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){Tt=e},getCurrentUpdatePriority(){return Tt},resolveUpdatePriority(){if(Tt!==0)return Tt;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(){}});Et.injectIntoDevTools();function Dt(e,t){let n=xt.get(e);n&&Et.updateContainer(null,n,null,()=>{xt.delete(e),t&&t(e)})}const Ot={render(e,t){let n=xt.get(t);if(n)Et.updateContainer(e,n,null);else{let n=Et.createContainer(t,0,null,!1,null,``,()=>{},null);Et.updateContainer(e,n,null),xt.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)(J.Provider,{value:a,children:(0,f.jsx)(Y.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){D(this,`canvas`,void 0),D(this,`gl`,void 0),D(this,`program`,void 0),D(this,`fragmentShader`,void 0),D(this,`vertexShader`,void 0),D(this,`rectBuffer`,void 0),D(this,`fragmentShaderSource`,`
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);function tt(e){return{x:e[1],y:e[2],width:e[3]-e[1],height:e[4]-e[2]}}const nt=`pan`,rt=`scroll`,it=`gesture`,at={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},ot=(e={})=>({start:function(t){let{zoomWheelConstant:n,enableWheel:r,enableClickToZoom:i,ignoreSingleFingerTouch:a,enablePanOnWait:o,panOnWaitDelay:s,parentElement:c,requireMetaKeyForWheelZoom:u}={...at,...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=re({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=re({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=rt),v==``&&(v=`pan`)),b(v),v==``&&a==1||v==rt){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=W.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=W.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;t.transitionManager.goToRegion(tt(t.homePosition),{transition:e})}if(e===`goto-region`&&n){let e=n.immediate?{duration:0}:{};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 st=()=>(0,d.useContext)(q);function ct(e){return(0,f.jsx)(q.Provider,{value:e.mode,children:e.children})}const J=d.default.createContext(null);J.displayName=`Atlas`;const lt=d.default.createContext(null);lt.displayName=`Bounds`;let ut;if(typeof performance==`object`&&typeof performance.now==`function`){let e=performance;ut=()=>e.now()}else{let e=Date,t=e.now();ut=()=>e.now()-t}const dt=typeof m.default==`function`?m.default:null,ft=8,pt=32,mt=2,ht=0;function gt(e,t){e&&e.appendChild&&t&&e.appendChild(t)}function _t(e,t){e&&e.removeChild&&t&&e.removeChild(t)}function vt(e,t){return _t(e.world,t)}function yt(e,t,n){return bt(e.world,t,n)}function bt(e,t,n){e&&e instanceof G&&(e=e.world),e&&e.insertBefore&&e.insertBefore(t,n)}function xt(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof O))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 St(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 Ct=new Map,wt={};function Tt(e,{args:t=[],...n},r,i,a){if(!(r instanceof G)&&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 z;break;case`shape`:o=new Ce;break;case`worldObject`:case`world-object`:o=new L;break;case`worldImage`:case`world-image`:o=new k;break;case`texture`:o=new A;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=N.fromTile(n.uri,n.display,n.tile,n.scaleFactor,void 0,n.format,n.useFloorCalc,n.version3);break;case`paragraph`:o=new B,o.text=n.children;break;default:return}return St(s,n),xt(o,{},n),o}function Et(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 Dt=0;const Y=dt?dt({unstable_now:ut,now:ut,createInstance:Tt,removeChild:_t,appendChild:gt,appendInitialChild:gt,insertBefore:bt,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:Et,removeChildFromContainer:vt,createTextInstance(){},insertInContainerBefore:yt,prepareUpdate(e,t,n,r,i){return St(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&xt(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return wt},getRootHostContext(){return wt},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){Dt=e},getCurrentUpdatePriority(){return Dt},resolveUpdatePriority(){if(Dt!==0)return Dt;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 Ot(e,t){let n=Ct.get(e);if(n){if(!Y)return;Y.updateContainer(null,n,null,()=>{Ct.delete(e),t&&t(e)})}}const kt={render(e,t){let n=Ct.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),Ct.set(t,n)}},unmountComponentAtNode(e,t){Ot(e,t)}},X=typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)?d.useLayoutEffect:d.useEffect,At=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),kt.render((0,f.jsx)(d.default.StrictMode,{children:(0,f.jsx)(o,{children:(0,f.jsx)(lt.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()=>{kt.unmountComponentAtNode(e)}}return()=>{}},[i]),null});var jt=class{constructor(e,t){D(this,`canvas`,void 0),D(this,`gl`,void 0),D(this,`program`,void 0),D(this,`fragmentShader`,void 0),D(this,`vertexShader`,void 0),D(this,`rectBuffer`,void 0),D(this,`fragmentShaderSource`,`
17
17
  precision mediump float;
18
18
 
19
19
  uniform sampler2D u_image;
@@ -46,14 +46,14 @@ function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;va
46
46
 
47
47
  v_texCoord = a_texCoord;
48
48
  }
49
- `),D(this,`attributes`,void 0),D(this,`uniforms`,void 0),D(this,`buffers`,void 0),D(this,`rendererPosition`,void 0),D(this,`dpi`,void 0),D(this,`lastResize`,0),D(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 k||e instanceof N)&&this.createImageHost(e),e instanceof A&&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 A){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){D(this,`$element`,void 0),D(this,`stylesheetClasses`,void 0),D(this,`activeStylesheetClasses`,void 0),D(this,`sheetsDidUpdate`,void 0),D(this,`sheetPrefix`,void 0),D(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){D(this,`htmlContainer`,void 0),D(this,`visible`,[]),D(this,`previousVisible`,[]),D(this,`htmlIds`,[]),D(this,`firstMeaningfulPaint`,!1),D(this,`rendererPosition`,void 0),D(this,`stylesheet`,void 0),D(this,`options`,void 0),D(this,`paintTx`,1),D(this,`zIndex`,0),D(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(`
49
+ `),D(this,`attributes`,void 0),D(this,`uniforms`,void 0),D(this,`buffers`,void 0),D(this,`rendererPosition`,void 0),D(this,`dpi`,void 0),D(this,`lastResize`,0),D(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 k||e instanceof N)&&this.createImageHost(e),e instanceof A&&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 A){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 Mt(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 Nt=class{constructor(e){D(this,`$element`,void 0),D(this,`stylesheetClasses`,void 0),D(this,`activeStylesheetClasses`,void 0),D(this,`sheetsDidUpdate`,void 0),D(this,`sheetPrefix`,void 0),D(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+Mt(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+Mt(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])}},Pt=class{constructor(e,t){D(this,`htmlContainer`,void 0),D(this,`visible`,[]),D(this,`previousVisible`,[]),D(this,`htmlIds`,[]),D(this,`firstMeaningfulPaint`,!1),D(this,`rendererPosition`,void 0),D(this,`stylesheet`,void 0),D(this,`options`,void 0),D(this,`paintTx`,1),D(this,`zIndex`,0),D(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 Nt({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
50
50
  background: ${this.options.background};
51
51
  `)),this.classes={hostClassName:this.stylesheet.addStylesheet(`
52
52
  position: absolute;
53
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 B){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 z&&(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 B||e instanceof z&&(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 B||e instanceof z)&&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){D(this,`element`,void 0),D(this,`runtime`,void 0),D(this,`unsubscribe`,void 0),D(this,`activatedEvents`,[]),D(this,`eventHandlers`,[]),D(this,`bounds`,void 0),D(this,`listening`,void 0),D(this,`pointerMoveEvent`,void 0),D(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),D(this,`options`,void 0),D(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),D(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),D(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)}}),D(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))}),D(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)}}),D(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))}),D(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)}}),D(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&&re(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)}};D(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 Ge([o?new At(r,{dpi:s}):new We(r,{dpi:s,debug:c,box:l,polygon:u}),i?new Nt(i,{box:o||!l,text:!0,triggerResize:n}):void 0,d?new Ke(d):void 0]),h=new K(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){D(this,`container`,void 0),D(this,`width`,void 0),D(this,`height`,void 0),D(this,`pending`,!0),D(this,`options`,void 0),D(this,`stylesheet`,void 0),D(this,`zIndex`,0),D(this,`lastKnownScale`,1),D(this,`rendererPosition`,void 0),D(this,`currentlyVisible`,[]),D(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(`
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 B){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 z&&(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 B||e instanceof z&&(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 B||e instanceof z)&&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(){}},Ft=class e{constructor(e,t,n){D(this,`element`,void 0),D(this,`runtime`,void 0),D(this,`unsubscribe`,void 0),D(this,`activatedEvents`,[]),D(this,`eventHandlers`,[]),D(this,`bounds`,void 0),D(this,`listening`,void 0),D(this,`pointerMoveEvent`,void 0),D(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),D(this,`options`,void 0),D(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),D(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),D(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)}}),D(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))}),D(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)}}),D(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))}),D(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)}}),D(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&&re(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)}};D(Ft,`eventPool`,{atlas:{x:0,y:0}});function It({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?ot({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,m=new Ke([o?new jt(r,{dpi:s}):new Ge(r,{dpi:s,debug:c,box:l,polygon:u}),i?new Pt(i,{box:o||!l,text:!0,triggerResize:n}):void 0,d?new qe(d):void 0]),h=new G(m,new R(1024,1024),t,p?[p]:[],f),g=new Ft(r,h);return{name:`default-preset`,em:g,runtime:h,renderer:m,controller:p,canvas:r,navigator:d,unmount(){Ot(h),h.stopControllers(),h.stop(),h.reset(),g&&g.stop()}}}const Z=1+Number.MIN_VALUE;var Lt=class{constructor(e,t){D(this,`container`,void 0),D(this,`width`,void 0),D(this,`height`,void 0),D(this,`pending`,!0),D(this,`options`,void 0),D(this,`stylesheet`,void 0),D(this,`zIndex`,0),D(this,`lastKnownScale`,1),D(this,`rendererPosition`,void 0),D(this,`currentlyVisible`,[]),D(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 Nt({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
55
55
  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 k){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 N){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 Ge([s,new Nt(i,{box:!0,text:!0,triggerResize:n})]):s,l=new K(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,...E}=e;Wt(e,`Atlas.tsx`,e.debug);let[ee,te]=(0,d.useState)(i),[D,O]=(0,d.useState)(!1),k=(0,d.useRef)(!1),A=(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,j,re]=(0,p.default)({scroll:!0}),ie=(0,d.useRef)(),M=e=>{ie.current=e,ne(e)},[N,P,F,I]=Bt(A,{width:E.width,height:E.height,forceRefresh:re,unstable_webglRenderer:o}),[L,R]=(0,d.useState)(``);(0,d.useEffect)(()=>{te(i)},[i]),(0,d.useEffect)(()=>{P&&P.em&&P.em.updateBounds()},[P,j]),(0,d.useEffect)(()=>{P?.runtime.setOptions(C||{})},[C]),(0,d.useEffect)(()=>{P&&P.runtime&&(P.runtime.mode=ee),D&&P&&(P.ready=!0)},[P,D,ee]),(0,d.useEffect)(()=>{P&&(x||(P.runtime.manualHomePosition=!!y,P.runtime.setHomePosition(y)))},[P,x,y]),(0,d.useEffect)(()=>{if(P){let e=P.runtime;e.resize(F.current.width,E.width,F.current.height,E.height),F.current.width=E.width,F.current.height=E.height,e.updateNextFrame(),F.current.didUpdate=!0}},[P,E.width,E.height,F]),(0,d.useEffect)(()=>{if(T&&P){let e=P.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of Gt)T[n]?T[n]!==P.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(P){let e=P.runtime;for(let t of Gt)e.hookOptions.filters[t]=0;e.hookOptions.enableFilters=!1,e.updateNextFrame()}},[P,T]);function ae(){if(P&&(P.overlay&&(P.overlay.style.width=`${j.width}px`,P.overlay.style.height=`${j.height}px`),P.container&&(P.container.style.width=`${j.width}px`,P.container.style.height=`${j.height}px`),x)){let e=P.runtime.world.width,t=P.runtime.world.height,n=e/t,r=F.current.width,i=F.current.height,a=r/i;if(n>a){a=i/r,P.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};P.runtime.setHomePosition(o)}else{let n=(t-e/a)/2;x===`start`&&(n=0),x===`end`&&(n=t-e/a),P.runtime.manualHomePosition=!0;let r={x:0,y:n,width:e,height:e/a};P.runtime.setHomePosition(r)}b&&P.runtime.goHome({})}}X(()=>{ae()},[P,e.runtimeOptions?.maxOverZoom,j.height,j.width,x]),X(()=>{let e=()=>{if(P){let e=P.runtime;F.current.width!==E.width&&F.current.height!==E.height&&(e.resize(F.current.width,E.width,F.current.height,E.height),F.current.width=E.width,F.current.height=E.height,e.updateNextFrame(),F.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[P,E.height,E.width]);let oe={width:120},se=()=>{if(P&&P.navigator){let e=P.runtime.world.height,t=P.runtime.world.width,n=window.devicePixelRatio||1,r=oe.width,i=oe.width/t*e;P.navigator.width=r*n,P.navigator.height=i*n,P.navigator.style.width=r+`px`,P.navigator.style.height=i+`px`}};X(()=>{if(P){se();let e=P.runtime;return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&(se(),ae(),e.resize(F.current.width,E.width,F.current.height,E.height))})}return()=>{}},[P,E.width,E.height]);let ce=(0,d.useCallback)(function(e){let t=()=>{O(!0)};return(0,d.useEffect)(()=>{if(P){P.runtime.goHome();let e=r&&r(P);e&&e.then?e.then(t):t();return}else throw Error(`Invalid configuration - no runtime found`)},[]),e.children},[P]);(0,d.useEffect)(()=>{if(P){let e=P.runtime;if(a)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome()})}return()=>{}},[P,a]),(0,d.useEffect)(()=>P?P.runtime.registerHook(`useBeforeFrame`,()=>{if(F.current.didUpdate&&P.canvas){let e=window.devicePixelRatio||1,t=F.current.width,n=F.current.height;P.canvas.width=t*e,P.canvas.height=n*e,P.canvas.style.width=t+`px`,P.canvas.style.height=n+`px`,P.canvas.getContext(`2d`)?.scale(e,e),P&&P.em&&P.em.updateBounds(),F.current.didUpdate=!1}}):()=>{},[P,a]),(0,d.useEffect)(()=>{let e=()=>{P&&(te(`sketch`),R(`mode-sketch`)),window.removeEventListener(`keyup`,e)},t=t=>{if(t.code===`Space`&&P&&P.runtime.mode===`sketch`){let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||t.target?.isContentEditable)return;t.preventDefault(),te(`explore`),R(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[P]),k.current=!0;let{height:le,width:ue,...z}=E,B=Vt([E.width,E.height]),V=!0;return A&&Array.isArray(A)&&A.length>1&&A[1].interactive===!1&&(V=!1),S=S??`#000`,ie.current&&(S=getComputedStyle(ie.current).getPropertyValue(`--atlas-background`)||S),(0,f.jsxs)(Ht,{ref:M,className:[`atlas`,c?``:`atlas-width-${B}`,L,_,`atlas-${N}`].filter(Boolean).join(` `).trim(),style:{...h,...c?{}:{width:E.width,height:E.height}},children:[N===`static-preset`?(0,f.jsx)(Ht,{className:`atlas-static-container`,ref:I.container,tabIndex:0,...v}):(0,f.jsx)(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...z,...v,ref:I.canvas,"data-background":S}),(0,f.jsx)(Ht,{className:[`atlas-overlay`,V?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...m||{}},ref:I.overlay,children:s?(0,f.jsx)(ce,{children:(0,f.jsx)(ct.Provider,{value:j,children:(0,f.jsx)(J.Provider,{value:ee,children:(0,f.jsx)(Y.Provider,{value:P,children:u})})})}):(0,f.jsx)(kt,{bounds:j,preset:P,mode:ee,setIsReady:O,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:I.navigator})}):null,c?(0,f.jsx)(`style`,{children:`.atlas-width-${B} { width: ${E.width}px; height: ${E.height}px; }`}):(0,f.jsx)(`style`,{children:`
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 k){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 N){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 Rt({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?ot({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,s=new Lt(r,{addPart:!1,setDraggableFalse:!1,imageClass:`atlas-static-image`}),c=i?new Ke([s,new Pt(i,{box:!0,text:!0,triggerResize:n})]):s,l=new G(c,new R(1024,1024),t,o?[o]:[]),u=new Ft(r,l);return{name:`static-preset`,em:u,runtime:l,renderer:c,controller:o,container:r,overlay:i,unmount(){Ot(l),l.stopControllers(),l.stop(),u&&u.stop()}}}const zt={"default-preset":It,"static-preset":Rt},Bt={};function Vt(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=Bt]=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=(zt[s]||It)({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 Ht(e){return(0,d.useMemo)(()=>Mt(e),e)}const Ut=d.default.forwardRef((e,t)=>(0,f.jsx)(`div`,{...e,ref:t,part:e.className}));function Wt(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 Gt(e,t=``,n=!1){let r=(0,d.useRef)(e);r.current&&n&&(console.log(`Diff:`,t,Wt(r.current,e)),r.current=e)}const Kt=[`brightness`,`contrast`,`grayscale`,`hueRotate`,`invert`,`saturate`,`sepia`,`blur`],qt=(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,...E}=e;Gt(e,`Atlas.tsx`,e.debug);let[ee,te]=(0,d.useState)(i),[D,O]=(0,d.useState)(!1),k=(0,d.useRef)(!1),A=(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,j,re]=(0,p.default)({scroll:!0}),ie=(0,d.useRef)(),M=e=>{ie.current=e,ne(e)},[N,P,F,I]=Vt(A,{width:E.width,height:E.height,forceRefresh:re,unstable_webglRenderer:o}),[L,R]=(0,d.useState)(``);(0,d.useEffect)(()=>{te(i)},[i]),(0,d.useEffect)(()=>{P&&P.em&&P.em.updateBounds()},[P,j]),(0,d.useEffect)(()=>{P?.runtime.setOptions(C||{})},[C]),(0,d.useEffect)(()=>{P&&P.runtime&&(P.runtime.mode=ee),D&&P&&(P.ready=!0)},[P,D,ee]),(0,d.useEffect)(()=>{P&&(x||(P.runtime.manualHomePosition=!!y,P.runtime.setHomePosition(y)))},[P,x,y]),(0,d.useEffect)(()=>{if(P){let e=P.runtime;e.resize(F.current.width,E.width,F.current.height,E.height),F.current.width=E.width,F.current.height=E.height,e.updateNextFrame(),F.current.didUpdate=!0}},[P,E.width,E.height,F]),(0,d.useEffect)(()=>{if(T&&P){let e=P.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of Kt)T[n]?T[n]!==P.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(P){let e=P.runtime;for(let t of Kt)e.hookOptions.filters[t]=0;e.hookOptions.enableFilters=!1,e.updateNextFrame()}},[P,T]);function ae(){if(P&&(P.overlay&&(P.overlay.style.width=`${j.width}px`,P.overlay.style.height=`${j.height}px`),P.container&&(P.container.style.width=`${j.width}px`,P.container.style.height=`${j.height}px`),x)){let e=P.runtime.world.width,t=P.runtime.world.height,n=e/t,r=F.current.width,i=F.current.height,a=r/i;if(n>a){a=i/r,P.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};P.runtime.setHomePosition(o)}else{let n=(t-e/a)/2;x===`start`&&(n=0),x===`end`&&(n=t-e/a),P.runtime.manualHomePosition=!0;let r={x:0,y:n,width:e,height:e/a};P.runtime.setHomePosition(r)}b&&P.runtime.goHome({})}}X(()=>{ae()},[P,e.runtimeOptions?.maxOverZoom,j.height,j.width,x]),X(()=>{let e=()=>{if(P){let e=P.runtime;F.current.width!==E.width&&F.current.height!==E.height&&(e.resize(F.current.width,E.width,F.current.height,E.height),F.current.width=E.width,F.current.height=E.height,e.updateNextFrame(),F.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[P,E.height,E.width]);let oe={width:120},se=()=>{if(P&&P.navigator){let e=P.runtime.world.height,t=P.runtime.world.width,n=window.devicePixelRatio||1,r=oe.width,i=oe.width/t*e;P.navigator.width=r*n,P.navigator.height=i*n,P.navigator.style.width=r+`px`,P.navigator.style.height=i+`px`}};X(()=>{if(P){se();let e=P.runtime;return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&(se(),ae(),e.resize(F.current.width,E.width,F.current.height,E.height))})}return()=>{}},[P,E.width,E.height]);let ce=(0,d.useCallback)(function(e){let t=()=>{O(!0)};return(0,d.useEffect)(()=>{if(P){P.runtime.goHome();let e=r&&r(P);e&&e.then?e.then(t):t();return}else throw Error(`Invalid configuration - no runtime found`)},[]),e.children},[P]);(0,d.useEffect)(()=>{if(P){let e=P.runtime;if(a)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome()})}return()=>{}},[P,a]),(0,d.useEffect)(()=>P?P.runtime.registerHook(`useBeforeFrame`,()=>{if(F.current.didUpdate&&P.canvas){let e=window.devicePixelRatio||1,t=F.current.width,n=F.current.height;P.canvas.width=t*e,P.canvas.height=n*e,P.canvas.style.width=t+`px`,P.canvas.style.height=n+`px`,P.canvas.getContext(`2d`)?.scale(e,e),P&&P.em&&P.em.updateBounds(),F.current.didUpdate=!1}}):()=>{},[P,a]),(0,d.useEffect)(()=>{let e=()=>{P&&(te(`sketch`),R(`mode-sketch`)),window.removeEventListener(`keyup`,e)},t=t=>{if(t.code===`Space`&&P&&P.runtime.mode===`sketch`){let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||t.target?.isContentEditable)return;t.preventDefault(),te(`explore`),R(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[P]),k.current=!0;let{height:le,width:ue,...z}=E,B=Ht([E.width,E.height]),V=!0;return A&&Array.isArray(A)&&A.length>1&&A[1].interactive===!1&&(V=!1),S=S??`#000`,ie.current&&(S=getComputedStyle(ie.current).getPropertyValue(`--atlas-background`)||S),(0,f.jsxs)(Ut,{ref:M,className:[`atlas`,c?``:`atlas-width-${B}`,L,_,`atlas-${N}`].filter(Boolean).join(` `).trim(),style:{...h,...c?{}:{width:E.width,height:E.height}},children:[N===`static-preset`?(0,f.jsx)(Ut,{className:`atlas-static-container`,ref:I.container,tabIndex:0,...v}):(0,f.jsx)(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...z,...v,ref:I.canvas,"data-background":S}),(0,f.jsx)(Ut,{className:[`atlas-overlay`,V?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...m||{}},ref:I.overlay,children:s?(0,f.jsx)(ce,{children:(0,f.jsx)(lt.Provider,{value:j,children:(0,f.jsx)(q.Provider,{value:ee,children:(0,f.jsx)(J.Provider,{value:P,children:u})})})}):(0,f.jsx)(At,{bounds:j,preset:P,mode:ee,setIsReady:O,onCreated:r,children:u})}),g?(0,f.jsx)(Ut,{className:`atlas-navigator`,children:(0,f.jsx)(`canvas`,{className:`atlas-navigator-canvas`,part:`atlas-navigator-canvas`,ref:I.navigator})}):null,c?(0,f.jsx)(`style`,{children:`.atlas-width-${B} { width: ${E.width}px; height: ${E.height}px; }`}):(0,f.jsx)(`style`,{children:`
57
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
58
  .atlas-width-${B} { width: ${E.width}px; height: ${E.height}px; }
59
59
  .atlas-canvas { flex: 1 1 0px; }
@@ -67,11 +67,11 @@ function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;va
67
67
  .atlas-static-image { position: absolute; user-select: none; transform-origin: 0px 0px; }
68
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
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:`
70
+ `}),t]})});function Jt(e){return Number(e)==e?`${e}px`:e}const Yt=(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)(Ut,{ref:a,className:`atlas-container`,...n,children:[m.width?(0,f.jsx)(qt,{width:m.width||100,height:m.height||100,...u,children:i.children}):null,i.hideInlineStyle?null:(0,f.jsx)(`style`,{children:`
71
71
  .atlas-container {
72
72
  display: var(--atlas-container-display, block);
73
73
  flex: var(--atlas-container-flex, none);
74
74
  width: var(--atlas-container-width, ${l?`${l}px`:`100%`});
75
- height: var(--atlas-container-height, ${qt(c||(t?m.height:512))})
75
+ height: var(--atlas-container-height, ${Jt(c||(t?m.height:512))})
76
76
  }
77
- `}),r]})}),Yt=()=>(0,d.useContext)(Y),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)(J.Provider,{value:r,children:(0,f.jsx)(Y.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=Y,exports.BoundsContext=ct,exports.Box=z,exports.BrowserEventManager=Pt,exports.CanvasRenderer=We,exports.CompositeRenderer=Ge,exports.CompositeResource=F,exports.DebugRenderer=Ke,exports.DrawBox=en,exports.Geometry=Se,exports.GridBuilder=qe,exports.HTMLPortal=nn,exports.ImageService=yn,exports.ImageTexture=A,exports.ModeContext=J,exports.ModeProvider=st,exports.OverlayRenderer=Nt,exports.ReactAtlas=Ot,exports.RegionHighlight=ln,exports.ResizeWorldItem=cn,exports.Runtime=K,exports.SingleImage=k,exports.StaticRenderer=It,exports.Text=B,exports.TileSet=un,exports.TiledImage=N,exports.WebGLRenderer=At,exports.World=R,exports.WorldObject=L,exports.Zone=se,exports.activateEvents=bt,exports.applyProps=yt,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;
77
+ `}),r]})}),Xt=()=>(0,d.useContext)(J),Q=()=>{let e=Xt();return e?e.runtime:void 0},Zt=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useAfterFrame`,e):()=>{},t)},Qt=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useFrame`,e):()=>{},t)},$t=()=>{let e=Xt();return e&&e.canvas?e.canvas:void 0};function en(){return(0,d.useContext)(lt)}const tn=({onCreate:e})=>{let t=(0,d.useRef)({x:0,y:0}),n=$t(),r=en(),i=Q(),[a,o]=(0,d.useState)(),[s,c]=(0,d.useState)(),l=st();return Qt(()=>{i&&a&&!s&&(i.pendingUpdate=!0)},[a,s]),Zt(()=>{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 nn(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 rn=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 Qt(()=>{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 nn(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})});rn.displayName=`HTMLPortal`;const an=(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 on(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 sn(){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 cn=(e,t)=>{let n=st(),r=Q(),i=en(),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=sn(),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]=on(t.east,t.west);t.west+=e*r,t.east-=e*n}else{let e=a-i/h,[n,r]=on(t.north,t.south);t.north+=e*n,t.south-=e*r}},[e.width,e.height,h]);Qt(()=>{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]);an(`mousemove`,_,[e.width,e.height,i]),an(`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 ln({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}=cn({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)(rn,{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 un({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)(ln,{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 dn=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 fn(e){return e.id||e[`@id`]}function pn(){return typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}function mn(){let e=pn();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 hn(){return $.helper||($.vault=mn(),$.loader=new h.ImageServiceLoader,$.helper=(0,g.createThumbnailHelper)($.vault,{imageServiceLoader:$.loader})),$}async function gn(e,t,n){let{loader:r}=hn(),i=await r.loadService({id:e,width:t,height:n});return{id:fn(i),width:t,height:n,imageService:i,thumbnail:void 0}}async function _n(e,t=512){let{vault:n,loader:r,helper:i}=hn(),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 gn(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 vn(e){let{vault:t}=hn(),n=[];for(let r of e.items){let e=t.get(r);n.push(...await _n(e))}return n}async function yn(e){try{let{vault:t}=hn(),n=await t.loadManifest(e);return n?vn(n):[]}catch(e){return console.log(`ERR`,e),[]}}const bn=e=>{let[t,n]=(0,d.useState)();return(0,d.useEffect)(()=>{gn(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)(dn,{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})},xn=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useAfterPaint`,e):()=>{},t)},Sn=(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]=Vt(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&&kt.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}},Cn=(e,t=[])=>{let n=Q();(0,d.useEffect)(()=>n?n.registerHook(`useBeforeFrame`,e):()=>{},t)},wn=(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 Tn(e){return e.current===`sketch`}function En(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=qt,exports.AtlasAuto=Yt,exports.AtlasContext=J,exports.BoundsContext=lt,exports.Box=z,exports.BrowserEventManager=Ft,exports.CanvasRenderer=Ge,exports.CompositeRenderer=Ke,exports.CompositeResource=F,exports.DebugRenderer=qe,exports.DrawBox=tn,exports.Geometry=Ce,exports.GridBuilder=Je,exports.HTMLPortal=rn,exports.ImageService=bn,exports.ImageTexture=A,exports.ModeContext=q,exports.ModeProvider=ct,exports.OverlayRenderer=Pt,exports.ReactAtlas=kt,exports.RegionHighlight=un,exports.ResizeWorldItem=ln,exports.Runtime=G,exports.SingleImage=k,exports.StaticRenderer=Lt,exports.Text=B,exports.TileSet=dn,exports.TiledImage=N,exports.WebGLRenderer=jt,exports.World=R,exports.WorldObject=L,exports.Zone=se,exports.activateEvents=St,exports.applyProps=xt,exports.bounceOut=U,exports.canDrag=Tn,exports.createDefaultEventMap=v,exports.defaultConfig=at,exports.defaultPreset=It,exports.easingFunctions=W,exports.fromImage=ae,exports.getId=fn,exports.getTileFromCanvas=_n,exports.getTileFromImageService=gn,exports.getTiles=yn,exports.getTilesFromManifest=vn,exports.mergeStyles=En,exports.popmotionController=ot,exports.presets=zt,exports.staticPreset=Rt,exports.supportedEventAttributes=_,exports.supportedEventMap=y,exports.unmountComponentAtNode=Ot,exports.useAfterFrame=Zt,exports.useAfterPaint=xn,exports.useAtlas=Xt,exports.useAtlasImage=Sn,exports.useBeforeFrame=Cn,exports.useCanvas=$t,exports.useControlledAnnotationList=wn,exports.useFrame=Qt,exports.useMode=st,exports.useResizeWorldItem=cn,exports.useRuntime=Q,exports.useWorldEvent=an;