@atlas-viewer/atlas 3.2.1 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`@atlas-viewer/dna`),u=require(`node:crypto`),d=require(`@atlas-viewer/iiif-image-api`),f=require(`@iiif/helpers/thumbnail`),p=require(`react`);p=c(p);let m=require(`react-use-measure`);m=c(m);let h=require(`react/jsx-runtime`),g=require(`react-reconciler`);g=c(g);const _=`onMouseDown.onMouseEnter.onMouseLeave.onMouseMove.onMouseOut.onMouseOver.onMouseUp.onTouchCancel.onTouchEnd.onTouchMove.onTouchStart.onPointerDown.onPointerMove.onPointerUp.onPointerCancel.onPointerEnter.onPointerLeave.onPointerOver.onPointerOut.onScroll.onWheel.onClick.onDragStart.onDragEnd.onDragEnter.onDragExit.onDrag.onDragOver.onContextMenu`.split(`.`);function v(){return _.reduce((e,t)=>(e[t]=[],e),{})}const y=_.reduce((e,t)=>(e[t.slice(2).toLowerCase()]=t,e[t]=t,e),{});function b(e,t,n=1){let r=t.length;if(r===0)throw Error(`No resources passed in.`);let i=0,a=1/0;for(let o=0;o<r&&!(!t[o]||!t[o].display);o++){let r=x(t[o].display.scale,e/(n||1));r<a&&(a=r,i=o)}return i}function x(e,t){return Math.abs(e-t)}function S(e,t){let n=x(e.x,t.x),r=x(e.y,t.y);return Math.sqrt(n**2+r**2)}function C(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function w(e){"@babel/helpers - typeof";return w=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},w(e)}function T(e,t){if(w(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(w(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ee(e){var t=T(e,`string`);return w(t)==`symbol`?t:t+``}function E(e,t,n){return(t=ee(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var D=class e{constructor(e,t,n){E(this,`element`,void 0),E(this,`runtime`,void 0),E(this,`unsubscribe`,void 0),E(this,`activatedEvents`,[]),E(this,`eventHandlers`,[]),E(this,`bounds`,void 0),E(this,`listening`,void 0),E(this,`pointerMoveEvent`,void 0),E(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),E(this,`options`,void 0),E(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),E(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),E(this,`onContextMenu`,e=>{e.preventDefault();let t=`onContextMenu`;if(this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),E(this,`onTouchEvent`,e=>{let t=y[e.type],n=[],r=e.touches.length;for(let t=0;t<r;t++){let r=e.touches.item(t);if(!r)continue;let{x:i,y:a}=this.runtime.viewerToWorld(r.clientX-this.bounds.left,r.clientY-this.bounds.top),o={id:r.identifier,x:i,y:a};n.push(o)}n.length&&this.assignToEvent(e,n[0].x,n[0].y),t!==`onTouchEnd`&&t!==`onTouchCancel`?(this.pointerEventState.lastTouches=n,e.atlasTouches=n,this.runtime.world.propagateTouchEvent(t,e,n)):(e.atlasTouches=[],this.runtime.world.propagateTouchEvent(t,e,this.pointerEventState.lastTouches),this.pointerEventState.lastTouches=[])}),E(this,`onPointerEvent`,e=>{if(e.button===2)return;let t=y[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),E(this,`onPointerDown`,e=>{e.button!==2&&(this.pointerEventState.isPressed=!0,this.pointerEventState.isClicking=!0,this.pointerEventState.mouseDownStart.x=e.clientX,this.pointerEventState.mouseDownStart.y=e.clientY,setTimeout(()=>{this.runtime&&(this.pointerEventState.isClicking=!1)},250),setTimeout(()=>{if(this.runtime&&this.pointerEventState.isPressed&&!this.pointerEventState.isDragging){let t=this.runtime.viewerToWorld(this.pointerEventState.mouseDownStart.x-this.bounds.left,this.pointerEventState.mouseDownStart.y-this.bounds.top);this.pointerEventState.isDragging=!0,this.pointerEventState.itemsBeingDragged=this.runtime.world.propagatePointerEvent(`onDragStart`,e,t.x,t.y)}},800),this.onPointerEvent(e))}),E(this,`onPointerUp`,e=>{if(e.button!==2){if(this.pointerEventState.isClicking){let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onClick`,e,t,n)}if(this.pointerEventState.isDragging){for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent(`onDragEnd`,e);this.pointerEventState.isDragging=!1}this.pointerEventState.isClicking=!1,this.pointerEventState.isPressed=!1,this.pointerEventState.itemsBeingDragged=[],this.onPointerEvent(e)}}),E(this,`onPointerMove`,e=>{this.pointerMoveEvent=void 0;let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);if(Number.isNaN(t)||Number.isNaN(n))return;this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onPointerMove`,e,t,n);let r=this.runtime.world.propagatePointerEvent(`onMouseMove`,e,t,n),i=[],a=[];for(let t of r)i.push(t.id),a.push(t),this.pointerEventState.mousedOver.indexOf(t)===-1&&(t.dispatchEvent(`onMouseEnter`,e),t.dispatchEvent(`onPointerEnter`,e),t.dispatchEvent(`onMouseOver`,e),t.dispatchEvent(`onPointerOver`,e));for(let t of this.pointerEventState.mousedOver)i.indexOf(t.id)===-1&&(t.dispatchEvent(`onMouseLeave`,e),t.dispatchEvent(`onPointerLeave`,e),t.dispatchEvent(`onMouseOut`,e),t.dispatchEvent(`onPointerOut`,e));if(this.pointerEventState.isDragging)for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent(`onDrag`,e);if(this.pointerEventState.isPressed&&!this.pointerEventState.isDragging&&S(this.pointerEventState.mouseDownStart,{x:e.clientX,y:e.clientY})>50){let t=this.runtime.viewerToWorld(this.pointerEventState.mouseDownStart.x-this.bounds.left,this.pointerEventState.mouseDownStart.y-this.bounds.top);this.pointerEventState.isDragging=!0,this.pointerEventState.itemsBeingDragged=this.runtime.world.propagatePointerEvent(`onDragStart`,{...e,atlas:{x:t.x,y:t.y}},t.x,t.y)}this.pointerEventState.mousedOver=a}),this.element=e,this.runtime=t,this.unsubscribe=t.world.addLayoutSubscriber(this.layoutSubscriber.bind(this)),this.bounds=e.getBoundingClientRect(),this.listening=!1,this.options={simulationRate:0,...n||{}};let r=0;t.registerHook(`useFrame`,e=>{r+=e,r>this.options.simulationRate&&this.pointerMoveEvent&&(r=0,t.updateNextFrame())}),t.registerHook(`useBeforeFrame`,()=>{this.pointerMoveEvent&&this.onPointerMove(this.pointerMoveEvent)}),this.activateEvents()}updateBounds(){this.bounds=this.element.getBoundingClientRect(),this.runtime.updateRendererScreenPosition()}layoutSubscriber(e){e===`event-activation`&&this.listening==0&&this.activateEvents()}assignToEvent(t,n,r){e.eventPool.atlas.x=n,e.eventPool.atlas.y=r,t.atlas=e.eventPool.atlas}activateEvents(){this.listening=!0,this.element.addEventListener(`pointermove`,this._realPointerMove),this.element.addEventListener(`pointerup`,this.onPointerUp),this.element.addEventListener(`pointerdown`,this.onPointerDown),this.element.addEventListener(`mousedown`,this.onPointerEvent),this.element.addEventListener(`mouseup`,this.onPointerEvent),this.element.addEventListener(`pointercancel`,this.onPointerEvent),this.element.addEventListener(`wheel`,this.onWheelEvent),this.element.addEventListener(`contextmenu`,this.onContextMenu),this.element.addEventListener(`touchstart`,this.onTouchEvent),this.element.addEventListener(`touchcancel`,this.onTouchEvent),this.element.addEventListener(`touchend`,this.onTouchEvent),this.element.addEventListener(`touchmove`,this.onTouchEvent)}normalizeEventName(e){return e.startsWith(`on`)?e.slice(2).toLowerCase():e.toLowerCase()}stop(){this.listening=!1,this.element.removeEventListener(`pointermove`,this._realPointerMove),this.element.removeEventListener(`pointerup`,this.onPointerUp),this.element.removeEventListener(`pointerdown`,this.onPointerDown),this.element.removeEventListener(`mousedown`,this.onPointerEvent),this.element.removeEventListener(`mouseup`,this.onPointerEvent),this.element.removeEventListener(`pointercancel`,this.onPointerEvent),this.element.removeEventListener(`wheel`,this.onWheelEvent),this.element.removeEventListener(`touchstart`,this.onTouchEvent),this.element.removeEventListener(`touchcancel`,this.onTouchEvent),this.element.removeEventListener(`touchend`,this.onTouchEvent),this.element.removeEventListener(`touchmove`,this.onTouchEvent),this.unsubscribe();for(let[e,t]of this.eventHandlers)this.element.removeEventListener(this.normalizeEventName(e),t)}};E(D,`eventPool`,{atlas:{x:0,y:0}});const O=typeof performance==`object`&&performance&&typeof performance.now==`function`?performance:Date,k=typeof AbortController==`function`?AbortController:class{constructor(){this.signal=new M}abort(e=Error(`This operation was aborted`)){this.signal.reason=this.signal.reason||e,this.signal.aborted=!0,this.signal.dispatchEvent({type:`abort`,target:this.signal})}},A=typeof AbortSignal==`function`,j=typeof k.AbortSignal==`function`,M=A?AbortSignal:j?k.AbortController:class{constructor(){this.reason=void 0,this.aborted=!1,this._listeners=[]}dispatchEvent(e){e.type===`abort`&&(this.aborted=!0,this.onabort(e),this._listeners.forEach(t=>t(e),this))}onabort(){}addEventListener(e,t){e===`abort`&&this._listeners.push(t)}removeEventListener(e,t){e===`abort`&&(this._listeners=this._listeners.filter(e=>e!==t))}},N=new Set,P=(e,t)=>{let n=`LRU_CACHE_OPTION_${e}`;L(n)&&ne(n,`${e} option`,`options.${t}`,H)},F=(e,t)=>{let n=`LRU_CACHE_METHOD_${e}`;if(L(n)){let{prototype:r}=H,{get:i}=Object.getOwnPropertyDescriptor(r,e);ne(n,`${e} method`,`cache.${t}()`,i)}},te=(e,t)=>{let n=`LRU_CACHE_PROPERTY_${e}`;if(L(n)){let{prototype:r}=H,{get:i}=Object.getOwnPropertyDescriptor(r,e);ne(n,`${e} property`,`cache.${t}`,i)}},I=(...e)=>{typeof process==`object`&&process&&typeof process.emitWarning==`function`?process.emitWarning(...e):console.error(...e)},L=e=>!N.has(e),ne=(e,t,n,r)=>{N.add(e),I(`The ${t} is deprecated. Please use ${n} instead.`,`DeprecationWarning`,e,r)},R=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),z=e=>R(e)?e<=2**8?Uint8Array:e<=2**16?Uint16Array:e<=2**32?Uint32Array:e<=2**53-1?B:null:null;var B=class extends Array{constructor(e){super(e),this.fill(0)}},V=class{constructor(e){if(e===0)return[];this.heap=new(z(e))(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},H=class e{constructor(t={}){let{max:n=0,ttl:r,ttlResolution:i=1,ttlAutopurge:a,updateAgeOnGet:o,updateAgeOnHas:s,allowStale:c,dispose:l,disposeAfter:u,noDisposeOnSet:d,noUpdateTTL:f,maxSize:p=0,maxEntrySize:m=0,sizeCalculation:h,fetchMethod:g,fetchContext:_,noDeleteOnFetchRejection:v,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:b,allowStaleOnFetchAbort:x,ignoreFetchAbort:S}=t,{length:C,maxAge:w,stale:T}=t instanceof e?{}:t;if(n!==0&&!R(n))throw TypeError(`max option must be a nonnegative integer`);let ee=n?z(n):Array;if(!ee)throw Error(`invalid max value: `+n);if(this.max=n,this.maxSize=p,this.maxEntrySize=m||this.maxSize,this.sizeCalculation=h||C,this.sizeCalculation){if(!this.maxSize&&!this.maxEntrySize)throw TypeError(`cannot set sizeCalculation without setting maxSize or maxEntrySize`);if(typeof this.sizeCalculation!=`function`)throw TypeError(`sizeCalculation set to non-function`)}if(this.fetchMethod=g||null,this.fetchMethod&&typeof this.fetchMethod!=`function`)throw TypeError(`fetchMethod must be a function if specified`);if(this.fetchContext=_,!this.fetchMethod&&_!==void 0)throw TypeError(`cannot set fetchContext without fetchMethod`);if(this.keyMap=new Map,this.keyList=Array(n).fill(null),this.valList=Array(n).fill(null),this.next=new ee(n),this.prev=new ee(n),this.head=0,this.tail=0,this.free=new V(n),this.initialFill=1,this.size=0,typeof l==`function`&&(this.dispose=l),typeof u==`function`?(this.disposeAfter=u,this.disposed=[]):(this.disposeAfter=null,this.disposed=null),this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!v,this.allowStaleOnFetchRejection=!!b,this.allowStaleOnFetchAbort=!!x,this.ignoreFetchAbort=!!S,this.maxEntrySize!==0){if(this.maxSize!==0&&!R(this.maxSize))throw TypeError(`maxSize must be a positive integer if specified`);if(!R(this.maxEntrySize))throw TypeError(`maxEntrySize must be a positive integer if specified`);this.initializeSizeTracking()}if(this.allowStale=!!c||!!T,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!s,this.ttlResolution=R(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||w||0,this.ttl){if(!R(this.ttl))throw TypeError(`ttl must be a positive integer if specified`);this.initializeTTLTracking()}if(this.max===0&&this.ttl===0&&this.maxSize===0)throw TypeError(`At least one of max, maxSize, or ttl is required`);if(!this.ttlAutopurge&&!this.max&&!this.maxSize){let t=`LRU_CACHE_UNBOUNDED`;L(t)&&(N.add(t),I(`TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.`,`UnboundedCacheWarning`,t,e))}T&&P(`stale`,`allowStale`),w&&P(`maxAge`,`ttl`),C&&P(`length`,`sizeCalculation`)}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new B(this.max),this.starts=new B(this.max),this.setItemTTL=(e,t,n=O.now())=>{if(this.starts[e]=t===0?0:n,this.ttls[e]=t,t!==0&&this.ttlAutopurge){let n=setTimeout(()=>{this.isStale(e)&&this.delete(this.keyList[e])},t+1);n.unref&&n.unref()}},this.updateItemAge=e=>{this.starts[e]=this.ttls[e]===0?0:O.now()},this.statusTTL=(n,r)=>{n&&(n.ttl=this.ttls[r],n.start=this.starts[r],n.now=e||t(),n.remainingTTL=n.now+n.ttl-n.start)};let e=0,t=()=>{let t=O.now();if(this.ttlResolution>0){e=t;let n=setTimeout(()=>e=0,this.ttlResolution);n.unref&&n.unref()}return t};this.getRemainingTTL=n=>{let r=this.keyMap.get(n);return r===void 0?0:this.ttls[r]===0||this.starts[r]===0?1/0:this.starts[r]+this.ttls[r]-(e||t())},this.isStale=n=>this.ttls[n]!==0&&this.starts[n]!==0&&(e||t())-this.starts[n]>this.ttls[n]}updateItemAge(e){}statusTTL(e,t){}setItemTTL(e,t,n){}isStale(e){return!1}initializeSizeTracking(){this.calculatedSize=0,this.sizes=new B(this.max),this.removeItemSize=e=>{this.calculatedSize-=this.sizes[e],this.sizes[e]=0},this.requireSize=(e,t,n,r)=>{if(this.isBackgroundFetch(t))return 0;if(!R(n))if(r){if(typeof r!=`function`)throw TypeError(`sizeCalculation must be a function`);if(n=r(t,e),!R(n))throw TypeError(`sizeCalculation return invalid (expect positive integer)`)}else throw TypeError(`invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.`);return n},this.addItemSize=(e,t,n)=>{if(this.sizes[e]=t,this.maxSize){let t=this.maxSize-this.sizes[e];for(;this.calculatedSize>t;)this.evict(!0)}this.calculatedSize+=this.sizes[e],n&&(n.entrySize=t,n.totalCalculatedSize=this.calculatedSize)}}removeItemSize(e){}addItemSize(e,t){}requireSize(e,t,n,r){if(n||r)throw TypeError(`cannot set size without setting maxSize or maxEntrySize on cache`)}*indexes({allowStale:e=this.allowStale}={}){if(this.size)for(let t=this.tail;!(!this.isValidIndex(t)||((e||!this.isStale(t))&&(yield t),t===this.head));)t=this.prev[t]}*rindexes({allowStale:e=this.allowStale}={}){if(this.size)for(let t=this.head;!(!this.isValidIndex(t)||((e||!this.isStale(t))&&(yield t),t===this.tail));)t=this.next[t]}isValidIndex(e){return e!==void 0&&this.keyMap.get(this.keyList[e])===e}*entries(){for(let e of this.indexes())this.valList[e]!==void 0&&this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield[this.keyList[e],this.valList[e]])}*rentries(){for(let e of this.rindexes())this.valList[e]!==void 0&&this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield[this.keyList[e],this.valList[e]])}*keys(){for(let e of this.indexes())this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.keyList[e])}*rkeys(){for(let e of this.rindexes())this.keyList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.keyList[e])}*values(){for(let e of this.indexes())this.valList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.valList[e])}*rvalues(){for(let e of this.rindexes())this.valList[e]!==void 0&&!this.isBackgroundFetch(this.valList[e])&&(yield this.valList[e])}[Symbol.iterator](){return this.entries()}find(e,t){for(let n of this.indexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;if(i!==void 0&&e(i,this.keyList[n],this))return this.get(this.keyList[n],t)}}forEach(e,t=this){for(let n of this.indexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;i!==void 0&&e.call(t,i,this.keyList[n],this)}}rforEach(e,t=this){for(let n of this.rindexes()){let r=this.valList[n],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;i!==void 0&&e.call(t,i,this.keyList[n],this)}}get prune(){return F(`prune`,`purgeStale`),this.purgeStale}purgeStale(){let e=!1;for(let t of this.rindexes({allowStale:!0}))this.isStale(t)&&(this.delete(this.keyList[t]),e=!0);return e}dump(){let e=[];for(let t of this.indexes({allowStale:!0})){let n=this.keyList[t],r=this.valList[t],i=this.isBackgroundFetch(r)?r.__staleWhileFetching:r;if(i===void 0)continue;let a={value:i};if(this.ttls){a.ttl=this.ttls[t];let e=O.now()-this.starts[t];a.start=Math.floor(Date.now()-e)}this.sizes&&(a.size=this.sizes[t]),e.unshift([n,a])}return e}load(e){this.clear();for(let[t,n]of e){if(n.start){let e=Date.now()-n.start;n.start=O.now()-e}this.set(t,n.value,n)}}dispose(e,t,n){}set(e,t,{ttl:n=this.ttl,start:r,noDisposeOnSet:i=this.noDisposeOnSet,size:a=0,sizeCalculation:o=this.sizeCalculation,noUpdateTTL:s=this.noUpdateTTL,status:c}={}){if(a=this.requireSize(e,t,a,o),this.maxEntrySize&&a>this.maxEntrySize)return c&&(c.set=`miss`,c.maxEntrySizeExceeded=!0),this.delete(e),this;let l=this.size===0?void 0:this.keyMap.get(e);if(l===void 0)l=this.newIndex(),this.keyList[l]=e,this.valList[l]=t,this.keyMap.set(e,l),this.next[this.tail]=l,this.prev[l]=this.tail,this.tail=l,this.size++,this.addItemSize(l,a,c),c&&(c.set=`add`),s=!1;else{this.moveToTail(l);let n=this.valList[l];if(t!==n){if(this.isBackgroundFetch(n)?n.__abortController.abort(Error(`replaced`)):i||(this.dispose(n,e,`set`),this.disposeAfter&&this.disposed.push([n,e,`set`])),this.removeItemSize(l),this.valList[l]=t,this.addItemSize(l,a,c),c){c.set=`replace`;let e=n&&this.isBackgroundFetch(n)?n.__staleWhileFetching:n;e!==void 0&&(c.oldValue=e)}}else c&&(c.set=`update`)}if(n!==0&&this.ttl===0&&!this.ttls&&this.initializeTTLTracking(),s||this.setItemTTL(l,n,r),this.statusTTL(c,l),this.disposeAfter)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return this}newIndex(){return this.size===0?this.tail:this.size===this.max&&this.max!==0?this.evict(!1):this.free.length===0?this.initialFill++:this.free.pop()}pop(){if(this.size){let e=this.valList[this.head];return this.evict(!0),e}}evict(e){let t=this.head,n=this.keyList[t],r=this.valList[t];return this.isBackgroundFetch(r)?r.__abortController.abort(Error(`evicted`)):(this.dispose(r,n,`evict`),this.disposeAfter&&this.disposed.push([r,n,`evict`])),this.removeItemSize(t),e&&(this.keyList[t]=null,this.valList[t]=null,this.free.push(t)),this.head=this.next[t],this.keyMap.delete(n),this.size--,t}has(e,{updateAgeOnHas:t=this.updateAgeOnHas,status:n}={}){let r=this.keyMap.get(e);if(r!==void 0)if(this.isStale(r))n&&(n.has=`stale`,this.statusTTL(n,r));else return t&&this.updateItemAge(r),n&&(n.has=`hit`),this.statusTTL(n,r),!0;else n&&(n.has=`miss`);return!1}peek(e,{allowStale:t=this.allowStale}={}){let n=this.keyMap.get(e);if(n!==void 0&&(t||!this.isStale(n))){let e=this.valList[n];return this.isBackgroundFetch(e)?e.__staleWhileFetching:e}}backgroundFetch(e,t,n,r){let i=t===void 0?void 0:this.valList[t];if(this.isBackgroundFetch(i))return i;let a=new k;n.signal&&n.signal.addEventListener(`abort`,()=>a.abort(n.signal.reason));let o={signal:a.signal,options:n,context:r},s=(r,i=!1)=>{let{aborted:s}=a.signal,c=n.ignoreFetchAbort&&r!==void 0;return n.status&&(s&&!i?(n.status.fetchAborted=!0,n.status.fetchError=a.signal.reason,c&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),s&&!c&&!i?l(a.signal.reason):(this.valList[t]===d&&(r===void 0?d.__staleWhileFetching?this.valList[t]=d.__staleWhileFetching:this.delete(e):(n.status&&(n.status.fetchUpdated=!0),this.set(e,r,o.options))),r)},c=e=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=e),l(e)),l=r=>{let{aborted:i}=a.signal,o=i&&n.allowStaleOnFetchAbort,s=o||n.allowStaleOnFetchRejection,c=s||n.noDeleteOnFetchRejection;if(this.valList[t]===d&&(!c||d.__staleWhileFetching===void 0?this.delete(e):o||(this.valList[t]=d.__staleWhileFetching)),s)return n.status&&d.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),d.__staleWhileFetching;if(d.__returned===d)throw r},u=(t,r)=>{this.fetchMethod(e,i,o).then(e=>t(e),r),a.signal.addEventListener(`abort`,()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(t(),n.allowStaleOnFetchAbort&&(t=e=>s(e,!0)))})};n.status&&(n.status.fetchDispatched=!0);let d=new Promise(u).then(s,c);return d.__abortController=a,d.__staleWhileFetching=i,d.__returned=null,t===void 0?(this.set(e,d,{...o.options,status:void 0}),t=this.keyMap.get(e)):this.valList[t]=d,d}isBackgroundFetch(e){return e&&typeof e==`object`&&typeof e.then==`function`&&Object.prototype.hasOwnProperty.call(e,`__staleWhileFetching`)&&Object.prototype.hasOwnProperty.call(e,`__returned`)&&(e.__returned===e||e.__returned===null)}async fetch(e,{allowStale:t=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:o=0,sizeCalculation:s=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:l=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:u=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:f=this.allowStaleOnFetchAbort,fetchContext:p=this.fetchContext,forceRefresh:m=!1,status:h,signal:g}={}){if(!this.fetchMethod)return h&&(h.fetch=`get`),this.get(e,{allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:r,status:h});let _={allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:r,ttl:i,noDisposeOnSet:a,size:o,sizeCalculation:s,noUpdateTTL:c,noDeleteOnFetchRejection:l,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:f,ignoreFetchAbort:d,status:h,signal:g},v=this.keyMap.get(e);if(v===void 0){h&&(h.fetch=`miss`);let t=this.backgroundFetch(e,v,_,p);return t.__returned=t}else{let r=this.valList[v];if(this.isBackgroundFetch(r)){let e=t&&r.__staleWhileFetching!==void 0;return h&&(h.fetch=`inflight`,e&&(h.returnedStale=!0)),e?r.__staleWhileFetching:r.__returned=r}let i=this.isStale(v);if(!m&&!i)return h&&(h.fetch=`hit`),this.moveToTail(v),n&&this.updateItemAge(v),this.statusTTL(h,v),r;let a=this.backgroundFetch(e,v,_,p),o=a.__staleWhileFetching!==void 0,s=o&&t;return h&&(h.fetch=o&&i?`stale`:`refresh`,s&&i&&(h.returnedStale=!0)),s?a.__staleWhileFetching:a.__returned=a}}get(e,{allowStale:t=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:i}={}){let a=this.keyMap.get(e);if(a!==void 0){let o=this.valList[a],s=this.isBackgroundFetch(o);return this.statusTTL(i,a),this.isStale(a)?(i&&(i.get=`stale`),s?(i&&(i.returnedStale=t&&o.__staleWhileFetching!==void 0),t?o.__staleWhileFetching:void 0):(r||this.delete(e),i&&(i.returnedStale=t),t?o:void 0)):(i&&(i.get=`hit`),s?o.__staleWhileFetching:(this.moveToTail(a),n&&this.updateItemAge(a),o))}else i&&(i.get=`miss`)}connect(e,t){this.prev[t]=e,this.next[e]=t}moveToTail(e){e!==this.tail&&(e===this.head?this.head=this.next[e]:this.connect(this.prev[e],this.next[e]),this.connect(this.tail,e),this.tail=e)}get del(){return F(`del`,`delete`),this.delete}delete(e){let t=!1;if(this.size!==0){let n=this.keyMap.get(e);if(n!==void 0)if(t=!0,this.size===1)this.clear();else{this.removeItemSize(n);let t=this.valList[n];this.isBackgroundFetch(t)?t.__abortController.abort(Error(`deleted`)):(this.dispose(t,e,`delete`),this.disposeAfter&&this.disposed.push([t,e,`delete`])),this.keyMap.delete(e),this.keyList[n]=null,this.valList[n]=null,n===this.tail?this.tail=this.prev[n]:n===this.head?this.head=this.next[n]:(this.next[this.prev[n]]=this.next[n],this.prev[this.next[n]]=this.prev[n]),this.size--,this.free.push(n)}}if(this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return t}clear(){for(let e of this.rindexes({allowStale:!0})){let t=this.valList[e];if(this.isBackgroundFetch(t))t.__abortController.abort(Error(`deleted`));else{let n=this.keyList[e];this.dispose(t,n,`delete`),this.disposeAfter&&this.disposed.push([t,n,`delete`])}}if(this.keyMap.clear(),this.valList.fill(null),this.keyList.fill(null),this.ttls&&(this.ttls.fill(0),this.starts.fill(0)),this.sizes&&this.sizes.fill(0),this.head=0,this.tail=0,this.initialFill=1,this.free.length=0,this.calculatedSize=0,this.size=0,this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift())}get reset(){return F(`reset`,`clear`),this.clear}get length(){return te(`length`,`size`),this.size}static get AbortController(){return k}static get AbortSignal(){return M}},U=H;const W=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,re=128;let G,ie;function ae(e){!G||G.length<e?(G=Buffer.allocUnsafe(e*128),u.webcrypto.getRandomValues(G),ie=0):ie+e>G.length&&(u.webcrypto.getRandomValues(G),ie=0),ie+=e}function K(e=21){ae(e-=0);let t=``;for(let n=ie-e;n<ie;n++)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[G[n]&63];return t}var oe=class{get crop(){return this._crop}set crop(e){this._crop=e}getObjectsAt(e){return[]}getAllPointsAt(e,t,n){return[]}getScheduledUpdates(e,t){return[]}constructor(){E(this,`__id`,void 0),E(this,`__revision`,0),E(this,`__host`,void 0),E(this,`__onCreate`,void 0),E(this,`__parent`,void 0),E(this,`__owner`,{value:void 0}),E(this,`__state`,{}),E(this,`eventHandlers`,void 0),E(this,`scale`,1),E(this,`layers`,[]),E(this,`time`,[]),E(this,`_crop`,void 0),E(this,`cropData`,void 0),E(this,`id`,void 0),E(this,`addEventListener`,(e,t,n)=>{let r=y[e];if(!this.eventHandlers[r])throw Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)}),E(this,`removeEventListener`,(e,t)=>{let n=y[e];if(!this.eventHandlers[n]){console.warn(`Unknown event ${n}`);return}this.eventHandlers[n].indexOf(t)!==-1&&(this.eventHandlers[n]=this.eventHandlers[n].filter(e=>e!==t))}),this.id=this.__id=K(),this.eventHandlers=v()}dispatchEvent(e,t){let n=this.eventHandlers[e],r=n?n.length:0,i=!1;if(r)for(let a=0;a<r;a++)try{n[a]?.(t),i=!0}catch(t){console.error(e,t)}return i}get x(){return this.points[1]}get y(){return this.points[2]}get width(){return this.points[3]-this.points[1]}get height(){return this.points[4]-this.points[2]}translate(e,t){(0,l.mutate)(this.points,(0,l.translate)(e,t))}atScale(e){(0,l.mutate)(this.points,(0,l.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,l.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};const q=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,se={},ce=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var le=class extends oe{constructor(){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`points`,void 0),E(this,`hoverEvents`,!1),E(this,`activeEvents`,!1),E(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),E(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`props`,{}),E(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),E(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),E(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),E(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=K(12),this.points=(0,l.dna)(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps(e={}){let t=!1;if(e.interactive!==this.props.interactive&&(t=!0,this.props.interactive=e.interactive),e.style){let n=e.border||e.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let e=se[n]||q.exec(n)||q.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=se[n]=e)}if(this._parsed.border.id&&(e.style.borderWidth=this._parsed.border.match[1],e.style.borderStyle=`solid`,e.style.borderColor=this._parsed.border.match[4]),e.style.outline!==this._parsed.outline.id)if(!e.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let t=se[e.style.outline]||q.exec(e.style.outline)||q.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=se[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of ce)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}};const ue=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,de={},fe=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var pe=class extends oe{constructor(){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`isShape`,!0),E(this,`points`,void 0),E(this,`hoverEvents`,!1),E(this,`activeEvents`,!1),E(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),E(this,`boundingBox`,null),E(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`props`,{}),E(this,`shape`,{type:`none`}),E(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),E(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),E(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),E(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=K(12),this.points=(0,l.dna)(5),this.shape={type:`none`}}updateBoundingBox(){if(this.shape.type===`none`)return;let e=this.shape.points;if(this.shape.points.length>2){let t=Math.min(...e.map(e=>e[0])),n=Math.min(...e.map(e=>e[1])),r=Math.max(0,...e.map(e=>e[0])),i=Math.max(0,...e.map(e=>e[1]));this.boundingBox={x:t,y:n,width:r-t,height:i-n};return}this.boundingBox=null}intersects(e){if(!e||this.shape.type===`none`)return!1;let[t,n]=e,r=this.shape.points,i=this.boundingBox;if(i||(this.updateBoundingBox(),i=this.boundingBox),!i||t<i.x||t>i.x+i.width||n<i.y||n>i.height+i.y)return!1;let a=!1;for(let e=0,i=r.length-1;e<r.length;i=e++)r[e][1]>n!=r[i][1]>n&&t<(r[i][0]-r[e][0])*(n-r[e][1])/(r[i][1]-r[e][1])+r[e][0]&&(a=!a);return a}getAllPointsAt(e,t){return e[3]-e[1]===1&&e[4]-e[2]===1?this.intersects([e[1],e[2]])?[[this,this.points,t]]:[]:[[this,this.points,t]]}applyProps(e={}){let t=!1;if(e.points)if(this.shape.type!==`polygon`||this.shape.points.length!==e.points.length)this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox();else{let t=!1,n=e.points.length;for(let r=0;r<n;r++)if(e.points[r][0]!==this.shape.points[r][0]||e.points[r][1]!==this.shape.points[r][1]){t=!0;break}t&&(this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox())}if(e.interactive!==this.props.interactive&&(t=!0,this.props.interactive=e.interactive),(e.open||e.open===!1)&&(t=!0,this.shape.open=e.open),e.style){let n=e.border||e.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let e=de[n]||ue.exec(n)||ue.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=de[n]=e)}if(this._parsed.border.id&&(e.style.borderWidth=this._parsed.border.match[1],e.style.borderStyle=`solid`,e.style.borderColor=this._parsed.border.match[4]),e.style.outline!==this._parsed.outline.id)if(!e.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let t=de[e.style.outline]||ue.exec(e.style.outline)||ue.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=de[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of fe)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}},J=class e extends oe{constructor(e){if(super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`uri`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`priority`,void 0),E(this,`style`,{opacity:1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:l.DnaFactory.singleBox(e.width/t,e.height/t),rotation:e?.rotation}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;if(this.id=e.id||e.uri,this.uri=e.uri,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y)),e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.crop){this.cropData=e.crop;let t=l.DnaFactory.singleBox(e.crop.width,e.crop.height,e.crop.x,e.crop.y);(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=(0,l.dna)(t)}e.display?(this.display.scale=n,this.display.width=e.display.width,this.display.height=e.display.height,this.display.rotation=e.display.rotation,this.display.points=l.DnaFactory.singleBox(e.display.width,e.display.height)):(this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.display.points=l.DnaFactory.singleBox(e.target.width/n,e.target.height/n))}getAllPointsAt(e,t,n){return[[this,this.crop||this.points,t]]}static fromSvg(t,n,r,i){return e.fromImage(`data:image/svg+xml;base64,`+btoa(t),n,r,i)}static fromImage(t,n,r,i){let a=new e;return a.applyProps({uri:t,id:i,display:r,target:n}),a}getImageUrl(){return this.uri}};function me(e,t,n){return Math.min(Math.max(e,t),n)}var Y=class e extends oe{constructor(e){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`display`,void 0),E(this,`tileWidth`,void 0),E(this,`tileHeight`,void 0),E(this,`columns`,void 0),E(this,`rows`,void 0),E(this,`style`,{opacity:1}),E(this,`points`,void 0),E(this,`service`,void 0),E(this,`format`,`jpg`),E(this,`crop2`,void 0),E(this,`version3`,void 0),E(this,`tileUrl`,void 0),this.tileUrl=C(e.url),this.id=e.id||`${this.tileUrl}--${e.scaleFactor}--${e.tileWidth}x${e.tileHeight}`,this.points=e.displayPoints?e.displayPoints:(0,l.transform)(e.points,(0,l.scale)(e.scaleFactor)),this.tileWidth=e.tileWidth,this.tileHeight=e.tileHeight,this.columns=e.columns,this.rows=e.rows,this.version3=e.version3,this.display={x:0,y:0,width:e.width/e.scaleFactor,height:e.height/e.scaleFactor,points:e.points,scale:e.scaleFactor},e.format&&(this.format=e.format)}applyProps(e){if(e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.service!==this.service&&(this.service=e.service),e.format?this.format=e.format:this.format=`jpg`,e.version3!==void 0&&(this.version3=e.version3),e.crop){this.cropData=e.crop;let t=(0,l.dna)([...this.points]),n=t.length/5,r=e.crop.x||0,i=e.crop.y||0,a=e.crop.x+e.crop.width,o=e.crop.y+e.crop.height;for(let e=0;e<n;e++){let n=e*5;t[n+1]<a&&t[n+3]>r&&t[n+2]<o&&t[n+4]>i?(t[n+1]=me(t[n+1],r,a),t[n+3]=me(t[n+3],r,a),t[n+2]=me(t[n+2],i,o),t[n+4]=me(t[n+4],i,o)):t[n]=0}(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=t}}static fromTile(t,n,r,i,a,o,s,c){let u=r.height?r.height:r.width,d=s?Math.floor(n.width/i):Math.ceil(n.width/i),f=s?Math.floor(n.height/i):Math.ceil(n.height/i),p=Math.ceil(d/r.width),m=Math.ceil(f/u),h=l.DnaFactory.grid(p,m),g=l.DnaFactory.grid(p,m),_=a&&a[`@context`]?Array.isArray(a[`@context`])?a[`@context`]:[a[`@context`]]:[],v=c===void 0?_.indexOf(`http://iiif.io/api/image/3/context.json`)!==-1:c;for(let e=0;e<m;e++)for(let t=0;t<p;t++){let a=t*r.width,o=e*u;g.addPoints(a*i,o*i,t===p-1?n.width:(a+r.width)*i,e===m-1?n.height:(o+u)*i),h.addPoints(a,o,t===p-1?d:a+r.width,e===m-1?f:o+u)}let y=new e({url:t,scaleFactor:i,points:h.build(),displayPoints:g.build(),width:n.width,height:n.height,tileWidth:r.width,tileHeight:u,columns:p,rows:m,format:o,version3:v});return y.applyProps({service:a}),y}getImageUrl(e){let t=this.points.slice(e*5,e*5+5),n=t[3]-t[1],r=t[4]-t[2],i=Math.ceil(n/this.display.scale),a=Math.ceil(r/this.display.scale),o=`${i>this.tileWidth?this.tileWidth:i},`;return this.version3&&(o+=`${a>this.tileHeight?this.tileHeight:a}`),`${this.tileUrl}/${t[1]},${t[2]},${n},${r}/${o}/0/default.${this.format||`jpg`}`}getAllPointsAt(e,t,n){let r=(0,l.hidePointsOutsideRegion)(this.crop||this.points,e);return[[this,r,t]]}transform(e){(0,l.mutate)(this.points,e)}getScheduledUpdates(e,t){return[]}};function he(e,t,n){if(!t||t[0]===0)return null;let r=e[3]-e[1],i=e[4]-e[2],a=t[3]-t[1],o=t[4]-t[2],s=r<a,c=i<o,l=t[1]+a/2-r/2,u=t[2]+o/2-i/2;return{minX:s?t[1]-n:l,maxX:s?t[3]-r+n:l,minY:c?t[2]-n:u,maxY:c?t[4]-i+n:u}}function ge(e){if(!e.enableFilters||!e.filters.brightness&&!e.filters.contrast&&!e.filters.grayscale&&!e.filters.invert&&!e.filters.sepia&&!e.filters.saturate&&!e.filters.hueRotate&&!e.filters.blur)return`none`;let t=``;return e.filters.brightness&&(t+=`brightness(${~~(100+e.filters.brightness*100)}%) `),e.filters.contrast&&(t+=`contrast(${~~(100+e.filters.contrast*100)}%) `),e.filters.grayscale&&(t+=`grayscale(${~~(e.filters.grayscale*100)}%) `),e.filters.invert&&(t+=`invert(${~~(e.filters.invert*100)}%) `),e.filters.sepia&&(t+=`sepia(${~~(e.filters.sepia*100)}%) `),e.filters.saturate&&(t+=`saturate(${~~(100+e.filters.saturate*100)}%) `),e.filters.hueRotate&&(t+=`hue-rotate(${e.filters.hueRotate}deg) `),e.filters.blur&&(t+=`blur(${e.filters.blur}px) `),t.trim()}function _e(e,t,n){return Math.max(t,Math.min(n,e))}function ve(){if(typeof navigator>`u`)return;let e=navigator;return e.connection||e.mozConnection||e.webkitConnection}function ye(e){let t=10;return typeof navigator<`u`&&typeof navigator.hardwareConcurrency==`number`&&(t=_e(Math.round(navigator.hardwareConcurrency*.75),4,10)),e?.saveData?3:e?.effectiveType===`slow-2g`||e?.effectiveType===`2g`?2:e?.effectiveType===`3g`?Math.min(t,4):t}function X(e,t){return t?.saveData||t?.effectiveType===`slow-2g`||t?.effectiveType===`2g`?0:t?.effectiveType===`3g`?2:Math.min(e+2,12)}function be(e={}){let t=ve(),n=ye(t),r=typeof e.maxConcurrentRequests==`number`?Math.max(1,Math.floor(e.maxConcurrentRequests)):n;return{maxConcurrentRequests:r,maxPrefetchPerFrame:typeof e.maxPrefetchPerFrame==`number`?Math.max(0,Math.floor(e.maxPrefetchPerFrame)):X(r,t),timeoutMs:typeof e.timeoutMs==`number`?Math.max(250,Math.floor(e.timeoutMs)):8e3,maxAttempts:typeof e.maxAttempts==`number`?Math.max(1,Math.floor(e.maxAttempts)):3,baseDelayMs:typeof e.baseDelayMs==`number`?Math.max(0,Math.floor(e.baseDelayMs)):250,maxDelayMs:typeof e.maxDelayMs==`number`?Math.max(0,Math.floor(e.maxDelayMs)):3e3,jitterRatio:typeof e.jitterRatio==`number`?_e(e.jitterRatio,0,1):.2,errorRetryIntervalMs:typeof e.errorRetryIntervalMs==`number`?Math.max(0,Math.floor(e.errorRetryIntervalMs)):3e4,revealDelayFrames:typeof e.revealDelayFrames==`number`?Math.max(0,Math.floor(e.revealDelayFrames)):1,revealBatchWindowFrames:typeof e.revealBatchWindowFrames==`number`?Math.max(0,Math.floor(e.revealBatchWindowFrames)):1,skipFadeIfLoadedWithinMs:typeof e.skipFadeIfLoadedWithinMs==`number`?Math.max(0,Math.floor(e.skipFadeIfLoadedWithinMs)):120}}function xe(e,t,n=Math.random){let r=Math.max(1,Math.floor(t)),i=e.baseDelayMs*2**(r-1),a=Math.min(e.maxDelayMs,i),o=a*e.jitterRatio;return o?Math.max(0,Math.floor(a+(n()*2-1)*o)):a}var Se=class extends Error{constructor(e=`Image request cancelled`,t=!0){super(e),E(this,`silent`,void 0),this.name=`ImageRequestCancelledError`,this.silent=t}};function Ce(e){return e instanceof Se}let we=0;function Te(e){return we+=1,`${we}:${e}`}function Ee(e){return Error(`Image load timeout: ${e}`)}function De(e,t){let n,r=document.createElement(`img`);r.decoding=`async`,t.crossOrigin&&(r.crossOrigin=t.crossOrigin);let i=!1;return{promise:new Promise((a,o)=>{let s=()=>{n&&clearTimeout(n),r.onload=null,r.onerror=null};r.onload=()=>{i||(i=!0,s(),a(r))},r.onerror=e=>{i||(i=!0,s(),o(e))},n=setTimeout(()=>{i||(i=!0,s(),o(Ee(e)))},t.timeoutMs),r.src=e,r.complete&&r.naturalWidth>0&&(i=!0,s(),a(r))}),abort:()=>{i||(i=!0,n&&clearTimeout(n),r.onload=null,r.onerror=null,r.src=``)}}}var Oe=class{constructor(e){E(this,`timeoutMs`,void 0),E(this,`crossOrigin`,void 0),E(this,`useFetch`,void 0),E(this,`cache`,void 0),E(this,`inFlight`,new Map),E(this,`knownConsumers`,new Map),this.timeoutMs=e.timeoutMs,this.crossOrigin=e.crossOrigin,this.useFetch=!!e.useFetch&&typeof fetch<`u`&&typeof AbortController<`u`,this.cache=e.cache||new Map}acquire(e,t){let n=this.cache.get(e);if(n&&n.naturalWidth>0)return{requestKey:`cached:${e}`,promise:Promise.resolve(n),release:()=>{}};let r=this.inFlight.get(e);r||(r={url:e,requestKey:Te(e),consumers:new Set,promise:Promise.resolve(document.createElement(`img`)),settled:!1,cancelled:!1,silentCancellation:!0},r.promise=this.createRequest(r).then(t=>(r.settled=!0,this.cache.set(e,t),t)).catch(e=>{throw r.settled=!0,r.cancelled?new Se(`Image request cancelled`,r.silentCancellation):e}).finally(()=>{r&&r.consumers.size===0&&this.inFlight.delete(e)}),this.inFlight.set(e,r)),r.consumers.add(t);let i=this.knownConsumers.get(t)||new Set;return i.add(e),this.knownConsumers.set(t,i),{requestKey:r.requestKey,promise:r.promise,release:n=>{this.release(e,t,n)}}}release(e,t,n={}){let r=this.knownConsumers.get(t);r&&(r.delete(e),r.size===0&&this.knownConsumers.delete(t));let i=this.inFlight.get(e);if(i&&(i.consumers.delete(t),n.silent===!1&&(i.silentCancellation=!1),!(i.consumers.size>0))){if(!i.settled){i.cancelled=!0,i.abortController&&i.abortController.abort(),i.abortDomImage&&i.abortDomImage();return}this.inFlight.delete(e)}}releaseConsumer(e,t={}){let n=this.knownConsumers.get(e);if(n)for(let r of[...n])this.release(r,e,t)}cancelAll(e={}){let t=[...this.knownConsumers.keys()];for(let n of t)this.releaseConsumer(n,e)}async createRequest(e){if(this.useFetch){let t=new AbortController;e.abortController=t;let n=setTimeout(()=>{t.abort(Ee(e.url))},this.timeoutMs);try{let n=this.crossOrigin===`use-credentials`?`include`:`same-origin`,r=await fetch(e.url,{signal:t.signal,credentials:n});if(!r.ok)throw Error(`Image request failed (${r.status}): ${e.url}`);let i=await r.blob(),a=URL.createObjectURL(i);try{let{promise:t,abort:n}=De(a,{timeoutMs:this.timeoutMs,crossOrigin:void 0});return e.abortDomImage=n,await t}finally{URL.revokeObjectURL(a)}}finally{clearTimeout(n)}}let{promise:t,abort:n}=De(e.url,{timeoutMs:this.timeoutMs,crossOrigin:this.crossOrigin});return e.abortDomImage=n,t}};const Z=/(-?[0-9]+(px|em)\s+|0\s+)(-?[0-9]+(px|em)\s+|0\s+)(-?[0-9]+(px|em)\s+|0\s+)?(-?[0-9]+(px|em)\s+|0\s+)?(.*)/g,Q={},ke=typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(`firefox`),Ae=new Map;var je=class{constructor(e,t){E(this,`canvas`,void 0),E(this,`ctx`,void 0),E(this,`options`,void 0),E(this,`imagesPending`,0),E(this,`imagesLoaded`,0),E(this,`imageIdsLoaded`,[]),E(this,`frameIsRendering`,!1),E(this,`pendingDrawCall`,!1),E(this,`firstMeaningfulPaint`,!1),E(this,`parallelTasks`,6),E(this,`maxPrefetchPerFrame`,8),E(this,`imageLoadingConfig`,void 0),E(this,`imageRequestPool`,void 0),E(this,`frameTasks`,0),E(this,`loadingQueueOrdered`,!0),E(this,`loadingQueue`,[]),E(this,`currentTask`,Promise.resolve()),E(this,`tasksRunning`,0),E(this,`inFlightImageLoads`,new Map),E(this,`requiredTileKeys`,new Set),E(this,`requiredPrefetchTileKeys`,new Set),E(this,`requestGeneration`,0),E(this,`frameCounter`,0),E(this,`pendingTileReveals`,new Map),E(this,`stats`,void 0),E(this,`averageJobTime`,64),E(this,`lastKnownScale`,1),E(this,`visible`,[]),E(this,`previousVisible`,[]),E(this,`rendererPosition`,void 0),E(this,`dpi`,void 0),E(this,`drawCalls`,[]),E(this,`lastPaintedObject`,void 0),E(this,`hostCache`,void 0),E(this,`invalidated`,[]),E(this,`fallbackRevealTimeout`,null),E(this,`framePrefetchCount`,0),E(this,`hasTilesFading`,!1),E(this,`hasActiveLayerClip`,!1),E(this,`_worker`,()=>{if(this.loadingQueue.length&&this.tasksRunning<this.parallelTasks&&this.frameTasks<this.parallelTasks){let e=this.loadingQueue.pop();e&&(this.tasksRunning++,this.frameTasks++,this.currentTask=e.task().then(()=>{this.tasksRunning--}).catch(()=>{this.tasksRunning--}))}}),E(this,`_scheduled`,0),E(this,`_doWork`,()=>{this.loadingQueue.length===0&&this.tasksRunning===0&&this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);let e=this.parallelTasks||1;!this.firstMeaningfulPaint&&this.loadingQueue.length&&(e=this.loadingQueue.length);for(let t=0;t<e;t++)this._worker()}),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.ctx=e.getContext(`2d`,{alpha:!0}),this.ctx.imageSmoothingEnabled=!0,this.options=t||{},this.imageLoadingConfig=be(this.options.imageLoading),this.parallelTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Oe({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:this.options.crossOrigin?`anonymous`:void 0,useFetch:!!this.options.crossOrigin,cache:Ae}),this.canvas.style.transition=`opacity .3s`,this.dpi=t?.dpi||1,this.options.readiness===`immediate`&&(this.firstMeaningfulPaint=!0,this.canvas.style.opacity=`1`),this.hostCache=t?.lruCache?new U({maxSize:1024*512*512,dispose:(e,t,n)=>{this.invalidated.push(t),e.width=0,e.height=0},sizeCalculation:(e,t)=>e.width*e.height}):{store:{},get(e){return this.store[e]},set(e,t){this.store[e]=t}}}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}resize(){this.rendererPosition=this.canvas.getBoundingClientRect()}getCompositeOwner(e){let t=e?.__parent;return t&&t.renderOptions?t:void 0}compareCompositeLoadPriority(e,t){let n=this.getCompositeOwner(e),r=this.getCompositeOwner(t);return!n||n!==r?0:(e?.display.scale||0)-(t?.display.scale||0)}isReady(){return this.firstMeaningfulPaint}afterFrame(e){if(this.clearTransform(),this.lastPaintedObject=void 0,this.frameIsRendering=!1,this.imagesPending=this.loadingQueue.length+this.tasksRunning+this.inFlightImageLoads.size+this.pendingTileReveals.size,this.imagesLoaded=0,this.loadingQueueOrdered||(this.loadingQueue=this.loadingQueue.sort((e,t)=>{let n=this.compareCompositeLoadPriority(e.paint,t.paint);return n===0?e.network&&t.network&&e.scale===t.scale?t.distance-e.distance:e.scale-t.scale:n}),this.loadingQueueOrdered=!0),this.scheduleSingleImageLookahead(e),this.previousVisible=this.visible,this.pruneStaleTileWork(),this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let e=0;e<this.drawCalls.length;e++){let e=this.drawCalls.shift();e&&e()}this.doOffscreenWork(),this.options.debug&&this.stats&&this.stats.end()}doOffscreenWork(){this.frameTasks=0,this.loadingQueue.length&&(this._worker(),this.loadingQueue.length&&this.tasksRunning<this.parallelTasks&&(this._scheduled||(this._scheduled=setInterval(this._doWork,0))))}getScale(e,t,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}beforeFrame(e,t,n,r){this.options.debug&&this.stats&&this.stats.begin(),this.frameIsRendering=!0,this.frameCounter+=1,this.visible=[],this.framePrefetchCount=0,this.hasTilesFading=!1,this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.flushTileRevealBatch(),this.options.beforeFrame&&this.options.beforeFrame(t);let i=this.getCanvasDims();this.ctx.globalAlpha=1,this.canvas.dataset.background===`transparent`?this.ctx.clearRect(0,0,i.width,i.height):(this.ctx.fillStyle=this.canvas.dataset.background??`rgb(0, 0, 0)`,this.ctx.fillRect(0,0,i.width,i.height));let a=ge(r);this.ctx.filter!==a&&(this.ctx.filter=a)}applyTransform(e,t,n,r,i){let a=e.__owner.value;if(a&&a.rotation){this.ctx.save();let e=t+r/2,o=n+i/2;this.ctx.translate(e,o),this.ctx.rotate(a.rotation*Math.PI/180),this.ctx.translate(-e,-o),this.lastPaintedObject=a}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}getTileKey(e,t){return`${e.id}::${e.display.scale}::${t}`}nextRequestKey(e){return this.requestGeneration+=1,`${e}::${this.requestGeneration}`}markTileRequired(e,t){if(t){this.requiredPrefetchTileKeys.add(e);return}this.requiredTileKeys.add(e)}isTileRequired(e){return this.requiredTileKeys.has(e)||this.requiredPrefetchTileKeys.has(e)}shouldSkipFade(e,t=performance.now()){return e?.requestedAt?t-e.requestedAt<=this.imageLoadingConfig.skipFadeIfLoadedWithinMs:!1}enqueueTileReveal(e,t,n){let r=performance.now();if(this.imageLoadingConfig.revealDelayFrames===0&&this.imageLoadingConfig.revealBatchWindowFrames===0){let e=this.getTileState(t,n);this.setTileState(t,n,{...e,loadedAt:r,skipFade:this.shouldSkipFade(e,r)});return}this.pendingTileReveals.set(e,{imageBuffer:t,index:n,queuedFrame:this.frameCounter})}flushTileRevealBatch(){if(this.pendingTileReveals.size===0)return;let e=this.imageLoadingConfig.revealDelayFrames,t=this.imageLoadingConfig.revealBatchWindowFrames,n=performance.now(),r=[...this.pendingTileReveals.entries()].sort((e,t)=>e[1].queuedFrame-t[1].queuedFrame),i=0;for(;i<r.length;){let a=r[i];if(this.frameCounter-a[1].queuedFrame<e)break;let o=a[1].queuedFrame+t;for(;i<r.length&&r[i][1].queuedFrame<=o;){let[e,t]=r[i],a=this.getTileState(t.imageBuffer,t.index);a.state===`decoded`&&!a.loadedAt&&this.setTileState(t.imageBuffer,t.index,{...a,loadedAt:n,skipFade:this.shouldSkipFade(a,n)}),this.pendingTileReveals.delete(e),i+=1}}}emitImageError(e){this.options.onImageError&&this.options.onImageError({renderer:`canvas`,...e})}releaseInFlightTileLoad(e,t={}){let n=this.inFlightImageLoads.get(e);n&&(n.release(t),this.inFlightImageLoads.delete(e))}pruneStaleTileWork(){let e=[];for(let t of this.loadingQueue){if(!t.tileKey||this.isTileRequired(t.tileKey)){e.push(t);continue}if(t.paint&&typeof t.index==`number`){let e=this.ensureImageBuffer(t.paint),n=this.getTileState(e,t.index);n.lastRequestKey===t.requestKey&&(n.state===`queued`||n.state===`loading`)&&this.setTileState(e,t.index,{...n,state:`idle`,cancelledAt:performance.now()})}t.tileKey&&this.pendingTileReveals.delete(t.tileKey)}this.loadingQueue=e;let t=[];for(let[e,n]of this.inFlightImageLoads.entries()){if(this.isTileRequired(e))continue;t.push(e);let r=this.getTileState(n.imageBuffer,n.index);r.lastRequestKey===n.requestKey&&r.state===`loading`&&this.setTileState(n.imageBuffer,n.index,{...r,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e)}for(let e of t)this.releaseInFlightTileLoad(e,{silent:!0})}ensureImageBuffer(e){(!e.__host||!e.__host.canvas)&&this.createImageHost(e);let t=e.__host.canvas;return t.tiles||(t.tiles={}),t.indices||(t.indices=[]),t.loaded||(t.loaded=[]),t.canvases||(t.canvases=[]),t}getTileState(e,t){return e.tiles||(e.tiles={}),e.tiles[t]||(e.tiles[t]={state:`idle`},this.syncBufferState(e)),e.tiles[t]}setTileState(e,t,n){e.tiles||(e.tiles={}),e.tiles[t]=n,this.syncBufferState(e)}syncBufferState(e){let t=[],n=[],r=e.tiles||{},i=Object.keys(r);for(let e=0;e<i.length;e++){let a=parseInt(i[e],10),o=r[a].state;(o===`queued`||o===`loading`)&&t.push(a),o===`decoded`&&n.push(a)}e.indices=t,e.loaded=n,e.loading=t.length>0}getCompositeRenderOptions(e){return e.__parent?.renderOptions}shouldClipLayerToBounds(e){return e instanceof J||e instanceof Y?!!this.getCompositeRenderOptions(e)?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}getLayerPolicy(e){return this.getCompositeRenderOptions(e)?.layerPolicy||`fallback-only`}isLayerActive(e){let t=e.__parent;return!t||this.getLayerPolicy(e)===`always-blend`?!0:typeof t.isImageActive==`function`?!!t.isImageActive(e):!0}getPrefetchRadius(e){let t=this.getCompositeRenderOptions(e);return t?typeof t.prefetchRadius==`number`?Math.max(0,t.prefetchRadius):t.loadingBias===`speed`?2:t.loadingBias===`data`?0:1:0}getFadeAlpha(e,t,n){if(t?.skipFade)return 1;if(t?.state===`decoded`&&!t.loadedAt&&(this.imageLoadingConfig.revealDelayFrames>0||this.imageLoadingConfig.revealBatchWindowFrames>0))return 0;let r=this.getCompositeRenderOptions(e);if(!r||!r.fadeInMs||r.fadeInMs<=0)return 1;let i=performance.now(),a=1;if(n&&r.fadeOnLayerChange&&r.layerPolicy!==`active-only`){let t=e.__parent;if(t&&typeof t.getImageActivatedAt==`function`){let n=t.getImageActivatedAt(e);typeof n==`number`&&(a=Math.min(a,Math.max(0,Math.min(1,(i-n)/r.fadeInMs))))}}return t?.loadedAt&&(n||r.fadeFallbackTiles)&&(a=Math.min(a,Math.max(0,Math.min(1,(i-t.loadedAt)/r.fadeInMs)))),a}schedulePrefetchNeighbours(e,t,n,r){if(!(t instanceof Y)||this.framePrefetchCount>=this.maxPrefetchPerFrame||this.getCompositeRenderOptions(t)?.loadingBias===`data`)return;let i=this.getPrefetchRadius(t);if(i<=0)return;let a=t.columns,o=t.rows;if(!a||!o)return;let s=n%a,c=Math.floor(n/a);for(let n=1;n<=i;n++)for(let i=-n;i<=n;i++)for(let l=-n;l<=n;l++){if(Math.max(Math.abs(l),Math.abs(i))!==n)continue;let u=s+l,d=c+i;if(u<0||d<0||u>=a||d>=o)continue;let f=d*a+u,p=this.getTileKey(t,f);if(this.markTileRequired(p,!0),this.schedulePaintToCanvas(e,t,f,r+n*1e3,!0)&&(this.framePrefetchCount++,this.framePrefetchCount>=this.maxPrefetchPerFrame))return}}scheduleSingleImageLookahead(e){if(this.maxPrefetchPerFrame<=0||this.framePrefetchCount>=this.maxPrefetchPerFrame||e.hasActiveZone())return;let t=1/0,n=-1/0,r=new Set;for(let e=0;e<this.visible.length;e++){let i=this.visible[e].__owner?.value;!i||i.type!==`world-object`||i.points[0]===0||(r.add(i),t=Math.min(t,i.points[2]),n=Math.max(n,i.points[4]))}if(!Number.isFinite(t)||!Number.isFinite(n))return;let i=n-t;if(i<=0)return;let a=i*1.5,o=n+a,s=t-a,c,l,u=e.getObjects();for(let e=0;e<u.length;e++){let i=u[e];if(!i||i.type!==`world-object`||i.points[0]===0||r.has(i))continue;let a=i.points[2],d=i.points[4],f=a>=n&&a<=o,p=d<=t&&d>=s;if(!f&&!p)continue;let m;for(let e=0;e<i.layers.length;e++){let t=i.layers[e];if(t instanceof J){m=t;break}}if(m){if(f){let e=a-n;(!c||e<c.distance)&&(c={image:m,distance:e})}if(p){let e=t-d;(!l||e<l.distance)&&(l={image:m,distance:e})}}}let d=[c,l].filter(Boolean);for(let e of d){if(this.framePrefetchCount>=this.maxPrefetchPerFrame)break;let t=this.ensureImageBuffer(e.image);this.schedulePaintToCanvas(t,e.image,0,1e4+e.distance,!0)&&this.framePrefetchCount++}}paint(e,t,n,r,i,a){let o=this.ctx.globalAlpha,s=typeof e.__zoneVisibilityAlpha==`number`?e.__zoneVisibilityAlpha:1;if(e instanceof J||e instanceof Y){let c=e.display.rotation||0,l=c!==0;try{if(l){this.ctx.save();let o=n+i/2,s=r+a/2;e.crop&&(o-=e.crop[t*5+1],s-=e.crop[t*5+2]),this.ctx.translate(o,s),this.ctx.rotate(c*Math.PI/180),this.ctx.translate(-o,-s)}let u=this.options.paintImages!==!1,d=this.options.shouldPaintImage?this.options.shouldPaintImage(e,t):!0;if(!u||!d)return;this.visible.push(e);let f=(e.style?.opacity===void 0?1:e.style.opacity)*s;if(!f)return;this.ctx.globalAlpha=o*f;let p=this.ensureImageBuffer(e),m=this.getTileState(p,t);m.lastUsedAt=performance.now(),this.setTileState(p,t,m);let h=this.getTileKey(e,t);this.markTileRequired(h,!1);let g=this.isLayerActive(e),_=this.getCanvasDims(),v=S({x:n+i/2,y:r+a/2},{x:_.width/2,y:_.height/2}),y=this.invalidated.indexOf(p.canvases[t])!==-1,b=this.hostCache.get(p.canvases[t]),x=!!b&&!y;if(y&&this.setTileState(p,t,{...m,state:`idle`}),(y||!x||m.state===`idle`||m.state===`error`)&&g&&(this.schedulePaintToCanvas(p,e,t,v,!1),this.schedulePrefetchNeighbours(p,e,t,v)),!this.firstMeaningfulPaint)return;if(b&&!y){let s=this.getFadeAlpha(e,m,g);if(s<1&&(this.hasTilesFading=!0),this.ctx.globalAlpha=o*f*s,e.crop&&e.cropData){if(e.crop[t*5]){let o=[e.crop[t*5+1]/e.display.scale-e.display.points[t*5+1],e.crop[t*5+2]/e.display.scale-e.display.points[t*5+2],1+(e.crop[t*5+3]-e.crop[t*5+1])/e.display.scale,1+(e.crop[t*5+4]-e.crop[t*5+2])/e.display.scale];o[0]+=e.cropData.x/e.display.scale,o[1]+=e.cropData.y/e.display.scale;let s=e.x*this.lastKnownScale,c=e.y*this.lastKnownScale,l=[n+s,r+c,i,a];l[0]+=s,l[1]+=c,this.ctx.drawImage(b,o[0],o[1],o[2],o[3],l[0],l[1],l[2]+1,l[3]+1)}}else ke?this.ctx.drawImage(b,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],n,r,i+1,a+1):this.ctx.drawImage(b,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],n,r,i+Number.MIN_VALUE+.5,a+Number.MIN_VALUE+.5)}}catch{}finally{l&&this.ctx.restore(),this.ctx.globalAlpha=o}}let c=e instanceof le&&this.options.box,l=e instanceof pe&&this.options.polygon;if((c||l)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let t=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),c=e.props.relativeStyle?1:i/e.width,u=t.opacity===void 0?1:t.opacity;this.ctx.globalAlpha=o*u*s;let d=0;t.borderWidth!==void 0&&(d=parseInt(t.borderWidth,10)*c);let f=0;t.outlineWidth!==void 0&&(f=parseInt(t.outlineWidth,10)*c);let p=0;if(t.outlineOffset!==void 0&&(p=parseInt(t.outlineOffset,10)*c),t.borderColor&&(this.ctx.strokeStyle=t.borderColor),t.boxShadow){let e=t.boxShadow.split(/,(?![^(]*\))/);for(let t of e){let e=Q[t]||Z.exec(t)||Z.exec(t);Q[t]=e,e&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(e[1])*this.dpi*c,this.ctx.shadowOffsetY=parseInt(e[3])*this.dpi*c,this.ctx.shadowBlur=parseInt(e[5])*this.dpi*c,this.ctx.shadowColor=e[9],this.ctx.fillStyle=`rgba(0,0,0,1)`,this.ctx.fillRect(n+d,r+d,i,a),this.ctx.restore())}}if(this.ctx.fillStyle=t.backgroundColor||`transparent`,this.ctx.lineWidth=d,l){let t=e.shape,i=t.points||[],a=i.length;this.ctx.beginPath();for(let e=0;e<a;e++)this.ctx.lineTo(n+i[e][0]*this.lastKnownScale,r+i[e][1]*this.lastKnownScale);t.open||this.ctx.closePath(),d&&this.ctx.stroke(),t.open||this.ctx.fill()}else d&&this.ctx.strokeRect(n+d/2,r+d/2,i+d,a+d),this.ctx.fillRect(n+d,r+d,i,a);f&&(t.outlineColor&&(this.ctx.strokeStyle=t.outlineColor),this.ctx.lineWidth=f,this.ctx.strokeRect(n-f/2-p,r-f/2-p,i+d*2+f+p*2,a+d*2+f+p*2))}this.ctx.globalAlpha=o}}schedulePaintToCanvas(e,t,n,r,i=!1){let a=this.getTileState(e,n),o=performance.now(),s=this.getTileKey(t,n);if(this.markTileRequired(s,i),this.pendingTileReveals.delete(s),a.nextRetryAt&&a.nextRetryAt>o||a.state===`queued`||a.state===`loading`||a.state===`decoded`)return!1;let c=`${t.id}--${t.display.scale}-${n}`,l=this.nextRequestKey(s);e.canvases[n]=c;let u=this.invalidated.indexOf(c);return u!==-1&&this.invalidated.splice(u,1),this.setTileState(e,n,{...a,state:`queued`,requestedAt:o,error:void 0,lastRequestKey:l,cancelledAt:void 0,skipFade:!1}),this.loadingQueueOrdered=!1,this.loadingQueue.push({id:c,scale:t.display.scale,kind:`network`,tileKey:s,requestKey:l,network:!0,distance:r,paint:t,index:n,prefetch:i,task:async()=>{let a=this.getTileState(e,n);if(a.lastRequestKey!==l||a.state!==`queued`&&a.state!==`loading`)return;let o=this.visible.indexOf(t)!==-1,u=this.previousVisible.indexOf(t)!==-1;if(!i&&!o&&!u){this.setTileState(e,n,{...a,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(s);return}let d=t.getImageUrl(n);this.setTileState(e,n,{...a,state:`loading`,url:d,requestedAt:a.requestedAt||performance.now(),error:void 0});try{let a=`${s}::${l}`,o=this.imageRequestPool.acquire(d,a);this.inFlightImageLoads.set(s,{tileKey:s,requestKey:l,url:d,consumerId:a,paint:t,imageBuffer:e,index:n,release:o.release});let u=await o.promise;this.releaseInFlightTileLoad(s,{silent:!0});let f=this.getTileState(e,n);if(f.lastRequestKey!==l||f.state!==`loading`)return;this.loadingQueueOrdered=!1,this.loadingQueue.push({id:`${c}--decode`,scale:t.display.scale,kind:`decode`,tileKey:s,requestKey:l,distance:r,paint:t,index:n,prefetch:i,task:()=>new Promise(r=>{let i=this.getTileState(e,n);if(i.lastRequestKey!==l||i.state!==`loading`){r();return}let a=t.display.points.slice(n*5,n*5+5),o=document.createElement(`canvas`),c=o.getContext(`2d`);o.width=a[3]-a[1],o.height=a[4]-a[2],this.hostCache.set(e.canvases[n],o),this.drawCalls.push(()=>{let t=this.getTileState(e,n);if(t.lastRequestKey!==l||t.state!==`loading`){r();return}c.drawImage(u,0,0,a[3]-a[1],a[4]-a[2]);let i=this.getTileState(e,n);this.setTileState(e,n,{...i,state:`decoded`,loadedAt:void 0,error:void 0,attempts:0,nextRetryAt:void 0}),this.enqueueTileReveal(s,e,n),this.imagesLoaded++,r()})})})}catch(r){if(this.releaseInFlightTileLoad(s,{silent:!0}),Ce(r)){let t=this.getTileState(e,n);t.lastRequestKey===l&&this.setTileState(e,n,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(s);return}let i=this.getTileState(e,n);if(i.lastRequestKey!==l)return;let a=(i.attempts||0)+1,o=a<this.imageLoadingConfig.maxAttempts,c=o?performance.now()+xe(this.imageLoadingConfig,a):performance.now()+this.imageLoadingConfig.errorRetryIntervalMs;this.setTileState(e,n,{...i,state:o?`idle`:`error`,error:r,attempts:a,nextRetryAt:c}),this.pendingTileReveals.delete(s),this.emitImageError({severity:`recoverable`,imageUrl:d,contentId:t.id,tileIndex:n,attempt:a,maxAttempts:this.imageLoadingConfig.maxAttempts,willRetry:o,nextRetryAt:c,error:r})}}}),!0}afterPaintLayer(e,t){}prepareLayer(e,t){if(this.hasActiveLayerClip=!1,e.__owner.value&&(e.cropData&&this.lastKnownScale*(1/e.display.scale),this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2])),this.shouldClipLayerToBounds(e)){let e=this.getBoundsFromPoints(t);e&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(e.x,e.y,e.width,e.height),this.ctx.clip(),this.hasActiveLayerClip=!0)}(!e.__host||!e.__host.canvas)&&(e instanceof J||e instanceof Y)&&this.createImageHost(e)}finishLayer(){this.hasActiveLayerClip&&(this.ctx.restore(),this.hasActiveLayerClip=!1),this.lastPaintedObject&&this.clearTransform()}createImageHost(e){e.__host=e.__host?e.__host:{},e.__host.canvas={canvas:void 0,canvases:[],tiles:{},indices:[],loaded:[],loading:!1}}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getViewportBounds(e,t,n){let r=e.getActiveZone();if(r){r.recalculateBounds();let e=he(t,r.points,n);if(e){let n=t[3]-t[1],r=t[4]-t[2];return{x1:e.minX,y1:e.minY,x2:e.maxX+n,y2:e.maxY+r}}}return null}pendingUpdate(){this.imagesPending=this.loadingQueue.length+this.tasksRunning+this.inFlightImageLoads.size+this.pendingTileReveals.size;let e=!this.pendingDrawCall&&this.drawCalls.length===0&&this.loadingQueue.length===0&&this.tasksRunning===0&&this.inFlightImageLoads.size===0&&this.pendingTileReveals.size===0;return!e&&this.visible.length===0&&this.options.readiness!==`immediate`&&this.fallbackRevealTimeout===null&&(this.fallbackRevealTimeout=setTimeout(()=>{this.canvas.style.opacity=`1`,this.firstMeaningfulPaint=!0,this.fallbackRevealTimeout=null},500)),!this.firstMeaningfulPaint&&e&&(this.visible.length||this.options.readiness===`immediate`)?(this.canvas.style.opacity=`1`,this.firstMeaningfulPaint=e,!0):this.options.debug||this.hasTilesFading?!0:!e}getRendererScreenPosition(){return this.rendererPosition}resetReadyState(){this.options.readiness!==`immediate`&&(this.firstMeaningfulPaint=!1,this.fallbackRevealTimeout&&(clearTimeout(this.fallbackRevealTimeout),this.fallbackRevealTimeout=null))}reset(){this.loadingQueue=[],this.drawCalls=[],this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);for(let e of[...this.inFlightImageLoads.keys()])this.releaseInFlightTileLoad(e,{silent:!0});this.imageRequestPool.cancelAll({silent:!0}),this.inFlightImageLoads.clear(),this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.pendingTileReveals.clear(),this.requestGeneration+=1,this.frameCounter=0,this.fallbackRevealTimeout&&(clearTimeout(this.fallbackRevealTimeout),this.fallbackRevealTimeout=null),this.imagesPending=0,this.imagesLoaded=0,this.hasTilesFading=!1}},Me=class{constructor(e){E(this,`renderers`,[]),E(this,`length`,void 0);for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].afterFrame(e,t,n,r)}afterPaintLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].afterPaintLayer(e,t)}beforeFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].beforeFrame(e,t,n,r)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,n,r){return this.renderers[0].getPointsAt(e,t,n,r)}getScale(e,t){return this.renderers[0].getScale(e,t)}getViewportBounds(e,t,n){return this.renderers[0].getViewportBounds(e,t,n)}getRendererScreenPosition(){return this.renderers[0].getRendererScreenPosition()}isReady(){for(let e=0;e<this.length;e++)if(!this.renderers[e].isReady())return!1;return!0}paint(e,t,n,r,i,a){for(let o=0;o<this.length;o++)this.renderers[o].paint(e,t,n,r,i,a)}pendingUpdate(){for(let e=0;e<this.length;e++)if(this.renderers[e].pendingUpdate())return!0;return!1}prepareLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].prepareLayer(e,t)}finishLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].finishLayer(e,t)}resize(e,t){for(let n=0;n<this.length;n++)this.renderers[n].resize(e,t)}reset(){for(let e=0;e<this.length;e++)this.renderers[e].reset()}resetReadyState(){for(let e=0;e<this.length;e++)this.renderers[e].resetReadyState&&this.renderers[e].resetReadyState()}},Ne=class extends oe{constructor(...e){super(...e),E(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},Pe=class extends Ne{constructor(e){super(),E(this,`id`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`images`,[]),E(this,`allImages`,[]),E(this,`scaleFactors`,[]),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`lazyLoader`,void 0),E(this,`isFullyLoaded`,!1),E(this,`isLoadingFullResource`,!1),E(this,`maxScaleFactor`,0),E(this,`layerSelection`,new WeakMap),E(this,`layerSelectionFrame`,0),E(this,`renderOptions`,void 0),E(this,`_scheduleSortByScales`,!1),E(this,`_sortByScales`,()=>{this._scheduleSortByScales=!1,this.allImages.sort((e,t)=>t.display.width-e.display.width),this.images=[];let e=.1;for(let t of this.allImages)if(!(t.display.width<this.renderOptions.minSize&&t.display.height<this.renderOptions.minSize&&!t.priority)&&!(t instanceof J&&(t.display.width>this.renderOptions.maxImageSize||t.display.height>this.renderOptions.maxImageSize)&&!t.priority)){if(Math.abs(t.display.scale-e)<.25||t.priority){let e=this.images.pop();e&&(e instanceof J||e.priority)?(t.priority&&this.images.push(t),this.images.push(e)):t&&this.images.push(t)}else t&&this.images.push(t);e=t.display.scale}this.images.length===0&&(this.images=[...this.allImages]),this.scaleFactors=this.images.map(e=>e.display.scale),this.maxScaleFactor=this.scaleFactors.length?Math.max(...this.scaleFactors):0}),E(this,`loadFullResource`,async()=>{if(!(this.isFullyLoaded||this.isLoadingFullResource)&&this.lazyLoader){this.isLoadingFullResource=!0;try{let e=await this.lazyLoader();this.addImages(e||[]),this.isFullyLoaded=!0}finally{this.isLoadingFullResource=!1}}}),E(this,`fallback`,[this.loadFullResource]),this.id=e.id,this.points=l.DnaFactory.singleBox(e.width,e.height),this.lazyLoader=e.loadFullImages,e.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:l.DnaFactory.singleBox(e.width,e.height),height:e.height,width:e.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:2,minSize:255,maxImageSize:2048,quality:1.3,useDevicePixelRatio:!0,layerPolicy:`always-blend`,loadingBias:`balanced`,prefetchRadius:1,fadeInMs:300,fadeFallbackTiles:!1,fadeOnLayerChange:!1,clipToBounds:!1,...e.renderOptions||{}},this.addImages(e.images)}applyProps(e){let t=!1;e.renderSmallestFallback!==void 0&&e.renderSmallestFallback!==this.renderOptions.renderSmallestFallback&&(this.renderOptions.renderSmallestFallback=e.renderSmallestFallback),e.renderLayers!==void 0&&e.renderLayers!==this.renderOptions.renderLayers&&(this.renderOptions.renderLayers=e.renderLayers),e.minSize!==void 0&&e.minSize!==this.renderOptions.minSize&&(this.renderOptions.minSize=e.minSize,t=!0),e.maxImageSize!==void 0&&e.maxImageSize!==this.renderOptions.maxImageSize&&(this.renderOptions.maxImageSize=e.maxImageSize,t=!0),e.quality!==void 0&&e.quality!==this.renderOptions.quality&&(this.renderOptions.quality=e.quality),e.useDevicePixelRatio!==void 0&&e.useDevicePixelRatio!==this.renderOptions.useDevicePixelRatio&&(this.renderOptions.useDevicePixelRatio=e.useDevicePixelRatio),e.layerPolicy!==void 0&&e.layerPolicy!==this.renderOptions.layerPolicy&&(this.renderOptions.layerPolicy=e.layerPolicy),e.loadingBias!==void 0&&e.loadingBias!==this.renderOptions.loadingBias&&(this.renderOptions.loadingBias=e.loadingBias),e.prefetchRadius!==void 0&&e.prefetchRadius!==this.renderOptions.prefetchRadius&&(this.renderOptions.prefetchRadius=e.prefetchRadius),e.fadeInMs!==void 0&&e.fadeInMs!==this.renderOptions.fadeInMs&&(this.renderOptions.fadeInMs=e.fadeInMs),e.fadeFallbackTiles!==void 0&&e.fadeFallbackTiles!==this.renderOptions.fadeFallbackTiles&&(this.renderOptions.fadeFallbackTiles=e.fadeFallbackTiles),e.fadeOnLayerChange!==void 0&&e.fadeOnLayerChange!==this.renderOptions.fadeOnLayerChange&&(this.renderOptions.fadeOnLayerChange=e.fadeOnLayerChange),e.clipToBounds!==void 0&&e.clipToBounds!==this.renderOptions.clipToBounds&&(this.renderOptions.clipToBounds=e.clipToBounds),t&&this.sortByScales()}appendChild(e){this.addImages([e])}removeChild(e){if(this.images.indexOf(e)===-1&&this.allImages.indexOf(e)===-1)return;let t=this.getImageDedupeKey(e);this.images=this.images.filter(n=>n!==e&&this.getImageDedupeKey(n)!==t),this.allImages=this.allImages.filter(n=>n!==e&&this.getImageDedupeKey(n)!==t),this.sortByScales()}insertBefore(e,t){this.addImages([e])}hideInstance(){}addImages(e){let t=new Set(this.allImages),n=new Set(this.allImages.map(e=>this.getImageDedupeKey(e)));for(let r of e){if(!r||t.has(r))continue;let e=this.getImageDedupeKey(r);n.has(e)||(r.__parent=this,r.__owner=this.__owner,this.allImages.push(r),t.add(r),n.add(e))}this.sortByScales()}getImageDedupeKey(e){return`${e.id}::${e.display.scale}`}sortByScales(){this._scheduleSortByScales=!0}getScheduledUpdates(e,t){return this._scheduleSortByScales?[this._sortByScales]:this.isFullyLoaded?[]:t>1/this.maxScaleFactor?this.fallback:[]}getAllPointsAt(e,t,n){if(this.images.length===0)return[];let r=this.renderOptions.useDevicePixelRatio&&typeof window<`u`&&window.devicePixelRatio||1,i=b(1/(n||1)/r,this.images,this.renderOptions.quality),a=this.images.length,o=t?(0,l.compose)(t,(0,l.translate)(this.x,this.y)):(0,l.translate)(this.x,this.y),s=[i];if(i!==this.images.length-1&&this.images[i+1]){s=[];for(let e=a-1;e>=i;e--)s.push(e);let e=s[0];this.renderOptions.renderLayers&&(s=s.slice(-Math.min(s.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&s.indexOf(e)===-1&&s.unshift(e)}s.sort((e,t)=>{let n=this.images[e],r=this.images[t],i=n?n.display.scale:0;return(r?r.display.scale:0)-i});let c=new Set;switch(this.renderOptions.layerPolicy){case`always-blend`:for(let e of s)c.add(e);break;case`active-only`:c.add(i),s=[i];break;case`fallback-only`:default:c.add(i),this.renderOptions.renderSmallestFallback&&s.length&&c.add(s[0]);break}let u=new Set;for(let e of c){let t=this.images[e];t&&u.add(t)}this.layerSelectionFrame+=1;let d=this.getNow(),f=d-Math.max(0,this.renderOptions.fadeInMs);for(let e of this.allImages){let t=this.layerSelection.get(e);if(!u.has(e)){this.layerSelection.set(e,{active:!1,frame:this.layerSelectionFrame});continue}let n=!!t&&t.frame===this.layerSelectionFrame-1,r=n&&t.active;this.layerSelection.set(e,{active:!0,frame:this.layerSelectionFrame,activatedAt:r&&typeof t.activatedAt==`number`?t.activatedAt:n?d:f})}let p=[];for(let t=0;t<s.length;t++){let r=s[t],i=this.images[r];p.push(...i.getAllPointsAt(e,o,n))}return p}isImageActive(e){let t=this.layerSelection.get(e);return!!t&&t.frame===this.layerSelectionFrame&&t.active}getImageActivatedAt(e){let t=this.layerSelection.get(e);if(!(!t||t.frame!==this.layerSelectionFrame||!t.active))return t.activatedAt}getNow(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}},Fe=class extends oe{constructor(e){if(super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`uri`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`getTexture`,void 0),this.getTexture=()=>({source:void 0,hash:-1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:t===1?this.points:l.DnaFactory.singleBox(e.width/t,e.height/t)}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;this.id=e.id,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height)),this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.getTexture=e.getTexture,this.display.points=n===1?this.points:l.DnaFactory.singleBox(e.target.width/n,e.target.height/n)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}};const Ie=85.05112878;function Le(e,t){if(!Number.isFinite(e))throw Error(`${t} must be a finite number`)}function Re(e,t){if(Le(e,t),e<=0)throw Error(`${t} must be greater than 0`)}function ze(e){if(!Number.isFinite(e))throw Error(`Latitude must be a finite number`);return e>Ie?Ie:e<-Ie?-Ie:e}function Be(e){if(Le(e.west,`Map bounds west`),Le(e.south,`Map bounds south`),Le(e.east,`Map bounds east`),Le(e.north,`Map bounds north`),e.west<-180||e.west>180)throw Error(`Map bounds west must be within [-180, 180]`);if(e.east<-180||e.east>180)throw Error(`Map bounds east must be within [-180, 180]`);if(e.south<-90||e.south>90)throw Error(`Map bounds south must be within [-90, 90]`);if(e.north<-90||e.north>90)throw Error(`Map bounds north must be within [-90, 90]`);if(e.west>=e.east)throw Error(`Map bounds must satisfy west < east (antimeridian crossing is not supported)`);if(e.south>=e.north)throw Error(`Map bounds must satisfy south < north`);return e}function Ve(e){if(!Number.isFinite(e))throw Error(`Longitude must be a finite number`);return(e+180)/360}function He(e){let t=ze(e)*Math.PI/180;return(1-Math.log(Math.tan(t)+1/Math.cos(t))/Math.PI)/2}function Ue(e){if(!Number.isFinite(e))throw Error(`Mercator X must be a finite number`);return e*360-180}function We(e){if(!Number.isFinite(e))throw Error(`Mercator Y must be a finite number`);let t=Math.PI*(1-2*e);return 180/Math.PI*Math.atan(Math.sinh(t))}function Ge(e,t){return Ve(e)*2**t}function Ke(e,t){return He(e)*2**t}function qe(e,t){return Ue(e/2**t)}function Je(e,t){return We(e/2**t)}function Ye(e){let t=Be(e.bounds);Re(e.width,`Map world width`),Re(e.height,`Map world height`);let n=Ve(t.west),r=Ve(t.east),i=He(t.north),a=He(t.south),o=r-n,s=a-i;if(!(o>0))throw Error(`Map bounds produce an invalid mercator X span`);if(!(s>0))throw Error(`Map bounds produce an invalid mercator Y span`);let c=(t,r)=>{let a=Ve(t),c=He(r);return{x:(a-n)/o*e.width,y:(c-i)/s*e.height}},l=(t,r)=>{Le(t,`World x`),Le(r,`World y`);let a=n+t/e.width*o,c=i+r/e.height*s;return{lng:Ue(a),lat:We(c)}};return{lngLatToWorld:c,worldToLngLat:l,lngLatBoundsToWorldRect:e=>{Be(e);let t=c(e.west,e.north),n=c(e.east,e.south);return{x:t.x,y:t.y,width:n.x-t.x,height:n.y-t.y}},worldRectToLngLatBounds:e=>{Le(e.x,`World rect x`),Le(e.y,`World rect y`),Le(e.width,`World rect width`),Le(e.height,`World rect height`);let t=l(e.x,e.y),n=l(e.x+e.width,e.y+e.height);return{west:t.lng,south:n.lat,east:n.lng,north:t.lat}},projectRing:e=>{let t=[];for(let[n,r]of e){let e=c(n,r);t.push([e.x,e.y])}return t}}}const Xe=`https://tile.openstreetmap.org/{z}/{x}/{y}.png`;function Ze(e){if(e.s)return e.s;let t=e.subdomains||[];if(t.length!==0)return t[Math.abs(e.x+e.y+e.z)%t.length]}function Qe(e,t){let n=Ze(t)||``;return e.replace(/\{z\}/g,`${t.z}`).replace(/\{x\}/g,`${t.x}`).replace(/\{y\}/g,`${t.y}`).replace(/\{s\}/g,n)}function $e(e,t){let n=e||Xe;return typeof n==`function`?n(t):Qe(n,t)}function et(e,t,n){return Math.min(n,Math.max(t,e))}function tt(e){Be(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=2**t,r=n-1,i=Ge(e.bounds.west,t),a=Ge(e.bounds.east,t),o=Ke(e.bounds.north,t),s=Ke(e.bounds.south,t),c=et(i,0,n),l=et(a,0,n),u=et(o,0,n),d=et(s,0,n),f=Math.max(1e-9,l-c),p=Math.max(1e-9,d-u),m=et(Math.floor(i),0,r),h=et(Math.ceil(a)-1,0,r),g=et(Math.floor(o),0,r),_=et(Math.ceil(s)-1,0,r),v=Math.max(1,h-m+1),y=Math.max(1,_-g+1);return{columns:v,rows:y,count:v*y,minTileX:m,maxTileX:h,minTileY:g,maxTileY:_,westTile:c,eastTile:l,northTile:u,southTile:d,tileSpanX:f,tileSpanY:p}}function nt(e){Be(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=Ye({bounds:e.bounds,width:e.worldWidth,height:e.worldHeight}),r=tt({bounds:e.bounds,zoom:t}),i=typeof e.maxTiles==`number`?e.maxTiles:1/0;if(r.count>i)throw Error(`Map tile grid too large at zoom ${t}: ${r.count} tiles exceeds the configured max (${i})`);let a=[],o=[];for(let e=r.minTileY;e<=r.maxTileY;e++)for(let i=r.minTileX;i<=r.maxTileX;i++){let r=qe(i,t),s=qe(i+1,t),c=Je(e,t),l=Je(e+1,t),u=n.lngLatToWorld(r,c),d=n.lngLatToWorld(s,l);a.push(1,u.x,u.y,d.x,d.y),o.push({x:i,y:e,z:t})}return{points:(0,l.dna)(a.length?a:[0]),tiles:o,columns:r.columns,rows:r.rows,count:r.count,minTileX:r.minTileX,maxTileX:r.maxTileX,minTileY:r.minTileY,maxTileY:r.maxTileY}}var rt=class extends Y{constructor(e){let t=e.scaleFactor||1,n=e.tileSize||256,r=e.tileSource||e.tileUrlTemplate||Xe,i=nt({bounds:e.bounds,zoom:e.zoom,worldWidth:e.worldWidth,worldHeight:e.worldHeight}),a=e.id||`map-tiled-image-z${e.zoom}-${e.worldWidth}x${e.worldHeight}-${i.minTileX}:${i.maxTileX}-${i.minTileY}:${i.maxTileY}`;super({id:a,url:`map://tile-source`,scaleFactor:t,points:i.points,displayPoints:i.points,tileWidth:n,tileHeight:n,width:e.worldWidth,height:e.worldHeight,columns:i.columns,rows:i.rows,format:`png`,version3:!1}),E(this,`zoom`,void 0),E(this,`bounds`,void 0),E(this,`worldWidth`,void 0),E(this,`worldHeight`,void 0),E(this,`tileSize`,void 0),E(this,`tileSource`,void 0),E(this,`subdomains`,void 0),E(this,`tileCoordinates`,void 0),E(this,`minTileX`,void 0),E(this,`maxTileX`,void 0),E(this,`minTileY`,void 0),E(this,`maxTileY`,void 0),this.zoom=Math.max(0,Math.floor(e.zoom)),this.bounds={...e.bounds},this.worldWidth=e.worldWidth,this.worldHeight=e.worldHeight,this.tileSize=n,this.tileSource=r,this.subdomains=[...e.subdomains||[]],this.tileCoordinates=i.tiles,this.minTileX=i.minTileX,this.maxTileX=i.maxTileX,this.minTileY=i.minTileY,this.maxTileY=i.maxTileY}getImageUrl(e){let t=this.tileCoordinates[e];return t?$e(this.tileSource,{z:t.z,x:t.x,y:t.y,tileSize:this.tileSize,subdomains:this.subdomains}):``}},it=class{constructor(e){E(this,`canvas`,void 0),E(this,`context`,void 0),E(this,`heightRatio`,1),E(this,`widthRatio`,1),E(this,`target`,new Float32Array(5)),E(this,`initialWidth`,void 0),E(this,`initialHeight`,void 0),E(this,`bounds`,void 0),E(this,`aggregate`,void 0),E(this,`delta`,0),E(this,`renderNextFrame`,!0),this.canvas=e,this.initialWidth=e.width,this.initialHeight=e.height,this.context=e.getContext(`2d`),this.context.globalAlpha=.5,this.aggregate=(0,l.scale)(1)}isReady(){return!0}resize(){this.initialWidth=this.canvas.width,this.initialHeight=this.canvas.height,this.renderNextFrame=!0}afterFrame(e,t,n){if(this.renderNextFrame){this.context.clearRect(0,0,this.canvas.width,this.canvas.height);let t=this.initialWidth/e.width,r=this.initialHeight/e.height,i=this.widthRatio>this.heightRatio?t:r;if(this.target=n,this.bounds){let t=e.getPointsAt(this.bounds,this.aggregate,i);for(let[e,n]of t)if(e instanceof J&&e.__host.canvas){let t=n.length/5;for(let r=0;r<t;r++)e.__host.canvas.canvases[r]&&(n[r+1]*i,n[r+2]*i,(n[r+3]-n[r+1])*i,(n[r+4]-n[r+2])*i)}}e.getPoints().forEach((e,t,n)=>{if(t%5==0&&e){let e={x1:n[t+1]*i,y1:n[t+2]*i,x2:n[t+3]*i,y2:n[t+4]*i,width:(n[t+3]-n[t+1])*i,height:(n[t+4]-n[t+2])*i};this.context.strokeStyle=`red`,this.context.strokeRect(e.x1,e.y1,e.width,e.height)}}),n&&(this.context.strokeStyle=`red`,this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(n[1]*i,n[2]*i,(n[3]-n[1])*i,(n[4]-n[2])*i))}}getActiveZone(e){return null}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=l.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,n,r,i,a){this.renderNextFrame=!0}prepareLayer(e){}pendingUpdate(){return!1}hasActiveZone(){return!1}getViewportBounds(e,t,n){return null}getRendererScreenPosition(){return this.canvas.getBoundingClientRect()}finishLayer(){}reset(){}};function at(e,t,n,r,i){let a=Math.PI/180*i,o=Math.cos(a),s=Math.sin(a);return[o*(n-e)+s*(r-t)+e,o*(r-t)-s*(n-e)+t]}var ot=class e extends oe{constructor(e,t){super(),E(this,`id`,void 0),E(this,`type`,`world-object`),E(this,`scale`,void 0),E(this,`layers`,void 0),E(this,`points`,void 0),E(this,`worldPoints`,void 0),E(this,`intersectionBuffer`,(0,l.dna)(5)),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`invertedBuffer`,(0,l.dna)(9)),E(this,`rotation`,0),E(this,`filteredPointsBuffer`,void 0),E(this,`_updatedList`,[]),E(this,`geometry`,void 0);let{x:n=0,y:r=0}=t||{};e?(this.id=e.id||``,this.scale=1,this.layers=e.layers,this.points=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.worldPoints=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.filteredPointsBuffer=(0,l.dna)(e.layers.length*5)):(this.id=``,this.scale=1,this.layers=[],this.points=(0,l.dna)(5),this.worldPoints=(0,l.dna)(5),this.filteredPointsBuffer=(0,l.dna)(5))}static createWithProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){let t=e.x||0,n=e.y||0;e.id!==void 0&&(this.id=e.id);let r=e.scale===void 0?this.scale:e.scale;this.points[0]=1,this.points[1]=t,this.points[2]=n,this.points[3]=t+e.width,this.points[4]=n+e.height,this.rotation=e.rotation||0,this.worldPoints[3]=this.worldPoints[1]+e.width,this.worldPoints[4]=this.worldPoints[2]+e.height,e.scale&&e.scale!==1&&this.atScale(r),this.scale=r}appendChild(e){e.points[0]===0&&e.points.set(this.points),e.__owner.value=this,this.addLayers([e])}removeChild(e){this.layers=this.layers.filter(t=>t!==e),this.filteredPointsBuffer=(0,l.dna)(this.layers.length*5)}insertBefore(e,t){let n=this.layers.indexOf(t);if(n===-1||this.layers.indexOf(e)!==-1)return;let r=this.layers.slice(0,n),i=this.layers.slice(n);this.layers=[...r,e,...i]}hideInstance(){console.warn(`hideInstance: not yet implemented`)}getObjectsAt(e,t){if(this.rotation&&(e=this.applyRotation(e)),(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer)[0]===0)return[];let n=this.layers.length,r=[];for(let i=0;i<n;i++){let n=this.layers[i];if(t&&n.isShape){let t=(0,l.transform)(n.points,(0,l.translate)(this.x,this.y));if(!n.intersects([e[1]-t[1],e[2]-t[2]]))continue}if((0,l.hidePointsOutsideRegion)((0,l.transform)(n.points,(0,l.translate)(this.x,this.y)),e,this.filteredPointsBuffer)[0]!==0&&r.push(n),t){let i=n;r.push(...i.getObjectsAt(e,t))}}return r}applyRotation(e){if(this.rotation){let t={x:e[1],y:e[2]},n={x:e[1],y:e[4]},r={x:e[3],y:e[2]},i={x:e[3],y:e[4]},a=this.points[1]+(this.points[3]-this.points[1])/2,o=this.points[2]+(this.points[4]-this.points[2])/2,[s,c]=at(a,o,t.x,t.y,this.rotation),[u,d]=at(a,o,n.x,n.y,this.rotation),[f,p]=at(a,o,r.x,r.y,this.rotation),[m,h]=at(a,o,i.x,i.y,this.rotation),g=Math.min(s,u,f,m),_=Math.max(s,u,f,m),v=Math.min(c,d,p,h),y=Math.max(c,d,p,h);return(0,l.dna)([e[0],g,v,_,y])}return e}getAllPointsAt(e,t,n){let r=(0,l.compose)((0,l.translate)(this.x,this.y),(0,l.scale)(this.scale),this.aggregateBuffer);this.rotation&&(e=this.applyRotation(e));let i=(0,l.getIntersection)(e,this.points,this.intersectionBuffer),a=this.layers.length,o=[],s=(0,l.transform)(i,(0,l.compose)((0,l.scale)(1/this.scale),(0,l.translate)(-this.x,-this.y),this.invertedBuffer)),c=t?(0,l.compose)(t,r,this.aggregateBuffer):r,u=n*this.scale;for(let e=0;e<a;e++)o.push(...this.layers[e].getAllPointsAt(s,c,u));return o}addLayers(e){let t=[];for(let n of e)this.layers.indexOf(n)===-1&&(t.push(n),n.points.length===5&&(n.points[1]<this.worldPoints[1]/this.scale||n.points[2]<this.worldPoints[2]/this.scale||n.points[3]>this.worldPoints[3]/this.scale||n.points[4]>this.worldPoints[4]/this.scale)&&(n.crop=n.crop||(0,l.dna)([1,Math.max(this.worldPoints[1]/this.scale,n.points[1]),Math.max(this.worldPoints[2]/this.scale,n.points[2]),Math.min(this.worldPoints[3]/this.scale,n.points[3]),Math.min(this.worldPoints[4]/this.scale,n.points[4])])));this.layers=this.layers.concat(t),this.filteredPointsBuffer=(0,l.dna)(this.layers.length*5)}getScheduledUpdates(e,t){let n=this.layers.length;this._updatedList=[];let r=t*this.scale;for(let t=0;t<n;t++){let n=this.layers[t].getScheduledUpdates(e,r);n&&this._updatedList.push(...n)}return this._updatedList}},st=class e extends oe{get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}constructor(e=0,t=0,n=100,r=`left-to-right`){super(),E(this,`id`,`world`),E(this,`_width`,void 0),E(this,`_height`,void 0),E(this,`aspectRatio`,void 0),E(this,`viewingDirection`,void 0),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`isDirty`,!1),E(this,`zones`,[]),E(this,`filteredPointsBuffer`,void 0),E(this,`selectedZone`,void 0),E(this,`triggerQueue`,[]),E(this,`activatedEvents`,[]),E(this,`_updatedList`,[]),E(this,`translationBuffer`,(0,l.dna)(9)),E(this,`needsRecalculate`,!0),E(this,`emptyPaintables`,[]),E(this,`renderOrder`,[]),E(this,`debugSubscribers`,new Set),E(this,`zoneVisibilityFadeDurationMs`,220),E(this,`zoneOutsideOpacity`,.2),E(this,`zoneVisibilityFade`,void 0),E(this,`points`,void 0),E(this,`objects`,[]),E(this,`subscriptions`,[]),E(this,`_propagateEventTargets`,[]),E(this,`_alreadyFlushed`,[]),this._width=e,this._height=t,this.aspectRatio=Number.isNaN(e/t)?1:e/t,this.viewingDirection=r,this.points=(0,l.dna)(n*5),this.filteredPointsBuffer=(0,l.dna)(n*5)}static withProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){e.width!==void 0&&e.height!==void 0&&(e.width!==this._width||e.height!==this._height)&&this.resize(e.width,e.height),e.viewingDirection!==this.viewingDirection&&(this.viewingDirection=e.viewingDirection,this.triggerRepaint())}propagateTouchEvent(e,t,n){let r=[];for(let e of n)if(e.x&&e.y){let t=l.DnaFactory.singleBox(1,1,e.x,e.y);r.push(this.getObjectsAt(t,!0).reverse())}return this.emitDebug({type:`touch`,at:performance.now(),event:e,touches:n.length}),r.map(n=>this.propagateEvent(e,t,n,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(e,t,n,r,i={}){let a=l.DnaFactory.singleBox(1,1,n,r),o=this.getObjectsAt(a,!0).reverse(),s=this.propagateEvent(e,t,o,i);return this.emitDebug({type:`pointer`,at:performance.now(),event:e,x:n,y:r,targets:s.length}),s}propagateEvent(e,t,n,{bubbles:r=!1,cancelable:i=!1}={}){t.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let a=!1;t.stopPropagation=()=>{a=!0};let o=n.length;for(let e=o-1;e>=0;e--){this._propagateEventTargets.unshift(n[e][0]);let t=n[e][1].length;if(t)for(let r=0;r<t;r++)this._propagateEventTargets.unshift(n[e][1][r])}let s=this._propagateEventTargets.length,c=!1;for(let n=0;n<s&&(t.atlasTarget=this._propagateEventTargets[n],t.atlasWorld=this,c=this._propagateEventTargets[n].dispatchEvent(e,t)||c,!a);n++);return c&&this.triggerRepaint(),this._propagateEventTargets}appendChild(e){let t=this.appendWorldObject(e);this.renderOrder.push(t/5)}removeChild(e){let t=this.objects.indexOf(e);if(t===-1){for(let t of this.objects)if(t&&t.id===e.id){this.removeChild(t);return}return}this.objects[t]=null,this.renderOrder=this.renderOrder.filter(e=>e!==t),this.points[t*5]=0;for(let t of this.zones){let n=t.objects.indexOf(e);n!==-1&&(t.objects.splice(n,1),t.recalculateBounds())}this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(e,t){let n=this.objects.indexOf(t);if(n===-1)return;let r=this.appendWorldObject(e);this.renderOrder.splice(n-1,0,r/5)}hideInstance(){}asWorldObject(){return null}addZone(e){this.zones.push(e)}removeZone(e){let t=this.zones.indexOf(e);if(t!==-1&&(this.zones.splice(t,1),this.selectedZone!==void 0)){if(this.selectedZone===t){this.selectedZone=void 0,this.trigger(`zone-changed`);return}this.selectedZone>t&&--this.selectedZone}}getZoneById(e){for(let t of this.zones)if(t.id===e)return t}hasZone(e){return this.getZoneById(e)!==void 0}selectZone(e){if(typeof e==`string`){let t=this.getZoneById(e);t&&(this.selectedZone=this.zones.indexOf(t),this.zoneVisibilityFade={zoneId:t.id,startedAt:performance.now()},this.trigger(`zone-changed`))}else this.zones[e]&&(this.selectedZone=e,this.zoneVisibilityFade={zoneId:this.zones[e].id,startedAt:performance.now()},this.trigger(`zone-changed`))}deselectZone(){this.selectedZone=void 0,this.zoneVisibilityFade=void 0,this.trigger(`zone-changed`)}getActiveZone(){if(this.selectedZone!==void 0)return this.zones[this.selectedZone]}hasActiveZone(){return this.selectedZone!==void 0}checkResizeInternalBuffer(){if((0,l.dnaLength)(this.points)===this.objects.length){let e=this.points,t=(0,l.dna)(this.points.length*2);t.set(e,0),this.points=t}}appendWorldObject(e){this.checkResizeInternalBuffer();let t=this.objects.length*5,n=e.points;return e.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),e.points[1]=n[1],e.points[2]=n[2],e.points[3]=n[3],e.points[4]=n[4],this.objects.push(e),this.filteredPointsBuffer=(0,l.dna)(this.objects.length*5),this.needsRecalculate=!0,this.triggerRepaint(),t}recalculateWorldSize(){let e=!1;if(this.needsRecalculate){let t=new Int32Array(this.objects.length),n=new Int32Array(this.objects.length),r=this.renderOrder.length;for(let e=0;e<r;e++){let r=this.renderOrder[e];this.objects[r]&&(t[e]=this.points[r*5+3],n[e]=this.points[r*5+4])}let i=Math.max(...t);i!==this._width&&(this._width=i,e=!0);let a=Math.max(...n);a!==this._height&&(this._height=a,e=!0),e&&this.trigger(`recalculate-world-size`,{width:i,height:a}),this.needsRecalculate=!1}return e}addObjectAt(e,t){t.width&&!t.height?t.height=t.width/e.width*e.height:t.height&&!t.width&&(t.width=t.height/e.height*e.width),(!t||!t.width||!t.height)&&(t.width=e.width,t.height=e.height);let{width:n,x:r,y:i}=t,a=n/e.width;this.checkResizeInternalBuffer(),this.points.set(l.DnaFactory.singleBox(e.width,e.height,0,0),this.objects.length*5);let o=new ot(e);return o.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(o),this.scaleWorldObject(this.objects.length-1,a),this.translateWorldObject(this.objects.length-1,r,i),this.filteredPointsBuffer=(0,l.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,o}scaleWorldObject(e,t){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.scaleAtOrigin)(t,this.points[e*5+1],this.points[e*5+2]));let n=this.objects[e];n&&(n.atScale(t),this.triggerRepaint())}translateWorldObject(e,t,n){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.translate)(t,n));let r=this.objects[e];r&&(r.translate(t,n),this.triggerRepaint())}resize(e,t){return this._width=e,this._height=t,this.aspectRatio=e/t,this.triggerRepaint(),this}getObjects(){return this.objects}getPoints(){return this.points}getPointsFromViewer(e,t){let n=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y);return this.getPointsAt(n,t,e.scale)}addLayoutSubscriber(e){return this.subscriptions.push(e),()=>{this.subscriptions.splice(this.subscriptions.indexOf(e),1)}}getScheduledUpdates(e,t){let n=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),r=this.objects.length;this._updatedList=[];for(let i=0;i<r;i++)if(n[i*5]!==0){if(!this.objects[i])continue;this._updatedList.push(...this.objects[i].getScheduledUpdates(e,t))}return this._updatedList}isZoneOutsideVisibilityFading(e){return!!(this.zoneVisibilityFade&&this.zoneVisibilityFade.zoneId===e.id&&performance.now()-this.zoneVisibilityFade.startedAt<this.zoneVisibilityFadeDurationMs)}getZoneOutsideVisibility(e){let t=this.zoneOutsideOpacity;if(!this.zoneVisibilityFade||this.zoneVisibilityFade.zoneId!==e.id)return t;let n=performance.now()-this.zoneVisibilityFade.startedAt;return n>=this.zoneVisibilityFadeDurationMs?t:1-Math.max(0,Math.min(1,n/this.zoneVisibilityFadeDurationMs))*(1-t)}getObjectsAt(e,t=!1,n=!1){let r=this.getActiveZone(),i=r&&n?this.getZoneOutsideVisibility(r)>0:!1,a=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),o=this.renderOrder.length,s=[];for(let n=0;n<o;n++){let o=this.renderOrder[n];if(a[o*5]!==0){let n=this.objects[o],a=!r||r.objects.indexOf(n)!==-1;if(!n||!a&&!i)continue;if(n.type!==`world-object`){s.push([n,[n]]);continue}t?s.push([n,n.getObjectsAt(e,t)]):s.push([n,this.emptyPaintables])}}return s}getPointsAt(e,t,n=1){let r=this.getActiveZone(),i=r?this.getZoneOutsideVisibility(r):0,a=this.getObjectsAt(e,!1,!0),o=(0,l.compose)((0,l.scale)(n),(0,l.translate)(-e[1],-e[2]),this.translationBuffer),s=t?(0,l.compose)(t,o,this.aggregateBuffer):o,c=a.length,u=[];for(let t=0;t<c;t++)if(a[t]){let o=a[t][0],c=o.getAllPointsAt(e,s,n),l=!r||r.objects.indexOf(o)!==-1?1:i;for(let e=0;e<c.length;e++)c[e][0].__zoneVisibilityAlpha=l;u.push(...c)}return r&&this.isZoneOutsideVisibilityFading(r)&&this.triggerRepaint(),u}flushSubscriptions(){if(this.triggerQueue.length){this._alreadyFlushed=[];let e=this.triggerQueue.length;for(let t=0;t<e;t++){if(this._alreadyFlushed.indexOf(this.triggerQueue[t][0])!==-1)continue;this.triggerQueue[t][1]===void 0&&this._alreadyFlushed.push(this.triggerQueue[t][0]);let e=this.subscriptions.length;for(let n=0;n<e;n++)this.subscriptions[n].apply(null,this.triggerQueue[t])}this.triggerQueue=[]}}trigger(e,t){this.emitDebug({type:`trigger`,at:performance.now(),event:e,data:t}),this.triggerQueue.push([e,t])}triggerEventActivation(){this.trigger(`event-activation`)}triggerRepaint(){this.trigger(`repaint`)}gotoRegion(e){this.trigger(`goto-region`,e)}goHome(e=!1,t){this.trigger(`go-home`,{immediate:e,paddingPx:t})}zoomTo(e,t,n){this.trigger(`zoom-to`,{point:t,factor:e,stream:n})}zoomIn(e){this.trigger(`zoom-to`,{point:e,factor:.5})}zoomOut(e){this.trigger(`zoom-to`,{point:e,factor:2})}constraintBounds(e){this.trigger(`constrain-bounds`,{immediate:e})}hasPendingAnimation(){return!!(this.zoneVisibilityFade&&performance.now()-this.zoneVisibilityFade.startedAt<this.zoneVisibilityFadeDurationMs)}addDebugSubscriber(e){return this.debugSubscribers.add(e),()=>{this.removeDebugSubscriber(e)}}removeDebugSubscriber(e){this.debugSubscribers.delete(e)}emitDebug(e){if(this.debugSubscribers.size!==0)for(let t of this.debugSubscribers)t(e)}},ct=class{constructor(){E(this,`autoWidth`,!1),E(this,`autoHeight`,!0),E(this,`width`,void 0),E(this,`height`,void 0),E(this,`world`,void 0),E(this,`content`,[]),E(this,`viewingDirection`,`left-to-right`),E(this,`rows`,void 0),E(this,`columns`,4),E(this,`spacing`,20),E(this,`reversed`,!1),E(this,`padding`,20),this.world=st.withProps({width:0,height:0,viewingDirection:`left-to-right`}),this.width=0,this.height=0}setViewingDirection(e){this.viewingDirection=e}addContent(e){this.content.push(...e.map(e=>this.world.addObjectAt(e,{width:0,height:0,x:0,y:0})))}setWidth(e){this.width=e}setHeight(e){this.height=e}setSpacing(e){this.spacing=e}setPadding(e){this.padding=e}setRows(e){this.autoWidth=!0,this.rows=e}setColumns(e){this.autoHeight=!0,this.columns=e}recalculate(){if(this.height===0&&this.width===0||this.rows===0||this.columns===0)return;if(this.autoHeight&&!this.width)throw Error(`Cannot set auto height without setting a width`);if(this.autoWidth&&!this.height)throw Error(`Cannot set auto width without setting a height`);(this.viewingDirection===`left-to-right`||this.viewingDirection===`top-to-bottom`)&&this.reversed&&(this.reversed=!1,this.content.reverse()),(this.viewingDirection===`right-to-left`||this.viewingDirection===`bottom-to-top`)&&!this.reversed&&(this.reversed=!0,this.content.reverse());let e=this.content.length,{columns:t,rows:n}=(()=>{if(this.autoWidth&&this.rows){let t=e>this.rows?this.rows:e;return{columns:Math.ceil(e/t),rows:t}}if(this.autoHeight&&this.columns){let t=e>this.columns?this.columns:e;return{columns:t,rows:Math.ceil(e/t)}}throw Error(`Something went wrong.`)})(),r=this.autoWidth?-1:this.width-this.padding*2,i=this.autoWidth?-1:(r-this.spacing*(t-1))/t;if(this.autoHeight&&!this.autoWidth){let r=0,a=this.padding;for(let o=0;o<n&&r!==e;o++){let n=0,o=[];for(let a=0;a<t;a++){let t=this.reversed?e-r:r;if(r===e)break;let a=this.content[t],s=a.width,c=i/(a.width/a.height);o.push([r,i,c,i/s]),c>n&&(n=c),r++}for(let r=0;r<t&&o[r];r++){let t=this.world.getPoints(),i=o[r][0],s=o[r][1],c=o[r][2],l=o[r][3],u=this.padding+r*(this.spacing+s),d=a+(n-c)/2,f=this.reversed?e-i:i,p=t[f*5+1],m=t[f*5+2];this.world.scaleWorldObject(i,l),(p!==u||m!==d)&&this.world.translateWorldObject(f,u-p,d-m)}a+=n+this.spacing}this.height=a+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};function lt(e){return e.id||e[`@id`]}function ut(){return typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}function dt(){let e=ut();if(e.IIIF_VAULT!==void 0)return e.IIIF_VAULT;if(e.IIIFVault===void 0)throw Error(`Vault not found`);return e.IIIF_VAULT=new e.IIIFVault.Vault,e.IIIF_VAULT}const ft={};function pt(){return ft.helper||(ft.vault=dt(),ft.loader=new d.ImageServiceLoader,ft.helper=(0,f.createThumbnailHelper)(ft.vault,{imageServiceLoader:ft.loader})),ft}async function mt(e,t,n){let{loader:r}=pt(),i=await r.loadService({id:e,width:t,height:n});return{id:lt(i),width:t,height:n,imageService:i,thumbnail:void 0}}async function ht(e,t=512){let{vault:n,loader:r,helper:i}=pt(),a=[];for(let o of e.items)for(let s of n.get(o).items){let o=n.get(n.get(s).body[0]).service[0],c=await mt(o.id,e.width,e.height),{best:l}=await i.getBestThumbnailAtSize(n,r,e,{maxHeight:t,maxWidth:t},!0);l&&(c.thumbnail=l),a.push(c)}return a}async function gt(e){let{vault:t}=pt(),n=[];for(let r of e.items){let e=t.get(r);n.push(...await ht(e))}return n}async function _t(e){try{let{vault:t}=pt(),n=await t.loadManifest(e);return n?gt(n):[]}catch(e){return console.log(`ERR`,e),[]}}var vt=class{constructor(e,t={}){this.adapter=e,this.hooks=t,E(this,`controlPoints`,[]),E(this,`transformationType`,`projective`)}getState(){return{controlPoints:[...this.controlPoints],transformationType:this.transformationType}}setControlPoints(e){this.controlPoints=[...e],this.adapter.setMapGcps(this.controlPoints),this.hooks.onControlPointsChange&&this.hooks.onControlPointsChange(this.controlPoints),this.update(`gcps`)}setTransformationType(e){this.transformationType=e,this.adapter.setMapTransformationType(e),this.hooks.onTransformationTypeChange&&this.hooks.onTransformationTypeChange(e),this.update(`transformation`)}update(e=`manual`){this.adapter.update(e),this.hooks.onUpdate&&this.hooks.onUpdate(e)}};function yt(e,t){return new vt(e,t)}const bt={background:`rgba(15, 23, 42, 0.7)`,objectFill:`rgba(56, 189, 248, 0.22)`,objectStroke:`rgba(56, 189, 248, 0.62)`,viewportFill:`rgba(251, 191, 36, 0.22)`,viewportStroke:`rgba(250, 204, 21, 1)`,viewportLineWidth:2};function xt(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return Math.floor(e)}function St(e,t){if(!e||t<=1)return null;let n=xt(e.total),r=xt(e.before),i=xt(e.after),a=n===void 0?r!==void 0||i!==void 0?Math.max(1,Math.max(0,r||0)+Math.max(0,i||0)+1):9:Math.max(1,n),o=r===void 0?void 0:Math.max(0,r),s=i===void 0?void 0:Math.max(0,i);o===void 0&&s===void 0?(o=Math.floor((a-1)/2),s=a-o-1):o===void 0?o=Math.max(0,a-(s||0)-1):s===void 0&&(s=Math.max(0,a-o-1));let c=o+s+1;return c!==a&&(a=c),a=Math.max(1,Math.min(t,a)),o=Math.min(o,a-1),s=a-o-1,{total:a,before:o,after:s}}function Ct(e){let t=[];for(let n=0;n<e.zones.length;n++){let r=e.zones[n];r.recalculateBounds(),r.points[0]!==0&&t.push({zone:r,minX:r.points[1],minY:r.points[2],maxX:r.points[3],maxY:r.points[4]})}return t.sort((e,t)=>e.minY===t.minY?e.minX===t.minX?(e.zone?.id||``).localeCompare(t.zone?.id||``):e.minX-t.minX:e.minY-t.minY),t}function wt(e,t){let n=St(t.zoneWindow,e.zones.length);if(!n)return null;let r=Ct(e);if(r.length<=n.total)return r;let i=Et(r,t.target)-n.before,a=i+n.total-1;return i<0&&(i=0,a=n.total-1),a>=r.length&&(a=r.length-1,i=Math.max(0,a-n.total+1)),r.slice(i,a+1)}function Tt(e){if(!e)return null;if(Array.isArray(e)||ArrayBuffer.isView(e)){let t=e;return t[0]===0?null:{x:(t[1]+t[3])/2,y:(t[2]+t[4])/2}}return{x:e.x+e.width/2,y:e.y+e.height/2}}function Et(e,t){if(e.length===0)return 0;let n=Tt(t);if(!n)return 0;for(let t=0;t<e.length;t++){let r=e[t];if(n.x>=r.minX&&n.x<=r.maxX&&n.y>=r.minY&&n.y<=r.maxY)return t}let r=0,i=1/0;for(let t=0;t<e.length;t++){let a=e[t],o=(a.minY+a.maxY)/2,s=Math.abs(n.y-o);s<i&&(i=s,r=t)}return r}function Dt(e){if(e.length===0)return null;let t=e[0].minX,n=e[0].minY,r=e[0].maxX,i=e[0].maxY;for(let a=1;a<e.length;a++){let o=e[a];t=Math.min(t,o.minX),n=Math.min(n,o.minY),r=Math.max(r,o.maxX),i=Math.max(i,o.maxY)}return{x:t,y:n,width:Math.max(1,r-t),height:Math.max(1,i-n)}}function Ot(e,t,n,r,i=0,a=0){let o=Math.max(1,e),s=Math.max(1,t),c=Math.min(n/o,r/s),l=o*c,u=s*c;return{scale:c,offsetX:(n-l)/2,offsetY:(r-u)/2,worldX:i,worldY:a,worldWidth:o,worldHeight:s}}function kt(e,t={}){let n=e.getActiveZone();if(n&&(n.recalculateBounds(),n.points[0]!==0))return{x:n.points[1],y:n.points[2],width:Math.max(1,n.points[3]-n.points[1]),height:Math.max(1,n.points[4]-n.points[2])};let r=wt(e,t);if(r&&r.length>0){let e=Dt(r);if(e)return e}return{x:0,y:0,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function At(e,t={}){let n=e.getActiveZone();if(n)return n.recalculateBounds(),n.points[0]===0?new Set:new Set([n.id]);let r=wt(e,t);if(!r)return null;let i=new Set;for(let e of r)i.add(e.zone.id);return i}function jt(e,t,n){if(!e.scale||!Number.isFinite(e.scale))return{x:e.worldX,y:e.worldY};let r=e.worldX+(t-e.offsetX)/e.scale,i=e.worldY+(n-e.offsetY)/e.scale;return{x:Math.max(e.worldX,Math.min(e.worldX+e.worldWidth,r)),y:Math.max(e.worldY,Math.min(e.worldY+e.worldHeight,i))}}var Mt=class extends it{constructor(e,t={}){super(e),E(this,`style`,void 0),E(this,`maxRects`,void 0),E(this,`minVisibleRectSize`,void 0),E(this,`drawFallbackBoxes`,void 0),E(this,`zoneWindow`,void 0),E(this,`sharedCanvasRenderer`,void 0),E(this,`onRequestRender`,void 0),E(this,`onDebugEvent`,void 0),E(this,`baseCanvas`,void 0),E(this,`baseContext`,void 0),E(this,`worldTarget`,l.DnaFactory.singleBox(1,1,0,0)),E(this,`previewImageCache`,new Map),E(this,`worldLayerDirty`,!0),E(this,`lastWorldWidth`,0),E(this,`lastWorldHeight`,0),E(this,`lastTargetX`,NaN),E(this,`lastTargetY`,NaN),E(this,`lastTargetX2`,NaN),E(this,`lastTargetY2`,NaN),E(this,`lastRegionX`,NaN),E(this,`lastRegionY`,NaN),E(this,`lastRegionWidth`,NaN),E(this,`lastRegionHeight`,NaN),E(this,`worldLayerInvalidationVersion`,0),E(this,`sharedCanvasResourcesPending`,!1),this.style={...bt,...t.style||{}},this.maxRects=Math.max(100,t.maxRects||5e3),this.minVisibleRectSize=Math.max(1,t.minVisibleRectSize||1),this.drawFallbackBoxes=t.drawFallbackBoxes!==!1,this.zoneWindow=t.zoneWindow,this.sharedCanvasRenderer=t.sharedCanvasRenderer,this.onRequestRender=t.onRequestRender,this.onDebugEvent=t.onDebugEvent,this.context.globalAlpha=1,this.context.imageSmoothingEnabled=!1,this.baseCanvas=document.createElement(`canvas`),this.baseContext=this.baseCanvas.getContext(`2d`),this.baseContext.imageSmoothingEnabled=!0,this.syncBaseLayerCanvas()}emitDebugEvent(e){this.onDebugEvent&&this.onDebugEvent(e)}requestRender(e){this.onRequestRender&&(this.emitDebugEvent({type:`render-request-forwarded`,reason:e}),this.onRequestRender())}invalidateWorldLayer(e=`manual`){this.worldLayerInvalidationVersion++,this.worldLayerDirty=!0,this.renderNextFrame=!0,this.emitDebugEvent({type:`world-layer-invalidated`,reason:e}),this.requestRender(e)}resize(){super.resize(),this.syncBaseLayerCanvas(),this.invalidateWorldLayer(`resize`)}beforeFrame(e){(e.width!==this.lastWorldWidth||e.height!==this.lastWorldHeight)&&(this.lastWorldWidth=e.width,this.lastWorldHeight=e.height,this.invalidateWorldLayer(`world-size-changed`))}paint(){this.renderNextFrame=!0}pendingUpdate(){return this.renderNextFrame||this.worldLayerDirty}afterFrame(e,t,n){let r=this.worldLayerInvalidationVersion;if(this.canvas.width<=0||this.canvas.height<=0){this.emitDebugEvent({type:`frame-skipped-zero-size-canvas`,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,baseCanvasWidth:this.baseCanvas.width,baseCanvasHeight:this.baseCanvas.height}),this.renderNextFrame=!0;return}let i=kt(e,{target:n,zoneWindow:this.zoneWindow});this.hasRegionChanged(i)&&(this.worldLayerDirty=!0);let a=this.hasViewportChanged(n);if(this.renderNextFrame||this.worldLayerDirty||a){if((this.baseCanvas.width!==this.canvas.width||this.baseCanvas.height!==this.canvas.height)&&(this.syncBaseLayerCanvas(),this.worldLayerDirty=!0),this.baseCanvas.width<=0||this.baseCanvas.height<=0){this.emitDebugEvent({type:`frame-skipped-zero-size-canvas`,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,baseCanvasWidth:this.baseCanvas.width,baseCanvasHeight:this.baseCanvas.height}),this.renderNextFrame=!0;return}if(this.worldLayerDirty){let t=this.worldLayerInvalidationVersion;this.sharedCanvasResourcesPending=!1,this.emitDebugEvent({type:`world-layer-render-start`,region:i});try{this.renderWorldLayer(e,i)}finally{this.emitDebugEvent({type:`world-layer-render-end`,region:i})}this.worldLayerDirty=this.sharedCanvasResourcesPending||t!==this.worldLayerInvalidationVersion}this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.drawImage(this.baseCanvas,0,0),this.renderViewportBox(n,i),this.lastTargetX=n[1],this.lastTargetY=n[2],this.lastTargetX2=n[3],this.lastTargetY2=n[4],this.lastRegionX=i.x,this.lastRegionY=i.y,this.lastRegionWidth=i.width,this.lastRegionHeight=i.height,this.renderNextFrame=this.sharedCanvasResourcesPending||r!==this.worldLayerInvalidationVersion}}hasViewportChanged(e){return this.lastTargetX!==e[1]||this.lastTargetY!==e[2]||this.lastTargetX2!==e[3]||this.lastTargetY2!==e[4]}hasRegionChanged(e){return this.lastRegionX!==e.x||this.lastRegionY!==e.y||this.lastRegionWidth!==e.width||this.lastRegionHeight!==e.height}syncBaseLayerCanvas(){this.baseCanvas.width=this.canvas.width,this.baseCanvas.height=this.canvas.height}shouldClipImagePaintToBounds(e){return e instanceof J||e instanceof Y?!!e.__parent?.renderOptions?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}getLayerClipBounds(e,t,n){if(!this.shouldClipImagePaintToBounds(e))return;let r=e.__parent,i=r?.crop||r?.points;if(!i)return;let a=t?(0,l.transform)(i,t):i,o=this.getBoundsFromPoints(a);if(o)return{x:o.x+n.offsetX,y:o.y+n.offsetY,width:o.width,height:o.height}}renderWorldLayer(e,t){let n=this.baseContext;n.clearRect(0,0,this.baseCanvas.width,this.baseCanvas.height),n.fillStyle=this.style.background,n.fillRect(0,0,this.baseCanvas.width,this.baseCanvas.height);let r=e.getActiveZone(),i=Ot(t.width,t.height,this.baseCanvas.width,this.baseCanvas.height,t.x,t.y);this.worldTarget[1]=t.x,this.worldTarget[2]=t.y,this.worldTarget[3]=t.x+t.width,this.worldTarget[4]=t.y+t.height;let a=e.getPointsAt(this.worldTarget,this.aggregate,i.scale),o=0;for(let e=0;e<a.length&&!(o>=this.maxRects);e++){let t=a[e][0],s=a[e][1],c=a[e][2],u=c?(0,l.transform)(s,c):s,d=u.length/5,f=this.getLayerClipBounds(t,c,i);f&&(n.save(),n.beginPath(),n.rect(f.x,f.y,f.width,f.height),n.clip());try{for(let e=0;e<d&&!(o>=this.maxRects);e++){let a=e*5;if(u[a]===0)continue;if(r){let e=t?.__owner?.value;if(!e||r.objects.indexOf(e)===-1)continue}let s=u[a+1]+i.offsetX,c=u[a+2]+i.offsetY,l=Math.max(this.minVisibleRectSize,u[a+3]-u[a+1]),d=Math.max(this.minVisibleRectSize,u[a+4]-u[a+2]);t instanceof pe?this.renderGeometry(n,t,s,c,i.scale):t instanceof le?this.renderBox(n,t,s,c,l,d,i.scale):this.renderImagePaint(n,t,e,s,c,l,d)||this.drawFallbackBoxes&&this.renderFallbackBox(n,s,c,l,d),o++}}finally{f&&n.restore()}}}renderFallbackBox(e,t,n,r,i){let a=Math.round(t),o=Math.round(n),s=Math.max(1,Math.round(r)),c=Math.max(1,Math.round(i));e.fillStyle=this.style.objectFill,e.strokeStyle=this.style.objectStroke,e.lineWidth=1,e.fillRect(a,o,s,c),s>2&&c>2&&e.strokeRect(a+.5,o+.5,s-1,c-1)}renderImagePaint(e,t,n,r,i,a,o){if(a<=0||o<=0)return!1;let s;if(t instanceof Fe)s=t.getTexture()?.source;else if(t instanceof J||t instanceof Y){let c=this.renderSharedCanvasImage(e,t,n,r,i,a,o);if(c!==null)return c;if(typeof t.getImageUrl!=`function`)return!1;let l=t.getImageUrl(n);s=this.getLoadedPreviewImage(l)}if(!s)return!1;let c=Math.max(1,Math.round(a)),l=Math.max(1,Math.round(o));return e.drawImage(s,Math.round(r),Math.round(i),c,l),!0}ensureSharedCanvasImageBuffer(e){return e.__host?.canvas||this.sharedCanvasRenderer?.createImageHost?.(e),e.__host||(e.__host={}),e.__host.canvas||(e.__host.canvas={canvases:[],tiles:{}}),e.__host.canvas.canvases||(e.__host.canvas.canvases=[]),e.__host.canvas.tiles||(e.__host.canvas.tiles={}),e.__host.canvas}drawSharedCanvasTile(e,t,n,r,i,a,o,s){let c=Math.max(1,Math.round(o)),l=Math.max(1,Math.round(s));if(t.crop&&t.cropData){let o=n*5;if(!t.crop[o])return!1;let s=t.crop[o+1]/t.display.scale-t.display.points[o+1]+t.cropData.x/t.display.scale,u=t.crop[o+2]/t.display.scale-t.display.points[o+2]+t.cropData.y/t.display.scale,d=1+(t.crop[o+3]-t.crop[o+1])/t.display.scale,f=1+(t.crop[o+4]-t.crop[o+2])/t.display.scale;return e.drawImage(r,s,u,d,f,Math.round(i),Math.round(a),c,l),!0}let u=n*5,d=t.display.points[u+3]-t.display.points[u+1],f=t.display.points[u+4]-t.display.points[u+2];return e.drawImage(r,0,0,d,f,Math.round(i),Math.round(a),c,l),!0}renderSharedCanvasImage(e,t,n,r,i,a,o){let s=this.sharedCanvasRenderer;if(!s?.hostCache)return null;let c=this.ensureSharedCanvasImageBuffer(t),l=c.canvases?.[n],u=!!l&&!!s.invalidated?.includes(l),d=l&&!u?s.hostCache.get(l):void 0;if(d)return this.drawSharedCanvasTile(e,t,n,d,r,i,a,o);let f=c.tiles?.[n],p=Math.hypot(r+a/2-this.baseCanvas.width/2,i+o/2-this.baseCanvas.height/2);return(s.schedulePaintToCanvas?.(c,t,n,p,!1)||f?.state===`queued`||f?.state===`loading`||f?.state===`decoded`)&&(this.sharedCanvasResourcesPending=!0),!1}getLoadedPreviewImage(e){let t=this.previewImageCache.get(e);if(t){if(t.status===`loading`&&t.image.complete){if(t.image.naturalWidth>0&&t.image.naturalHeight>0)return t.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!0}),this.invalidateWorldLayer(`preview-image-loaded`),t.image;t.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e});return}return t.status===`loaded`?t.image:void 0}let n=new Image,r={image:n,status:`loading`};return this.previewImageCache.set(e,r),this.emitDebugEvent({type:`preview-image-requested`,imageUrl:e}),n.onload=()=>{r.status===`loading`&&(r.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!1}),this.invalidateWorldLayer(`preview-image-loaded`))},n.onerror=()=>{r.status===`loading`&&(r.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e}))},n.src=e,n.complete&&(n.naturalWidth>0&&n.naturalHeight>0?(r.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!0}),this.invalidateWorldLayer(`preview-image-loaded`)):(r.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e}))),r.status===`loaded`?n:void 0}renderBox(e,t,n,r,i,a,o){let s=t.props?.style;if(!s){this.renderFallbackBox(e,n,r,i,a);return}let c=s.backgroundColor||this.style.objectFill,l=s.borderColor||this.style.objectStroke,u=s.borderWidth?parseInt(s.borderWidth,10):0,d=Math.max(0,u*(t.props?.relativeStyle?1:o));e.globalAlpha=typeof s.opacity==`number`?s.opacity:1,e.fillStyle=c,e.fillRect(Math.round(n),Math.round(r),Math.max(1,Math.round(i)),Math.max(1,Math.round(a))),d>0&&(e.strokeStyle=l,e.lineWidth=Math.max(1,d),e.strokeRect(Math.round(n)+e.lineWidth/2,Math.round(r)+e.lineWidth/2,Math.max(1,Math.round(i))-e.lineWidth,Math.max(1,Math.round(a))-e.lineWidth)),e.globalAlpha=1}renderGeometry(e,t,n,r,i){let a=t.shape;if(a.type!==`polygon`||a.points.length===0)return;let o=t.props?.style||{},s=o.backgroundColor||this.style.objectFill,c=o.borderColor||this.style.objectStroke,l=o.borderWidth?parseInt(o.borderWidth,10):0,u=Math.max(0,l*(t.props?.relativeStyle?1:i));e.globalAlpha=typeof o.opacity==`number`?o.opacity:1,e.beginPath();for(let t=0;t<a.points.length;t++){let o=n+a.points[t][0]*i,s=r+a.points[t][1]*i;t===0?e.moveTo(o,s):e.lineTo(o,s)}a.open||(e.closePath(),e.fillStyle=s,e.fill()),(u>0||a.open)&&(e.strokeStyle=c,e.lineWidth=Math.max(1,u||1),e.stroke()),e.globalAlpha=1}renderViewportBox(e,t){let n=Ot(t.width,t.height,this.canvas.width,this.canvas.height,t.x,t.y),r=(e[1]-n.worldX)*n.scale+n.offsetX,i=(e[2]-n.worldY)*n.scale+n.offsetY,a=(e[3]-e[1])*n.scale,o=(e[4]-e[2])*n.scale,s=Math.round(r),c=Math.round(i),l=Math.max(1,Math.round(a)),u=Math.max(1,Math.round(o));this.context.fillStyle=this.style.viewportFill,this.context.fillRect(s,c,l,u),this.context.strokeStyle=this.style.viewportStroke,this.context.lineWidth=Math.max(1,this.style.viewportLineWidth),this.context.strokeRect(s+.5,c+.5,Math.max(1,l-1),Math.max(1,u-1))}},Nt=class extends oe{constructor(){super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`points`,void 0),E(this,`color`,`#000`),E(this,`backgroundColor`,void 0),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`text`,``),E(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:(0,l.dna)(5)}),E(this,`className`,void 0),E(this,`html`,void 0),E(this,`interactive`,!1),E(this,`props`,{font:`18px Arial, sans-serif`,lineHeight:1,textAlign:`left`,verticalAlign:`top`,paddingX:0,paddingY:0,fitParent:!1,lineBreak:`auto`,strokeText:!1,sizeToFill:!1,maxFontSizeToFill:void 0,allowNewLine:!0,justifyLines:!1,renderHDPI:!1,textDecoration:`none`,interactive:!1,relativeSize:!1}),this.id=``,this.points=(0,l.dna)(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps({id:e,target:t,text:n,color:r,backgroundColor:i,fontSize:a=18,interactive:o,fontFamily:s=`Arial, sans-serif`,...c}){c.font=`${a}px ${s}`,this.interactive=o||!1,n!==void 0&&(this.text=n||``),r&&(this.color=r),i&&(this.backgroundColor=i),e&&(this.id=e),t&&(this.points=l.DnaFactory.singleBox(t.width,t.height,t.x,t.y),this.display.points=this.points,this.display.width=t.width,this.display.height=t.height),this.props={...this.props,...c},this.__revision++}};function Pt(e,t){let n=t?e:JSON.stringify(e),r=5381,i=n.length;for(;i;)r=r*33^n.charCodeAt(--i);let a=(r>>>0).toString(16);return a.length%2?`0`+a:a}var Ft=class{constructor(e){E(this,`$element`,void 0),E(this,`stylesheetClasses`,void 0),E(this,`activeStylesheetClasses`,void 0),E(this,`sheetsDidUpdate`,void 0),E(this,`sheetPrefix`,void 0),E(this,`stylesheetEntries`,void 0),this.sheetPrefix=e?.sheetPrefix||`a-`,this.$element=document.createElement(`style`),this.stylesheetClasses=[],this.activeStylesheetClasses=[],this.sheetsDidUpdate=!1,this.stylesheetEntries={}}getElement(){return this.$element}addStylesheet(e){let t=e.replace(/\s\s+/g,` `).replace(/: /g,`:`).replace(/; /g,`;`).trim(),n=this.sheetPrefix+Pt(t,!0);return this.stylesheetClasses.indexOf(n)===-1?(this.stylesheetClasses.push(n),this.activeStylesheetClasses.push(n),this.stylesheetEntries[n]=t,this.sheetsDidUpdate=!0,n):n}removeStylesheet(e){let t=this.sheetPrefix+Pt(e,!0);this.stylesheetClasses.indexOf(t)&&(this.stylesheetClasses=this.stylesheetClasses.filter(e=>e!==t)),this.sheetsDidUpdate=!0}clearClasses(){this.activeStylesheetClasses=[]}didUpdateActive(){if(this.activeStylesheetClasses.length){for(let e of this.activeStylesheetClasses)if(this.stylesheetClasses.indexOf(e)===-1)return!0;for(let e of this.stylesheetClasses)if(this.activeStylesheetClasses.indexOf(e)===-1)return!0}return!1}updateSheet(){(this.sheetsDidUpdate||this.didUpdateActive())&&(this.$element.innerText=this.activeStylesheetClasses.map(e=>`.${e}{${this.stylesheetEntries[e]}}`).join(``),this.sheetsDidUpdate=!1,this.stylesheetClasses=[...this.activeStylesheetClasses])}},It=class{constructor(e,t){E(this,`htmlContainer`,void 0),E(this,`visible`,[]),E(this,`previousVisible`,[]),E(this,`htmlIds`,[]),E(this,`firstMeaningfulPaint`,!1),E(this,`rendererPosition`,void 0),E(this,`stylesheet`,void 0),E(this,`options`,void 0),E(this,`paintTx`,1),E(this,`zIndex`,0),E(this,`classes`,void 0),this.htmlContainer=e,this.htmlContainer.innerHTML=``,this.rendererPosition=this.htmlContainer.getBoundingClientRect(),this.options={triggerResize:()=>{},box:!1,text:!1,sheetPrefix:``,inlineStyles:!1,background:``,...t||{}},this.stylesheet=new Ft({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`@atlas-viewer/dna`),u=require(`node:crypto`),d=require(`@atlas-viewer/iiif-image-api`),f=require(`@iiif/helpers/thumbnail`),p=require(`react`);p=c(p);let m=require(`react/jsx-runtime`),h=require(`react-reconciler`);h=c(h);const g=`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 _(){return g.reduce((e,t)=>(e[t]=[],e),{})}const v=g.reduce((e,t)=>(e[t.slice(2).toLowerCase()]=t,e[t]=t,e),{});function y(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=b(t[o].display.scale,e/(n||1));r<a&&(a=r,i=o)}return i}function b(e,t){return Math.abs(e-t)}function x(e,t){let n=b(e.x,t.x),r=b(e.y,t.y);return Math.sqrt(n**2+r**2)}function S(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function C(e){"@babel/helpers - typeof";return C=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},C(e)}function w(e,t){if(C(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(C(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function T(e){var t=w(e,`string`);return C(t)==`symbol`?t:t+``}function E(e,t,n){return(t=T(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ee=class e{constructor(e,t,n){E(this,`element`,void 0),E(this,`runtime`,void 0),E(this,`unsubscribe`,void 0),E(this,`activatedEvents`,[]),E(this,`eventHandlers`,[]),E(this,`bounds`,void 0),E(this,`listening`,void 0),E(this,`pointerMoveEvent`,void 0),E(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),E(this,`options`,void 0),E(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),E(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),E(this,`onContextMenu`,e=>{e.preventDefault();let t=`onContextMenu`;if(this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),E(this,`onTouchEvent`,e=>{let t=v[e.type],n=[],r=e.touches.length;for(let t=0;t<r;t++){let r=e.touches.item(t);if(!r)continue;let{x:i,y:a}=this.runtime.viewerToWorld(r.clientX-this.bounds.left,r.clientY-this.bounds.top),o={id:r.identifier,x:i,y:a};n.push(o)}n.length&&this.assignToEvent(e,n[0].x,n[0].y),t!==`onTouchEnd`&&t!==`onTouchCancel`?(this.pointerEventState.lastTouches=n,e.atlasTouches=n,this.runtime.world.propagateTouchEvent(t,e,n)):(e.atlasTouches=[],this.runtime.world.propagateTouchEvent(t,e,this.pointerEventState.lastTouches),this.pointerEventState.lastTouches=[])}),E(this,`onPointerEvent`,e=>{if(e.button===2)return;let t=v[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:n,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,n,r),this.runtime.world.propagatePointerEvent(t,e,n,r)}}),E(this,`onPointerDown`,e=>{e.button!==2&&(this.pointerEventState.isPressed=!0,this.pointerEventState.isClicking=!0,this.pointerEventState.mouseDownStart.x=e.clientX,this.pointerEventState.mouseDownStart.y=e.clientY,setTimeout(()=>{this.runtime&&(this.pointerEventState.isClicking=!1)},250),setTimeout(()=>{if(this.runtime&&this.pointerEventState.isPressed&&!this.pointerEventState.isDragging){if(this.isHoldToHomeIntentActive())return;let t=this.runtime.viewerToWorld(this.pointerEventState.mouseDownStart.x-this.bounds.left,this.pointerEventState.mouseDownStart.y-this.bounds.top);this.pointerEventState.isDragging=!0,this.pointerEventState.itemsBeingDragged=this.runtime.world.propagatePointerEvent(`onDragStart`,e,t.x,t.y)}},800),this.onPointerEvent(e))}),E(this,`onPointerUp`,e=>{if(e.button!==2){if(this.pointerEventState.isClicking){let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onClick`,e,t,n)}if(this.pointerEventState.isDragging){for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent(`onDragEnd`,e);this.pointerEventState.isDragging=!1}this.pointerEventState.isClicking=!1,this.pointerEventState.isPressed=!1,this.pointerEventState.itemsBeingDragged=[],this.onPointerEvent(e)}}),E(this,`onPointerMove`,e=>{this.pointerMoveEvent=void 0;let{x:t,y:n}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);if(Number.isNaN(t)||Number.isNaN(n))return;this.assignToEvent(e,t,n),this.runtime.world.propagatePointerEvent(`onPointerMove`,e,t,n);let r=this.runtime.world.propagatePointerEvent(`onMouseMove`,e,t,n),i=[],a=[];for(let t of r)i.push(t.id),a.push(t),this.pointerEventState.mousedOver.indexOf(t)===-1&&(t.dispatchEvent(`onMouseEnter`,e),t.dispatchEvent(`onPointerEnter`,e),t.dispatchEvent(`onMouseOver`,e),t.dispatchEvent(`onPointerOver`,e));for(let t of this.pointerEventState.mousedOver)i.indexOf(t.id)===-1&&(t.dispatchEvent(`onMouseLeave`,e),t.dispatchEvent(`onPointerLeave`,e),t.dispatchEvent(`onMouseOut`,e),t.dispatchEvent(`onPointerOut`,e));if(this.pointerEventState.isDragging)for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent(`onDrag`,e);if(this.pointerEventState.isPressed&&!this.pointerEventState.isDragging&&!this.isHoldToHomeIntentActive()&&x(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}isHoldToHomeIntentActive(){return this.element.dataset.intent===`hold-home`}activateEvents(){this.listening=!0,this.element.addEventListener(`pointermove`,this._realPointerMove),this.element.addEventListener(`pointerup`,this.onPointerUp),this.element.addEventListener(`pointerdown`,this.onPointerDown),this.element.addEventListener(`mousedown`,this.onPointerEvent),this.element.addEventListener(`mouseup`,this.onPointerEvent),this.element.addEventListener(`pointercancel`,this.onPointerEvent),this.element.addEventListener(`wheel`,this.onWheelEvent),this.element.addEventListener(`contextmenu`,this.onContextMenu),this.element.addEventListener(`touchstart`,this.onTouchEvent),this.element.addEventListener(`touchcancel`,this.onTouchEvent),this.element.addEventListener(`touchend`,this.onTouchEvent),this.element.addEventListener(`touchmove`,this.onTouchEvent)}normalizeEventName(e){return e.startsWith(`on`)?e.slice(2).toLowerCase():e.toLowerCase()}stop(){this.listening=!1,this.element.removeEventListener(`pointermove`,this._realPointerMove),this.element.removeEventListener(`pointerup`,this.onPointerUp),this.element.removeEventListener(`pointerdown`,this.onPointerDown),this.element.removeEventListener(`mousedown`,this.onPointerEvent),this.element.removeEventListener(`mouseup`,this.onPointerEvent),this.element.removeEventListener(`pointercancel`,this.onPointerEvent),this.element.removeEventListener(`wheel`,this.onWheelEvent),this.element.removeEventListener(`touchstart`,this.onTouchEvent),this.element.removeEventListener(`touchcancel`,this.onTouchEvent),this.element.removeEventListener(`touchend`,this.onTouchEvent),this.element.removeEventListener(`touchmove`,this.onTouchEvent),this.unsubscribe();for(let[e,t]of this.eventHandlers)this.element.removeEventListener(this.normalizeEventName(e),t)}};E(ee,`eventPool`,{atlas:{x:0,y:0}});const D=typeof performance==`object`&&performance&&typeof performance.now==`function`?performance:Date,te=typeof AbortController==`function`?AbortController:class{constructor(){this.signal=new A}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})}},O=typeof AbortSignal==`function`,k=typeof te.AbortSignal==`function`,A=O?AbortSignal:k?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))}},j=new Set,M=(e,t)=>{let n=`LRU_CACHE_OPTION_${e}`;F(n)&&I(n,`${e} option`,`options.${t}`,V)},N=(e,t)=>{let n=`LRU_CACHE_METHOD_${e}`;if(F(n)){let{prototype:r}=V,{get:i}=Object.getOwnPropertyDescriptor(r,e);I(n,`${e} method`,`cache.${t}()`,i)}},P=(e,t)=>{let n=`LRU_CACHE_PROPERTY_${e}`;if(F(n)){let{prototype:r}=V,{get:i}=Object.getOwnPropertyDescriptor(r,e);I(n,`${e} property`,`cache.${t}`,i)}},ne=(...e)=>{typeof process==`object`&&process&&typeof process.emitWarning==`function`?process.emitWarning(...e):console.error(...e)},F=e=>!j.has(e),I=(e,t,n,r)=>{j.add(e),ne(`The ${t} is deprecated. Please use ${n} instead.`,`DeprecationWarning`,e,r)},L=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),R=e=>L(e)?e<=2**8?Uint8Array:e<=2**16?Uint16Array:e<=2**32?Uint32Array:e<=2**53-1?z:null:null;var z=class extends Array{constructor(e){super(e),this.fill(0)}},B=class{constructor(e){if(e===0)return[];this.heap=new(R(e))(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},V=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&&!L(n))throw TypeError(`max option must be a nonnegative integer`);let E=n?R(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 B(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&&!L(this.maxSize))throw TypeError(`maxSize must be a positive integer if specified`);if(!L(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=L(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||w||0,this.ttl){if(!L(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`;F(t)&&(j.add(t),ne(`TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.`,`UnboundedCacheWarning`,t,e))}T&&M(`stale`,`allowStale`),w&&M(`maxAge`,`ttl`),C&&M(`length`,`sizeCalculation`)}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new z(this.max),this.starts=new z(this.max),this.setItemTTL=(e,t,n=D.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:D.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=D.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 z(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(!L(n))if(r){if(typeof r!=`function`)throw TypeError(`sizeCalculation must be a function`);if(n=r(t,e),!L(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 N(`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=D.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=D.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 N(`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 N(`reset`,`clear`),this.clear}get length(){return P(`length`,`size`),this.size}static get AbortController(){return te}static get AbortSignal(){return A}},re=V;const H=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,U=128;let ie,W;function ae(e){!ie||ie.length<e?(ie=Buffer.allocUnsafe(e*128),u.webcrypto.getRandomValues(ie),W=0):W+e>ie.length&&(u.webcrypto.getRandomValues(ie),W=0),W+=e}function oe(e=21){ae(e-=0);let t=``;for(let n=W-e;n<W;n++)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[ie[n]&63];return t}var G=class{get crop(){return this._crop}set crop(e){this._crop=e}getObjectsAt(e){return[]}getAllPointsAt(e,t,n){return[]}getScheduledUpdates(e,t){return[]}constructor(){E(this,`__id`,void 0),E(this,`__revision`,0),E(this,`__host`,void 0),E(this,`__onCreate`,void 0),E(this,`__parent`,void 0),E(this,`__owner`,{value:void 0}),E(this,`__state`,{}),E(this,`eventHandlers`,void 0),E(this,`scale`,1),E(this,`layers`,[]),E(this,`time`,[]),E(this,`_crop`,void 0),E(this,`cropData`,void 0),E(this,`id`,void 0),E(this,`addEventListener`,(e,t,n)=>{let r=v[e];if(!this.eventHandlers[r])throw Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)}),E(this,`removeEventListener`,(e,t)=>{let n=v[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=oe(),this.eventHandlers=_()}dispatchEvent(e,t){let n=this.eventHandlers[e],r=n?n.length:0,i=!1;if(r)for(let a=0;a<r;a++)try{n[a]?.(t),i=!0}catch(t){console.error(e,t)}return i}get x(){return this.points[1]}get y(){return this.points[2]}get width(){return this.points[3]-this.points[1]}get height(){return this.points[4]-this.points[2]}translate(e,t){(0,l.mutate)(this.points,(0,l.translate)(e,t))}atScale(e){(0,l.mutate)(this.points,(0,l.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,l.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};const se=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,K={},ce=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var le=class extends G{constructor(){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`points`,void 0),E(this,`hoverEvents`,!1),E(this,`activeEvents`,!1),E(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),E(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`props`,{}),E(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),E(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),E(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),E(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=oe(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=K[n]||se.exec(n)||se.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=K[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=K[e.style.outline]||se.exec(e.style.outline)||se.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=K[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of ce)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}};const ue=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,de={},fe=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var pe=class extends G{constructor(){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`isShape`,!0),E(this,`points`,void 0),E(this,`hoverEvents`,!1),E(this,`activeEvents`,!1),E(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:(0,l.dna)(5)}),E(this,`boundingBox`,null),E(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`props`,{}),E(this,`shape`,{type:`none`}),E(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),E(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),E(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),E(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=oe(12),this.points=(0,l.dna)(5),this.shape={type:`none`}}updateBoundingBox(){if(this.shape.type===`none`)return;let e=this.shape.points;if(this.shape.points.length>2){let t=Math.min(...e.map(e=>e[0])),n=Math.min(...e.map(e=>e[1])),r=Math.max(0,...e.map(e=>e[0])),i=Math.max(0,...e.map(e=>e[1]));this.boundingBox={x:t,y:n,width:r-t,height:i-n};return}this.boundingBox=null}intersects(e){if(!e||this.shape.type===`none`)return!1;let[t,n]=e,r=this.shape.points,i=this.boundingBox;if(i||(this.updateBoundingBox(),i=this.boundingBox),!i||t<i.x||t>i.x+i.width||n<i.y||n>i.height+i.y)return!1;let a=!1;for(let e=0,i=r.length-1;e<r.length;i=e++)r[e][1]>n!=r[i][1]>n&&t<(r[i][0]-r[e][0])*(n-r[e][1])/(r[i][1]-r[e][1])+r[e][0]&&(a=!a);return a}getAllPointsAt(e,t){return e[3]-e[1]===1&&e[4]-e[2]===1?this.intersects([e[1],e[2]])?[[this,this.points,t]]:[]:[[this,this.points,t]]}applyProps(e={}){let t=!1;if(e.points)if(this.shape.type!==`polygon`||this.shape.points.length!==e.points.length)this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox();else{let t=!1,n=e.points.length;for(let r=0;r<n;r++)if(e.points[r][0]!==this.shape.points[r][0]||e.points[r][1]!==this.shape.points[r][1]){t=!0;break}t&&(this.shape={type:`polygon`,points:e.points,open:e.open},this.updateBoundingBox())}if(e.interactive!==this.props.interactive&&(t=!0,this.props.interactive=e.interactive),(e.open||e.open===!1)&&(t=!0,this.shape.open=e.open),e.style){let n=e.border||e.style.border;if(n!==this._parsed.border.id)if(!n)this._parsed.border.id=null,this._parsed.border.match=[];else{let e=de[n]||ue.exec(n)||ue.exec(n);e&&(this._parsed.border.id=n,this._parsed.border.match=de[n]=e)}if(this._parsed.border.id&&(e.style.borderWidth=this._parsed.border.match[1],e.style.borderStyle=`solid`,e.style.borderColor=this._parsed.border.match[4]),e.style.outline!==this._parsed.outline.id)if(!e.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let t=de[e.style.outline]||ue.exec(e.style.outline)||ue.exec(e.style.outline);t&&(this._parsed.outline.id=e.style.outline,this._parsed.outline.match=de[e.style.outline]=t)}this._parsed.outline.id&&(e.style.outlineWidth=this._parsed.outline.match[1],e.style.outlineStyle=`solid`,e.style.outlineColor=this._parsed.outline.match[4]),this.props.style=e.style,e.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.backgroundColor,t=!0),e.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=e.style.background,t=!0);for(let n of fe)if(this.props.style[n]!==e.style[n]){t=!0;break}e.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=e.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t=!0),e.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=e.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0)}e.href!==this.props.href&&(this.props.href=e.href,t=!0),e.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=e.hrefTarget,t=!0),e.title!==this.props.title&&(this.props.title=e.title,t=!0),e.className!==this.props.className&&(this.props.className=e.className,e.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),e.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),t=!0),e.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=e.relativeSize,t=!0),e.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=e.relativeStyle,t=!0),e.html!==this.props.html&&(this.props.html=e.html,t=!0),e.target&&(e.target.width!==this.display.width||e.target.height!==this.display.height||e.target.x!==this.points[1]||e.target.y!==this.points[2])&&(t=!0,this.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.points=l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y),this.display.width=e.target.width,this.display.height=e.target.height),t&&this.__revision++}},q=class e extends G{constructor(e){if(super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`uri`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`priority`,void 0),E(this,`style`,{opacity:1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:l.DnaFactory.singleBox(e.width/t,e.height/t),rotation:e?.rotation}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;if(this.id=e.id||e.uri,this.uri=e.uri,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height,e.target.x,e.target.y)),e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.crop){this.cropData=e.crop;let t=l.DnaFactory.singleBox(e.crop.width,e.crop.height,e.crop.x,e.crop.y);(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=(0,l.dna)(t)}e.display?(this.display.scale=n,this.display.width=e.display.width,this.display.height=e.display.height,this.display.rotation=e.display.rotation,this.display.points=l.DnaFactory.singleBox(e.display.width,e.display.height)):(this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.display.points=l.DnaFactory.singleBox(e.target.width/n,e.target.height/n))}getAllPointsAt(e,t,n){return[[this,this.crop||this.points,t]]}static fromSvg(t,n,r,i){return e.fromImage(`data:image/svg+xml;base64,`+btoa(t),n,r,i)}static fromImage(t,n,r,i){let a=new e;return a.applyProps({uri:t,id:i,display:r,target:n}),a}getImageUrl(){return this.uri}};function me(e,t,n){return Math.min(Math.max(e,t),n)}var J=class e extends G{constructor(e){super(),E(this,`id`,void 0),E(this,`type`,`spacial-content`),E(this,`display`,void 0),E(this,`tileWidth`,void 0),E(this,`tileHeight`,void 0),E(this,`columns`,void 0),E(this,`rows`,void 0),E(this,`style`,{opacity:1}),E(this,`points`,void 0),E(this,`service`,void 0),E(this,`format`,`jpg`),E(this,`crop2`,void 0),E(this,`version3`,void 0),E(this,`tileUrl`,void 0),this.tileUrl=S(e.url),this.id=e.id||`${this.tileUrl}--${e.scaleFactor}--${e.tileWidth}x${e.tileHeight}`,this.points=e.displayPoints?e.displayPoints:(0,l.transform)(e.points,(0,l.scale)(e.scaleFactor)),this.tileWidth=e.tileWidth,this.tileHeight=e.tileHeight,this.columns=e.columns,this.rows=e.rows,this.version3=e.version3,this.display={x:0,y:0,width:e.width/e.scaleFactor,height:e.height/e.scaleFactor,points:e.points,scale:e.scaleFactor},e.format&&(this.format=e.format)}applyProps(e){if(e.style&&e.style.opacity!==void 0&&(this.style.opacity=e.style.opacity),e.service!==this.service&&(this.service=e.service),e.format?this.format=e.format:this.format=`jpg`,e.version3!==void 0&&(this.version3=e.version3),e.crop){this.cropData=e.crop;let t=(0,l.dna)([...this.points]),n=t.length/5,r=e.crop.x||0,i=e.crop.y||0,a=e.crop.x+e.crop.width,o=e.crop.y+e.crop.height;for(let e=0;e<n;e++){let n=e*5;t[n+1]<a&&t[n+3]>r&&t[n+2]<o&&t[n+4]>i?(t[n+1]=me(t[n+1],r,a),t[n+3]=me(t[n+3],r,a),t[n+2]=me(t[n+2],i,o),t[n+4]=me(t[n+4],i,o)):t[n]=0}(0,l.mutate)(t,(0,l.translate)(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=t}}static fromTile(t,n,r,i,a,o,s,c){let u=r.height?r.height:r.width,d=s?Math.floor(n.width/i):Math.ceil(n.width/i),f=s?Math.floor(n.height/i):Math.ceil(n.height/i),p=Math.ceil(d/r.width),m=Math.ceil(f/u),h=l.DnaFactory.grid(p,m),g=l.DnaFactory.grid(p,m),_=a&&a[`@context`]?Array.isArray(a[`@context`])?a[`@context`]:[a[`@context`]]:[],v=c===void 0?_.indexOf(`http://iiif.io/api/image/3/context.json`)!==-1:c;for(let e=0;e<m;e++)for(let t=0;t<p;t++){let a=t*r.width,o=e*u;g.addPoints(a*i,o*i,t===p-1?n.width:(a+r.width)*i,e===m-1?n.height:(o+u)*i),h.addPoints(a,o,t===p-1?d:a+r.width,e===m-1?f:o+u)}let y=new e({url:t,scaleFactor:i,points:h.build(),displayPoints:g.build(),width:n.width,height:n.height,tileWidth:r.width,tileHeight:u,columns:p,rows:m,format:o,version3:v});return y.applyProps({service:a}),y}getImageUrl(e){let t=this.points.slice(e*5,e*5+5),n=t[3]-t[1],r=t[4]-t[2],i=Math.ceil(n/this.display.scale),a=Math.ceil(r/this.display.scale),o=`${i>this.tileWidth?this.tileWidth:i},`;return this.version3&&(o+=`${a>this.tileHeight?this.tileHeight:a}`),`${this.tileUrl}/${t[1]},${t[2]},${n},${r}/${o}/0/default.${this.format||`jpg`}`}getAllPointsAt(e,t,n){let r=(0,l.hidePointsOutsideRegion)(this.crop||this.points,e);return[[this,r,t]]}transform(e){(0,l.mutate)(this.points,e)}getScheduledUpdates(e,t){return[]}};function he(e,t,n){if(!t||t[0]===0)return null;let r=e[3]-e[1],i=e[4]-e[2],a=t[3]-t[1],o=t[4]-t[2],s=r<a,c=i<o,l=t[1]+a/2-r/2,u=t[2]+o/2-i/2;return{minX:s?t[1]-n:l,maxX:s?t[3]-r+n:l,minY:c?t[2]-n:u,maxY:c?t[4]-i+n:u}}function Y(e){if(!e.enableFilters||!e.filters.brightness&&!e.filters.contrast&&!e.filters.grayscale&&!e.filters.invert&&!e.filters.sepia&&!e.filters.saturate&&!e.filters.hueRotate&&!e.filters.blur)return`none`;let t=``;return e.filters.brightness&&(t+=`brightness(${~~(100+e.filters.brightness*100)}%) `),e.filters.contrast&&(t+=`contrast(${~~(100+e.filters.contrast*100)}%) `),e.filters.grayscale&&(t+=`grayscale(${~~(e.filters.grayscale*100)}%) `),e.filters.invert&&(t+=`invert(${~~(e.filters.invert*100)}%) `),e.filters.sepia&&(t+=`sepia(${~~(e.filters.sepia*100)}%) `),e.filters.saturate&&(t+=`saturate(${~~(100+e.filters.saturate*100)}%) `),e.filters.hueRotate&&(t+=`hue-rotate(${e.filters.hueRotate}deg) `),e.filters.blur&&(t+=`blur(${e.filters.blur}px) `),t.trim()}function ge(e,t,n){return Math.max(t,Math.min(n,e))}function _e(){if(typeof navigator>`u`)return;let e=navigator;return e.connection||e.mozConnection||e.webkitConnection}function ve(e){let t=10;return typeof navigator<`u`&&typeof navigator.hardwareConcurrency==`number`&&(t=ge(Math.round(navigator.hardwareConcurrency*.75),4,10)),e?.saveData?3:e?.effectiveType===`slow-2g`||e?.effectiveType===`2g`?2:e?.effectiveType===`3g`?Math.min(t,4):t}function ye(e,t){return t?.saveData||t?.effectiveType===`slow-2g`||t?.effectiveType===`2g`?0:t?.effectiveType===`3g`?2:Math.min(e+2,12)}function X(e={}){let t=_e(),n=ve(t),r=typeof e.maxConcurrentRequests==`number`?Math.max(1,Math.floor(e.maxConcurrentRequests)):n;return{maxConcurrentRequests:r,maxPrefetchPerFrame:typeof e.maxPrefetchPerFrame==`number`?Math.max(0,Math.floor(e.maxPrefetchPerFrame)):ye(r,t),timeoutMs:typeof e.timeoutMs==`number`?Math.max(250,Math.floor(e.timeoutMs)):8e3,maxAttempts:typeof e.maxAttempts==`number`?Math.max(1,Math.floor(e.maxAttempts)):3,baseDelayMs:typeof e.baseDelayMs==`number`?Math.max(0,Math.floor(e.baseDelayMs)):250,maxDelayMs:typeof e.maxDelayMs==`number`?Math.max(0,Math.floor(e.maxDelayMs)):3e3,jitterRatio:typeof e.jitterRatio==`number`?ge(e.jitterRatio,0,1):.2,errorRetryIntervalMs:typeof e.errorRetryIntervalMs==`number`?Math.max(0,Math.floor(e.errorRetryIntervalMs)):3e4,revealDelayFrames:typeof e.revealDelayFrames==`number`?Math.max(0,Math.floor(e.revealDelayFrames)):1,revealBatchWindowFrames:typeof e.revealBatchWindowFrames==`number`?Math.max(0,Math.floor(e.revealBatchWindowFrames)):1,skipFadeIfLoadedWithinMs:typeof e.skipFadeIfLoadedWithinMs==`number`?Math.max(0,Math.floor(e.skipFadeIfLoadedWithinMs)):500}}function be(e,t,n=Math.random){let r=Math.max(1,Math.floor(t)),i=e.baseDelayMs*2**(r-1),a=Math.min(e.maxDelayMs,i),o=a*e.jitterRatio;return o?Math.max(0,Math.floor(a+(n()*2-1)*o)):a}var xe=class extends Error{constructor(e=`Image request cancelled`,t=!0){super(e),E(this,`silent`,void 0),this.name=`ImageRequestCancelledError`,this.silent=t}};function Se(e){return e instanceof xe}let Ce=0;function we(e){return Ce+=1,`${Ce}:${e}`}function Te(e){return Error(`Image load timeout: ${e}`)}function Ee(e){let t=Error(`Image request aborted: ${e}`);return t.name=`AbortError`,t}function De(e){if(Se(e))return!0;if(!e||typeof e!=`object`)return!1;let t=`name`in e?e.name:void 0;if(t===`AbortError`||t===`CanceledError`)return!0;let n=`message`in e?e.message:void 0;return typeof n==`string`&&/(aborted|abort|cancelled|canceled)/i.test(n)}function Oe(e,t){let n,r=document.createElement(`img`);r.decoding=`async`,t.crossOrigin&&(r.crossOrigin=t.crossOrigin);let i=!1,a,o=(e=!1)=>{n&&clearTimeout(n),r.onload=null,r.onerror=null,e&&(r.src=``)};return{promise:new Promise((s,c)=>{a=c,r.onload=()=>{i||(i=!0,o(),s(r))},r.onerror=e=>{i||(i=!0,o(),c(e))},n=setTimeout(()=>{i||(i=!0,o(),c(Te(e)))},t.timeoutMs),r.src=e,r.complete&&r.naturalWidth>0&&(i=!0,o(),s(r))}),abort:()=>{i||(i=!0,o(!0),a&&a(Ee(e)))}}}var Z=class{constructor(e){E(this,`timeoutMs`,void 0),E(this,`crossOrigin`,void 0),E(this,`useFetch`,void 0),E(this,`cache`,void 0),E(this,`inFlight`,new Map),E(this,`knownConsumers`,new Map),this.timeoutMs=e.timeoutMs,this.crossOrigin=e.crossOrigin,this.useFetch=!!e.useFetch&&typeof fetch<`u`&&typeof AbortController<`u`,this.cache=e.cache||new Map}acquire(e,t){let n=this.cache.get(e);if(n&&n.naturalWidth>0)return{requestKey:`cached:${e}`,promise:Promise.resolve(n),release:()=>{}};let r=this.inFlight.get(e);r||(r={url:e,requestKey:we(e),consumers:new Set,promise:Promise.resolve(document.createElement(`img`)),settled:!1,cancelled:!1,silentCancellation:!0,abortReason:void 0},r.promise=this.createRequest(r).then(t=>(r.settled=!0,r.abortReason=void 0,this.cache.set(e,t),t)).catch(e=>{throw r.settled=!0,this.normalizeRequestError(r,e)}).finally(()=>{r&&(r.abortController=void 0,r.abortDomImage=void 0,r.abortReason=void 0),r&&r.consumers.size===0&&this.inFlight.delete(e)}),this.inFlight.set(e,r)),r.consumers.add(t);let i=this.knownConsumers.get(t)||new Set;return i.add(e),this.knownConsumers.set(t,i),{requestKey:r.requestKey,promise:r.promise,release:n=>{this.release(e,t,n)}}}release(e,t,n={}){let r=this.knownConsumers.get(t);r&&(r.delete(e),r.size===0&&this.knownConsumers.delete(t));let i=this.inFlight.get(e);if(i&&(i.consumers.delete(t),n.silent===!1&&(i.silentCancellation=!1),!(i.consumers.size>0))){if(!i.settled){i.cancelled=!0,i.abortReason||(i.abortReason=`release`),i.abortController&&i.abortController.abort(),i.abortDomImage&&i.abortDomImage();return}this.inFlight.delete(e)}}releaseConsumer(e,t={}){let n=this.knownConsumers.get(e);if(n)for(let r of[...n])this.release(r,e,t)}cancelAll(e={}){let t=[...this.knownConsumers.keys()];for(let n of t)this.releaseConsumer(n,e)}normalizeRequestError(e,t){return e.abortReason===`timeout`?De(t)?Te(e.url):t:e.abortReason===`release`||e.cancelled||De(t)?new xe(`Image request cancelled`,e.silentCancellation):t}async createRequest(e){if(this.useFetch){let t=new AbortController;e.abortController=t;let n=setTimeout(()=>{e.abortReason===`release`||e.settled||(e.abortReason=`timeout`,t.abort(Te(e.url)))},this.timeoutMs);try{let n=this.crossOrigin===`use-credentials`?`include`:`same-origin`,r=await fetch(e.url,{signal:t.signal,credentials:n});if(!r.ok)throw Error(`Image request failed (${r.status}): ${e.url}`);let i=await r.blob(),a=URL.createObjectURL(i);try{let{promise:t,abort:n}=Oe(a,{timeoutMs:this.timeoutMs,crossOrigin:void 0});return e.abortDomImage=n,await t}finally{URL.revokeObjectURL(a)}}finally{clearTimeout(n)}}let{promise:t,abort:n}=Oe(e.url,{timeoutMs:this.timeoutMs,crossOrigin:this.crossOrigin});return e.abortDomImage=n,t}};const Q=/(-?[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,ke={},Ae=typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(`firefox`),je=500,Me=new Map;var Ne=class{constructor(e,t){if(E(this,`canvas`,void 0),E(this,`ctx`,void 0),E(this,`options`,void 0),E(this,`imagesPending`,0),E(this,`imagesLoaded`,0),E(this,`imageIdsLoaded`,[]),E(this,`frameIsRendering`,!1),E(this,`pendingDrawCall`,!1),E(this,`firstMeaningfulPaint`,!1),E(this,`parallelTasks`,6),E(this,`maxPrefetchPerFrame`,8),E(this,`imageLoadingConfig`,void 0),E(this,`imageRequestPool`,void 0),E(this,`frameTasks`,0),E(this,`loadingQueueOrdered`,!0),E(this,`loadingQueue`,[]),E(this,`currentTask`,Promise.resolve()),E(this,`tasksRunning`,0),E(this,`inFlightImageLoads`,new Map),E(this,`requiredTileKeys`,new Set),E(this,`requiredPrefetchTileKeys`,new Set),E(this,`requestGeneration`,0),E(this,`frameCounter`,0),E(this,`pendingTileReveals`,new Map),E(this,`stats`,void 0),E(this,`averageJobTime`,64),E(this,`lastKnownScale`,1),E(this,`visible`,[]),E(this,`previousVisible`,[]),E(this,`rendererPosition`,void 0),E(this,`dpi`,void 0),E(this,`drawCalls`,[]),E(this,`lastPaintedObject`,void 0),E(this,`hostCache`,void 0),E(this,`invalidated`,[]),E(this,`fallbackRevealTimeout`,null),E(this,`framePrefetchCount`,0),E(this,`hasTilesFading`,!1),E(this,`hasActiveLayerClip`,!1),E(this,`_worker`,()=>{if(this.loadingQueue.length&&this.tasksRunning<this.parallelTasks&&this.frameTasks<this.parallelTasks){let e=this.loadingQueue.pop();e&&(this.tasksRunning++,this.frameTasks++,this.currentTask=e.task().then(()=>{this.tasksRunning--}).catch(()=>{this.tasksRunning--}))}}),E(this,`_scheduled`,0),E(this,`_doWork`,()=>{this.loadingQueue.length===0&&this.tasksRunning===0&&this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);let e=this.parallelTasks||1;!this.firstMeaningfulPaint&&this.loadingQueue.length&&(e=this.loadingQueue.length);for(let t=0;t<e;t++)this._worker()}),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.ctx=e.getContext(`2d`,{alpha:!0}),!this.ctx)throw Error(`Canvas 2D context unavailable`);this.ctx.imageSmoothingEnabled=!0,this.options=t||{},this.imageLoadingConfig=X(this.options.imageLoading),this.parallelTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Z({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:this.options.crossOrigin?`anonymous`:void 0,useFetch:!!this.options.crossOrigin,cache:Me}),this.canvas.style.transition=`opacity .3s`,this.dpi=t?.dpi||1,this.options.readiness===`immediate`&&(this.firstMeaningfulPaint=!0,this.canvas.style.opacity=`1`),this.hostCache=t?.lruCache?new re({maxSize:1024*512*512,dispose:(e,t,n)=>{this.invalidated.push(t),e.width=0,e.height=0},sizeCalculation:(e,t)=>e.width*e.height}):{store:{},get(e){return this.store[e]},set(e,t){this.store[e]=t}}}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}resize(){this.rendererPosition=this.canvas.getBoundingClientRect()}getCompositeOwner(e){let t=e?.__parent;return t&&t.renderOptions?t:void 0}compareCompositeLoadPriority(e,t){let n=this.getCompositeOwner(e),r=this.getCompositeOwner(t);return!n||n!==r?0:(e?.display.scale||0)-(t?.display.scale||0)}isReady(){return this.firstMeaningfulPaint}afterFrame(e){if(this.clearTransform(),this.lastPaintedObject=void 0,this.frameIsRendering=!1,this.imagesPending=this.loadingQueue.length+this.tasksRunning+this.inFlightImageLoads.size+this.pendingTileReveals.size,this.imagesLoaded=0,this.loadingQueueOrdered||(this.loadingQueue=this.loadingQueue.sort((e,t)=>{let n=this.compareCompositeLoadPriority(e.paint,t.paint);return n===0?e.network&&t.network&&e.scale===t.scale?t.distance-e.distance:e.scale-t.scale:n}),this.loadingQueueOrdered=!0),this.scheduleSingleImageLookahead(e),this.previousVisible=this.visible,this.pruneStaleTileWork(),this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let e=0;e<this.drawCalls.length;e++){let e=this.drawCalls.shift();e&&e()}this.doOffscreenWork(),this.options.debug&&this.stats&&this.stats.end()}doOffscreenWork(){this.frameTasks=0,this.loadingQueue.length&&(this._worker(),this.loadingQueue.length&&this.tasksRunning<this.parallelTasks&&(this._scheduled||(this._scheduled=setInterval(this._doWork,0))))}getScale(e,t,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}beforeFrame(e,t,n,r){this.options.debug&&this.stats&&this.stats.begin(),this.frameIsRendering=!0,this.frameCounter+=1,this.visible=[],this.framePrefetchCount=0,this.hasTilesFading=!1,this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.flushTileRevealBatch(),this.options.beforeFrame&&this.options.beforeFrame(t);let i=this.getCanvasDims();this.ctx.globalAlpha=1,this.canvas.dataset.background===`transparent`?this.ctx.clearRect(0,0,i.width,i.height):(this.ctx.fillStyle=this.canvas.dataset.background??`rgb(0, 0, 0)`,this.ctx.fillRect(0,0,i.width,i.height));let a=Y(r);this.ctx.filter!==a&&(this.ctx.filter=a)}applyTransform(e,t,n,r,i){let a=e.__owner.value;if(a&&a.rotation){this.ctx.save();let e=t+r/2,o=n+i/2;this.ctx.translate(e,o),this.ctx.rotate(a.rotation*Math.PI/180),this.ctx.translate(-e,-o),this.lastPaintedObject=a}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}getTileKey(e,t){return`${e.id}::${e.display.scale}::${t}`}nextRequestKey(e){return this.requestGeneration+=1,`${e}::${this.requestGeneration}`}markTileRequired(e,t){if(t){this.requiredPrefetchTileKeys.add(e);return}this.requiredTileKeys.add(e)}isTileRequired(e){return this.requiredTileKeys.has(e)||this.requiredPrefetchTileKeys.has(e)}shouldSkipFade(e,t=performance.now()){return e?.requestedAt?t-e.requestedAt<=this.imageLoadingConfig.skipFadeIfLoadedWithinMs:!1}enqueueTileReveal(e,t,n){let r=performance.now();if(this.imageLoadingConfig.revealDelayFrames===0&&this.imageLoadingConfig.revealBatchWindowFrames===0){let e=this.getTileState(t,n);this.setTileState(t,n,{...e,loadedAt:r,skipFade:this.shouldSkipFade(e,r)});return}this.pendingTileReveals.set(e,{imageBuffer:t,index:n,queuedFrame:this.frameCounter})}flushTileRevealBatch(){if(this.pendingTileReveals.size===0)return;let e=this.imageLoadingConfig.revealDelayFrames,t=this.imageLoadingConfig.revealBatchWindowFrames,n=performance.now(),r=[...this.pendingTileReveals.entries()].sort((e,t)=>e[1].queuedFrame-t[1].queuedFrame),i=0;for(;i<r.length;){let a=r[i];if(this.frameCounter-a[1].queuedFrame<e)break;let o=a[1].queuedFrame+t;for(;i<r.length&&r[i][1].queuedFrame<=o;){let[e,t]=r[i],a=this.getTileState(t.imageBuffer,t.index);a.state===`decoded`&&!a.loadedAt&&this.setTileState(t.imageBuffer,t.index,{...a,loadedAt:n,skipFade:this.shouldSkipFade(a,n)}),this.pendingTileReveals.delete(e),i+=1}}}emitImageError(e){this.options.onImageError&&this.options.onImageError({renderer:`canvas`,...e})}releaseInFlightTileLoad(e,t={}){let n=this.inFlightImageLoads.get(e);n&&(n.release(t),this.inFlightImageLoads.delete(e))}pruneStaleTileWork(){let e=[];for(let t of this.loadingQueue){if(!t.tileKey||this.isTileRequired(t.tileKey)){e.push(t);continue}if(t.paint&&typeof t.index==`number`){let e=this.ensureImageBuffer(t.paint),n=this.getTileState(e,t.index);n.lastRequestKey===t.requestKey&&(n.state===`queued`||n.state===`loading`)&&this.setTileState(e,t.index,{...n,state:`idle`,cancelledAt:performance.now()})}t.tileKey&&this.pendingTileReveals.delete(t.tileKey)}this.loadingQueue=e;let t=[];for(let[e,n]of this.inFlightImageLoads.entries()){if(this.isTileRequired(e))continue;t.push(e);let r=this.getTileState(n.imageBuffer,n.index);r.lastRequestKey===n.requestKey&&r.state===`loading`&&this.setTileState(n.imageBuffer,n.index,{...r,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e)}for(let e of t)this.releaseInFlightTileLoad(e,{silent:!0})}ensureImageBuffer(e){(!e.__host||!e.__host.canvas)&&this.createImageHost(e);let t=e.__host.canvas;return t.tiles||(t.tiles={}),t.indices||(t.indices=[]),t.loaded||(t.loaded=[]),t.canvases||(t.canvases=[]),t}getTileState(e,t){return e.tiles||(e.tiles={}),e.tiles[t]||(e.tiles[t]={state:`idle`},this.syncBufferState(e)),e.tiles[t]}setTileState(e,t,n){e.tiles||(e.tiles={}),e.tiles[t]=n,this.syncBufferState(e)}syncBufferState(e){let t=[],n=[],r=e.tiles||{},i=Object.keys(r);for(let e=0;e<i.length;e++){let a=parseInt(i[e],10),o=r[a].state;(o===`queued`||o===`loading`)&&t.push(a),o===`decoded`&&n.push(a)}e.indices=t,e.loaded=n,e.loading=t.length>0}getCompositeRenderOptions(e){return e.__parent?.renderOptions}shouldClipLayerToBounds(e){return e instanceof q||e instanceof J?!!this.getCompositeRenderOptions(e)?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}getLayerPolicy(e){return this.getCompositeRenderOptions(e)?.layerPolicy||`fallback-only`}isLayerActive(e){let t=e.__parent;return!t||this.getLayerPolicy(e)===`always-blend`?!0:typeof t.isImageActive==`function`?!!t.isImageActive(e):!0}getPrefetchRadius(e){let t=this.getCompositeRenderOptions(e);return t?typeof t.prefetchRadius==`number`?Math.max(0,t.prefetchRadius):t.loadingBias===`speed`?2:t.loadingBias===`data`?0:1:0}getFadeAlpha(e,t,n){if(t?.skipFade)return 1;if(t?.state===`decoded`&&!t.loadedAt&&(this.imageLoadingConfig.revealDelayFrames>0||this.imageLoadingConfig.revealBatchWindowFrames>0))return 0;let r=this.getCompositeRenderOptions(e);if(!r||!r.fadeInMs||r.fadeInMs<=0)return 1;let i=r.fadeInMs,a=performance.now(),o=1;if(n&&r.fadeOnLayerChange&&r.layerPolicy!==`active-only`){let t=e.__parent;if(t&&typeof t.getImageActivatedAt==`function`){let n=t.getImageActivatedAt(e);typeof n==`number`&&(o=Math.min(o,Math.max(0,Math.min(1,(a-n)/i))))}}return t?.loadedAt&&(n||r.fadeFallbackTiles)&&(t.fadeStartedAt||(t.fadeStartedAt=a),o=Math.min(o,Math.max(0,Math.min(1,(a-t.fadeStartedAt)/i)))),o}schedulePrefetchNeighbours(e,t,n,r){if(!(t instanceof J)||this.framePrefetchCount>=this.maxPrefetchPerFrame||this.getCompositeRenderOptions(t)?.loadingBias===`data`)return;let i=this.getPrefetchRadius(t);if(i<=0)return;let a=t.columns,o=t.rows;if(!a||!o)return;let s=n%a,c=Math.floor(n/a);for(let n=1;n<=i;n++)for(let i=-n;i<=n;i++)for(let l=-n;l<=n;l++){if(Math.max(Math.abs(l),Math.abs(i))!==n)continue;let u=s+l,d=c+i;if(u<0||d<0||u>=a||d>=o)continue;let f=d*a+u,p=this.getTileKey(t,f);if(this.markTileRequired(p,!0),this.schedulePaintToCanvas(e,t,f,r+n*1e3,!0)&&(this.framePrefetchCount++,this.framePrefetchCount>=this.maxPrefetchPerFrame))return}}scheduleSingleImageLookahead(e){if(this.maxPrefetchPerFrame<=0||this.framePrefetchCount>=this.maxPrefetchPerFrame||e.hasActiveZone())return;let t=1/0,n=-1/0,r=new Set;for(let e=0;e<this.visible.length;e++){let i=this.visible[e].__owner?.value;!i||i.type!==`world-object`||i.points[0]===0||(r.add(i),t=Math.min(t,i.points[2]),n=Math.max(n,i.points[4]))}if(!Number.isFinite(t)||!Number.isFinite(n))return;let i=n-t;if(i<=0)return;let a=i*1.5,o=n+a,s=t-a,c,l,u=e.getObjects();for(let e=0;e<u.length;e++){let i=u[e];if(!i||i.type!==`world-object`||i.points[0]===0||r.has(i))continue;let a=i.points[2],d=i.points[4],f=a>=n&&a<=o,p=d<=t&&d>=s;if(!f&&!p)continue;let m;for(let e=0;e<i.layers.length;e++){let t=i.layers[e];if(t instanceof q){m=t;break}}if(m){if(f){let e=a-n;(!c||e<c.distance)&&(c={image:m,distance:e})}if(p){let e=t-d;(!l||e<l.distance)&&(l={image:m,distance:e})}}}let d=[c,l].filter(Boolean);for(let e of d){if(this.framePrefetchCount>=this.maxPrefetchPerFrame)break;let t=this.ensureImageBuffer(e.image);this.schedulePaintToCanvas(t,e.image,0,1e4+e.distance,!0)&&this.framePrefetchCount++}}paint(e,t,n,r,i,a){let o=this.ctx.globalAlpha,s=typeof e.__zoneVisibilityAlpha==`number`?e.__zoneVisibilityAlpha:1;if(e instanceof q||e instanceof J){let c=e.display.rotation||0,l=c!==0;try{if(l){this.ctx.save();let o=n+i/2,s=r+a/2;e.crop&&(o-=e.crop[t*5+1],s-=e.crop[t*5+2]),this.ctx.translate(o,s),this.ctx.rotate(c*Math.PI/180),this.ctx.translate(-o,-s)}let u=this.options.paintImages!==!1,d=this.options.shouldPaintImage?this.options.shouldPaintImage(e,t):!0;if(!u||!d)return;this.visible.push(e);let f=(e.style?.opacity===void 0?1:e.style.opacity)*s;if(!f)return;this.ctx.globalAlpha=o*f;let p=this.ensureImageBuffer(e),m=this.getTileState(p,t);m.lastUsedAt=performance.now(),this.setTileState(p,t,m);let h=this.getTileKey(e,t);this.markTileRequired(h,!1);let g=this.isLayerActive(e),_=this.getCanvasDims(),v=x({x:n+i/2,y:r+a/2},{x:_.width/2,y:_.height/2}),y=this.invalidated.indexOf(p.canvases[t])!==-1,b=this.hostCache.get(p.canvases[t]),S=!!b&&!y;if(y&&this.setTileState(p,t,{...m,state:`idle`}),(y||!S||m.state===`idle`||m.state===`error`)&&g&&(this.schedulePaintToCanvas(p,e,t,v,!1),this.schedulePrefetchNeighbours(p,e,t,v)),!this.firstMeaningfulPaint)return;if(b&&!y){let s=this.getFadeAlpha(e,m,g);if(s<1&&(this.hasTilesFading=!0),this.ctx.globalAlpha=o*f*s,e.crop&&e.cropData){if(e.crop[t*5]){let o=[e.crop[t*5+1]/e.display.scale-e.display.points[t*5+1],e.crop[t*5+2]/e.display.scale-e.display.points[t*5+2],1+(e.crop[t*5+3]-e.crop[t*5+1])/e.display.scale,1+(e.crop[t*5+4]-e.crop[t*5+2])/e.display.scale];o[0]+=e.cropData.x/e.display.scale,o[1]+=e.cropData.y/e.display.scale;let s=e.x*this.lastKnownScale,c=e.y*this.lastKnownScale,l=[n+s,r+c,i,a];l[0]+=s,l[1]+=c,this.ctx.drawImage(b,o[0],o[1],o[2],o[3],l[0],l[1],l[2]+1,l[3]+1)}}else Ae?this.ctx.drawImage(b,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],n,r,i+1,a+1):this.ctx.drawImage(b,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],n,r,i+Number.MIN_VALUE+.5,a+Number.MIN_VALUE+.5)}}catch{}finally{l&&this.ctx.restore(),this.ctx.globalAlpha=o}}let c=e instanceof le&&this.options.box,l=e instanceof pe&&this.options.polygon;if((c||l)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let t=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),c=e.props.relativeStyle?1:i/e.width,u=t.opacity===void 0?1:t.opacity;this.ctx.globalAlpha=o*u*s;let d=0;t.borderWidth!==void 0&&(d=parseInt(t.borderWidth,10)*c);let f=0;t.outlineWidth!==void 0&&(f=parseInt(t.outlineWidth,10)*c);let p=0;if(t.outlineOffset!==void 0&&(p=parseInt(t.outlineOffset,10)*c),t.borderColor&&(this.ctx.strokeStyle=t.borderColor),t.boxShadow){let e=t.boxShadow.split(/,(?![^(]*\))/);for(let t of e){let e=ke[t]||Q.exec(t)||Q.exec(t);ke[t]=e,e&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(e[1])*this.dpi*c,this.ctx.shadowOffsetY=parseInt(e[3])*this.dpi*c,this.ctx.shadowBlur=parseInt(e[5])*this.dpi*c,this.ctx.shadowColor=e[9],this.ctx.fillStyle=`rgba(0,0,0,1)`,this.ctx.fillRect(n+d,r+d,i,a),this.ctx.restore())}}if(this.ctx.fillStyle=t.backgroundColor||`transparent`,this.ctx.lineWidth=d,l){let t=e.shape,i=t.points||[],a=i.length;this.ctx.beginPath();for(let e=0;e<a;e++)this.ctx.lineTo(n+i[e][0]*this.lastKnownScale,r+i[e][1]*this.lastKnownScale);t.open||this.ctx.closePath(),d&&this.ctx.stroke(),t.open||this.ctx.fill()}else d&&this.ctx.strokeRect(n+d/2,r+d/2,i+d,a+d),this.ctx.fillRect(n+d,r+d,i,a);f&&(t.outlineColor&&(this.ctx.strokeStyle=t.outlineColor),this.ctx.lineWidth=f,this.ctx.strokeRect(n-f/2-p,r-f/2-p,i+d*2+f+p*2,a+d*2+f+p*2))}this.ctx.globalAlpha=o}}schedulePaintToCanvas(e,t,n,r,i=!1){let a=this.getTileState(e,n),o=performance.now(),s=this.getTileKey(t,n);if(this.markTileRequired(s,i),this.pendingTileReveals.delete(s),a.nextRetryAt&&a.nextRetryAt>o||a.state===`queued`||a.state===`loading`||a.state===`decoded`)return!1;let c=`${t.id}--${t.display.scale}-${n}`,l=this.nextRequestKey(s);e.canvases[n]=c;let u=this.invalidated.indexOf(c);return u!==-1&&this.invalidated.splice(u,1),this.setTileState(e,n,{...a,state:`queued`,requestedAt:o,error:void 0,lastRequestKey:l,cancelledAt:void 0,skipFade:!1}),this.loadingQueueOrdered=!1,this.loadingQueue.push({id:c,scale:t.display.scale,kind:`network`,tileKey:s,requestKey:l,network:!0,distance:r,paint:t,index:n,prefetch:i,task:async()=>{let a=this.getTileState(e,n);if(a.lastRequestKey!==l||a.state!==`queued`&&a.state!==`loading`)return;let o=this.visible.indexOf(t)!==-1,u=this.previousVisible.indexOf(t)!==-1;if(!i&&!o&&!u){this.setTileState(e,n,{...a,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(s);return}let d=t.getImageUrl(n);this.setTileState(e,n,{...a,state:`loading`,url:d,requestedAt:a.requestedAt||performance.now(),error:void 0});try{let a=`${s}::${l}`,o=this.imageRequestPool.acquire(d,a);this.inFlightImageLoads.set(s,{tileKey:s,requestKey:l,url:d,consumerId:a,paint:t,imageBuffer:e,index:n,release:o.release});let u=await o.promise;this.releaseInFlightTileLoad(s,{silent:!0});let f=this.getTileState(e,n);if(f.lastRequestKey!==l||f.state!==`loading`)return;this.loadingQueueOrdered=!1,this.loadingQueue.push({id:`${c}--decode`,scale:t.display.scale,kind:`decode`,tileKey:s,requestKey:l,distance:r,paint:t,index:n,prefetch:i,task:()=>new Promise(r=>{let i=this.getTileState(e,n);if(i.lastRequestKey!==l||i.state!==`loading`){r();return}let a=t.display.points.slice(n*5,n*5+5),o=document.createElement(`canvas`),c=o.getContext(`2d`);o.width=a[3]-a[1],o.height=a[4]-a[2],this.hostCache.set(e.canvases[n],o),this.drawCalls.push(()=>{let t=this.getTileState(e,n);if(t.lastRequestKey!==l||t.state!==`loading`){r();return}c.drawImage(u,0,0,a[3]-a[1],a[4]-a[2]);let i=this.getTileState(e,n);this.setTileState(e,n,{...i,state:`decoded`,loadedAt:void 0,error:void 0,attempts:0,nextRetryAt:void 0}),this.enqueueTileReveal(s,e,n),this.imagesLoaded++,r()})})})}catch(r){if(this.releaseInFlightTileLoad(s,{silent:!0}),Se(r)){let t=this.getTileState(e,n);t.lastRequestKey===l&&this.setTileState(e,n,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(s);return}let i=this.getTileState(e,n);if(i.lastRequestKey!==l)return;let a=(i.attempts||0)+1,o=a<this.imageLoadingConfig.maxAttempts,c=o?performance.now()+be(this.imageLoadingConfig,a):performance.now()+this.imageLoadingConfig.errorRetryIntervalMs;this.setTileState(e,n,{...i,state:o?`idle`:`error`,error:r,attempts:a,nextRetryAt:c}),this.pendingTileReveals.delete(s),this.emitImageError({severity:`recoverable`,imageUrl:d,contentId:t.id,tileIndex:n,attempt:a,maxAttempts:this.imageLoadingConfig.maxAttempts,willRetry:o,nextRetryAt:c,error:r})}}}),!0}afterPaintLayer(e,t){}prepareLayer(e,t){if(this.hasActiveLayerClip=!1,e.__owner.value&&(e.cropData&&this.lastKnownScale*(1/e.display.scale),this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2])),this.shouldClipLayerToBounds(e)){let e=this.getBoundsFromPoints(t);e&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(e.x,e.y,e.width,e.height),this.ctx.clip(),this.hasActiveLayerClip=!0)}(!e.__host||!e.__host.canvas)&&(e instanceof q||e instanceof J)&&this.createImageHost(e)}finishLayer(){this.hasActiveLayerClip&&(this.ctx.restore(),this.hasActiveLayerClip=!1),this.lastPaintedObject&&this.clearTransform()}createImageHost(e){e.__host=e.__host?e.__host:{},e.__host.canvas={canvas:void 0,canvases:[],tiles:{},indices:[],loaded:[],loading:!1}}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getViewportBounds(e,t,n){let r=e.getActiveZone();if(r){r.recalculateBounds();let e=he(t,r.points,n);if(e){let n=t[3]-t[1],r=t[4]-t[2];return{x1:e.minX,y1:e.minY,x2:e.maxX+n,y2:e.maxY+r}}}return null}pendingUpdate(){this.imagesPending=this.loadingQueue.length+this.tasksRunning+this.inFlightImageLoads.size+this.pendingTileReveals.size;let e=!this.pendingDrawCall&&this.drawCalls.length===0&&this.loadingQueue.length===0&&this.tasksRunning===0&&this.inFlightImageLoads.size===0&&this.pendingTileReveals.size===0;return!e&&this.visible.length===0&&this.options.readiness!==`immediate`&&this.fallbackRevealTimeout===null&&(this.fallbackRevealTimeout=setTimeout(()=>{this.canvas.style.opacity=`1`,this.firstMeaningfulPaint=!0,this.fallbackRevealTimeout=null},500)),!this.firstMeaningfulPaint&&e&&(this.visible.length||this.options.readiness===`immediate`)?(this.canvas.style.opacity=`1`,this.firstMeaningfulPaint=e,!0):this.options.debug||this.hasTilesFading?!0:!e}getRendererScreenPosition(){return this.rendererPosition}resetReadyState(){this.options.readiness!==`immediate`&&(this.firstMeaningfulPaint=!1,this.fallbackRevealTimeout&&(clearTimeout(this.fallbackRevealTimeout),this.fallbackRevealTimeout=null))}resetImageFadeState(){let e=performance.now();for(let t of this.visible){if(!(t instanceof q||t instanceof J))continue;let n=t.__host?.canvas,r=n?.tiles;if(r)for(let t of Object.keys(r)){let i=Number(t),a=r[i];a?.state===`decoded`&&this.setTileState(n,i,{...a,loadedAt:e,fadeStartedAt:void 0,skipFade:!1})}}this.hasTilesFading=!0}reset(){this.loadingQueue=[],this.drawCalls=[],this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);for(let e of[...this.inFlightImageLoads.keys()])this.releaseInFlightTileLoad(e,{silent:!0});this.imageRequestPool.cancelAll({silent:!0}),this.inFlightImageLoads.clear(),this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.pendingTileReveals.clear(),this.requestGeneration+=1,this.frameCounter=0,this.fallbackRevealTimeout&&(clearTimeout(this.fallbackRevealTimeout),this.fallbackRevealTimeout=null),this.imagesPending=0,this.imagesLoaded=0,this.hasTilesFading=!1}},Pe=class{constructor(e){E(this,`renderers`,[]),E(this,`length`,void 0);for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].afterFrame(e,t,n,r)}afterPaintLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].afterPaintLayer(e,t)}beforeFrame(e,t,n,r){for(let i=0;i<this.length;i++)this.renderers[i].beforeFrame(e,t,n,r)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,n,r){return this.renderers[0].getPointsAt(e,t,n,r)}getScale(e,t){return this.renderers[0].getScale(e,t)}getViewportBounds(e,t,n){return this.renderers[0].getViewportBounds(e,t,n)}getRendererScreenPosition(){return this.renderers[0].getRendererScreenPosition()}isReady(){for(let e=0;e<this.length;e++)if(!this.renderers[e].isReady())return!1;return!0}paint(e,t,n,r,i,a){for(let o=0;o<this.length;o++)this.renderers[o].paint(e,t,n,r,i,a)}pendingUpdate(){for(let e=0;e<this.length;e++)if(this.renderers[e].pendingUpdate())return!0;return!1}prepareLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].prepareLayer(e,t)}finishLayer(e,t){for(let n=0;n<this.length;n++)this.renderers[n].finishLayer(e,t)}resize(e,t){for(let n=0;n<this.length;n++)this.renderers[n].resize(e,t)}reset(){for(let e=0;e<this.length;e++)this.renderers[e].reset()}resetReadyState(){for(let e=0;e<this.length;e++)this.renderers[e].resetReadyState&&this.renderers[e].resetReadyState()}resetImageFadeState(){for(let e=0;e<this.length;e++)this.renderers[e].resetImageFadeState&&this.renderers[e].resetImageFadeState()}},Fe=class extends G{constructor(...e){super(...e),E(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},Ie=class extends Fe{constructor(e){super(),E(this,`id`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`images`,[]),E(this,`allImages`,[]),E(this,`scaleFactors`,[]),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`lazyLoader`,void 0),E(this,`isFullyLoaded`,!1),E(this,`isLoadingFullResource`,!1),E(this,`maxScaleFactor`,0),E(this,`layerSelection`,new WeakMap),E(this,`layerSelectionFrame`,0),E(this,`renderOptions`,void 0),E(this,`_scheduleSortByScales`,!1),E(this,`_sortByScales`,()=>{this._scheduleSortByScales=!1,this.allImages.sort((e,t)=>t.display.width-e.display.width),this.images=[];let e=.1;for(let t of this.allImages)if(!(t.display.width<this.renderOptions.minSize&&t.display.height<this.renderOptions.minSize&&!t.priority)&&!(t instanceof q&&(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 q||e.priority)?(t.priority&&this.images.push(t),this.images.push(e)):t&&this.images.push(t)}else t&&this.images.push(t);e=t.display.scale}this.images.length===0&&(this.images=[...this.allImages]),this.scaleFactors=this.images.map(e=>e.display.scale),this.maxScaleFactor=this.scaleFactors.length?Math.max(...this.scaleFactors):0}),E(this,`loadFullResource`,async()=>{if(!(this.isFullyLoaded||this.isLoadingFullResource)&&this.lazyLoader){this.isLoadingFullResource=!0;try{let e=await this.lazyLoader();this.addImages(e||[]),this.isFullyLoaded=!0}finally{this.isLoadingFullResource=!1}}}),E(this,`fallback`,[this.loadFullResource]),this.id=e.id,this.points=l.DnaFactory.singleBox(e.width,e.height),this.lazyLoader=e.loadFullImages,e.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:l.DnaFactory.singleBox(e.width,e.height),height:e.height,width:e.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:2,minSize:255,maxImageSize:2048,quality:1.3,useDevicePixelRatio:!0,layerPolicy:`always-blend`,loadingBias:`balanced`,prefetchRadius:1,fadeInMs:300,fadeFallbackTiles:!1,fadeOnLayerChange:!1,clipToBounds:!1,...e.renderOptions||{}},this.addImages(e.images)}applyProps(e){let t=!1;e.renderSmallestFallback!==void 0&&e.renderSmallestFallback!==this.renderOptions.renderSmallestFallback&&(this.renderOptions.renderSmallestFallback=e.renderSmallestFallback),e.renderLayers!==void 0&&e.renderLayers!==this.renderOptions.renderLayers&&(this.renderOptions.renderLayers=e.renderLayers),e.minSize!==void 0&&e.minSize!==this.renderOptions.minSize&&(this.renderOptions.minSize=e.minSize,t=!0),e.maxImageSize!==void 0&&e.maxImageSize!==this.renderOptions.maxImageSize&&(this.renderOptions.maxImageSize=e.maxImageSize,t=!0),e.quality!==void 0&&e.quality!==this.renderOptions.quality&&(this.renderOptions.quality=e.quality),e.useDevicePixelRatio!==void 0&&e.useDevicePixelRatio!==this.renderOptions.useDevicePixelRatio&&(this.renderOptions.useDevicePixelRatio=e.useDevicePixelRatio),e.layerPolicy!==void 0&&e.layerPolicy!==this.renderOptions.layerPolicy&&(this.renderOptions.layerPolicy=e.layerPolicy),e.loadingBias!==void 0&&e.loadingBias!==this.renderOptions.loadingBias&&(this.renderOptions.loadingBias=e.loadingBias),e.prefetchRadius!==void 0&&e.prefetchRadius!==this.renderOptions.prefetchRadius&&(this.renderOptions.prefetchRadius=e.prefetchRadius),e.fadeInMs!==void 0&&e.fadeInMs!==this.renderOptions.fadeInMs&&(this.renderOptions.fadeInMs=e.fadeInMs),e.fadeFallbackTiles!==void 0&&e.fadeFallbackTiles!==this.renderOptions.fadeFallbackTiles&&(this.renderOptions.fadeFallbackTiles=e.fadeFallbackTiles),e.fadeOnLayerChange!==void 0&&e.fadeOnLayerChange!==this.renderOptions.fadeOnLayerChange&&(this.renderOptions.fadeOnLayerChange=e.fadeOnLayerChange),e.clipToBounds!==void 0&&e.clipToBounds!==this.renderOptions.clipToBounds&&(this.renderOptions.clipToBounds=e.clipToBounds),t&&this.sortByScales()}appendChild(e){this.addImages([e])}removeChild(e){if(this.images.indexOf(e)===-1&&this.allImages.indexOf(e)===-1)return;let t=this.getImageDedupeKey(e);this.images=this.images.filter(n=>n!==e&&this.getImageDedupeKey(n)!==t),this.allImages=this.allImages.filter(n=>n!==e&&this.getImageDedupeKey(n)!==t),this.sortByScales()}insertBefore(e,t){this.addImages([e])}hideInstance(){}addImages(e){let t=new Set(this.allImages),n=new Set(this.allImages.map(e=>this.getImageDedupeKey(e)));for(let r of e){if(!r||t.has(r))continue;let e=this.getImageDedupeKey(r);n.has(e)||(r.__parent=this,r.__owner=this.__owner,this.allImages.push(r),t.add(r),n.add(e))}this.sortByScales()}getImageDedupeKey(e){return`${e.id}::${e.display.scale}`}sortByScales(){this._scheduleSortByScales=!0}getScheduledUpdates(e,t){return this._scheduleSortByScales?[this._sortByScales]:this.isFullyLoaded?[]:t>1/this.maxScaleFactor?this.fallback:[]}getAllPointsAt(e,t,n){if(this.images.length===0)return[];let r=this.renderOptions.useDevicePixelRatio&&typeof window<`u`&&window.devicePixelRatio||1,i=y(1/(n||1)/r,this.images,this.renderOptions.quality),a=this.images.length,o=t?(0,l.compose)(t,(0,l.translate)(this.x,this.y)):(0,l.translate)(this.x,this.y),s=[i];if(i!==this.images.length-1&&this.images[i+1]){s=[];for(let e=a-1;e>=i;e--)s.push(e);let e=s[0];this.renderOptions.renderLayers&&(s=s.slice(-Math.min(s.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&s.indexOf(e)===-1&&s.unshift(e)}s.sort((e,t)=>{let n=this.images[e],r=this.images[t],i=n?n.display.scale:0;return(r?r.display.scale:0)-i});let c=new Set;switch(this.renderOptions.layerPolicy){case`always-blend`:for(let e of s)c.add(e);break;case`active-only`:c.add(i),s=[i];break;case`fallback-only`:default:c.add(i),this.renderOptions.renderSmallestFallback&&s.length&&c.add(s[0]);break}let u=new Set;for(let e of c){let t=this.images[e];t&&u.add(t)}this.layerSelectionFrame+=1;let d=this.getNow(),f=d-Math.max(0,this.renderOptions.fadeInMs);for(let e of this.allImages){let t=this.layerSelection.get(e);if(!u.has(e)){this.layerSelection.set(e,{active:!1,frame:this.layerSelectionFrame});continue}let n=!!t&&t.frame===this.layerSelectionFrame-1,r=n&&t.active;this.layerSelection.set(e,{active:!0,frame:this.layerSelectionFrame,activatedAt:r&&typeof t.activatedAt==`number`?t.activatedAt:n?d:f})}let p=[];for(let t=0;t<s.length;t++){let r=s[t],i=this.images[r];p.push(...i.getAllPointsAt(e,o,n))}return p}isImageActive(e){let t=this.layerSelection.get(e);return!!t&&t.frame===this.layerSelectionFrame&&t.active}getImageActivatedAt(e){let t=this.layerSelection.get(e);if(!(!t||t.frame!==this.layerSelectionFrame||!t.active))return t.activatedAt}getNow(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}},Le=class extends G{constructor(e){if(super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`uri`,void 0),E(this,`display`,void 0),E(this,`points`,void 0),E(this,`getTexture`,void 0),this.getTexture=()=>({source:void 0,hash:-1}),!e)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,l.dna)(5)},this.points=(0,l.dna)(5);else{let t=e.scale||1;this.id=e.id||e.uri,this.uri=e.uri,this.points=l.DnaFactory.singleBox(e.width,e.height),this.display={x:0,y:0,scale:t,width:e.width/t,height:e.height/t,points:t===1?this.points:l.DnaFactory.singleBox(e.width/t,e.height/t)}}}applyProps(e){let t=e.display?e.display.width:e.target.width,n=e.target.width/t;this.id=e.id,this.points.set(l.DnaFactory.singleBox(e.target.width,e.target.height)),this.display.scale=n,this.display.width=e.target.width/n,this.display.height=e.target.height/n,this.getTexture=e.getTexture,this.display.points=n===1?this.points:l.DnaFactory.singleBox(e.target.width/n,e.target.height/n)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}};const Re=85.05112878;function ze(e,t){if(!Number.isFinite(e))throw Error(`${t} must be a finite number`)}function Be(e,t){if(ze(e,t),e<=0)throw Error(`${t} must be greater than 0`)}function Ve(e){if(!Number.isFinite(e))throw Error(`Latitude must be a finite number`);return e>Re?Re:e<-Re?-Re:e}function He(e){if(ze(e.west,`Map bounds west`),ze(e.south,`Map bounds south`),ze(e.east,`Map bounds east`),ze(e.north,`Map bounds north`),e.west<-180||e.west>180)throw Error(`Map bounds west must be within [-180, 180]`);if(e.east<-180||e.east>180)throw Error(`Map bounds east must be within [-180, 180]`);if(e.south<-90||e.south>90)throw Error(`Map bounds south must be within [-90, 90]`);if(e.north<-90||e.north>90)throw Error(`Map bounds north must be within [-90, 90]`);if(e.west>=e.east)throw Error(`Map bounds must satisfy west < east (antimeridian crossing is not supported)`);if(e.south>=e.north)throw Error(`Map bounds must satisfy south < north`);return e}function Ue(e){if(!Number.isFinite(e))throw Error(`Longitude must be a finite number`);return(e+180)/360}function We(e){let t=Ve(e)*Math.PI/180;return(1-Math.log(Math.tan(t)+1/Math.cos(t))/Math.PI)/2}function Ge(e){if(!Number.isFinite(e))throw Error(`Mercator X must be a finite number`);return e*360-180}function Ke(e){if(!Number.isFinite(e))throw Error(`Mercator Y must be a finite number`);let t=Math.PI*(1-2*e);return 180/Math.PI*Math.atan(Math.sinh(t))}function qe(e,t){return Ue(e)*2**t}function Je(e,t){return We(e)*2**t}function Ye(e,t){return Ge(e/2**t)}function Xe(e,t){return Ke(e/2**t)}function Ze(e){let t=He(e.bounds);Be(e.width,`Map world width`),Be(e.height,`Map world height`);let n=Ue(t.west),r=Ue(t.east),i=We(t.north),a=We(t.south),o=r-n,s=a-i;if(!(o>0))throw Error(`Map bounds produce an invalid mercator X span`);if(!(s>0))throw Error(`Map bounds produce an invalid mercator Y span`);let c=(t,r)=>{let a=Ue(t),c=We(r);return{x:(a-n)/o*e.width,y:(c-i)/s*e.height}},l=(t,r)=>{ze(t,`World x`),ze(r,`World y`);let a=n+t/e.width*o,c=i+r/e.height*s;return{lng:Ge(a),lat:Ke(c)}};return{lngLatToWorld:c,worldToLngLat:l,lngLatBoundsToWorldRect:e=>{He(e);let t=c(e.west,e.north),n=c(e.east,e.south);return{x:t.x,y:t.y,width:n.x-t.x,height:n.y-t.y}},worldRectToLngLatBounds:e=>{ze(e.x,`World rect x`),ze(e.y,`World rect y`),ze(e.width,`World rect width`),ze(e.height,`World rect height`);let t=l(e.x,e.y),n=l(e.x+e.width,e.y+e.height);return{west:t.lng,south:n.lat,east:n.lng,north:t.lat}},projectRing:e=>{let t=[];for(let[n,r]of e){let e=c(n,r);t.push([e.x,e.y])}return t}}}const Qe=`https://tile.openstreetmap.org/{z}/{x}/{y}.png`;function $e(e){if(e.s)return e.s;let t=e.subdomains||[];if(t.length!==0)return t[Math.abs(e.x+e.y+e.z)%t.length]}function et(e,t){let n=$e(t)||``;return e.replace(/\{z\}/g,`${t.z}`).replace(/\{x\}/g,`${t.x}`).replace(/\{y\}/g,`${t.y}`).replace(/\{s\}/g,n)}function tt(e,t){let n=e||Qe;return typeof n==`function`?n(t):et(n,t)}function nt(e,t,n){return Math.min(n,Math.max(t,e))}function rt(e){He(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=2**t,r=n-1,i=qe(e.bounds.west,t),a=qe(e.bounds.east,t),o=Je(e.bounds.north,t),s=Je(e.bounds.south,t),c=nt(i,0,n),l=nt(a,0,n),u=nt(o,0,n),d=nt(s,0,n),f=Math.max(1e-9,l-c),p=Math.max(1e-9,d-u),m=nt(Math.floor(i),0,r),h=nt(Math.ceil(a)-1,0,r),g=nt(Math.floor(o),0,r),_=nt(Math.ceil(s)-1,0,r),v=Math.max(1,h-m+1),y=Math.max(1,_-g+1);return{columns:v,rows:y,count:v*y,minTileX:m,maxTileX:h,minTileY:g,maxTileY:_,westTile:c,eastTile:l,northTile:u,southTile:d,tileSpanX:f,tileSpanY:p}}function it(e){He(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=Ze({bounds:e.bounds,width:e.worldWidth,height:e.worldHeight}),r=rt({bounds:e.bounds,zoom:t}),i=typeof e.maxTiles==`number`?e.maxTiles:1/0;if(r.count>i)throw Error(`Map tile grid too large at zoom ${t}: ${r.count} tiles exceeds the configured max (${i})`);let a=[],o=[];for(let e=r.minTileY;e<=r.maxTileY;e++)for(let i=r.minTileX;i<=r.maxTileX;i++){let r=Ye(i,t),s=Ye(i+1,t),c=Xe(e,t),l=Xe(e+1,t),u=n.lngLatToWorld(r,c),d=n.lngLatToWorld(s,l);a.push(1,u.x,u.y,d.x,d.y),o.push({x:i,y:e,z:t})}return{points:(0,l.dna)(a.length?a:[0]),tiles:o,columns:r.columns,rows:r.rows,count:r.count,minTileX:r.minTileX,maxTileX:r.maxTileX,minTileY:r.minTileY,maxTileY:r.maxTileY}}var at=class extends J{constructor(e){let t=e.scaleFactor||1,n=e.tileSize||256,r=e.tileSource||e.tileUrlTemplate||Qe,i=it({bounds:e.bounds,zoom:e.zoom,worldWidth:e.worldWidth,worldHeight:e.worldHeight}),a=e.id||`map-tiled-image-z${e.zoom}-${e.worldWidth}x${e.worldHeight}-${i.minTileX}:${i.maxTileX}-${i.minTileY}:${i.maxTileY}`;super({id:a,url:`map://tile-source`,scaleFactor:t,points:i.points,displayPoints:i.points,tileWidth:n,tileHeight:n,width:e.worldWidth,height:e.worldHeight,columns:i.columns,rows:i.rows,format:`png`,version3:!1}),E(this,`zoom`,void 0),E(this,`bounds`,void 0),E(this,`worldWidth`,void 0),E(this,`worldHeight`,void 0),E(this,`tileSize`,void 0),E(this,`tileSource`,void 0),E(this,`subdomains`,void 0),E(this,`tileCoordinates`,void 0),E(this,`minTileX`,void 0),E(this,`maxTileX`,void 0),E(this,`minTileY`,void 0),E(this,`maxTileY`,void 0),this.zoom=Math.max(0,Math.floor(e.zoom)),this.bounds={...e.bounds},this.worldWidth=e.worldWidth,this.worldHeight=e.worldHeight,this.tileSize=n,this.tileSource=r,this.subdomains=[...e.subdomains||[]],this.tileCoordinates=i.tiles,this.minTileX=i.minTileX,this.maxTileX=i.maxTileX,this.minTileY=i.minTileY,this.maxTileY=i.maxTileY}getImageUrl(e){let t=this.tileCoordinates[e];return t?tt(this.tileSource,{z:t.z,x:t.x,y:t.y,tileSize:this.tileSize,subdomains:this.subdomains}):``}},ot=class{constructor(e){E(this,`canvas`,void 0),E(this,`context`,void 0),E(this,`heightRatio`,1),E(this,`widthRatio`,1),E(this,`target`,new Float32Array(5)),E(this,`initialWidth`,void 0),E(this,`initialHeight`,void 0),E(this,`bounds`,void 0),E(this,`aggregate`,void 0),E(this,`delta`,0),E(this,`renderNextFrame`,!0),this.canvas=e,this.initialWidth=e.width,this.initialHeight=e.height,this.context=e.getContext(`2d`),this.context.globalAlpha=.5,this.aggregate=(0,l.scale)(1)}isReady(){return!0}resize(){this.initialWidth=this.canvas.width,this.initialHeight=this.canvas.height,this.renderNextFrame=!0}afterFrame(e,t,n){if(this.renderNextFrame){this.context.clearRect(0,0,this.canvas.width,this.canvas.height);let t=this.initialWidth/e.width,r=this.initialHeight/e.height,i=this.widthRatio>this.heightRatio?t:r;if(this.target=n,this.bounds){let t=e.getPointsAt(this.bounds,this.aggregate,i);for(let[e,n]of t)if(e instanceof q&&e.__host.canvas){let t=n.length/5;for(let r=0;r<t;r++)e.__host.canvas.canvases[r]&&(n[r+1]*i,n[r+2]*i,(n[r+3]-n[r+1])*i,(n[r+4]-n[r+2])*i)}}e.getPoints().forEach((e,t,n)=>{if(t%5==0&&e){let e={x1:n[t+1]*i,y1:n[t+2]*i,x2:n[t+3]*i,y2:n[t+4]*i,width:(n[t+3]-n[t+1])*i,height:(n[t+4]-n[t+2])*i};this.context.strokeStyle=`red`,this.context.strokeRect(e.x1,e.y1,e.width,e.height)}}),n&&(this.context.strokeStyle=`red`,this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(n[1]*i,n[2]*i,(n[3]-n[1])*i,(n[4]-n[2])*i))}}getActiveZone(e){return null}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=l.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,n,r,i,a){this.renderNextFrame=!0}prepareLayer(e){}pendingUpdate(){return!1}hasActiveZone(){return!1}getViewportBounds(e,t,n){return null}getRendererScreenPosition(){return this.canvas.getBoundingClientRect()}finishLayer(){}reset(){}};function st(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 ct=class e extends G{constructor(e,t){super(),E(this,`id`,void 0),E(this,`type`,`world-object`),E(this,`scale`,void 0),E(this,`layers`,void 0),E(this,`points`,void 0),E(this,`worldPoints`,void 0),E(this,`intersectionBuffer`,(0,l.dna)(5)),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`invertedBuffer`,(0,l.dna)(9)),E(this,`rotation`,0),E(this,`filteredPointsBuffer`,void 0),E(this,`_updatedList`,[]),E(this,`geometry`,void 0);let{x:n=0,y:r=0}=t||{};e?(this.id=e.id||``,this.scale=1,this.layers=e.layers,this.points=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.worldPoints=(0,l.dna)([1,n,r,n+e.width,r+e.height]),this.filteredPointsBuffer=(0,l.dna)(e.layers.length*5)):(this.id=``,this.scale=1,this.layers=[],this.points=(0,l.dna)(5),this.worldPoints=(0,l.dna)(5),this.filteredPointsBuffer=(0,l.dna)(5))}static createWithProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){let t=e.x||0,n=e.y||0;e.id!==void 0&&(this.id=e.id);let r=e.scale===void 0?this.scale:e.scale;this.points[0]=1,this.points[1]=t,this.points[2]=n,this.points[3]=t+e.width,this.points[4]=n+e.height,this.rotation=e.rotation||0,this.worldPoints[3]=this.worldPoints[1]+e.width,this.worldPoints[4]=this.worldPoints[2]+e.height,e.scale&&e.scale!==1&&this.atScale(r),this.scale=r}appendChild(e){e.points[0]===0&&e.points.set(this.points),e.__owner.value=this,this.addLayers([e])}removeChild(e){this.layers=this.layers.filter(t=>t!==e),this.filteredPointsBuffer=(0,l.dna)(this.layers.length*5)}insertBefore(e,t){let n=this.layers.indexOf(t);if(n===-1||this.layers.indexOf(e)!==-1)return;let r=this.layers.slice(0,n),i=this.layers.slice(n);this.layers=[...r,e,...i]}hideInstance(){console.warn(`hideInstance: not yet implemented`)}getObjectsAt(e,t){if(this.rotation&&(e=this.applyRotation(e)),(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer)[0]===0)return[];let n=this.layers.length,r=[];for(let i=0;i<n;i++){let n=this.layers[i];if(t&&n.isShape){let t=(0,l.transform)(n.points,(0,l.translate)(this.x,this.y));if(!n.intersects([e[1]-t[1],e[2]-t[2]]))continue}if((0,l.hidePointsOutsideRegion)((0,l.transform)(n.points,(0,l.translate)(this.x,this.y)),e,this.filteredPointsBuffer)[0]!==0&&r.push(n),t){let i=n;r.push(...i.getObjectsAt(e,t))}}return r}applyRotation(e){if(this.rotation){let t={x:e[1],y:e[2]},n={x:e[1],y:e[4]},r={x:e[3],y:e[2]},i={x:e[3],y:e[4]},a=this.points[1]+(this.points[3]-this.points[1])/2,o=this.points[2]+(this.points[4]-this.points[2])/2,[s,c]=st(a,o,t.x,t.y,this.rotation),[u,d]=st(a,o,n.x,n.y,this.rotation),[f,p]=st(a,o,r.x,r.y,this.rotation),[m,h]=st(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}},lt=class e extends G{get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}constructor(e=0,t=0,n=100,r=`left-to-right`){super(),E(this,`id`,`world`),E(this,`_width`,void 0),E(this,`_height`,void 0),E(this,`aspectRatio`,void 0),E(this,`viewingDirection`,void 0),E(this,`aggregateBuffer`,(0,l.dna)(9)),E(this,`isDirty`,!1),E(this,`zones`,[]),E(this,`filteredPointsBuffer`,void 0),E(this,`selectedZone`,void 0),E(this,`triggerQueue`,[]),E(this,`activatedEvents`,[]),E(this,`_updatedList`,[]),E(this,`translationBuffer`,(0,l.dna)(9)),E(this,`needsRecalculate`,!0),E(this,`emptyPaintables`,[]),E(this,`renderOrder`,[]),E(this,`debugSubscribers`,new Set),E(this,`zoneVisibilityFadeDurationMs`,220),E(this,`zoneOutsideOpacity`,.2),E(this,`zoneVisibilityFade`,void 0),E(this,`points`,void 0),E(this,`objects`,[]),E(this,`subscriptions`,[]),E(this,`_propagateEventTargets`,[]),E(this,`_alreadyFlushed`,[]),this._width=e,this._height=t,this.aspectRatio=Number.isNaN(e/t)?1:e/t,this.viewingDirection=r,this.points=(0,l.dna)(n*5),this.filteredPointsBuffer=(0,l.dna)(n*5)}static withProps(t){let n=new e;return n.applyProps(t),n}applyProps(e){e.width!==void 0&&e.height!==void 0&&(e.width!==this._width||e.height!==this._height)&&this.resize(e.width,e.height),e.viewingDirection!==this.viewingDirection&&(this.viewingDirection=e.viewingDirection,this.triggerRepaint())}propagateTouchEvent(e,t,n){let r=[];for(let e of n)if(e.x&&e.y){let t=l.DnaFactory.singleBox(1,1,e.x,e.y);r.push(this.getObjectsAt(t,!0).reverse())}return this.emitDebug({type:`touch`,at:performance.now(),event:e,touches:n.length}),r.map(n=>this.propagateEvent(e,t,n,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(e,t,n,r,i={}){let a=l.DnaFactory.singleBox(1,1,n,r),o=this.getObjectsAt(a,!0).reverse(),s=this.propagateEvent(e,t,o,i);return this.emitDebug({type:`pointer`,at:performance.now(),event:e,x:n,y:r,targets:s.length}),s}propagateEvent(e,t,n,{bubbles:r=!1,cancelable:i=!1}={}){t.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let a=!1;t.stopPropagation=()=>{a=!0};let o=n.length;for(let e=o-1;e>=0;e--){this._propagateEventTargets.unshift(n[e][0]);let t=n[e][1].length;if(t)for(let r=0;r<t;r++)this._propagateEventTargets.unshift(n[e][1][r])}let s=this._propagateEventTargets.length,c=!1;for(let n=0;n<s&&(t.atlasTarget=this._propagateEventTargets[n],t.atlasWorld=this,c=this._propagateEventTargets[n].dispatchEvent(e,t)||c,!a);n++);return c&&this.triggerRepaint(),this._propagateEventTargets}appendChild(e){let t=this.appendWorldObject(e);this.renderOrder.push(t/5)}removeChild(e){let t=this.objects.indexOf(e);if(t===-1){for(let t of this.objects)if(t&&t.id===e.id){this.removeChild(t);return}return}this.objects[t]=null,this.renderOrder=this.renderOrder.filter(e=>e!==t),this.points[t*5]=0;for(let t of this.zones){let n=t.objects.indexOf(e);n!==-1&&(t.objects.splice(n,1),t.recalculateBounds())}this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(e,t){let n=this.objects.indexOf(t);if(n===-1)return;let r=this.appendWorldObject(e);this.renderOrder.splice(n-1,0,r/5)}hideInstance(){}asWorldObject(){return null}addZone(e){this.zones.push(e)}removeZone(e){let t=this.zones.indexOf(e);if(t!==-1&&(this.zones.splice(t,1),this.selectedZone!==void 0)){if(this.selectedZone===t){this.selectedZone=void 0,this.trigger(`zone-changed`);return}this.selectedZone>t&&--this.selectedZone}}getZoneById(e){for(let t of this.zones)if(t.id===e)return t}hasZone(e){return this.getZoneById(e)!==void 0}selectZone(e){if(typeof e==`string`){let t=this.getZoneById(e);t&&(this.selectedZone=this.zones.indexOf(t),this.zoneVisibilityFade={zoneId:t.id,startedAt:performance.now()},this.trigger(`zone-changed`))}else this.zones[e]&&(this.selectedZone=e,this.zoneVisibilityFade={zoneId:this.zones[e].id,startedAt:performance.now()},this.trigger(`zone-changed`))}deselectZone(){this.selectedZone=void 0,this.zoneVisibilityFade=void 0,this.trigger(`zone-changed`)}getActiveZone(){if(this.selectedZone!==void 0)return this.zones[this.selectedZone]}hasActiveZone(){return this.selectedZone!==void 0}checkResizeInternalBuffer(){if((0,l.dnaLength)(this.points)===this.objects.length){let e=this.points,t=(0,l.dna)(this.points.length*2);t.set(e,0),this.points=t}}appendWorldObject(e){this.checkResizeInternalBuffer();let t=this.objects.length*5,n=e.points;return e.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),e.points[1]=n[1],e.points[2]=n[2],e.points[3]=n[3],e.points[4]=n[4],this.objects.push(e),this.filteredPointsBuffer=(0,l.dna)(this.objects.length*5),this.needsRecalculate=!0,this.triggerRepaint(),t}recalculateWorldSize(){let e=!1;if(this.needsRecalculate){let t=new Int32Array(this.objects.length),n=new Int32Array(this.objects.length),r=this.renderOrder.length;for(let e=0;e<r;e++){let r=this.renderOrder[e];this.objects[r]&&(t[e]=this.points[r*5+3],n[e]=this.points[r*5+4])}let i=Math.max(...t);i!==this._width&&(this._width=i,e=!0);let a=Math.max(...n);a!==this._height&&(this._height=a,e=!0),e&&this.trigger(`recalculate-world-size`,{width:i,height:a}),this.needsRecalculate=!1}return e}addObjectAt(e,t){t.width&&!t.height?t.height=t.width/e.width*e.height:t.height&&!t.width&&(t.width=t.height/e.height*e.width),(!t||!t.width||!t.height)&&(t.width=e.width,t.height=e.height);let{width:n,x:r,y:i}=t,a=n/e.width;this.checkResizeInternalBuffer(),this.points.set(l.DnaFactory.singleBox(e.width,e.height,0,0),this.objects.length*5);let o=new ct(e);return o.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(o),this.scaleWorldObject(this.objects.length-1,a),this.translateWorldObject(this.objects.length-1,r,i),this.filteredPointsBuffer=(0,l.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,o}scaleWorldObject(e,t){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.scaleAtOrigin)(t,this.points[e*5+1],this.points[e*5+2]));let n=this.objects[e];n&&(n.atScale(t),this.triggerRepaint())}translateWorldObject(e,t,n){(0,l.mutate)(this.points.subarray(e*5,e*5+5),(0,l.translate)(t,n));let r=this.objects[e];r&&(r.translate(t,n),this.triggerRepaint())}resize(e,t){return this._width=e,this._height=t,this.aspectRatio=e/t,this.triggerRepaint(),this}getObjects(){return this.objects}getPoints(){return this.points}getPointsFromViewer(e,t){let n=l.DnaFactory.singleBox(e.width,e.height,e.x,e.y);return this.getPointsAt(n,t,e.scale)}addLayoutSubscriber(e){return this.subscriptions.push(e),()=>{this.subscriptions.splice(this.subscriptions.indexOf(e),1)}}getScheduledUpdates(e,t){let n=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),r=this.objects.length;this._updatedList=[];for(let i=0;i<r;i++)if(n[i*5]!==0){if(!this.objects[i])continue;this._updatedList.push(...this.objects[i].getScheduledUpdates(e,t))}return this._updatedList}isZoneOutsideVisibilityFading(e){return!!(this.zoneVisibilityFade&&this.zoneVisibilityFade.zoneId===e.id&&performance.now()-this.zoneVisibilityFade.startedAt<this.zoneVisibilityFadeDurationMs)}getZoneOutsideVisibility(e){let t=this.zoneOutsideOpacity;if(!this.zoneVisibilityFade||this.zoneVisibilityFade.zoneId!==e.id)return t;let n=performance.now()-this.zoneVisibilityFade.startedAt;return n>=this.zoneVisibilityFadeDurationMs?t:1-Math.max(0,Math.min(1,n/this.zoneVisibilityFadeDurationMs))*(1-t)}getObjectsAt(e,t=!1,n=!1){let r=this.getActiveZone(),i=r&&n?this.getZoneOutsideVisibility(r)>0:!1,a=(0,l.hidePointsOutsideRegion)(this.points,e,this.filteredPointsBuffer),o=this.renderOrder.length,s=[];for(let n=0;n<o;n++){let o=this.renderOrder[n];if(a[o*5]!==0){let n=this.objects[o],a=!r||r.objects.indexOf(n)!==-1;if(!n||!a&&!i)continue;if(n.type!==`world-object`){s.push([n,[n]]);continue}t?s.push([n,n.getObjectsAt(e,t)]):s.push([n,this.emptyPaintables])}}return s}getPointsAt(e,t,n=1){let r=this.getActiveZone(),i=r?this.getZoneOutsideVisibility(r):0,a=this.getObjectsAt(e,!1,!0),o=(0,l.compose)((0,l.scale)(n),(0,l.translate)(-e[1],-e[2]),this.translationBuffer),s=t?(0,l.compose)(t,o,this.aggregateBuffer):o,c=a.length,u=[];for(let t=0;t<c;t++)if(a[t]){let o=a[t][0],c=o.getAllPointsAt(e,s,n),l=!r||r.objects.indexOf(o)!==-1?1:i;for(let e=0;e<c.length;e++)c[e][0].__zoneVisibilityAlpha=l;u.push(...c)}return r&&this.isZoneOutsideVisibilityFading(r)&&this.triggerRepaint(),u}flushSubscriptions(){if(this.triggerQueue.length){this._alreadyFlushed=[];let e=this.triggerQueue.length;for(let t=0;t<e;t++){if(this._alreadyFlushed.indexOf(this.triggerQueue[t][0])!==-1)continue;this.triggerQueue[t][1]===void 0&&this._alreadyFlushed.push(this.triggerQueue[t][0]);let e=this.subscriptions.length;for(let n=0;n<e;n++)this.subscriptions[n].apply(null,this.triggerQueue[t])}this.triggerQueue=[]}}trigger(e,t){this.emitDebug({type:`trigger`,at:performance.now(),event:e,data:t}),this.triggerQueue.push([e,t])}triggerEventActivation(){this.trigger(`event-activation`)}triggerRepaint(){this.trigger(`repaint`)}gotoRegion(e){this.trigger(`goto-region`,e)}goHome(e=!1,t){this.trigger(`go-home`,{immediate:e,paddingPx:t})}zoomTo(e,t,n){this.trigger(`zoom-to`,{point:t,factor:e,stream:n})}zoomIn(e){this.trigger(`zoom-to`,{point:e,factor:.5})}zoomOut(e){this.trigger(`zoom-to`,{point:e,factor:2})}constraintBounds(e){this.trigger(`constrain-bounds`,{immediate:e})}hasPendingAnimation(){return!!(this.zoneVisibilityFade&&performance.now()-this.zoneVisibilityFade.startedAt<this.zoneVisibilityFadeDurationMs)}addDebugSubscriber(e){return this.debugSubscribers.add(e),()=>{this.removeDebugSubscriber(e)}}removeDebugSubscriber(e){this.debugSubscribers.delete(e)}emitDebug(e){if(this.debugSubscribers.size!==0)for(let t of this.debugSubscribers)t(e)}},ut=class{constructor(){E(this,`autoWidth`,!1),E(this,`autoHeight`,!0),E(this,`width`,void 0),E(this,`height`,void 0),E(this,`world`,void 0),E(this,`content`,[]),E(this,`viewingDirection`,`left-to-right`),E(this,`rows`,void 0),E(this,`columns`,4),E(this,`spacing`,20),E(this,`reversed`,!1),E(this,`padding`,20),this.world=lt.withProps({width:0,height:0,viewingDirection:`left-to-right`}),this.width=0,this.height=0}setViewingDirection(e){this.viewingDirection=e}addContent(e){this.content.push(...e.map(e=>this.world.addObjectAt(e,{width:0,height:0,x:0,y:0})))}setWidth(e){this.width=e}setHeight(e){this.height=e}setSpacing(e){this.spacing=e}setPadding(e){this.padding=e}setRows(e){this.autoWidth=!0,this.rows=e}setColumns(e){this.autoHeight=!0,this.columns=e}recalculate(){if(this.height===0&&this.width===0||this.rows===0||this.columns===0)return;if(this.autoHeight&&!this.width)throw Error(`Cannot set auto height without setting a width`);if(this.autoWidth&&!this.height)throw Error(`Cannot set auto width without setting a height`);(this.viewingDirection===`left-to-right`||this.viewingDirection===`top-to-bottom`)&&this.reversed&&(this.reversed=!1,this.content.reverse()),(this.viewingDirection===`right-to-left`||this.viewingDirection===`bottom-to-top`)&&!this.reversed&&(this.reversed=!0,this.content.reverse());let e=this.content.length,{columns:t,rows:n}=(()=>{if(this.autoWidth&&this.rows){let t=e>this.rows?this.rows:e;return{columns:Math.ceil(e/t),rows:t}}if(this.autoHeight&&this.columns){let t=e>this.columns?this.columns:e;return{columns:t,rows:Math.ceil(e/t)}}throw Error(`Something went wrong.`)})(),r=this.autoWidth?-1:this.width-this.padding*2,i=this.autoWidth?-1:(r-this.spacing*(t-1))/t;if(this.autoHeight&&!this.autoWidth){let r=0,a=this.padding;for(let o=0;o<n&&r!==e;o++){let n=0,o=[];for(let a=0;a<t;a++){let t=this.reversed?e-r:r;if(r===e)break;let a=this.content[t],s=a.width,c=i/(a.width/a.height);o.push([r,i,c,i/s]),c>n&&(n=c),r++}for(let r=0;r<t&&o[r];r++){let t=this.world.getPoints(),i=o[r][0],s=o[r][1],c=o[r][2],l=o[r][3],u=this.padding+r*(this.spacing+s),d=a+(n-c)/2,f=this.reversed?e-i:i,p=t[f*5+1],m=t[f*5+2];this.world.scaleWorldObject(i,l),(p!==u||m!==d)&&this.world.translateWorldObject(f,u-p,d-m)}a+=n+this.spacing}this.height=a+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};function dt(e){return e.id||e[`@id`]}function ft(){return typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}function pt(){let e=ft();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 mt={};function ht(){return mt.helper||(mt.vault=pt(),mt.loader=new d.ImageServiceLoader,mt.helper=(0,f.createThumbnailHelper)(mt.vault,{imageServiceLoader:mt.loader})),mt}async function gt(e,t,n){let{loader:r}=ht(),i=await r.loadService({id:e,width:t,height:n});return{id:dt(i),width:t,height:n,imageService:i,thumbnail:void 0}}async function _t(e,t=512){let{vault:n,loader:r,helper:i}=ht(),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 gt(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 vt(e){let{vault:t}=ht(),n=[];for(let r of e.items){let e=t.get(r);n.push(...await _t(e))}return n}async function yt(e){try{let{vault:t}=ht(),n=await t.loadManifest(e);return n?vt(n):[]}catch(e){return console.log(`ERR`,e),[]}}var bt=class{constructor(e,t={}){this.adapter=e,this.hooks=t,E(this,`controlPoints`,[]),E(this,`transformationType`,`projective`)}getState(){return{controlPoints:[...this.controlPoints],transformationType:this.transformationType}}setControlPoints(e){this.controlPoints=[...e],this.adapter.setMapGcps(this.controlPoints),this.hooks.onControlPointsChange&&this.hooks.onControlPointsChange(this.controlPoints),this.update(`gcps`)}setTransformationType(e){this.transformationType=e,this.adapter.setMapTransformationType(e),this.hooks.onTransformationTypeChange&&this.hooks.onTransformationTypeChange(e),this.update(`transformation`)}update(e=`manual`){this.adapter.update(e),this.hooks.onUpdate&&this.hooks.onUpdate(e)}};function xt(e,t){return new bt(e,t)}const St={background:`rgba(15, 23, 42, 0.7)`,objectFill:`rgba(56, 189, 248, 0.22)`,objectStroke:`rgba(56, 189, 248, 0.62)`,viewportFill:`rgba(251, 191, 36, 0.22)`,viewportStroke:`rgba(250, 204, 21, 1)`,viewportLineWidth:2};function Ct(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return Math.floor(e)}function wt(e,t){if(!e||t<=1)return null;let n=Ct(e.total),r=Ct(e.before),i=Ct(e.after),a=n===void 0?r!==void 0||i!==void 0?Math.max(1,Math.max(0,r||0)+Math.max(0,i||0)+1):9:Math.max(1,n),o=r===void 0?void 0:Math.max(0,r),s=i===void 0?void 0:Math.max(0,i);o===void 0&&s===void 0?(o=Math.floor((a-1)/2),s=a-o-1):o===void 0?o=Math.max(0,a-(s||0)-1):s===void 0&&(s=Math.max(0,a-o-1));let c=o+s+1;return c!==a&&(a=c),a=Math.max(1,Math.min(t,a)),o=Math.min(o,a-1),s=a-o-1,{total:a,before:o,after:s}}function Tt(e){let t=[];for(let n=0;n<e.zones.length;n++){let r=e.zones[n];r.recalculateBounds(),r.points[0]!==0&&t.push({zone:r,minX:r.points[1],minY:r.points[2],maxX:r.points[3],maxY:r.points[4]})}return t.sort((e,t)=>e.minY===t.minY?e.minX===t.minX?(e.zone?.id||``).localeCompare(t.zone?.id||``):e.minX-t.minX:e.minY-t.minY),t}function Et(e,t){let n=wt(t.zoneWindow,e.zones.length);if(!n)return null;let r=Tt(e);if(r.length<=n.total)return r;let i=Ot(r,t.target)-n.before,a=i+n.total-1;return i<0&&(i=0,a=n.total-1),a>=r.length&&(a=r.length-1,i=Math.max(0,a-n.total+1)),r.slice(i,a+1)}function Dt(e){if(!e)return null;if(Array.isArray(e)||ArrayBuffer.isView(e)){let t=e;return t[0]===0?null:{x:(t[1]+t[3])/2,y:(t[2]+t[4])/2}}return{x:e.x+e.width/2,y:e.y+e.height/2}}function Ot(e,t){if(e.length===0)return 0;let n=Dt(t);if(!n)return 0;for(let t=0;t<e.length;t++){let r=e[t];if(n.x>=r.minX&&n.x<=r.maxX&&n.y>=r.minY&&n.y<=r.maxY)return t}let r=0,i=1/0;for(let t=0;t<e.length;t++){let a=e[t],o=(a.minY+a.maxY)/2,s=Math.abs(n.y-o);s<i&&(i=s,r=t)}return r}function kt(e){if(e.length===0)return null;let t=e[0].minX,n=e[0].minY,r=e[0].maxX,i=e[0].maxY;for(let a=1;a<e.length;a++){let o=e[a];t=Math.min(t,o.minX),n=Math.min(n,o.minY),r=Math.max(r,o.maxX),i=Math.max(i,o.maxY)}return{x:t,y:n,width:Math.max(1,r-t),height:Math.max(1,i-n)}}function At(e,t,n,r,i=0,a=0){let o=Math.max(1,e),s=Math.max(1,t),c=Math.min(n/o,r/s),l=o*c,u=s*c;return{scale:c,offsetX:(n-l)/2,offsetY:(r-u)/2,worldX:i,worldY:a,worldWidth:o,worldHeight:s}}function jt(e,t={}){let n=e.getActiveZone();if(n&&(n.recalculateBounds(),n.points[0]!==0))return{x:n.points[1],y:n.points[2],width:Math.max(1,n.points[3]-n.points[1]),height:Math.max(1,n.points[4]-n.points[2])};let r=Et(e,t);if(r&&r.length>0){let e=kt(r);if(e)return e}return{x:0,y:0,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function Mt(e,t={}){let n=e.getActiveZone();if(n)return n.recalculateBounds(),n.points[0]===0?new Set:new Set([n.id]);let r=Et(e,t);if(!r)return null;let i=new Set;for(let e of r)i.add(e.zone.id);return i}function Nt(e,t,n){if(!e.scale||!Number.isFinite(e.scale))return{x:e.worldX,y:e.worldY};let r=e.worldX+(t-e.offsetX)/e.scale,i=e.worldY+(n-e.offsetY)/e.scale;return{x:Math.max(e.worldX,Math.min(e.worldX+e.worldWidth,r)),y:Math.max(e.worldY,Math.min(e.worldY+e.worldHeight,i))}}var Pt=class extends ot{constructor(e,t={}){super(e),E(this,`style`,void 0),E(this,`maxRects`,void 0),E(this,`minVisibleRectSize`,void 0),E(this,`drawFallbackBoxes`,void 0),E(this,`zoneWindow`,void 0),E(this,`sharedCanvasRenderer`,void 0),E(this,`onRequestRender`,void 0),E(this,`onDebugEvent`,void 0),E(this,`baseCanvas`,void 0),E(this,`baseContext`,void 0),E(this,`worldTarget`,l.DnaFactory.singleBox(1,1,0,0)),E(this,`previewImageCache`,new Map),E(this,`worldLayerDirty`,!0),E(this,`lastWorldWidth`,0),E(this,`lastWorldHeight`,0),E(this,`lastTargetX`,NaN),E(this,`lastTargetY`,NaN),E(this,`lastTargetX2`,NaN),E(this,`lastTargetY2`,NaN),E(this,`lastRegionX`,NaN),E(this,`lastRegionY`,NaN),E(this,`lastRegionWidth`,NaN),E(this,`lastRegionHeight`,NaN),E(this,`worldLayerInvalidationVersion`,0),E(this,`sharedCanvasResourcesPending`,!1),this.style={...St,...t.style||{}},this.maxRects=Math.max(100,t.maxRects||5e3),this.minVisibleRectSize=Math.max(1,t.minVisibleRectSize||1),this.drawFallbackBoxes=t.drawFallbackBoxes!==!1,this.zoneWindow=t.zoneWindow,this.sharedCanvasRenderer=t.sharedCanvasRenderer,this.onRequestRender=t.onRequestRender,this.onDebugEvent=t.onDebugEvent,this.context.globalAlpha=1,this.context.imageSmoothingEnabled=!1,this.baseCanvas=document.createElement(`canvas`),this.baseContext=this.baseCanvas.getContext(`2d`),this.baseContext.imageSmoothingEnabled=!0,this.syncBaseLayerCanvas()}emitDebugEvent(e){this.onDebugEvent&&this.onDebugEvent(e)}requestRender(e){this.onRequestRender&&(this.emitDebugEvent({type:`render-request-forwarded`,reason:e}),this.onRequestRender())}invalidateWorldLayer(e=`manual`){this.worldLayerInvalidationVersion++,this.worldLayerDirty=!0,this.renderNextFrame=!0,this.emitDebugEvent({type:`world-layer-invalidated`,reason:e}),this.requestRender(e)}resize(){super.resize(),this.syncBaseLayerCanvas(),this.invalidateWorldLayer(`resize`)}beforeFrame(e){(e.width!==this.lastWorldWidth||e.height!==this.lastWorldHeight)&&(this.lastWorldWidth=e.width,this.lastWorldHeight=e.height,this.invalidateWorldLayer(`world-size-changed`))}paint(){this.renderNextFrame=!0}pendingUpdate(){return this.renderNextFrame||this.worldLayerDirty}afterFrame(e,t,n){let r=this.worldLayerInvalidationVersion;if(this.canvas.width<=0||this.canvas.height<=0){this.emitDebugEvent({type:`frame-skipped-zero-size-canvas`,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,baseCanvasWidth:this.baseCanvas.width,baseCanvasHeight:this.baseCanvas.height}),this.renderNextFrame=!0;return}let i=jt(e,{target:n,zoneWindow:this.zoneWindow});this.hasRegionChanged(i)&&(this.worldLayerDirty=!0);let a=this.hasViewportChanged(n);if(this.renderNextFrame||this.worldLayerDirty||a){if((this.baseCanvas.width!==this.canvas.width||this.baseCanvas.height!==this.canvas.height)&&(this.syncBaseLayerCanvas(),this.worldLayerDirty=!0),this.baseCanvas.width<=0||this.baseCanvas.height<=0){this.emitDebugEvent({type:`frame-skipped-zero-size-canvas`,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,baseCanvasWidth:this.baseCanvas.width,baseCanvasHeight:this.baseCanvas.height}),this.renderNextFrame=!0;return}if(this.worldLayerDirty){let t=this.worldLayerInvalidationVersion;this.sharedCanvasResourcesPending=!1,this.emitDebugEvent({type:`world-layer-render-start`,region:i});try{this.renderWorldLayer(e,i)}finally{this.emitDebugEvent({type:`world-layer-render-end`,region:i})}this.worldLayerDirty=this.sharedCanvasResourcesPending||t!==this.worldLayerInvalidationVersion}this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.drawImage(this.baseCanvas,0,0),this.renderViewportBox(n,i),this.lastTargetX=n[1],this.lastTargetY=n[2],this.lastTargetX2=n[3],this.lastTargetY2=n[4],this.lastRegionX=i.x,this.lastRegionY=i.y,this.lastRegionWidth=i.width,this.lastRegionHeight=i.height,this.renderNextFrame=this.sharedCanvasResourcesPending||r!==this.worldLayerInvalidationVersion}}hasViewportChanged(e){return this.lastTargetX!==e[1]||this.lastTargetY!==e[2]||this.lastTargetX2!==e[3]||this.lastTargetY2!==e[4]}hasRegionChanged(e){return this.lastRegionX!==e.x||this.lastRegionY!==e.y||this.lastRegionWidth!==e.width||this.lastRegionHeight!==e.height}syncBaseLayerCanvas(){this.baseCanvas.width=this.canvas.width,this.baseCanvas.height=this.canvas.height}shouldClipImagePaintToBounds(e){return e instanceof q||e instanceof J?!!e.__parent?.renderOptions?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}getLayerClipBounds(e,t,n){if(!this.shouldClipImagePaintToBounds(e))return;let r=e.__parent,i=r?.crop||r?.points;if(!i)return;let a=t?(0,l.transform)(i,t):i,o=this.getBoundsFromPoints(a);if(o)return{x:o.x+n.offsetX,y:o.y+n.offsetY,width:o.width,height:o.height}}renderWorldLayer(e,t){let n=this.baseContext;n.clearRect(0,0,this.baseCanvas.width,this.baseCanvas.height),n.fillStyle=this.style.background,n.fillRect(0,0,this.baseCanvas.width,this.baseCanvas.height);let r=e.getActiveZone(),i=At(t.width,t.height,this.baseCanvas.width,this.baseCanvas.height,t.x,t.y);this.worldTarget[1]=t.x,this.worldTarget[2]=t.y,this.worldTarget[3]=t.x+t.width,this.worldTarget[4]=t.y+t.height;let a=e.getPointsAt(this.worldTarget,this.aggregate,i.scale),o=0;for(let e=0;e<a.length&&!(o>=this.maxRects);e++){let t=a[e][0],s=a[e][1],c=a[e][2],u=c?(0,l.transform)(s,c):s,d=u.length/5,f=this.getLayerClipBounds(t,c,i);f&&(n.save(),n.beginPath(),n.rect(f.x,f.y,f.width,f.height),n.clip());try{for(let e=0;e<d&&!(o>=this.maxRects);e++){let a=e*5;if(u[a]===0)continue;if(r){let e=t?.__owner?.value;if(!e||r.objects.indexOf(e)===-1)continue}let s=u[a+1]+i.offsetX,c=u[a+2]+i.offsetY,l=Math.max(this.minVisibleRectSize,u[a+3]-u[a+1]),d=Math.max(this.minVisibleRectSize,u[a+4]-u[a+2]);t instanceof pe?this.renderGeometry(n,t,s,c,i.scale):t instanceof le?this.renderBox(n,t,s,c,l,d,i.scale):this.renderImagePaint(n,t,e,s,c,l,d)||this.drawFallbackBoxes&&this.renderFallbackBox(n,s,c,l,d),o++}}finally{f&&n.restore()}}}renderFallbackBox(e,t,n,r,i){let a=Math.round(t),o=Math.round(n),s=Math.max(1,Math.round(r)),c=Math.max(1,Math.round(i));e.fillStyle=this.style.objectFill,e.strokeStyle=this.style.objectStroke,e.lineWidth=1,e.fillRect(a,o,s,c),s>2&&c>2&&e.strokeRect(a+.5,o+.5,s-1,c-1)}renderImagePaint(e,t,n,r,i,a,o){if(a<=0||o<=0)return!1;let s;if(t instanceof Le)s=t.getTexture()?.source;else if(t instanceof q||t instanceof J){let c=this.renderSharedCanvasImage(e,t,n,r,i,a,o);if(c!==null)return c;if(typeof t.getImageUrl!=`function`)return!1;let l=t.getImageUrl(n);s=this.getLoadedPreviewImage(l)}if(!s)return!1;let c=Math.max(1,Math.round(a)),l=Math.max(1,Math.round(o));return e.drawImage(s,Math.round(r),Math.round(i),c,l),!0}ensureSharedCanvasImageBuffer(e){return e.__host?.canvas||this.sharedCanvasRenderer?.createImageHost?.(e),e.__host||(e.__host={}),e.__host.canvas||(e.__host.canvas={canvases:[],tiles:{}}),e.__host.canvas.canvases||(e.__host.canvas.canvases=[]),e.__host.canvas.tiles||(e.__host.canvas.tiles={}),e.__host.canvas}drawSharedCanvasTile(e,t,n,r,i,a,o,s){let c=Math.max(1,Math.round(o)),l=Math.max(1,Math.round(s));if(t.crop&&t.cropData){let o=n*5;if(!t.crop[o])return!1;let s=t.crop[o+1]/t.display.scale-t.display.points[o+1]+t.cropData.x/t.display.scale,u=t.crop[o+2]/t.display.scale-t.display.points[o+2]+t.cropData.y/t.display.scale,d=1+(t.crop[o+3]-t.crop[o+1])/t.display.scale,f=1+(t.crop[o+4]-t.crop[o+2])/t.display.scale;return e.drawImage(r,s,u,d,f,Math.round(i),Math.round(a),c,l),!0}let u=n*5,d=t.display.points[u+3]-t.display.points[u+1],f=t.display.points[u+4]-t.display.points[u+2];return e.drawImage(r,0,0,d,f,Math.round(i),Math.round(a),c,l),!0}renderSharedCanvasImage(e,t,n,r,i,a,o){let s=this.sharedCanvasRenderer;if(!s?.hostCache)return null;let c=this.ensureSharedCanvasImageBuffer(t),l=c.canvases?.[n],u=!!l&&!!s.invalidated?.includes(l),d=l&&!u?s.hostCache.get(l):void 0;if(d)return this.drawSharedCanvasTile(e,t,n,d,r,i,a,o);let f=c.tiles?.[n],p=Math.hypot(r+a/2-this.baseCanvas.width/2,i+o/2-this.baseCanvas.height/2);return(s.schedulePaintToCanvas?.(c,t,n,p,!1)||f?.state===`queued`||f?.state===`loading`||f?.state===`decoded`)&&(this.sharedCanvasResourcesPending=!0),!1}getLoadedPreviewImage(e){let t=this.previewImageCache.get(e);if(t){if(t.status===`loading`&&t.image.complete){if(t.image.naturalWidth>0&&t.image.naturalHeight>0)return t.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!0}),this.invalidateWorldLayer(`preview-image-loaded`),t.image;t.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e});return}return t.status===`loaded`?t.image:void 0}let n=new Image,r={image:n,status:`loading`};return this.previewImageCache.set(e,r),this.emitDebugEvent({type:`preview-image-requested`,imageUrl:e}),n.onload=()=>{r.status===`loading`&&(r.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!1}),this.invalidateWorldLayer(`preview-image-loaded`))},n.onerror=()=>{r.status===`loading`&&(r.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e}))},n.src=e,n.complete&&(n.naturalWidth>0&&n.naturalHeight>0?(r.status=`loaded`,this.emitDebugEvent({type:`preview-image-loaded`,imageUrl:e,cached:!0}),this.invalidateWorldLayer(`preview-image-loaded`)):(r.status=`error`,this.emitDebugEvent({type:`preview-image-error`,imageUrl:e}))),r.status===`loaded`?n:void 0}renderBox(e,t,n,r,i,a,o){let s=t.props?.style;if(!s){this.renderFallbackBox(e,n,r,i,a);return}let c=s.backgroundColor||this.style.objectFill,l=s.borderColor||this.style.objectStroke,u=s.borderWidth?parseInt(s.borderWidth,10):0,d=Math.max(0,u*(t.props?.relativeStyle?1:o));e.globalAlpha=typeof s.opacity==`number`?s.opacity:1,e.fillStyle=c,e.fillRect(Math.round(n),Math.round(r),Math.max(1,Math.round(i)),Math.max(1,Math.round(a))),d>0&&(e.strokeStyle=l,e.lineWidth=Math.max(1,d),e.strokeRect(Math.round(n)+e.lineWidth/2,Math.round(r)+e.lineWidth/2,Math.max(1,Math.round(i))-e.lineWidth,Math.max(1,Math.round(a))-e.lineWidth)),e.globalAlpha=1}renderGeometry(e,t,n,r,i){let a=t.shape;if(a.type!==`polygon`||a.points.length===0)return;let o=t.props?.style||{},s=o.backgroundColor||this.style.objectFill,c=o.borderColor||this.style.objectStroke,l=o.borderWidth?parseInt(o.borderWidth,10):0,u=Math.max(0,l*(t.props?.relativeStyle?1:i));e.globalAlpha=typeof o.opacity==`number`?o.opacity:1,e.beginPath();for(let t=0;t<a.points.length;t++){let o=n+a.points[t][0]*i,s=r+a.points[t][1]*i;t===0?e.moveTo(o,s):e.lineTo(o,s)}a.open||(e.closePath(),e.fillStyle=s,e.fill()),(u>0||a.open)&&(e.strokeStyle=c,e.lineWidth=Math.max(1,u||1),e.stroke()),e.globalAlpha=1}renderViewportBox(e,t){let n=At(t.width,t.height,this.canvas.width,this.canvas.height,t.x,t.y),r=(e[1]-n.worldX)*n.scale+n.offsetX,i=(e[2]-n.worldY)*n.scale+n.offsetY,a=(e[3]-e[1])*n.scale,o=(e[4]-e[2])*n.scale,s=Math.round(r),c=Math.round(i),l=Math.max(1,Math.round(a)),u=Math.max(1,Math.round(o));this.context.fillStyle=this.style.viewportFill,this.context.fillRect(s,c,l,u),this.context.strokeStyle=this.style.viewportStroke,this.context.lineWidth=Math.max(1,this.style.viewportLineWidth),this.context.strokeRect(s+.5,c+.5,Math.max(1,l-1),Math.max(1,u-1))}},Ft=class extends G{constructor(){super(),E(this,`type`,`spacial-content`),E(this,`id`,void 0),E(this,`points`,void 0),E(this,`color`,`#000`),E(this,`backgroundColor`,void 0),E(this,`hovering`,void 0),E(this,`pressing`,void 0),E(this,`text`,``),E(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:(0,l.dna)(5)}),E(this,`className`,void 0),E(this,`html`,void 0),E(this,`interactive`,!1),E(this,`props`,{font:`18px Arial, sans-serif`,lineHeight:1,textAlign:`left`,verticalAlign:`top`,paddingX:0,paddingY:0,fitParent:!1,lineBreak:`auto`,strokeText:!1,sizeToFill:!1,maxFontSizeToFill:void 0,allowNewLine:!0,justifyLines:!1,renderHDPI:!1,textDecoration:`none`,interactive:!1,relativeSize:!1}),this.id=``,this.points=(0,l.dna)(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps({id:e,target:t,text:n,color:r,backgroundColor:i,fontSize:a=18,interactive:o,fontFamily:s=`Arial, sans-serif`,...c}){c.font=`${a}px ${s}`,this.interactive=o||!1,n!==void 0&&(this.text=n||``),r&&(this.color=r),i&&(this.backgroundColor=i),e&&(this.id=e),t&&(this.points=l.DnaFactory.singleBox(t.width,t.height,t.x,t.y),this.display.points=this.points,this.display.width=t.width,this.display.height=t.height),this.props={...this.props,...c},this.__revision++}};function It(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 Lt=class{constructor(e){E(this,`$element`,void 0),E(this,`stylesheetClasses`,void 0),E(this,`activeStylesheetClasses`,void 0),E(this,`sheetsDidUpdate`,void 0),E(this,`sheetPrefix`,void 0),E(this,`stylesheetEntries`,void 0),this.sheetPrefix=e?.sheetPrefix||`a-`,this.$element=document.createElement(`style`),this.stylesheetClasses=[],this.activeStylesheetClasses=[],this.sheetsDidUpdate=!1,this.stylesheetEntries={}}getElement(){return this.$element}addStylesheet(e){let t=e.replace(/\s\s+/g,` `).replace(/: /g,`:`).replace(/; /g,`;`).trim(),n=this.sheetPrefix+It(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+It(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])}},Rt=class{constructor(e,t){E(this,`htmlContainer`,void 0),E(this,`visible`,[]),E(this,`previousVisible`,[]),E(this,`htmlIds`,[]),E(this,`firstMeaningfulPaint`,!1),E(this,`rendererPosition`,void 0),E(this,`stylesheet`,void 0),E(this,`options`,void 0),E(this,`paintTx`,1),E(this,`zIndex`,0),E(this,`classes`,void 0),this.htmlContainer=e,this.htmlContainer.innerHTML=``,this.rendererPosition=this.htmlContainer.getBoundingClientRect(),this.options={triggerResize:()=>{},box:!1,text:!1,sheetPrefix:``,inlineStyles:!1,background:``,...t||{}},this.stylesheet=new Lt({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
2
2
  background: ${this.options.background};
3
3
  `)),this.classes={hostClassName:this.stylesheet.addStylesheet(`
4
4
  position: absolute;
5
5
  transform-origin: 0px 0px;
6
- `),interactive:this.stylesheet.addStylesheet(`pointer-events: all`),nonInteractive:this.stylesheet.addStylesheet(`pointer-events: none`)},this.stylesheet.updateSheet()}createHtmlHost(e){if(this.htmlContainer&&(e instanceof Nt&&this.options.text||this.options.box||e.props.className||e.props.html||e.props.href)){let t=document.createElement(e.props.href?`a`:`div`);if(e.props.href){t.style.display=`block`,t.href=e.props.href;let n=e.props.hrefTarget||`_blank`;t.target=n,n!==`_self`&&(t.rel=`noopener noreferrer`)}t.title=e.props.title||``,this.options.inlineStyles?(t.style.display=`block`,t.style.position=`absolute`,t.style.overflow=`hidden`,t.style.transformOrigin=`0px 0px`):t.classList.add(this.classes.hostClassName),e.__host={element:t,revision:null,relative:!1},this.updateHtmlHost(e,e.width,e.height),e.__onCreate&&e.__onCreate()}}triggerResize(){this.options.triggerResize()}updateHtmlHost(e,t,n){if(e.__revision!==e.__host.revision){let r=e.__host.element,i=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?r.style.pointerEvents=`all`:i.push(this.classes.interactive):this.options.inlineStyles?r.style.pointerEvents=`none`:i.push(this.classes.nonInteractive),e.props.href){r.style.display=`block`,r.href=e.props.href;let t=e.props.hrefTarget||`_blank`;r.target=t,t===`_self`?r.rel=``:r.rel=`noopener noreferrer`}else r.href&&r.removeAttribute(`href`);if(e.props.title&&(r.title=e.props.title||``),e.props.className&&(i.push(e.props.className),e.hovering&&i.push(`${e.props.className}--hover`),e.pressing&&i.push(`${e.props.className}--active`)),e.props.relativeStyle?(r.style.width=`${t||e.width}px`,r.style.height=`${n||e.height}px`):(r.style.width=`${e.width}px`,r.style.height=`${e.height}px`),e.props.style){Object.assign(r.style,e.props.style||{},e.hovering&&e.props.hoverStyles||{},e.pressing&&e.props.pressStyles||{});return}if(this.options.text&&e instanceof Nt){e.text&&(r.innerText=e.text),e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor),e.color&&(r.style.color=e.color),e.props.font&&(r.style.font=e.props.font),e.props.textAlign&&(r.style.textAlign=e.props.textAlign),e.__host.revision=e.__revision;let t=i.join(` `);r.className=t,r.part=t}e instanceof le&&(this.options.box||e.props.className||e.props.html)&&(e.props.backgroundColor&&(r.style.backgroundColor=e.props.backgroundColor),e.props.border!==r.style.border&&(r.style.border=e.props.border));let a=i.join(` `);r.className=a,r.part=a}}afterFrame(e,t,n){this.stylesheet.updateSheet();for(let e of this.previousVisible)this.visible.indexOf(e)===-1&&this.htmlContainer&&e.__id&&this.htmlIds.indexOf(e.__id)!==-1&&this.htmlContainer.removeChild(e.__host.element);this.previousVisible=this.visible}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.paintTx++,this.zIndex=0,this.visible=[]}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){let n=this.rendererPosition.width/e,r=this.rendererPosition.height/t;return n<r?r:n}getViewportBounds(e,t,n){return null}isReady(){return!0}paint(e,t,n,r,i,a){if(this.zIndex++,(this.options.text&&e instanceof Nt||e instanceof le&&(this.options.box||e.props.className||e.props.html))&&e.__host&&e.__host.tx!==this.paintTx&&(this.visible.push(e),e.__host.tx=this.paintTx,this.htmlContainer)){this.updateHtmlHost(e,i,a);let t=i/e.width,o=e.__host.element;o.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px)`:o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px) scale(${t})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(o),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof Nt||e instanceof le)&&this.createHtmlHost(e)}resize(e,t){e!==void 0&&t!==void 0&&(this.htmlContainer.style.width=`${e}px`,this.htmlContainer.style.height=`${t}px`),this.rendererPosition=this.htmlContainer.getBoundingClientRect()}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}},Lt=o(((e,t)=>{var n=!1,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){if(!n){n=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),v=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(m=/\b(iPhone|iP[ao]d)/.exec(e),h=/\b(iP[ao]d)/.exec(e),f=/Android/i.exec(e),g=/FBAN\/\w+;/i.exec(e),_=/Mobile/i.exec(e),p=!!/Win64/.exec(e),t){r=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,r&&document&&document.documentMode&&(r=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);c=y?parseFloat(y[1])+4:r,i=t[2]?parseFloat(t[2]):NaN,a=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),s=t&&t[1]?parseFloat(t[1]):NaN):s=NaN}else r=i=a=s=o=NaN;if(v){if(v[1]){var b=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=b?parseFloat(b[1].replace(`_`,`.`)):!0}else l=!1;u=!!v[2],d=!!v[3]}else l=u=d=!1}}var y={ie:function(){return v()||r},ieCompatibilityMode:function(){return v()||c>r},ie64:function(){return y.ie()&&p},firefox:function(){return v()||i},opera:function(){return v()||a},webkit:function(){return v()||o},safari:function(){return y.webkit()},chrome:function(){return v()||s},windows:function(){return v()||u},osx:function(){return v()||l},linux:function(){return v()||d},iphone:function(){return v()||m},mobile:function(){return v()||m||h||f||_},nativeApp:function(){return v()||g},android:function(){return v()||f},ipad:function(){return v()||h}};t.exports=y})),Rt=o(((e,t)=>{var n=!!(typeof window<`u`&&window.document&&window.document.createElement);t.exports={canUseDOM:n,canUseWorkers:typeof Worker<`u`,canUseEventListeners:n&&!!(window.addEventListener||window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n}})),zt=o(((e,t)=>{var n=Rt(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);
6
+ `),interactive:this.stylesheet.addStylesheet(`pointer-events: all`),nonInteractive:this.stylesheet.addStylesheet(`pointer-events: none`)},this.stylesheet.updateSheet()}createHtmlHost(e){if(this.htmlContainer&&(e instanceof Ft&&this.options.text||this.options.box||e.props.className||e.props.html||e.props.href)){let t=document.createElement(e.props.href?`a`:`div`);if(e.props.href){t.style.display=`block`,t.href=e.props.href;let n=e.props.hrefTarget||`_blank`;t.target=n,n!==`_self`&&(t.rel=`noopener noreferrer`)}t.title=e.props.title||``,this.options.inlineStyles?(t.style.display=`block`,t.style.position=`absolute`,t.style.overflow=`hidden`,t.style.transformOrigin=`0px 0px`):t.classList.add(this.classes.hostClassName),e.__host={element:t,revision:null,relative:!1},this.updateHtmlHost(e,e.width,e.height),e.__onCreate&&e.__onCreate()}}triggerResize(){this.options.triggerResize()}updateHtmlHost(e,t,n){if(e.__revision!==e.__host.revision){let r=e.__host.element,i=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?r.style.pointerEvents=`all`:i.push(this.classes.interactive):this.options.inlineStyles?r.style.pointerEvents=`none`:i.push(this.classes.nonInteractive),e.props.href){r.style.display=`block`,r.href=e.props.href;let t=e.props.hrefTarget||`_blank`;r.target=t,t===`_self`?r.rel=``:r.rel=`noopener noreferrer`}else r.href&&r.removeAttribute(`href`);if(e.props.title&&(r.title=e.props.title||``),e.props.className&&(i.push(e.props.className),e.hovering&&i.push(`${e.props.className}--hover`),e.pressing&&i.push(`${e.props.className}--active`)),e.props.relativeStyle?(r.style.width=`${t||e.width}px`,r.style.height=`${n||e.height}px`):(r.style.width=`${e.width}px`,r.style.height=`${e.height}px`),e.props.style){Object.assign(r.style,e.props.style||{},e.hovering&&e.props.hoverStyles||{},e.pressing&&e.props.pressStyles||{});return}if(this.options.text&&e instanceof Ft){e.text&&(r.innerText=e.text),e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor),e.color&&(r.style.color=e.color),e.props.font&&(r.style.font=e.props.font),e.props.textAlign&&(r.style.textAlign=e.props.textAlign),e.__host.revision=e.__revision;let t=i.join(` `);r.className=t,r.part=t}e instanceof le&&(this.options.box||e.props.className||e.props.html)&&(e.props.backgroundColor&&(r.style.backgroundColor=e.props.backgroundColor),e.props.border!==r.style.border&&(r.style.border=e.props.border));let a=i.join(` `);r.className=a,r.part=a}}afterFrame(e,t,n){this.stylesheet.updateSheet();for(let e of this.previousVisible)this.visible.indexOf(e)===-1&&this.htmlContainer&&e.__id&&this.htmlIds.indexOf(e.__id)!==-1&&this.htmlContainer.removeChild(e.__host.element);this.previousVisible=this.visible}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.paintTx++,this.zIndex=0,this.visible=[]}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){let n=this.rendererPosition.width/e,r=this.rendererPosition.height/t;return n<r?r:n}getViewportBounds(e,t,n){return null}isReady(){return!0}paint(e,t,n,r,i,a){if(this.zIndex++,(this.options.text&&e instanceof Ft||e instanceof le&&(this.options.box||e.props.className||e.props.html))&&e.__host&&e.__host.tx!==this.paintTx&&(this.visible.push(e),e.__host.tx=this.paintTx,this.htmlContainer)){this.updateHtmlHost(e,i,a);let t=i/e.width,o=e.__host.element;o.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px)`:o.style.transform=`translate(${Math.round(n)}px, ${Math.round(r)}px) scale(${t})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(o),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof Ft||e instanceof le)&&this.createHtmlHost(e)}resize(e,t){e!==void 0&&t!==void 0&&(this.htmlContainer.style.width=`${e}px`,this.htmlContainer.style.height=`${t}px`),this.rendererPosition=this.htmlContainer.getBoundingClientRect()}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}},zt=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})),Bt=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}})),Vt=o(((e,t)=>{var n=Bt(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);
7
7
  /**
8
8
  * Checks if an event is supported in the current execution environment.
9
9
  *
@@ -18,7 +18,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
18
18
  * @internal
19
19
  * @license Modernizr 3.0.0pre (Custom Build) | MIT
20
20
  */
21
- function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),Bt=o(((e,t)=>{var n=Lt(),r=zt(),i=10,a=40,o=800;function s(e){var t=0,n=0,r=0,s=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*i,s=n*i,`deltaY`in e&&(s=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode==1?(r*=a,s*=a):(r*=o,s*=o)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:s}}s.getEventType=function(){return n.firefox()?`DOMMouseScroll`:r(`wheel`)?`wheel`:`mousewheel`},t.exports=s})),Vt=o(((e,t)=>{t.exports=Bt()})),Ht=c(Vt(),1);const $=Math.pow,Ut=Math.sqrt,Wt=Math.sin,Gt=Math.cos,Kt=Math.PI,qt=1.70158,Jt=qt*1.525,Yt=qt+1,Xt=2*Kt/3,Zt=2*Kt/4.5,Qt=function(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},$t={linear:e=>e,easeInQuad:function(e){return e*e},easeOutQuad:function(e){return 1-(1-e)*(1-e)},easeInOutQuad:function(e){return e<.5?2*e*e:1-$(-2*e+2,2)/2},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return 1-$(1-e,3)},easeInOutCubic:function(e){return e<.5?4*e*e*e:1-$(-2*e+2,3)/2},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1-$(1-e,4)},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-$(-2*e+2,4)/2},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1-$(1-e,5)},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1-$(-2*e+2,5)/2},easeInSine:function(e){return 1-Gt(e*Kt/2)},easeOutSine:function(e){return Wt(e*Kt/2)},easeInOutSine:function(e){return-(Gt(Kt*e)-1)/2},easeInExpo:function(e){return e===0?0:$(2,10*e-10)},easeOutExpo:function(e){return e===1?1:1-$(2,-10*e)},easeInOutExpo:function(e){return e===0?0:e===1?1:e<.5?$(2,20*e-10)/2:(2-$(2,-20*e+10))/2},easeInCirc:function(e){return 1-Ut(1-$(e,2))},easeOutCirc:function(e){return Ut(1-$(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-Ut(1-$(2*e,2)))/2:(Ut(1-$(-2*e+2,2))+1)/2},easeInBack:function(e){return Yt*e*e*e-qt*e*e},easeOutBack:function(e){return 1+Yt*$(e-1,3)+qt*$(e-1,2)},easeInOutBack:function(e){return e<.5?$(2*e,2)*((Jt+1)*2*e-Jt)/2:($(2*e-2,2)*((Jt+1)*(e*2-2)+Jt)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-$(2,10*e-10)*Wt((e*10-10.75)*Xt)},easeOutElastic:function(e){return e===0?0:e===1?1:$(2,-10*e)*Wt((e*10-.75)*Xt)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-($(2,20*e-10)*Wt((20*e-11.125)*Zt))/2:$(2,-20*e+10)*Wt((20*e-11.125)*Zt)/2+1},easeInBounce:function(e){return 1-Qt(1-e)},easeOutBounce:Qt,easeInOutBounce:function(e){return e<.5?(1-Qt(1-2*e))/2:(1+Qt(2*e-1))/2}},en=`pan`,tn=`scroll`,nn=`gesture`,rn={zoomOutFactor:.8,zoomInFactor:1.25,maxZoomFactor:1,minZoomFactor:.05,zoomDuration:300,zoomWheelConstant:20,zoomClamp:.6,panBounceStiffness:120,panBounceDamping:15,panTimeConstant:325,panPower:.1,enablePanMomentum:!0,panMomentumStrength:1,nudgeDistance:100,panPadding:0,devicePixelRatio:1,enableWheel:!0,enableClickToZoom:!0,enableDoubleTapZoom:!0,ignoreSingleFingerTouch:!1,enablePanOnWait:!1,requireMetaKeyForWheelZoom:!1,wheelInExploreModeOnly:!1,panOnWaitDelay:40,onPanInSketchMode:()=>{},parentElement:null},an=(e={})=>({start:t=>{let{zoomWheelConstant:n,enableWheel:r,enableClickToZoom:i,enableDoubleTapZoom:a,ignoreSingleFingerTouch:o,enablePanOnWait:s,panOnWaitDelay:c,parentElement:u,requireMetaKeyForWheelZoom:d,wheelInExploreModeOnly:f,enablePanMomentum:p,panMomentumStrength:m,panBounceStiffness:h,panBounceDamping:g,panTimeConstant:_,panPadding:v}={...rn,...e},y={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:(0,l.dna)(5),multiTouch:{distance:0},hasMovedSincePress:!1},b=[],x={active:!1,vx:0,vy:0},C=null,w,T=0,ee,E;function D(){b.length=0}function O(e,t){let n=performance.now(),r=b[b.length-1];if(r&&r.x===e&&r.y===t){r.t=n;return}for(b.push({x:e,y:t,t:n});b.length>1&&n-b[0].t>140;)b.shift()}function k(){x.active=!1,x.vx=0,x.vy=0}function A(){C=null,w=void 0}function j(){if(!a||t.mode!==`explore`||y.hasMovedSincePress||!E)return!1;let e=performance.now();if(U&&e-U>250)return!1;let n=ee&&T>0&&e-T<=350&&S(ee,E)<=100;if(T=e,ee={...E},!n)return!1;let r=t.isViewportAtHomeZoomLevel({tolerance:.1})?t.getHomeTarget({cover:!0}):t.getHomeTarget();return t.transitionManager.goToRegion(r,{transition:{duration:500,easing:$t.easeInOutQuad}}),T=0,ee=void 0,!0}function M(e,t,n,r){let i=Math.min(n,32)/1e3,a=t*1e3,o=e+a*i,s=o-r,c=-h*s-g*a,l=a+c*i;return{position:o+.5*c*i*i,velocity:l/1e3}}function N(e){t.transitionManager.customTransition(n=>{n.from=(0,l.dna)(t.target),n.to=e,n.elapsed_time=0,n.total_time=0,n.timingFunction=$t.easeInOutExpo,n.done=!1})}function P(){if(b.length<2)return null;let e=b[b.length-1],t=b[0];for(let n=b.length-2;n>=0&&(t=b[n],!(e.t-t.t>=80));n--);let n=e.t-t.t;return n<=0?null:{vx:(e.x-t.x)/n,vy:(e.y-t.y)/n}}function F(){if(!p||!y.hasMovedSincePress||b.length<2)return!1;let e=P();if(!e)return!1;let n=Math.max(0,m),r=e.vx*n,i=e.vy*n;return Math.hypot(r,i)*t.getScaleFactor()<.08?!1:(x.active=!0,x.vx=r,x.vy=i,t.updateNextFrame(),!0)}function te(){if(!y.isPressing){A(),L();return}let e=t.mode===`explore`?F():!1;t.mode===`explore`&&!e&&t.world.constraintBounds(),y.isPressing=!1,y.hasMovedSincePress=!1,D(),A(),L()}function I(){if(!y.isPressing){A(),L();return}if(k(),t.mode===`explore`){let e=t.transitionManager.getPendingTransition(),n=C||(e&&e.total_time===0&&!e.done?e.to:t.target);t.transitionManager.constrainTarget(n,{origin:w,panPadding:v})}y.isPressing=!1,y.hasMovedSincePress=!1,D(),A(),L()}t.world.activatedEvents.push(`onMouseUp`,`onMouseDown`,`onMouseMove`,`onTouchStart`,`onTouchEnd`,`onTouchCancel`,`onTouchMove`,`onContextMenu`);function L(){H=0,W=``,G(),G(void 0,`notice`),U=0,E=void 0}function ne(){te()}function R(e){if(W===nn&&e.touches.length<2){I();return}e.touches.length===0&&(j(),te())}function z(e){if(W===nn){I();return}te()}function B(e){if(e.which>1){y.isPressing=!1;return}t.mode===`explore`&&(e.preventDefault(),k(),D(),y.hasMovedSincePress=!1,y.pointerStart.x=e.atlas.x,y.pointerStart.y=e.atlas.y,O(t.target[1],t.target[2]),t.transitionManager.stopTransition(),y.isPressing=!0)}function V(){te()}let H=0,U=0,W=``;function re(e){if(t.mode===`explore`){if(k(),D(),y.hasMovedSincePress=!1,e.atlasTouches.length===1&&(U=performance.now(),o==0&&e.preventDefault(),y.pointerStart.x=e.atlasTouches[0].x,y.pointerStart.y=e.atlasTouches[0].y,E={x:e.atlasTouches[0].x,y:e.atlasTouches[0].y},O(t.target[1],t.target[2])),e.atlasTouches.length===2){W=nn,e.preventDefault();let t=e.atlasTouches[0].x,n=e.atlasTouches[1].x;y.pointerStart.x=(t+n)/2;let r=e.atlasTouches[0].y,i=e.atlasTouches[1].y;y.pointerStart.y=(r+i)/2,H=S({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY}),D(),A()}t.transitionManager.stopTransition(),y.isPressing=!0}}function G(e,t=`intent`){u&&(u.dataset[t]=e)}function ie(e){let n=null,r=null,i=0,a=!1;if(y.isPressing&&e.touches.length===2&&(n=(e.touches[0].clientX+e.touches[1].clientX)/2,r=(e.touches[0].clientY+e.touches[1].clientY)/2,i=S({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY})),G(W),y.isPressing&&e.touches.length===1){if(s&&(performance.now()-U<c&&W==``&&(W=tn),W==``&&(W=`pan`)),G(W),W==``&&o==1||W==tn){G(`require-two-finger`,`notice`);return}let t=e.touches[0];n=t.clientX,r=t.clientY,a=!0}if(n!==null&&r!==null){let o=t.getRendererScreenPosition();if(o){let{x:s,y:c}=t.viewerToWorld(n-o.x,r-o.y),u=i&&H?i/H:1,d=(0,l.transform)((0,l.dna)(t.target),(0,l.compose)((0,l.translate)(y.pointerStart.x-s,y.pointerStart.y-c),(0,l.scaleAtOrigin)(1/u,s,c)),y.mousemoveBuffer);if(a){let e=b[b.length-1];e&&(e.x!==d[1]||e.y!==d[2])&&(y.hasMovedSincePress=!0),O(d[1],d[2])}e.touches.length===2&&(C=(0,l.dna)(d),w={x:s,y:c}),N(d)}H=i}W==`pan`&&e.preventDefault()}function ae(e){if(y.isPressing){let n=t.getRendererScreenPosition();if(n){let{x:r,y:i}=t.viewerToWorld(e.clientX-n.x,e.clientY-n.y),a=(0,l.transform)((0,l.dna)(t.target),(0,l.translate)(y.pointerStart.x-r,y.pointerStart.y-i),y.mousemoveBuffer),o=b[b.length-1];o&&(o.x!==a[1]||o.y!==a[2])&&(y.hasMovedSincePress=!0),O(a[1],a[2]),N(a)}}}function K(e){t.mode===`explore`&&t.world.zoomIn(e.atlas)}function oe(e){if(f&&t.mode!==`explore`)return;k();let r=1+(0,Ht.default)(e).spinY/n;t.world.zoomTo(r,e.atlas,!0)}function q(e){return d&&e.metaKey==0?(G(`meta-required`,`notice`),e.stopPropagation(),!1):!0}t.world.addEventListener(`mouseup`,ne),t.world.addEventListener(`touchend`,R),t.world.addEventListener(`touchcancel`,z),t.world.addEventListener(`touchstart`,re),t.world.addEventListener(`mousedown`,B),window.addEventListener(`touchend`,V),window.addEventListener(`mouseup`,V),window.addEventListener(`mousemove`,ae),u&&u.addEventListener(`touchmove`,ie),i&&(t.world.activatedEvents.push(`onClick`),t.world.addEventListener(`click`,K)),r&&(t.world.activatedEvents.push(`onWheel`),d&&u?.addEventListener(`wheel`,q,{passive:!0,capture:!0}),t.world.addEventListener(`wheel`,oe));let se=t.world.addLayoutSubscriber((e,n)=>{if(e===`zone-changed`&&(k(),t.transitionManager.hasPending()||t.transitionManager.constrainBounds()),e===`zoom-to`&&n&&(k(),t.transitionManager.zoomTo(n.factor,{origin:n.point,stream:n.stream})),e===`go-home`){k();let e=n.immediate?{duration:0}:void 0,r=n?.paddingPx,i=t.getHomeTarget({paddingPx:r});t.transitionManager.goToRegion(i,{transition:e})}if(e===`goto-region`&&n){k();let e=n.immediate?{duration:0}:{};if(n.paddingPx!==void 0){let r=t.getHomeTarget({position:l.DnaFactory.singleBox(n.width,n.height,n.x,n.y),paddingPx:n.paddingPx});t.transitionManager.goToRegion(r,{transition:e})}else t.transitionManager.goToRegion(n,{transition:e})}e===`constrain-bounds`&&(k(),t.transitionManager.constrainBounds({panPadding:v,transition:n?.immediate?{duration:0}:void 0}))}),ce=t.registerHook(`useFrame`,e=>{if(!x.active)return;let n=Math.exp(-e/Math.max(1,_)),r=t.target[3]-t.target[1],i=t.target[4]-t.target[2],a=(0,l.transform)((0,l.dna)(t.target),(0,l.translate)(x.vx*e,x.vy*e),y.mousemoveBuffer),[,o]=t.constrainBounds(a,{panPadding:v}),s=a[1]!==o[1],c=a[2]!==o[2],u=s?x.vx:x.vx*n,d=c?x.vy:x.vy*n,f=(0,l.dna)(a);if(s){let n=M(t.target[1],x.vx,e,o[1]);f[1]=n.position,f[3]=n.position+r,u=n.velocity}else f[1]=t.target[1]+u*e,f[3]=f[1]+r;if(c){let n=M(t.target[2],x.vy,e,o[2]);f[2]=n.position,f[4]=n.position+i,d=n.velocity}else f[2]=t.target[2]+d*e,f[4]=f[2]+i;x.vx=u,x.vy=d;let[,p]=t.constrainBounds(f,{panPadding:v}),m=Math.hypot(f[1]-p[1],f[2]-p[2])*t.getScaleFactor(),h=Math.hypot(x.vx,x.vy)*t.getScaleFactor();if(m<=.5&&h<=.02){k(),N(p);return}N(f),t.updateNextFrame()});return()=>{k(),t.world.removeEventListener(`mouseup`,ne),t.world.removeEventListener(`touchend`,R),t.world.removeEventListener(`touchcancel`,z),t.world.removeEventListener(`touchstart`,re),t.world.removeEventListener(`mousedown`,B),window.removeEventListener(`touchend`,V),window.removeEventListener(`mouseup`,V),window.removeEventListener(`mousemove`,ae),u&&(u.removeEventListener(`touchmove`,ie),u.removeEventListener(`wheel`,q,{passive:!0,capture:!0})),i&&t.world.removeEventListener(`click`,K),r&&t.world.removeEventListener(`wheel`,oe),ce(),se()}},updatePosition(){}});var on=c(Vt(),1);const sn={scrollWheelFactor:1,scrollLoadAheadFactor:1,clickDragThresholdPx:6,touchScrollMomentumStrength:1.4,touchScrollMomentumMinStartPxPerMs:.04},cn=.09999999999999998/2,ln=.8,un=.08,dn=.02,fn=80,pn=140;let mn=1;const hn=new WeakMap;function gn(e){return{x:e.x,y:e.y,width:e.width,height:e.height}}function _n(e,t,n){return e.points[0]!==0&&t>=e.points[1]&&t<=e.points[3]&&n>=e.points[2]&&n<=e.points[4]}const vn=(e={})=>({start(t){let n=mn++;hn.set(t,n);let r=()=>hn.get(t)===n,{scrollWheelFactor:i,scrollLoadAheadFactor:a,clickDragThresholdPx:o,touchScrollMomentumStrength:s,touchScrollMomentumMinStartPxPerMs:c,enablePanMomentum:l=!0,panMomentumStrength:u=1,panTimeConstant:d=325}={...sn,...e},f=()=>{w||(w=!0,window.requestAnimationFrame(()=>{w=!1,r()&&t.updateNextFrame()}))},p=t.mode,m=t.manualHomePosition,h=`scroll-mode`,g=!1,_=!1,v=!1,y,b,x=!1,S,C=performance.now()+5e3,w=!1,T=0,ee=0,E=0,D=0,O=null,k=!1,A=null,j=!1,M=!1,N=0,P,F=!0,te=-1,I=-1,L=-1,ne=-1,R=-1,z=[],B={active:!1,vy:0},V=an({...e,enableWheel:!0,enableClickToZoom:!1,wheelInExploreModeOnly:!0}),H=e=>{t.world.activatedEvents.indexOf(e)===-1&&t.world.activatedEvents.push(e)},U=e=>{h=e,t.mode=e===`zone-active`?`explore`:`sketch`},W=()=>{z.length=0},re=e=>{let t=performance.now(),n=z[z.length-1];if(n&&n.y===e){n.t=t;return}for(z.push({y:e,t});z.length>1&&t-z[0].t>140;)z.shift()},G=()=>{B.active=!1,B.vy=0},ie=()=>{if(z.length<2)return null;let e=z[z.length-1],t=z[0];for(let n=z.length-2;n>=0&&(t=z[n],!(e.t-t.t>=80));n--);let n=e.y-t.y,r=e.t-t.t;return r<=0||Math.abs(n)<=.5?null:n/r},ae=({strengthMultiplier:e=1,minStartPxPerMs:n=un}={})=>{if(!l||z.length<2)return!1;let r=ie();if(r===null)return!1;let i=r*Math.max(0,u)*Math.max(0,e);return Math.abs(i)*t.getScaleFactor()<n?!1:(B.active=!0,B.vy=i,t.updateNextFrame(),!0)},K=()=>{let e=h===`zone-active`?`explore`:`sketch`;t.mode!==e&&(t.mode=e)},oe=()=>{F=!0},q=(e,t)=>Math.abs(e.x-t.x)>.01||Math.abs(e.y-t.y)>.01||Math.abs(e.width-t.width)>.01||Math.abs(e.height-t.height)>.01,se=()=>{let e,n=0;for(let r of t.world.zones)r.recalculateBounds(),r.points[0]!==0&&(!e||r.points[2]<n)&&(e=r,n=r.points[2]);return e},ce=()=>{let e=t.getRendererScreenPosition(),n=Math.max(0,e?.height||0);if(n===0)return;let r=Math.round(n*.04999999999999999);return{top:r,bottom:r}},le=()=>{let e=se();if(e)return e.points[2];let n=!1,r=0;for(let e of t.world.getObjects())!e||e.points[0]===0||(!n||e.points[2]<r)&&(r=e.points[2],n=!0);return n?r:0},ue=()=>{let e=t.getRendererScreenPosition(),n=Math.round((e?.width||t.width||0)*100)/100,r=Math.round((e?.height||t.height||0)*100)/100,i=e?.width&&e?.height?`renderer`:`runtime`,a=se();if(a)return[`zone`,a.id,a.points[1],a.points[2],a.points[3]-a.points[1],a.points[4]-a.points[2],`screen:${n}x${r}:${i}`].join(`:`);let o=-1,s=0,c=t.world.getObjects();for(let e=0;e<c.length;e++){let t=c[e];!t||t.points[0]===0||(o===-1||t.points[2]<s)&&(o=e,s=t.points[2])}if(o!==-1){let e=c[o];return[`object`,e.id||o,e.points[1],e.points[2],e.points[3]-e.points[1],e.points[4]-e.points[2],`screen:${n}x${r}:${i}`].join(`:`)}},de=()=>{if(!r()||x||h!==`scroll-mode`||g||M||_||t.world.hasActiveZone())return;let e=ue();if(!e){performance.now()<C&&t.updateNextFrame();return}e!==S&&(S=e,N=le(),me(N),f())},fe=()=>{let e=t.world.width,n=t.world.height,r=t.getRendererScreenPosition(),i=Math.max(1,r?.width||t.width),a=Math.max(1,r?.height||t.height),o=t.world.zones.length;if(!F&&P&&te===e&&I===n&&L===i&&ne===a&&R===o)return P;let s=se(),c;if(s){let e=t.getHomeTarget({position:s.points,paddingPx:ce()});c={x:e.x,y:e.y,width:e.width,height:e.height}}else c=e>0&&n>0?{x:0,y:0,width:e,height:e/i*a}:void 0;return P=c,F=!1,te=e,I=n,L=i,ne=a,R=o,P},pe=e=>{let n=fe();if(!n)return;let r=t.world.height,i=Math.max(1,a),o=n.width*i,s=n.height,c=n.height*i,l=Math.min(0,r-s),u=Math.max(0,r-s);return{x:n.x-(o-n.width)/2,y:Math.min(u,Math.max(l,e)),width:o,height:c}},J=e=>{if(e.recalculateBounds(),e.points[0]!==0)return pe(e.points[2])},me=e=>{let n=pe(e);if(!n)return;N=n.y;let r=t.getViewport();!t.transitionManager.hasPending()&&!q(r,n)||(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame())},Y=e=>{let n=pe(e);return n?(N=n.y,t.transitionManager.goToRegion(n),t.updateNextFrame(),!0):!1},he=()=>{if(h!==`scroll-mode`||g||_||t.world.hasActiveZone())return;let e=t.getViewport(),n=pe(e.y);n&&(N=n.y,q(e,n)&&(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame()))},ge=(e,n)=>{for(let r of t.world.zones)if(r.recalculateBounds(),_n(r,e,n))return r},_e=e=>{r()&&(G(),W(),x=!0,b||(b=gn({...t.getViewport(),y:N})),v=!0,t.goToZone(e)?U(`zone-active`):v=!1)},ve=()=>{if(!r())return;let e=Y(b?b.y:N);b=void 0,_=e,e||(_=!1,g=!1,me(N)),t.updateNextFrame()},ye=()=>{if(!r()||h!==`zone-active`)return!1;let e=t.world.getActiveZone();if(!e||(e.recalculateBounds(),e.points[0]===0))return!1;let n=t.getViewport();if(n.width<=0||n.height<=0)return!1;let i=e.points[3]-e.points[1],a=e.points[4]-e.points[2],o=i/n.width,s=a/n.height;return o<ln&&s<ln},X=()=>{r()&&h===`zone-active`&&(G(),W(),U(`scroll-mode`),g=!0,t.deselectZone(),ve())},be=(e,t)=>{G(),W(),x=!0,M=!0,j=!1,E=e,D=t,T=t,ee=N,re(N)},xe=(e,n)=>{if(!M)return!1;Math.hypot(e-E,n-D)>o&&(j=!0);let r=(n-T)/Math.max(1e-4,t.getScaleFactor());return me(ee-r),re(N),!0},Se=({allowMomentum:e=!0,momentumStrengthMultiplier:t=1,momentumMinStartPxPerMs:n=un}={})=>{let r=M,i=j;return M=!1,j=!1,r?(e&&h===`scroll-mode`&&!_?ae({strengthMultiplier:t,minStartPxPerMs:n}):G(),W(),{releasedDrag:!0,tapSuppressed:i}):(W(),{releasedDrag:!1,tapSuppressed:i})},Ce=()=>{M=!1,j=!1,W(),G()},we=()=>{O=null,k=!1,A=null,j=!1},Te=e=>{if(!r()||(K(),j||_))return;if(h===`scroll-mode`){let t=ge(e.x,e.y);t&&_e(t.id);return}let n=t.world.getActiveZone();(!n||!_n(n,e.x,e.y))&&X()},Ee=e=>{r()&&e.atlas&&Te(e.atlas)},De=e=>{if(!r())return;if(K(),_){e.stopPropagation();return}if(h!==`scroll-mode`)return;G(),x=!0,e.stopPropagation();let n=((0,on.default)(e).pixelY||e.deltaY||0)/Math.max(1e-4,t.getScaleFactor())*i;me(N+n)},Oe=e=>{r()&&(K(),!(h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),be(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Z=e=>{r()&&(K(),!(!M||h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),xe(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Q=()=>{r()&&Se()},ke=e=>{if(!r())return;if(K(),h===`zone-active`){if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,j=!1,E=t.clientX,D=t.clientY,A={x:n.x,y:n.y};return}if(h!==`scroll-mode`||_)return;if(e.preventDefault(),e.stopPropagation?.(),!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we(),Ce();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,A={x:n.x,y:n.y},be(t.clientX,t.clientY)},Ae=e=>{if(!r())return;if(K(),h===`zone-active`){if(!k)return;if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we();return}let t=e.atlasTouches.find(e=>e.id===O)||e.atlasTouches[0],n=Array.from(e.touches).find(e=>e.identifier===t.id)||e.touches[0];A={x:t.x,y:t.y},Math.hypot(n.clientX-E,n.clientY-D)>o&&(j=!0);return}if(h!==`scroll-mode`||_||!M)return;if(e.preventDefault(),e.stopPropagation?.(),!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we(),Ce();return}let t=e.atlasTouches.find(e=>e.id===O)||e.atlasTouches[0],n=Array.from(e.touches).find(e=>e.identifier===t.id)||e.touches[0];O=t.id,A={x:t.x,y:t.y},xe(n.clientX,n.clientY)},je=e=>{if(!r())return;if(K(),h===`zone-active`){let t=A,n=k&&!j&&e.touches.length===0;we(),t&&n&&Te(t);return}if(h!==`scroll-mode`)return;if(e.preventDefault(),e.stopPropagation?.(),e.touches.length>0){we(),Ce();return}let t=A,n=Se({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c});we(),t&&!n.tapSuppressed&&Te(t)},Me=e=>{if(r()){if(K(),h===`zone-active`){we();return}h===`scroll-mode`&&(e.preventDefault(),e.stopPropagation?.(),we(),Ce())}},Ne=()=>{if(r()){if(h===`zone-active`){we();return}Se({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c}),we()}},Pe=e=>{r()&&e.key===`Escape`&&X()};H(`onClick`),H(`onWheel`),H(`onMouseDown`),H(`onMouseMove`),H(`onMouseUp`),H(`onTouchStart`),H(`onTouchMove`),H(`onTouchEnd`),H(`onTouchCancel`),t.world.addEventListener(`click`,Ee),t.world.addEventListener(`wheel`,De),t.world.addEventListener(`mousedown`,Oe),t.world.addEventListener(`mousemove`,Z),t.world.addEventListener(`mouseup`,Q),t.world.addEventListener(`touchstart`,ke),t.world.addEventListener(`touchmove`,Ae),t.world.addEventListener(`touchend`,je),t.world.addEventListener(`touchcancel`,Me),window.addEventListener(`mouseup`,Q),window.addEventListener(`touchend`,Ne),window.addEventListener(`touchcancel`,Me),window.addEventListener(`keydown`,Pe),t.manualHomePosition=!0,U(`scroll-mode`),N=le(),de();let Fe=V.start(t),Ie=t.registerHook(`useFrame`,e=>{if(!B.active)return;if(!r()||h!==`scroll-mode`||g||_||M||t.world.hasActiveZone()){G();return}let n=Math.exp(-e/Math.max(1,d));if(B.vy*=n,Math.abs(B.vy)*t.getScaleFactor()<=.02){G();return}let i=N;if(me(N+B.vy*e),Math.abs(N-i)<=.01){G();return}t.updateNextFrame()}),Le=t.registerHook(`useAfterFrame`,()=>{if(r()){if(K(),he(),de(),_&&!t.transitionManager.hasPending()&&(_=!1,g=!1),y&&h===`zone-active`&&!t.transitionManager.hasPending()){let e=t.world.getActiveZone();if(e&&e.id===y){let t=J(e);t&&(b=gn(t),N=t.y)}y=void 0}g||ye()&&X()}}),Re=t.world.addLayoutSubscriber(e=>{if(r()){if((e===`recalculate-world-size`||e===`zone-changed`)&&oe(),e===`goto-region`&&(g=!1),e===`recalculate-world-size`&&h===`scroll-mode`&&!g){let e=b?b.y:N;t.world.zones.length&&e===0&&(N=le()),me(N),f()}if(e===`zone-changed`){if(t.world.hasActiveZone()){G(),W(),x=!0;let e=t.world.getActiveZone();!v&&e?y=e.id:b||(b=gn({...t.getViewport(),y:N})),v=!1,U(`zone-active`);return}let e=h===`zone-active`;if(y=void 0,U(`scroll-mode`),_)return;e?(g=!0,ve()):g||me(N)}}});return()=>{G(),W(),Fe(),Ie(),Le(),Re(),t.world.removeEventListener(`click`,Ee),t.world.removeEventListener(`wheel`,De),t.world.removeEventListener(`mousedown`,Oe),t.world.removeEventListener(`mousemove`,Z),t.world.removeEventListener(`mouseup`,Q),t.world.removeEventListener(`touchstart`,ke),t.world.removeEventListener(`touchmove`,Ae),t.world.removeEventListener(`touchend`,je),t.world.removeEventListener(`touchcancel`,Me),window.removeEventListener(`mouseup`,Q),window.removeEventListener(`touchend`,Ne),window.removeEventListener(`touchcancel`,Me),window.removeEventListener(`keydown`,Pe),r()&&(hn.delete(t),t.manualHomePosition=m,t.mode=p)}},updatePosition(){}}),yn=p.default.createContext(null);yn.displayName=`Atlas`;const bn=p.default.createContext(null);bn.displayName=`Bounds`;const xn=p.default.createContext(`explore`);xn.displayName=`Mode`;const Sn=()=>(0,p.useContext)(xn);function Cn(e){return(0,h.jsx)(xn.Provider,{value:e.mode,children:e.children})}var wn=class{constructor(e){E(this,`runtime`,void 0),E(this,`pendingTransition`,void 0),E(this,`lastZoomTo`,null),E(this,`isConstraining`,!1),E(this,`lastGoToRegion`,null),this.runtime=e,this.pendingTransition={from:(0,l.dna)(5),to:(0,l.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:$t.easeInOutQuad,constrain:!1}}hasPending(){return!this.pendingTransition.done}getPendingTransition(){return this.pendingTransition}getPendingFrom(){return this.pendingTransition.from}customTransition(e){e(this.pendingTransition)}stopTransition(){this.pendingTransition.from=(0,l.dna)(this.runtime.target),this.pendingTransition.to=(0,l.dna)(this.runtime.target),this.pendingTransition.done=!0,this.pendingTransition.elapsed_time=0,this.pendingTransition.total_time=0}runTransition(e,t){if(!this.pendingTransition.done){let n=this.pendingTransition,r=n.total_time===0?0:(n.elapsed_time+t)/n.total_time,i=n.total_time===0?1:r===0?0:n.timingFunction(r);e[1]=n.from[1]+(n.to[1]-n.from[1])*i,e[2]=n.from[2]+(n.to[2]-n.from[2])*i,e[3]=n.from[3]+(n.to[3]-n.from[3])*i,e[4]=n.from[4]+(n.to[4]-n.from[4])*i,this.pendingTransition.elapsed_time+=t,this.pendingTransition.elapsed_time>=this.pendingTransition.total_time&&(this.pendingTransition.done=!0,this.pendingTransition.callback?.(),this.pendingTransition.constrain&&this.constrainBounds({transition:{duration:this.pendingTransition.total_time===0?0:500,easing:$t.easeOutExpo}}))}}resumeTransition(){this.lastZoomTo&&this.zoomTo(this.lastZoomTo.factor,this.lastZoomTo.options),this.isConstraining&&this.constrainBounds(),this.lastGoToRegion&&this.goToRegion(this.lastGoToRegion.target,this.lastGoToRegion.options)}zoomTo(e,t={}){let{origin:n,stream:r=!1,transition:i}=t;this.lastZoomTo={factor:e,options:t};let a=this.runtime.getZoomedPosition(e,{origin:n}),o=Math.abs(1-e);this.applyTransition(a,i,{duration:2e3*o,easing:$t.easeOutExpo,constrain:!0,callback:()=>{this.lastZoomTo=null}},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){this.isConstraining=!0;let[n,r]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});if(n){this.applyTransition(r,e,{duration:500,easing:$t.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}constrainTarget(e,{origin:t,transition:n,panPadding:r=0}={}){this.isConstraining=!0;let[i,a]=this.runtime.constrainTarget(e,{origin:t,panPadding:r});if(i){this.applyTransition(a,n,{duration:500,easing:$t.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}applyTransition(e,t,n,{stream:r}={}){this.pendingTransition.from=(0,l.dna)(this.runtime.target),this.pendingTransition.to=e,r||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=t?.duration===void 0?n?.duration===void 0?1e3:n.duration:t.duration,this.pendingTransition.constrain=t?.constrain===void 0?n?.constrain===void 0?!1:n.constrain:t.constrain,this.pendingTransition.timingFunction=t?.easing||n?.easing||$t.easeInOutSine}goToRegion(e,{transition:t}={}){this.lastGoToRegion={target:e,options:{transition:t}};let n=this.runtime.clampRegion(e);this.applyTransition(l.DnaFactory.singleBox(n.width,n.height,n.x,n.y),t,{duration:1e3,easing:$t.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};Number.MIN_VALUE+1;var Tn=class{get x(){return this.target[1]}set x(e){this.target[1]=e}get y(){return this.target[2]}set y(e){this.target[2]=e}get x2(){return this.target[3]}set x2(e){this.target[3]=e}get y2(){return this.target[4]}set y2(e){this.target[4]=e}get width(){return this.target[3]-this.target[1]}set width(e){this.target[3]=this.target[1]+e}get height(){return this.target[4]-this.target[2]}set height(e){this.target[4]=this.target[2]=e}constructor(e,t,n,r=[],i){E(this,`id`,K()),E(this,`ready`,!1),E(this,`readyCycle`,0),E(this,`readyReason`,`initial`),E(this,`readyTimestamp`,void 0),E(this,`renderer`,void 0),E(this,`world`,void 0),E(this,`target`,void 0),E(this,`homePosition`,void 0),E(this,`manualHomePosition`,void 0),E(this,`manualFocalPosition`,void 0),E(this,`focalPosition`,void 0),E(this,`homePaddingPx`,void 0),E(this,`transitionManager`,void 0),E(this,`aggregate`,void 0),E(this,`transformBuffer`,(0,l.dna)(500)),E(this,`lastTarget`,(0,l.dna)(5)),E(this,`zoomBuffer`,(0,l.dna)(5)),E(this,`logNextRender`,!1),E(this,`pendingUpdate`,!0),E(this,`isCommitting`,!1),E(this,`firstRender`,!0),E(this,`lastTime`,void 0),E(this,`stopId`,void 0),E(this,`mode`,`explore`),E(this,`controllers`,[]),E(this,`controllersRunning`,!1),E(this,`controllerStopFunctions`,[]),E(this,`maxScaleFactor`,1),E(this,`_viewerToWorld`,{x:0,y:0}),E(this,`_lastGoodScale`,1),E(this,`debugFrame`,0),E(this,`debugSubscribers`,new Set),E(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),E(this,`fpsLimit`,void 0),E(this,`options`,void 0),E(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),E(this,`_viewport`,{x:0,y:0,width:0,height:0}),E(this,`setViewport`,e=>{let t=Math.round(e.x===void 0?this.target[1]:e.x),n=Math.round(e.y===void 0?this.target[2]:e.y);e.width?this.target[3]=t+e.width:this.target[3]=this.target[3]-this.target[1]+t,e.height?this.target[4]=n+e.height:this.target[4]=this.target[4]-this.target[2]+n,Math.abs(this.target[1]-t)>.01&&(this.target[1]=t),Math.abs(this.target[2]-n)>.01&&(this.target[2]=n),this.pendingUpdate=!0}),E(this,`render`,e=>{let t=e-this.lastTime;if(this.isCommitting||this.fpsLimit&&t<1e3/this.fpsLimit){this.stopId=window.requestAnimationFrame(this.render);return}this.lastTime=e,this.world.flushSubscriptions(),this.stopId=window.requestAnimationFrame(this.render),this.hook(`useFrame`,t);let n=this.pendingUpdate,r=this.renderer.pendingUpdate(),i=this.world.hasPendingAnimation(),a=this.hasDebugSubscribers();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,n=!0,this.updateControllerPosition()),i&&(this.pendingUpdate=!0,n=!0),!this.firstRender&&!n&&!r&&!i&&this.target[0]===this.lastTarget[0]&&this.target[1]===this.lastTarget[1]&&this.target[2]===this.lastTarget[2]&&this.target[3]===this.lastTarget[3]&&this.target[4]===this.lastTarget[4])return;let o=++this.debugFrame,s=0;a&&this.emitDebug({type:`frame-start`,at:e,runtimeId:this.id,frame:o,delta:t,mode:this.mode,pendingUpdate:n,rendererPendingUpdate:r,target:[this.target[1],this.target[2],this.target[3],this.target[4]]}),this.hook(`useBeforeFrame`,t),this.renderer.beforeFrame(this.world,t,this.target,this.hookOptions);let c=this.getScaleFactor(),u=this.renderer.getPointsAt(this.world,this.target,this.aggregate,c),d=u.length;for(let t=0;t<d;t++){let n=u[t][0],r=u[t][1],i=u[t][2],c=i?(0,l.transform)(r,i,this.transformBuffer):r;this.renderer.prepareLayer(n,n.__parent&&i?(0,l.transform)(n.__parent.crop||n.__parent.points,i):c);let d=c.length/5;for(let r=0;r<d;r++){let i=r*5;if(c[i]!==0){if(this.renderer.paint(n,r,c[i+1],c[i+2],c[i+3]-c[i+1],c[i+4]-c[i+2]),s++,a){let a;if(n.getImageUrl)try{a=n.getImageUrl(r)}catch{a=void 0}this.emitDebug({type:`paint`,at:e,runtimeId:this.id,frame:o,layerIndex:t,tileIndex:r,x:c[i+1],y:c[i+2],width:c[i+3]-c[i+1],height:c[i+4]-c[i+2],paintId:n.id||`${t}:${r}`,paintType:n?.constructor?.name||n.type||`UnknownPaint`,ownerId:n.__owner?.value?.id,compositeId:n.__parent?.id,imageUrl:a})}this.hook(`useAfterPaint`,n)}}this.renderer.finishLayer(n,r)}this.renderer.afterFrame(this.world,t,this.target,this.hookOptions),this.pendingUpdate=!1,this.hook(`useAfterFrame`,t),this.lastTarget[0]=this.target[0],this.lastTarget[1]=this.target[1],this.lastTarget[2]=this.target[2],this.lastTarget[3]=this.target[3],this.lastTarget[4]=this.target[4],this.firstRender=!1,this.logNextRender=!1,!this.ready&&this.renderer.isReady()&&(this.ready=!0,this.readyTimestamp=performance.now(),this.world.trigger(`ready`)),a&&this.emitDebug({type:`frame-end`,at:e,runtimeId:this.id,frame:o,delta:t,scaleFactor:c,paintCount:s,ready:this.ready,pendingUpdate:this.pendingUpdate,worldWidth:this.world.width,worldHeight:this.world.height,target:[this.target[1],this.target[2],this.target[3],this.target[4]]}),this.world.flushSubscriptions();let f=this.world.getScheduledUpdates(this.target,c),p=f.length;if(p>0)for(let e=0;e<p;e++){let t=f[p-e-1]();t?t.then(()=>{this.pendingUpdate=!0}):this.pendingUpdate=!0}}),this.renderer=e,this.world=t,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1,...i||{}},this.target=l.DnaFactory.projection(n),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=l.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new wn(this),this.aggregate=(0,l.scale)(1),this.world.addLayoutSubscriber(e=>{(e===`repaint`||e===`zone-changed`)&&(this.pendingUpdate=!0),e===`recalculate-world-size`&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=r,this.render(this.lastTime),this.startControllers(),this.homePaddingPx=void 0}setHomePosition(e){this.homePosition.set(l.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}setHomePaddingPx(e){this.homePaddingPx=e,this.pendingUpdate=!0}getHomePaddingPx(){return this.homePaddingPx}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}normalizePadding(e){return typeof e==`number`?{left:e,right:e,top:e,bottom:e}:e?{left:e.left||0,right:e.right||0,top:e.top||0,bottom:e.bottom||0}:{left:0,right:0,top:0,bottom:0}}getHomeTarget(e={}){let t=this.getRendererScreenPosition(),n=t?.width||this.width,r=t?.height||this.height,i=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,a=this.normalizePadding(i),o=Math.max(1,n-a.left-a.right),s=Math.max(1,r-a.top-a.bottom),c=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},l=o/s,u=c.width/c.height,d,f,p,m;(e.cover?u<l:u>l)?(d=c.width,f=c.width/l,p=c.x,m=c.y-(f-c.height)/2):(f=c.height,d=c.height*l,p=c.x-(d-c.width)/2,m=c.y);let h=d/o,g=a.left*h,_=a.right*h,v=a.top*h,y=a.bottom*h;return{x:p-g,y:m-v,width:d+g+_,height:f+v+y}}isViewportAtHome(e={}){let{cover:t=!1,tolerance:n=1,target:r=this.getViewport()}=e,i=this.getHomeTarget({cover:t});return Math.abs(r.x-i.x)<=n&&Math.abs(r.y-i.y)<=n&&Math.abs(r.width-i.width)<=n&&Math.abs(r.height-i.height)<=n}isViewportAtHomeZoomLevel(e={}){let{cover:t=!1,tolerance:n=.05,target:r=this.getViewport()}=e,i=this.getHomeTarget({cover:t}),a=this.renderer.getScale(r.width,r.height)||this._lastGoodScale,o=this.renderer.getScale(i.width,i.height)||this._lastGoodScale;return o===0?!1:Math.abs(a/o-1)<=n}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,n=this.normalizePadding(t);if(n.left>0||n.right>0||n.top>0||n.bottom>0){let t=this.getHomeTarget(e);this.target[1]=Math.round(t.x),this.target[2]=Math.round(t.y),this.target[3]=Math.round(t.x+t.width),this.target[4]=Math.round(t.y+t.height)}else{let t=this.getScaleFactor(),n=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},r=this.width*t,i=this.height*t,a=n.width/r,o=n.height/i,s=r/i;if(e.cover?a>o:a<o){let e=s*n.height,t=(e-n.width)/2;this.target[1]=Math.round(-t+n.x),this.target[2]=Math.round(n.y),this.target[3]=Math.round(e-t+n.x),this.target[4]=Math.round(n.height+n.y)}else{let e=n.width/s,t=(e-n.height)/2;this.target[1]=Math.round(n.x),this.target[2]=Math.round(n.y-t),this.target[3]=Math.round(n.x+n.width),this.target[4]=Math.round(n.y+e-t)}}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,n,r){this.transitionManager.hasPending()&&this.transitionManager.stopTransition(),this.updateFocalPosition(e-t,n-r);let i=t/e,a=r/n;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*i,this.target[4]=this.target[2]+(this.target[4]-this.target[2])*a,this.goHome({position:this.focalPosition}),this.renderer.resize(t,r),this.pendingUpdate=!0,this.transitionManager.resumeTransition()}updateFocalPosition(e,t){if(!this.manualFocalPosition){let e=this.width,t=this.height,n=Math.min(e,t),r=this.x+0,i=this.y+0;if(e<t){let e=this.height-this.width;this.focalPosition=l.DnaFactory.projection({x:r,y:i+e/2,width:n-0,height:n-0}),this.pendingUpdate=!0}else{let e=this.width-this.height;this.focalPosition=l.DnaFactory.projection({x:r+e/2,y:i,width:n-0,height:n-0}),this.pendingUpdate=!0}}}getViewport(){return this._viewport.x=this.target[1],this._viewport.y=this.target[2],this._viewport.width=this.target[3]-this.target[1],this._viewport.height=this.target[4]-this.target[2],this._viewport}constrainBounds(e,{panPadding:t=0,ref:n=!1}={}){let{minX:r,maxX:i,minY:a,maxY:o}=this.getBounds({target:e,padding:t}),s=!1,c=n?e:(0,l.dna)(e),u=Math.round(e[3]-e[1]),d=Math.round(e[4]-e[2]);return r>e[1]&&(s=!0,c[1]=r,c[3]=r+u),a>e[2]&&(s=!0,c[2]=a,c[4]=a+d),i<e[1]&&(s=!0,c[1]=i,c[3]=i+u),o<e[2]&&(s=!0,c[2]=o,c[4]=o+d),[s,c]}getBounds(e){let t=e.target||this.target,n=e.padding,r=this.options.visibilityRatio,i=Math.abs(1-r);if(this.world.hasActiveZone()){let e=this.world.getActiveZone();if(e){e.recalculateBounds();let r=he(t,e.points,n);if(r)return r}}let a=t[3]-t[1],o=this.world.width,s=-a*i,c=o-a-s,l=t[4]-t[2],u=this.world.height,d=-l*i,f=u-l-d,p=Math.round(Math.max(s,c)),m=Math.round(Math.min(s,c)),h=Math.round(Math.max(d,f));return{minX:m,maxX:p,minY:Math.round(Math.min(d,f)),maxY:h}}getScaleFactor(e=!1){let t=this.renderer.getScale(this.target[3]-this.target[1],this.target[4]-this.target[2],e);return t===0?this._lastGoodScale:(this._lastGoodScale=t,t)}copyStrandValues(e,t){e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]}getZoomConstraintState(e){let t=e[3]-e[1],n=e[4]-e[2],r=this.renderer.getScale(t,n),i=r===0?this._lastGoodScale:r;r!==0&&(this._lastGoodScale=r);let a=t*i,o=n*i,s=this.world.width/a>this.world.height/o?a*this.options.maxUnderZoom/this.world.width:o*this.options.maxUnderZoom/this.world.height,c=this.getRendererScreenPosition()?.width,l=c?c/this.world.width:1;return{scaleFactor:i,minScale:s,maxScale:Math.max(l||1,this.options.maxOverZoom)}}constrainTarget(e,{origin:t,panPadding:n=0,ref:r=!1}={}){let i=!1,a=r?e:(0,l.dna)(e),{scaleFactor:o,minScale:s,maxScale:c}=this.getZoomConstraintState(a),u=Math.max(s,Math.min(c,o));if(Math.abs(u-o)>1e-6){let e=t||{x:a[1]+(a[3]-a[1])/2,y:a[2]+(a[4]-a[2])/2},n=(0,l.transform)(a,(0,l.scaleAtOrigin)(o/u,e.x,e.y),this.zoomBuffer);this.copyStrandValues(a,n),i=!0}let[d]=this.constrainBounds(a,{ref:!0,panPadding:n});return[i||d,a]}getZoomedPosition(e,{origin:t,fromPos:n}){let r=n||this.target,{scaleFactor:i,minScale:a,maxScale:o}=this.getZoomConstraintState(r),s=1/e,c=i*s;s<1?c<a&&(e=i/a):c>o&&(e=i/o);let u=(0,l.transform)(r,(0,l.scaleAtOrigin)(e,t?t.x:r[1]+(r[3]-r[1])/2,t?t.y:r[2]+(r[4]-r[2])/2),this.zoomBuffer),d=this.world.hasActiveZone()?0:100;return this.constrainBounds(u,{ref:!0,panPadding:d}),u}clampRegion({x:e,y:t,width:n,height:r,padding:i=0}){let a=this.width,o=this.height,s=n/a<r/o,c=e-i,l=t-i,u=n+i*2,d=r+i*2;if(s){let e=d/o*a;return{x:c-(e-u)/2,y:l,width:e,height:d}}let f=u/a*o;return{x:c,y:l-(f-d)/2,width:u,height:f}}viewerToWorld(e,t){let n=this.getScaleFactor();return this._viewerToWorld.x=this.target[1]+e/n,this._viewerToWorld.y=this.target[2]+t/n,this._viewerToWorld}worldToViewer(e,t,n,r){let i=l.DnaFactory.singleBox(n,r,e,t);return(0,l.mutate)(i,(0,l.compose)((0,l.scale)(this.getScaleFactor()),(0,l.translate)(-this.target[1],-this.target[2]))),{x:i[1],y:i[2],width:i[3]-i[1],height:i[4]-i[2],strand:i}}setScale(e,t){(0,l.mutate)(this.target,(0,l.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2)),this.pendingUpdate=!0}syncTo(e){let t=this.target;return this.target=e.target,this.pendingUpdate=!0,()=>{this.target=t}}stop(){return this.stopId!==void 0&&(window.cancelAnimationFrame(this.stopId),this.stopId=void 0),()=>{this.render(performance.now())}}reset(){this.renderer.reset(),this.resetReadyState(`runtime-reset`)}resetReadyState(e=`manual`){this.ready=!1,this.readyCycle+=1,this.readyReason=e,this.readyTimestamp=void 0,this.renderer.resetReadyState&&this.renderer.resetReadyState(),this.pendingUpdate=!0}getReadyState(){return{ready:this.ready,cycle:this.readyCycle,reason:this.readyReason,timestamp:this.readyTimestamp}}selectZone(e){this.world.selectZone(e),this.pendingUpdate=!0}goToZone(e,t={}){let n=this.world.getZoneById(e);if(!n||(n.recalculateBounds(),n.points[0]===0))return!1;this.world.selectZone(e);let r=this.getHomeTarget({position:n.points,paddingPx:t.paddingPx});return t.immediate?(this.transitionManager.stopTransition(),this.setViewport(r),this.constrainBounds(this.target,{ref:!0}),this.updateControllerPosition(),this.pendingUpdate=!0,!0):(this.transitionManager.applyTransition(l.DnaFactory.singleBox(r.width,r.height,r.x,r.y),void 0,{duration:1e3,easing:$t.easeOutExpo,constrain:!1}),this.updateNextFrame(),this.pendingUpdate=!0,!0)}deselectZone(){this.world.deselectZone(),this.pendingUpdate=!0}getZoneRuntimeState(e,t=this.getViewport()){let n=this.world.getZoneById(e);if(!n)return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1};n.recalculateBounds();let r=this.world.getActiveZone()?.id===e;if(n.points[0]===0)return{zoneId:e,exists:!0,active:r,visibleInViewport:!1};let i=n.points[1],a=n.points[2],o=n.points[3]-n.points[1],s=n.points[4]-n.points[2];return{zoneId:e,exists:!0,active:r,visibleInViewport:i<t.x+t.width&&i+o>t.x&&a<t.y+t.height&&a+s>t.y}}hook(e,t){let n=this.hooks[e].length;if(n!==0)for(let r=0;r<n;r++)this.hooks[e][r](t)}registerHook(e,t){return this.hooks[e].push(t),()=>{this.hooks[e]=this.hooks[e].filter(e=>e!==t)}}updateNextFrame(){this.pendingUpdate=!0}addDebugSubscriber(e){return this.debugSubscribers.add(e),()=>{this.removeDebugSubscriber(e)}}removeDebugSubscriber(e){this.debugSubscribers.delete(e)}hasDebugSubscribers(){return this.debugSubscribers.size>0}emitDebug(e){if(this.debugSubscribers.size!==0)for(let t of this.debugSubscribers)t(e)}};const En={margin:0};var Dn=class{constructor(e,t={}){E(this,`id`,void 0),E(this,`config`,void 0),E(this,`points`,void 0),E(this,`objects`,void 0),Array.isArray(e)?(this.id=e.map(e=>e.id).join(`$$`),this.config={...En,...t},this.objects=[...e]):(this.id=e.id,this.config={...En,margin:typeof e.margin==`number`?e.margin:En.margin,x:e.x,y:e.y,width:e.width,height:e.height},this.objects=[...e.objects||[]]),this.points=(0,l.dna)(5),this.recalculateBounds()}applyProps(e){e.id!==void 0&&(this.id=e.id),this.config={...this.config,...e},this.recalculateBounds()}addObject(e){this.objects.indexOf(e)===-1&&(this.objects.push(e),this.recalculateBounds())}removeObject(e){this.objects=this.objects.filter(t=>t!==e),this.recalculateBounds()}recalculateBounds(){if(!(Number.isFinite(this.config.x)&&Number.isFinite(this.config.y)&&Number.isFinite(this.config.width)&&Number.isFinite(this.config.height)&&this.config.width>0&&this.config.height>0)){this.points.set([0,0,0,0,0]);return}let e=this.config.margin,t=this.config.x,n=this.config.y,r=this.config.width,i=this.config.height;this.points.set([1,t-e,n-e,t+r+e,n+i+e])}getPointsAt(e,t,n){return[]}};let On;if(typeof performance==`object`&&typeof performance.now==`function`){let e=performance;On=()=>e.now()}else{let e=Date,t=e.now();On=()=>e.now()-t}const kn=typeof g.default==`function`?g.default:typeof g.default?.default==`function`?g.default.default:null,An=8,jn=32,Mn=2,Nn=0;var Pn=class{constructor(e){E(this,`world`,void 0),E(this,`zone`,void 0),E(this,`isRegistered`,!1),E(this,`directWorldObjects`,[]),this.world=e,this.zone=new Dn({id:``})}applyProps(e){this.zone.applyProps({id:e.id,x:e.x,y:e.y,width:e.width,height:e.height,margin:e.margin})}appendChild(e){e instanceof ot&&(this.registerDirectWorldObject(e),this.world.appendChild(e))}removeChild(e){e instanceof ot&&(this.unregisterDirectWorldObject(e),this.world.removeChild(e))}insertBefore(e,t){if(e instanceof ot){if(this.registerDirectWorldObject(e),t instanceof ot){this.world.insertBefore(e,t);return}this.world.appendChild(e)}}hideInstance(){}attachToWorld(e){this.isRegistered&&this.world!==e&&(this.world.removeZone(this.zone),this.isRegistered=!1),this.world=e,this.isRegistered||(this.world.addZone(this.zone),this.isRegistered=!0)}unmount(){this.directWorldObjects=[],this.isRegistered&&(this.world.removeZone(this.zone),this.isRegistered=!1)}registerDirectWorldObject(e){this.directWorldObjects.indexOf(e)===-1&&this.directWorldObjects.push(e),this.zone.addObject(e)}unregisterDirectWorldObject(e){this.directWorldObjects=this.directWorldObjects.filter(t=>t!==e),this.zone.removeObject(e)}};function Fn(e,t){if(e instanceof st&&t instanceof Pn){t.attachToWorld(e);return}if(e instanceof Pn){e.appendChild(t);return}e&&e.appendChild&&t&&e.appendChild(t)}function In(e,t){if(e instanceof st&&t instanceof Pn){t.unmount();return}if(e instanceof Pn){e.removeChild(t);return}e&&e.removeChild&&t&&e.removeChild(t)}function Ln(e,t){if(t instanceof Pn){t.unmount();return}return In(e.world,t)}function Rn(e,t,n){if(t instanceof Pn){t.attachToWorld(e.world);return}return zn(e.world,t,n)}function zn(e,t,n){if(e&&e instanceof Tn&&(e=e.world),!(e instanceof st&&t instanceof Pn)){if(e instanceof Pn){e.insertBefore(t,n);return}e&&e.insertBefore&&e.insertBefore(t,n)}}function Bn(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof oe))for(let r of _){let i=r.slice(2).toLowerCase();n[r]!==t[r]&&(t[r]&&e.removeEventListener(i,t[r]),e.addEventListener(i,n[r]))}}function Vn(e,t){let n=Object.keys(t),r=!1;for(let t of n)if(_.indexOf(t)!==-1){let n=y[t];if(n){if(e.activatedEvents.indexOf(n)!==-1)continue;r=!0,e.activatedEvents.push(n)}}r&&e.triggerEventActivation()}const Hn=new Map,Un={};function Wn(e,{args:t=[],...n},r,i,a){if(!(r instanceof Tn)&&a){let e=t=>t.return?e(t.return):t.stateNode&&t.stateNode.containerInfo;r=e(a)}let o,s=r.world;switch(e){case`world`:o=st.withProps({width:n.width,height:n.height,viewingDirection:`left-to-right`}),o.activatedEvents=s.activatedEvents,o.eventHandlers=s.eventHandlers,o.subscriptions=s.subscriptions,o.triggerEventActivation(),s=o;break;case`box`:o=new le;break;case`shape`:o=new pe;break;case`worldObject`:case`world-object`:o=new ot;break;case`zone`:o=new Pn(s);break;case`worldImage`:case`world-image`:o=new J;break;case`texture`:o=new Fe;break;case`compositeImage`:case`composite-image`:o=new Pe({id:n.id,width:n.width,height:n.height,images:[],renderOptions:n.renderOptions});break;case`tiledImage`:case`tiled-image`:o=Y.fromTile(n.uri,n.display,n.tile,n.scaleFactor,void 0,n.format,n.useFloorCalc,n.version3);break;case`mapTiledImage`:case`map-tiled-image`:o=new rt({id:n.id,bounds:n.bounds,worldWidth:n.worldWidth,worldHeight:n.worldHeight,zoom:n.zoom,tileSize:n.tileSize,scaleFactor:n.scaleFactor,tileSource:n.tileSource,tileUrlTemplate:n.tileUrlTemplate,subdomains:n.subdomains});break;case`paragraph`:o=new Nt,o.text=n.children;break;default:return}return Vn(s,n),Bn(o,{},n),o}function Gn(e,t){if(t instanceof st)e.world=t;else if(t instanceof Pn)t.attachToWorld(e.world);else if(t instanceof ot)e.world.appendChild(t);else if(t)throw Error(`Invalid root`)}let Kn=0;const qn=kn?kn({unstable_now:On,now:On,createInstance:Wn,removeChild:In,appendChild:Fn,appendInitialChild:Fn,insertBefore:zn,warnsIfNotActing:!0,supportsMutation:!0,isPrimaryRenderer:!1,scheduleTimeout:typeof setTimeout<`u`?setTimeout:void 0,cancelTimeout:typeof clearTimeout<`u`?clearTimeout:void 0,setTimeout:typeof setTimeout<`u`?setTimeout:void 0,clearTimeout:typeof clearTimeout<`u`?clearTimeout:void 0,noTimeout:-1,appendChildToContainer:Gn,removeChildFromContainer:Ln,createTextInstance(){},insertInContainerBefore:Rn,prepareUpdate(e,t,n,r,i){return Vn(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&Bn(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return Un},getRootHostContext(){return Un},prepareForCommit(e){return e.isCommitting=!0,null},preparePortalMount(){},hideInstance(e){e&&e.points&&(e.points[0]=0)},unhideInstance(e,t){e&&e.points&&(e.points[0]=1)},getPublicInstance(e){return e},hideTextInstance(){throw Error(`Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.`)},resetAfterCommit(e){e.isCommitting=!1,e.pendingUpdate=!0,e.world&&e.world.needsRecalculate&&(e.world.recalculateWorldSize(),e.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(e){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return 32},getInstanceFromNode(e){throw Error(`Not implemented`)},getInstanceFromScope(e){throw Error(`Not implemented`)},prepareScopeUpdate(e,t){throw Error(`Not implemented`)},logRecoverableError(){},requestPostPaintCallback(){},rendererPackageName:`@atlas-viewer/atlas`,rendererVersion:p.version,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(e){Kn=e},getCurrentUpdatePriority(){return Kn},resolveUpdatePriority(){if(Kn!==0)return Kn;switch(typeof window<`u`&&window.event?.type){case`click`:case`contextmenu`:case`dblclick`:case`pointercancel`:case`pointerdown`:case`pointerup`:return 2;case`pointermove`:case`pointerout`:case`pointerover`:case`pointerenter`:case`pointerleave`:case`wheel`:return 8;default:return 32}},resetFormInstance(){}}):null;qn&&qn.injectIntoDevTools();function Jn(e,t){let n=Hn.get(e);if(n){if(!qn)return;qn.updateContainer(null,n,null,()=>{Hn.delete(e),t&&t(e)})}}const Yn={render(e,t){let n=Hn.get(t);if(qn)if(n)qn.updateContainer(e,n,null);else{let n=qn.createContainer(t,0,null,!1,null,``,()=>{},null);qn.updateContainer(e,n,null),Hn.set(t,n)}},unmountComponentAtNode(e,t){Jn(e,t)}},Xn=typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)?p.useLayoutEffect:p.useEffect,Zn=p.default.memo(({children:e,setIsReady:t,onCreated:n,bounds:r,preset:i,mode:a=`explore`,interactionMode:o=`popmotion`})=>{let s=(0,p.useRef)(new WeakSet);return(0,p.useEffect)(()=>{if(!i||s.current.has(i))return;s.current.add(i),o!==`pdf-scroll-zone`&&i.runtime.goHome();let e=!1;return Promise.resolve(n?.(i)).then(()=>{e||t(!0)}),()=>{e=!0}},[o,n,i,t]),Xn(()=>{if(i){let t=i.runtime;a!==t.mode&&(t.mode=a),Yn.render((0,h.jsx)(p.default.StrictMode,{children:(0,h.jsx)(bn.Provider,{value:r,children:(0,h.jsx)(xn.Provider,{value:a,children:(0,h.jsx)(yn.Provider,{value:i,children:e})})})}),t)}},[i,a,r,e]),Xn(()=>{if(i){let e=i.runtime;return()=>{Yn.unmountComponentAtNode(e)}}return()=>{}},[i]),null}),Qn=p.default.forwardRef((e,t)=>(0,h.jsx)(`div`,{...e,ref:t,part:e.className})),$n=()=>(0,p.useContext)(yn),er=()=>{let e=$n();return e?e.runtime:void 0},tr=new Set,nr=new Map,rr=new Map,ir=[];let ar,or,sr={activeCandidateId:void 0,selectedRuntimeId:void 0,candidates:[],runtimes:[]};function cr(){let e=Array.from(nr.entries()).map(([e,t],n)=>({id:e,runtime:t.runtime,preset:t.preset,label:`Atlas ${n+1} (${e.slice(0,6)})`}));sr={activeCandidateId:ar,selectedRuntimeId:or,candidates:[...ir],runtimes:e}}function lr(){cr();for(let e of tr)e()}function ur(){if(or&&nr.has(or))return;let e=nr.keys().next();or=e.done?void 0:e.value}function dr(){ar&&rr.has(ar)||(ar=ir[0])}function fr(e){return tr.add(e),()=>{tr.delete(e)}}function pr(){return sr}function mr(e){let t=e.runtime.id;return nr.set(t,{runtime:e.runtime,preset:e}),ur(),lr(),()=>{hr(t)}}function hr(e){nr.delete(e),ur(),lr()}function gr(e){return rr.get(e.id)||ir.push(e.id),rr.set(e.id,e),dr(),!or&&e.runtimeId&&nr.has(e.runtimeId)&&(or=e.runtimeId),ur(),lr(),()=>{vr(e.id)}}function _r(e,t){let n=rr.get(e);n&&(n.runtimeId=t,!or&&t&&nr.has(t)&&(or=t),ur(),lr())}function vr(e){rr.delete(e);let t=ir.indexOf(e);t!==-1&&ir.splice(t,1),dr(),lr()}function yr(e){if(!e){or=void 0,ur(),lr();return}nr.has(e)&&(or=e,lr())}function br(e){if(e)return nr.get(e)}cr();function xr(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)xr(n,t);return t}return t.push(e),t}function Sr(e,t,n,r){if(e){if(e instanceof ot){if(Array.isArray(e.layers))for(let n of e.layers)Sr(n,t,e.id,r);return}if(e instanceof Pe){let r=e.id,i=new Set([...e.allImages,...e.images]);for(let e of i)Sr(e,t,n,r);return}if(e instanceof J||e instanceof Y){let i={id:e.id,type:e.constructor.name,ownerId:n,compositeId:r,anomalies:[]};e.__host?.canvas&&(i.canvas={loading:!!e.__host.canvas.loading,indices:e.__host.canvas.indices?.length||0,loaded:e.__host.canvas.loaded?.length||0},i.canvas.loading&&i.canvas.indices===0&&i.anomalies.push(`Canvas host marked loading with empty queue.`),i.canvas.loaded>i.canvas.indices&&i.canvas.indices>0&&i.anomalies.push(`Canvas loaded count exceeds scheduled indices.`)),e.__host?.webgl&&(i.webgl={loading:e.__host.webgl.loading?.length||0,loaded:e.__host.webgl.loaded?.length||0,textures:e.__host.webgl.textures?.filter(Boolean)?.length||0},i.webgl.loading>0&&i.webgl.textures===0&&i.webgl.loaded===0&&i.anomalies.push(`WebGL has pending loads but no loaded textures.`)),t.push(i)}}}function Cr(e){let t=[],n=e.getObjects();for(let e of n)e&&Sr(e,t,e.id,void 0);return t}function wr(e){let t=xr(e.renderer);return{rendererTypes:t.map(e=>e?.constructor?.name||`UnknownRenderer`),canvas:t.filter(e=>e?.loadingQueue!==void 0).map(e=>({type:e?.constructor?.name||`CanvasRenderer`,loadingQueue:e.loadingQueue?.length||0,imagesPending:e.imagesPending||0,imagesLoaded:e.imagesLoaded||0,tasksRunning:e.tasksRunning||0,firstMeaningfulPaint:!!e.firstMeaningfulPaint})),webgl:t.filter(e=>e?.gl!==void 0).map(e=>({type:e?.constructor?.name||`WebGLRenderer`}))}}function Tr(e,t=30){let n=new Map;for(let t of e){if(t.type!==`paint`||!t.compositeId)continue;n.has(t.frame)||n.set(t.frame,new Map);let e=n.get(t.frame);e.has(t.compositeId)||e.set(t.compositeId,[]),e.get(t.compositeId).push({paintId:t.paintId,paintType:t.paintType,tileIndex:t.tileIndex,imageUrl:t.imageUrl})}return Array.from(n.entries()).sort((e,t)=>t[0]-e[0]).slice(0,t).map(([e,t])=>({frame:e,composites:Array.from(t.entries()).map(([e,t])=>({compositeId:e,layers:t}))}))}function Er(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)Er(n,t);return t}return t.push(e),t}function Dr(e,t){if(e){if(e instanceof J||e instanceof Y){t.push(e);return}if(e instanceof Pe){let n=new Set([...e.allImages,...e.images]);for(let e of n)Dr(e,t);return}if(e instanceof ot&&Array.isArray(e.layers))for(let n of e.layers)Dr(n,t)}}function Or(e){let t=[],n=e.getObjects();for(let e of n)e&&Dr(e,t);return t}function kr(e){let t=Or(e.world),n=0;for(let e of t)n++,e.__host||(e.__host={}),e.__host.canvas={canvas:void 0,canvases:[],tiles:{},indices:[],loaded:[],loading:!1},e.__host.webgl&&(e.__host.webgl.loading=[],e.__host.webgl.loaded=[],Array.isArray(e.__host.webgl.textures)&&(e.__host.webgl.textures=[...Array(e.points.length/5)]));let r=Er(e.renderer),i=0;for(let e of r)i++,Array.isArray(e.loadingQueue)&&(e.loadingQueue=[]),Array.isArray(e.tileRequestQueue)&&(e.tileRequestQueue=[]),Array.isArray(e.drawCalls)&&(e.drawCalls=[]),Array.isArray(e.invalidated)&&(e.invalidated=[]),Array.isArray(e.imageIdsLoaded)&&(e.imageIdsLoaded=[]),e.hostCache?.clear&&e.hostCache.clear(),typeof e.tasksRunning==`number`&&(e.tasksRunning=0),typeof e.imagesPending==`number`&&(e.imagesPending=0),typeof e.imagesLoaded==`number`&&(e.imagesLoaded=0),typeof e.pendingDrawCall==`boolean`&&(e.pendingDrawCall=!1),typeof e.loadingQueueOrdered==`boolean`&&(e.loadingQueueOrdered=!0),e.requiredTileKeys?.clear&&e.requiredTileKeys.clear(),e.requiredPrefetchTileKeys?.clear&&e.requiredPrefetchTileKeys.clear(),e.queuedTileRequestKeys?.clear&&e.queuedTileRequestKeys.clear(),e.imageRequestPool?.cancelAll&&e.imageRequestPool.cancelAll({silent:!0}),e.inFlightImageLoads?.clear&&e.inFlightImageLoads.clear(),typeof e.reset==`function`&&e.reset();return e.updateNextFrame(),{imageHostsReset:n,renderersReset:i}}async function Ar(e,t,n){if(p.version.startsWith(`18.`)||p.version.startsWith(`19.`)){let r=await import(`react-dom/client`),i=r.default?r.default.createRoot:r.createRoot;n.current||(n.current=i(e)),n.current.render(t)}else if(typeof ReactDOM<`u`){let{render:r,unmountComponentAtNode:i}=ReactDOM;r(t,e),n.current={unmount(){i(e)}}}else{let r=await import(`react-dom`),i=r.default?r.default.render:r.render,a=r.default?r.default.unmountComponentAtNode:r.unmountComponentAtNode;i(t,e),n.current={unmount(){a(e)}}}}const jr=[`Overview`,`World`,`Inspector`,`Events`,`Images`,`Actions`];let Mr=0;const Nr=e=>{let t=er(),n=e.runtimeId||t?.id,r=(0,p.useRef)(null),i=(0,p.useRef)(null);return(0,p.useEffect)(()=>{if(typeof document>`u`)return;let e=document.createElement(`div`);return e.dataset.atlasDevtools=`true`,document.body.appendChild(e),r.current=e,()=>{i.current?.unmount&&i.current.unmount(),e.remove(),r.current=null}},[]),(0,p.useEffect)(()=>{let t=r.current;t&&Ar(t,(0,h.jsx)(zr,{...e,runtimeId:n}),i)}),null};function Pr(e,t,n){e.push(t),e.length>n&&e.splice(0,e.length-n)}function Fr(e){if(!(!e||e.length<5))return{x1:Number(e[1].toFixed?e[1].toFixed(2):e[1]),y1:Number(e[2].toFixed?e[2].toFixed(2):e[2]),x2:Number(e[3].toFixed?e[3].toFixed(2):e[3]),y2:Number(e[4].toFixed?e[4].toFixed(2):e[4])}}function Ir(e){return e?.constructor?.name||e?.type||`Unknown`}function Lr(e){let t=[],n=new Set,r=(e,i,a)=>{if(!e||n.has(e))return;n.add(e);let o=e.id?` #${e.id}`:``;if(t.push({key:a,depth:i,label:`${Ir(e)}${o}`,ref:e}),Array.isArray(e.layers))for(let t=0;t<e.layers.length;t++)r(e.layers[t],i+1,`${a}.layers.${t}`);if(Array.isArray(e.images)||Array.isArray(e.allImages)){let t=new Set([...e.allImages||[],...e.images||[]]),n=0;for(let e of t)r(e,i+1,`${a}.images.${n}`),n++}};r(e.world,0,`world`);let i=e.world.getObjects();for(let e=0;e<i.length;e++){let t=i[e];t&&r(t,1,`world.objects.${e}`)}return t}function Rr(e){return e?.__host?e.__host.canvas?`Canvas host loading=${!!e.__host.canvas.loading} indices=${e.__host.canvas.indices?.length||0} loaded=${e.__host.canvas.loaded?.length||0}`:e.__host.webgl?`WebGL host loading=${e.__host.webgl.loading?.length||0} loaded=${e.__host.webgl.loaded?.length||0}`:`Host attached`:`No host`}const zr=({initialOpen:e=!1,bottom:t=16,right:n=16,zIndex:r=1e3,maxEvents:i=500,maxRuntimeEvents:a=1e3,runtimeId:o,className:s,style:c})=>{let u=(0,p.useRef)(`devtools-${++Mr}`),[d,f]=(0,p.useState)(e),[m,g]=(0,p.useState)(`Overview`),[_,v]=(0,p.useState)(!1),[y,b]=(0,p.useState)(!1),[x,S]=(0,p.useState)(null),[C,w]=(0,p.useState)(`explore`),[T,ee]=(0,p.useState)(``),[E,D]=(0,p.useState)(!1),[O,k]=(0,p.useState)(``),[A,j]=(0,p.useState)(`all`),[,M]=(0,p.useState)(0),N=(0,p.useRef)([]),P=(0,p.useRef)([]),F=(0,p.useRef)(null),te=(0,p.useRef)(!1),I=()=>{te.current||(te.current=!0,requestAnimationFrame(()=>{te.current=!1,M(e=>e+1)}))},L=o;(0,p.useEffect)(()=>gr({id:u.current,runtimeId:L}),[]),(0,p.useEffect)(()=>{_r(u.current,L)},[L]);let ne=(0,p.useSyncExternalStore)(fr,pr,pr),R=ne.activeCandidateId===u.current,z=ne.selectedRuntimeId||L||ne.runtimes[0]?.id,B=br(z),V=B?.runtime,H=B?.preset;if((0,p.useEffect)(()=>{z&&z!==ne.selectedRuntimeId&&yr(z)},[z,ne.selectedRuntimeId]),(0,p.useEffect)(()=>{V&&w(V.mode)},[V?.id]),(0,p.useEffect)(()=>{if(!R||!d||!V)return;let e=V.addDebugSubscriber(e=>{_||(Pr(N.current,e,a),I())}),t=V.world.addDebugSubscriber(e=>{_||(Pr(P.current,e,i),I())});return()=>{e(),t()}},[R,d,V?.id,_,i,a]),(0,p.useEffect)(()=>{if(!R||!d)return;let e=setInterval(()=>{M(e=>e+1)},250);return()=>{clearInterval(e)}},[R,d]),(0,p.useEffect)(()=>{if(!y||!V||!H?.em?.element)return;let e=H.em.element,t=t=>{let n=e.getBoundingClientRect(),{x:r,y:i}=V.viewerToWorld(t.clientX-n.left,t.clientY-n.top),a=l.DnaFactory.singleBox(1,1,r,i),o=V.world.getObjectsAt(a,!0),s=o[o.length-1];if(s){let e=s[1];S(e.length?e[e.length-1]:s[0])}g(`Inspector`),b(!1),I(),t.preventDefault(),t.stopPropagation()};return e.addEventListener(`pointerdown`,t,!0),()=>{e.removeEventListener(`pointerdown`,t,!0)}},[y,V?.id,H?.em?.element]),(0,p.useEffect)(()=>()=>{let e=F.current;e&&(F.current=null,e())},[]),typeof window>`u`||typeof document>`u`||!R)return null;let U=V?Lr(V):[],W=x||U[0]?.ref,re=V?wr(V):{rendererTypes:[],canvas:[],webgl:[]},G=V?Cr(V.world):[],ie=Tr(N.current,15),ae=P.current.filter(e=>A===`all`||e.type===A),K=(()=>{if(!V)return{width:220,height:220,rects:[],viewport:null};let e=V.world.getPoints(),t=Math.max(1,V.world.width),n=Math.max(1,V.world.height),r=220/t,i=220/n,a=[],o=Math.min(e.length/5,300);for(let t=0;t<o;t++){let n=t*5;e[n]!==0&&a.push({x:e[n+1]*r,y:e[n+2]*i,width:Math.max(1,(e[n+3]-e[n+1])*r),height:Math.max(1,(e[n+4]-e[n+2])*i)})}return{width:220,height:220,rects:a,viewport:{x:V.target[1]*r,y:V.target[2]*i,width:Math.max(1,(V.target[3]-V.target[1])*r),height:Math.max(1,(V.target[4]-V.target[2])*i)}}})(),oe={position:`fixed`,right:n,bottom:t,zIndex:r,color:`#eef1ff`,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace`,pointerEvents:`auto`,...c||{}},q={background:`#111827`,color:`#f9fafb`,border:`1px solid #374151`,borderRadius:999,fontSize:12,padding:`8px 12px`,cursor:`pointer`,boxShadow:`0 8px 24px rgba(0, 0, 0, 0.35)`},se={width:460,maxHeight:`70vh`,overflow:`hidden`,background:`#0f172a`,border:`1px solid #334155`,borderRadius:10,boxShadow:`0 12px 36px rgba(0, 0, 0, 0.4)`,marginBottom:10,display:`flex`,flexDirection:`column`},ce={padding:10,overflow:`auto`,fontSize:12,lineHeight:1.4,display:`grid`,gap:8},le=()=>{!V||F.current||(F.current=V.stop(),D(!0))},ue=()=>{let e=F.current;F.current=null,e&&e(),D(!1)},de=()=>{if(V){if(F.current){let e=F.current;F.current=null,e(),requestAnimationFrame(()=>{V&&(F.current=V.stop(),D(!0))});return}V.updateNextFrame()}},fe=()=>{N.current=[],P.current=[],k(`Logs cleared`),I()};return(0,h.jsxs)(`div`,{className:s,style:oe,children:[d?(0,h.jsxs)(`div`,{style:se,children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:10,borderBottom:`1px solid #1f2937`},children:[(0,h.jsx)(`strong`,{style:{fontSize:12,letterSpacing:.4},children:`Atlas DevTools`}),(0,h.jsx)(`select`,{style:{marginLeft:`auto`,fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},value:z||``,onChange:e=>yr(e.target.value),children:ne.runtimes.map(e=>(0,h.jsx)(`option`,{value:e.id,children:e.label},e.id))}),(0,h.jsx)(`button`,{style:q,onClick:()=>f(!1),children:`Close`})]}),(0,h.jsx)(`div`,{style:{display:`flex`,gap:6,padding:8,borderBottom:`1px solid #1f2937`,flexWrap:`wrap`},children:jr.map(e=>(0,h.jsx)(`button`,{style:{...q,padding:`4px 8px`,borderRadius:6,background:m===e?`#334155`:`#111827`},onClick:()=>g(e),children:e},e))}),(0,h.jsxs)(`div`,{style:ce,children:[V?null:(0,h.jsx)(`div`,{children:`No Atlas runtime available.`}),V&&m===`Overview`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{children:[`Runtime id: `,V.id]}),(0,h.jsxs)(`div`,{children:[`Mode: `,V.mode]}),(0,h.jsxs)(`div`,{children:[`Scale factor: `,V.getScaleFactor().toFixed(4)]}),(0,h.jsxs)(`div`,{children:[`World: `,V.world.width,` x `,V.world.height]}),(0,h.jsxs)(`div`,{children:[`Target: `,JSON.stringify(Fr(V.target))]}),(0,h.jsxs)(`div`,{children:[`Pending update: `,String(V.pendingUpdate)]}),(0,h.jsxs)(`div`,{children:[`Renderer chain: `,re.rendererTypes.join(` -> `)||`None`]}),(0,h.jsxs)(`div`,{children:[`Runtime log entries: `,N.current.length]}),(0,h.jsxs)(`div`,{children:[`World log entries: `,P.current.length]})]}):null,V&&m===`World`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{children:[`World dimensions: `,V.world.width,` x `,V.world.height]}),(0,h.jsxs)(`div`,{children:[`Viewport target: `,JSON.stringify(Fr(V.target))]}),(0,h.jsxs)(`svg`,{width:K.width,height:K.height,style:{background:`#020617`,border:`1px solid #334155`},children:[K.rects.map((e,t)=>(0,h.jsx)(`rect`,{x:e.x,y:e.y,width:e.width,height:e.height,fill:`rgba(56, 189, 248, 0.18)`,stroke:`rgba(56, 189, 248, 0.7)`},`rect-${t}`)),K.viewport?(0,h.jsx)(`rect`,{x:K.viewport.x,y:K.viewport.y,width:K.viewport.width,height:K.viewport.height,fill:`rgba(251, 191, 36, 0.1)`,stroke:`rgba(251, 191, 36, 1)`}):null]})]}):null,V&&m===`Inspector`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{style:{display:`flex`,gap:8},children:(0,h.jsx)(`button`,{style:q,onClick:()=>b(e=>!e),children:y?`Cancel Pick`:`Pick in Viewport`})}),(0,h.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6},children:U.map(e=>(0,h.jsx)(`button`,{onClick:()=>S(e.ref),style:{width:`100%`,display:`block`,textAlign:`left`,padding:`2px 6px 2px ${6+e.depth*14}px`,background:W===e.ref?`#1e293b`:`transparent`,color:`#e2e8f0`,border:0,cursor:`pointer`,fontSize:12},children:e.label},e.key))}),W?(0,h.jsxs)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[(0,h.jsxs)(`div`,{children:[`Type: `,Ir(W)]}),(0,h.jsxs)(`div`,{children:[`ID: `,W.id||`(none)`]}),(0,h.jsxs)(`div`,{children:[`Points: `,JSON.stringify(Fr(W.points))]}),(0,h.jsxs)(`div`,{children:[`Display scale: `,W.display?.scale??`(n/a)`]}),(0,h.jsxs)(`div`,{children:[`Crop: `,W.cropData?JSON.stringify(W.cropData):`(none)`]}),(0,h.jsxs)(`div`,{children:[`Host: `,Rr(W)]})]}):null]}):null,V&&m===`Events`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:()=>v(e=>!e),children:_?`Resume Log`:`Pause Log`}),(0,h.jsx)(`button`,{style:q,onClick:fe,children:`Clear`}),(0,h.jsxs)(`select`,{value:A,onChange:e=>j(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,h.jsx)(`option`,{value:`all`,children:`All`}),(0,h.jsx)(`option`,{value:`trigger`,children:`Trigger`}),(0,h.jsx)(`option`,{value:`pointer`,children:`Pointer`}),(0,h.jsx)(`option`,{value:`touch`,children:`Touch`})]})]}),(0,h.jsx)(`div`,{style:{maxHeight:240,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:ae.slice().reverse().map((e,t)=>(0,h.jsxs)(`div`,{style:{marginBottom:4},children:[`[`,e.type,`] `,JSON.stringify(e)]},`event-${t}`))})]}):null,V&&m===`Images`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{children:`Renderer health`}),re.canvas.map((e,t)=>(0,h.jsxs)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[(0,h.jsx)(`div`,{children:e.type}),(0,h.jsxs)(`div`,{children:[`loadingQueue: `,e.loadingQueue]}),(0,h.jsxs)(`div`,{children:[`imagesPending: `,e.imagesPending]}),(0,h.jsxs)(`div`,{children:[`imagesLoaded: `,e.imagesLoaded]}),(0,h.jsxs)(`div`,{children:[`tasksRunning: `,e.tasksRunning]}),(0,h.jsxs)(`div`,{children:[`firstMeaningfulPaint: `,String(e.firstMeaningfulPaint)]})]},`canvas-${t}`)),re.webgl.map((e,t)=>(0,h.jsx)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:(0,h.jsx)(`div`,{children:e.type})},`webgl-${t}`)),(0,h.jsxs)(`div`,{children:[`Image hosts (`,G.length,`)`]}),(0,h.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:G.map(e=>(0,h.jsxs)(`div`,{style:{marginBottom:6},children:[(0,h.jsxs)(`div`,{children:[e.type,` #`,e.id]}),(0,h.jsxs)(`div`,{children:[`owner: `,e.ownerId||`(none)`,` composite: `,e.compositeId||`(none)`]}),(0,h.jsxs)(`div`,{children:[`canvas: `,e.canvas?JSON.stringify(e.canvas):`(none)`]}),(0,h.jsxs)(`div`,{children:[`webgl: `,e.webgl?JSON.stringify(e.webgl):`(none)`]}),e.anomalies.length?(0,h.jsxs)(`div`,{children:[`anomalies: `,e.anomalies.join(` | `)]}):null]},`${e.type}-${e.id}-${e.ownerId||`none`}`))}),(0,h.jsx)(`div`,{children:`Chosen composite layers by frame`}),(0,h.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:ie.map(e=>(0,h.jsxs)(`div`,{style:{marginBottom:8},children:[(0,h.jsxs)(`div`,{children:[`frame `,e.frame]}),e.composites.map(t=>(0,h.jsxs)(`div`,{style:{paddingLeft:8},children:[(0,h.jsxs)(`div`,{children:[`composite `,t.compositeId]}),t.layers.map((e,n)=>(0,h.jsxs)(`div`,{style:{paddingLeft:10},children:[e.paintType,` #`,e.paintId,` tile=`,e.tileIndex]},`${t.compositeId}-${n}`))]},`${e.frame}-${t.compositeId}`))]},`frame-${e.frame}`))})]}):null,V&&m===`Actions`?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:E?ue:le,children:E?`Resume Loop`:`Pause Loop`}),(0,h.jsx)(`button`,{style:q,onClick:de,children:`Step Frame`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.updateNextFrame(),children:`Repaint`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.triggerResize(),children:`Trigger Resize`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,h.jsxs)(`select`,{value:C,onChange:e=>w(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,h.jsx)(`option`,{value:`explore`,children:`explore`}),(0,h.jsx)(`option`,{value:`sketch`,children:`sketch`}),(0,h.jsx)(`option`,{value:`static`,children:`static`})]}),(0,h.jsx)(`button`,{style:q,onClick:()=>{V.mode=C,V.updateNextFrame()},children:`Apply Mode`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.goHome(),children:`goHome`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.zoomIn(),children:`zoomIn`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.zoomOut(),children:`zoomOut`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.world.constraintBounds(!0),children:`constrain-bounds`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,h.jsxs)(`select`,{value:T,onChange:e=>ee(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,h.jsx)(`option`,{value:``,children:`Select zone`}),V.world.zones.map((e,t)=>(0,h.jsx)(`option`,{value:String(e.id||t),children:e.id||`zone-${t}`},`${e.id}-${t}`))]}),(0,h.jsx)(`button`,{style:q,onClick:()=>{T&&V.selectZone(T)},children:`Select Zone`}),(0,h.jsx)(`button`,{style:q,onClick:()=>V.deselectZone(),children:`Deselect Zone`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,h.jsx)(`button`,{style:q,onClick:()=>{let e=kr(V);k(`Reset image hosts=${e.imageHostsReset}, renderers=${e.renderersReset}`),I()},children:`Recover Images`}),(0,h.jsx)(`button`,{style:q,onClick:fe,children:`Clear Logs`})]}),O?(0,h.jsx)(`div`,{children:O}):null]}):null]})]}):null,(0,h.jsx)(`button`,{style:q,onClick:()=>f(e=>!e),children:d?`Hide DevTools`:`Open DevTools`})]})};function Br(e){return(0,p.useMemo)(()=>Pt(e),e)}function Vr(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i],a=t[i];r!==a&&(n[i]={before:r,after:a})}return Object.keys(n).length>0?n:null}function Hr(e,t=``,n=!1){let r=(0,p.useRef)(e);r.current&&n&&(console.log(`Diff:`,t,Vr(r.current,e)),r.current=e)}function Ur(e,t){return!(!(e instanceof J||e instanceof Y)||e.crop||e.cropData||e.display.rotation||e.style&&e.style.opacity!==void 0&&e.style.opacity!==1||e.__owner?.value?.rotation)}const Wr=new Map;var Gr=class{constructor(e,t){E(this,`canvas`,void 0),E(this,`gl`,void 0),E(this,`options`,void 0),E(this,`fatalImageError`,void 0),E(this,`program`,void 0),E(this,`fragmentShader`,void 0),E(this,`vertexShader`,void 0),E(this,`rectBuffer`,void 0),E(this,`fragmentShaderSource`,`
21
+ function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),Ht=o(((e,t)=>{var n=zt(),r=Vt(),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})),Ut=o(((e,t)=>{t.exports=Ht()})),Wt=c(Ut(),1);const $=Math.pow,Gt=Math.sqrt,Kt=Math.sin,qt=Math.cos,Jt=Math.PI,Yt=1.70158,Xt=Yt*1.525,Zt=Yt+1,Qt=2*Jt/3,$t=2*Jt/4.5,en=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},tn={linear:e=>e,easeInQuad:function(e){return e*e},easeOutQuad:function(e){return 1-(1-e)*(1-e)},easeInOutQuad:function(e){return e<.5?2*e*e:1-$(-2*e+2,2)/2},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return 1-$(1-e,3)},easeInOutCubic:function(e){return e<.5?4*e*e*e:1-$(-2*e+2,3)/2},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1-$(1-e,4)},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-$(-2*e+2,4)/2},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1-$(1-e,5)},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1-$(-2*e+2,5)/2},easeInSine:function(e){return 1-qt(e*Jt/2)},easeOutSine:function(e){return Kt(e*Jt/2)},easeInOutSine:function(e){return-(qt(Jt*e)-1)/2},easeInExpo:function(e){return e===0?0:$(2,10*e-10)},easeOutExpo:function(e){return e===1?1:1-$(2,-10*e)},easeInOutExpo:function(e){return e===0?0:e===1?1:e<.5?$(2,20*e-10)/2:(2-$(2,-20*e+10))/2},easeInCirc:function(e){return 1-Gt(1-$(e,2))},easeOutCirc:function(e){return Gt(1-$(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-Gt(1-$(2*e,2)))/2:(Gt(1-$(-2*e+2,2))+1)/2},easeInBack:function(e){return Zt*e*e*e-Yt*e*e},easeOutBack:function(e){return 1+Zt*$(e-1,3)+Yt*$(e-1,2)},easeInOutBack:function(e){return e<.5?$(2*e,2)*((Xt+1)*2*e-Xt)/2:($(2*e-2,2)*((Xt+1)*(e*2-2)+Xt)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-$(2,10*e-10)*Kt((e*10-10.75)*Qt)},easeOutElastic:function(e){return e===0?0:e===1?1:$(2,-10*e)*Kt((e*10-.75)*Qt)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-($(2,20*e-10)*Kt((20*e-11.125)*$t))/2:$(2,-20*e+10)*Kt((20*e-11.125)*$t)/2+1},easeInBounce:function(e){return 1-en(1-e)},easeOutBounce:en,easeInOutBounce:function(e){return e<.5?(1-en(1-2*e))/2:(1+en(2*e-1))/2}},nn=`pan`,rn=`scroll`,an=`gesture`,on={zoomOutFactor:.8,zoomInFactor:1.25,maxZoomFactor:1,minZoomFactor:.05,zoomDuration:300,zoomWheelConstant:20,zoomClamp:.6,panBounceStiffness:120,panBounceDamping:15,panTimeConstant:325,panPower:.1,enablePanMomentum:!0,panMomentumStrength:1,nudgeDistance:100,panPadding:0,devicePixelRatio:1,enableWheel:!0,enableClickToZoom:!1,enableDoubleClickZoom:!0,enableDoubleTapZoom:!0,enableHoldToHome:!0,ignoreSingleFingerTouch:!1,enablePanOnWait:!1,requireMetaKeyForWheelZoom:!1,wheelInExploreModeOnly:!1,holdToHomeDelayMs:1e3,holdToHomeMoveTolerancePx:12,panOnWaitDelay:40,onPanInSketchMode:()=>{},parentElement:null},sn=(e={})=>({start:t=>{let{zoomWheelConstant:n,enableWheel:r,enableClickToZoom:i,enableDoubleClickZoom:a,enableDoubleTapZoom:o,enableHoldToHome:s,ignoreSingleFingerTouch:c,enablePanOnWait:u,panOnWaitDelay:d,parentElement:f,requireMetaKeyForWheelZoom:p,wheelInExploreModeOnly:m,holdToHomeDelayMs:h,holdToHomeMoveTolerancePx:g,enablePanMomentum:_,panMomentumStrength:v,panBounceStiffness:y,panBounceDamping:b,panTimeConstant:S,panPadding:C}={...on,...e},w={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:(0,l.dna)(5),multiTouch:{distance:0},hasMovedSincePress:!1},T=[],E={active:!1,vx:0,vy:0},ee=null,D,te=0,O,k,A=0,j,M=null,N=!1,P=!1,ne=0,F=0;function I(){T.length=0}function L(e,t){let n=performance.now(),r=T[T.length-1];if(r&&r.x===e&&r.y===t){r.t=n;return}for(T.push({x:e,y:t,t:n});T.length>1&&n-T[0].t>140;)T.shift()}function R(){E.active=!1,E.vx=0,E.vy=0}function z(){ee=null,D=void 0}function B(){A=0,j=void 0}function V(){(N||P)&&_e(void 0)}function re(){M!==null&&(window.clearTimeout(M),M=null)}function H(){re(),V(),N=!1,P=!1}function U(e){if(!a||t.mode!==`explore`||w.hasMovedSincePress||!e)return B(),!1;let n=performance.now(),r=j&&A>0&&n-A<=350&&x(j,e)<=100;return A=n,j={...e},r?(t.world.zoomIn(e),B(),!0):!1}function ie(e,n){if(!s||t.mode!==`explore`){P=!1;return}re(),N=!0,P=!1,ne=e,F=n,_e(`hold-home`),M=window.setTimeout(()=>{if(M=null,!N||t.mode!==`explore`||!w.isPressing){H();return}N=!1,P=!0,R(),I(),z(),t.transitionManager.stopTransition(),w.isPressing=!1,w.hasMovedSincePress=!1,B(),Y=``,he=0,k=void 0,_e(`hold-home`),_e(void 0,`notice`),t.world.goHome()},h)}function W(e,n){return P?!0:N?t.mode===`explore`?Math.hypot(e-ne,n-F)<=g?!0:(re(),V(),N=!1,!1):(H(),!1):!1}function ae(){if(!o||t.mode!==`explore`||w.hasMovedSincePress||!k)return!1;let e=performance.now();if(he&&e-he>250)return!1;let n=O&&te>0&&e-te<=350&&x(O,k)<=100;if(te=e,O={...k},!n)return!1;let r=t.isViewportAtHomeZoomLevel({tolerance:.1})?t.getHomeTarget({cover:!0}):t.getHomeTarget();return t.transitionManager.goToRegion(r,{transition:{duration:500,easing:tn.easeInOutQuad}}),te=0,O=void 0,!0}function oe(e,t,n,r){let i=Math.min(n,32)/1e3,a=t*1e3,o=e+a*i,s=o-r,c=-y*s-b*a,l=a+c*i;return{position:o+.5*c*i*i,velocity:l/1e3}}function G(e){t.transitionManager.customTransition(n=>{n.from=(0,l.dna)(t.target),n.to=e,n.elapsed_time=0,n.total_time=0,n.timingFunction=tn.easeInOutExpo,n.done=!1})}function se(){if(T.length<2)return null;let e=performance.now(),n=T[T.length-1];if(e-n.t>60)return null;let r=T[0];for(let e=T.length-2;e>=0&&(r=T[e],!(n.t-r.t>=80));e--);let i=n.t-r.t;return i<=0||Math.hypot(n.x-r.x,n.y-r.y)*t.getScaleFactor()<5?null:{vx:(n.x-r.x)/i,vy:(n.y-r.y)/i}}function K(){if(!_||!w.hasMovedSincePress||T.length<2)return!1;let e=se();if(!e)return!1;let n=Math.max(0,v),r=e.vx*n,i=e.vy*n;return Math.hypot(r,i)*t.getScaleFactor()<.08?!1:(E.active=!0,E.vx=r,E.vy=i,t.updateNextFrame(),!0)}function ce(){if((N||P)&&H(),!w.isPressing){z(),ue();return}let e=t.mode===`explore`?K():!1;t.mode===`explore`&&!e&&t.world.constraintBounds(),w.isPressing=!1,w.hasMovedSincePress=!1,I(),z(),ue()}function le(){if(!w.isPressing){z(),ue();return}if(R(),t.mode===`explore`){let e=t.transitionManager.getPendingTransition(),n=ee||(e&&e.total_time===0&&!e.done?e.to:t.target);t.transitionManager.constrainTarget(n,{origin:D,panPadding:C})}w.isPressing=!1,w.hasMovedSincePress=!1,I(),z(),ue()}t.world.activatedEvents.push(`onMouseUp`,`onMouseDown`,`onMouseMove`,`onTouchStart`,`onTouchEnd`,`onTouchCancel`,`onTouchMove`,`onContextMenu`);function ue(){J=0,Y=``,_e(),_e(void 0,`notice`),he=0,k=void 0}function de(){(N||P)&&H(),ce()}function fe(e){if(Y===an&&e.touches.length<2){le();return}e.touches.length===0&&(ae(),ce())}function pe(e){if(Y===an){le();return}ce()}function q(e){if(e.which>1){H(),w.isPressing=!1;return}t.mode===`explore`&&(e.preventDefault(),R(),I(),w.hasMovedSincePress=!1,w.pointerStart.x=e.atlas.x,w.pointerStart.y=e.atlas.y,L(t.target[1],t.target[2]),t.transitionManager.stopTransition(),w.isPressing=!0,ie(typeof e.clientX==`number`?e.clientX:0,typeof e.clientY==`number`?e.clientY:0))}function me(){(N||P)&&H(),ce()}let J=0,he=0,Y=``;function ge(e){if(t.mode===`explore`){if(R(),I(),w.hasMovedSincePress=!1,e.atlasTouches.length===1&&(he=performance.now(),c==0&&e.preventDefault(),w.pointerStart.x=e.atlasTouches[0].x,w.pointerStart.y=e.atlasTouches[0].y,k={x:e.atlasTouches[0].x,y:e.atlasTouches[0].y},L(t.target[1],t.target[2])),e.atlasTouches.length===2){Y=an,e.preventDefault();let t=e.atlasTouches[0].x,n=e.atlasTouches[1].x;w.pointerStart.x=(t+n)/2;let r=e.atlasTouches[0].y,i=e.atlasTouches[1].y;w.pointerStart.y=(r+i)/2,J=x({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY}),I(),z()}t.transitionManager.stopTransition(),w.isPressing=!0}}function _e(e,t=`intent`){f&&(f.dataset[t]=e)}function ve(e){let n=null,r=null,i=0,a=!1;if(w.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=x({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY})),_e(Y),w.isPressing&&e.touches.length===1){if(u&&(performance.now()-he<d&&Y==``&&(Y=rn),Y==``&&(Y=`pan`)),_e(Y),Y==``&&c==1||Y==rn){_e(`require-two-finger`,`notice`);return}let t=e.touches[0];n=t.clientX,r=t.clientY,a=!0}if(n!==null&&r!==null){let o=t.getRendererScreenPosition();if(o){let{x:s,y:c}=t.viewerToWorld(n-o.x,r-o.y),u=i&&J?i/J:1,d=(0,l.transform)((0,l.dna)(t.target),(0,l.compose)((0,l.translate)(w.pointerStart.x-s,w.pointerStart.y-c),(0,l.scaleAtOrigin)(1/u,s,c)),w.mousemoveBuffer);if(a){let e=T[T.length-1];e&&(e.x!==d[1]||e.y!==d[2])&&(w.hasMovedSincePress=!0),L(d[1],d[2])}e.touches.length===2&&(ee=(0,l.dna)(d),D={x:s,y:c}),G(d)}J=i}Y==`pan`&&e.preventDefault()}function ye(e){if(t.mode!==`explore`&&(N||P)&&H(),w.isPressing){if(W(e.clientX,e.clientY))return;let n=t.getRendererScreenPosition();if(n){let{x:r,y:i}=t.viewerToWorld(e.clientX-n.x,e.clientY-n.y),a=(0,l.transform)((0,l.dna)(t.target),(0,l.translate)(w.pointerStart.x-r,w.pointerStart.y-i),w.mousemoveBuffer),o=T[T.length-1];o&&(o.x!==a[1]||o.y!==a[2])&&(w.hasMovedSincePress=!0),L(a[1],a[2]),G(a)}}}function X(e){if(P||w.hasMovedSincePress){B();return}if(t.mode===`explore`){if(U(e.atlas)||a)return;i&&t.world.zoomIn(e.atlas)}else B()}function be(e){if(m&&t.mode!==`explore`){B();return}(N||P)&&H(),R();let r=1+(0,Wt.default)(e).spinY/n;t.world.zoomTo(r,e.atlas,!0)}function xe(e){return p&&e.metaKey==0?(_e(`meta-required`,`notice`),e.stopPropagation(),!1):!0}t.world.addEventListener(`mouseup`,de),t.world.addEventListener(`touchend`,fe),t.world.addEventListener(`touchcancel`,pe),t.world.addEventListener(`touchstart`,ge),t.world.addEventListener(`mousedown`,q),window.addEventListener(`touchend`,me),window.addEventListener(`mouseup`,me),window.addEventListener(`mousemove`,ye),f&&f.addEventListener(`touchmove`,ve),(i||a)&&(t.world.activatedEvents.push(`onClick`),t.world.addEventListener(`click`,X)),r&&(t.world.activatedEvents.push(`onWheel`),p&&f?.addEventListener(`wheel`,xe,{passive:!0,capture:!0}),t.world.addEventListener(`wheel`,be));let Se=t.world.addLayoutSubscriber((e,n)=>{if((N||P)&&t.mode!==`explore`&&H(),e===`zone-changed`&&(R(),t.transitionManager.hasPending()||t.transitionManager.constrainBounds()),e===`zoom-to`&&n&&(R(),t.transitionManager.zoomTo(n.factor,{origin:n.point,stream:n.stream})),e===`go-home`){R();let e=n.immediate?{duration:0}:void 0,r=n?.paddingPx,i=t.getHomeTarget({paddingPx:r});t.transitionManager.goToRegion(i,{transition:e})}if(e===`goto-region`&&n){R();let e=n.immediate?{duration:0}:{};if(n.paddingPx!==void 0){let r=t.getHomeTarget({position:l.DnaFactory.singleBox(n.width,n.height,n.x,n.y),paddingPx:n.paddingPx});t.transitionManager.goToRegion(r,{transition:e})}else t.transitionManager.goToRegion(n,{transition:e})}e===`constrain-bounds`&&(R(),t.transitionManager.constrainBounds({panPadding:C,transition:n?.immediate?{duration:0}:void 0}))}),Ce=t.registerHook(`useFrame`,e=>{if((N||P)&&t.mode!==`explore`&&H(),!E.active)return;let n=Math.exp(-e/Math.max(1,S)),r=t.target[3]-t.target[1],i=t.target[4]-t.target[2],a=(0,l.transform)((0,l.dna)(t.target),(0,l.translate)(E.vx*e,E.vy*e),w.mousemoveBuffer),[,o]=t.constrainBounds(a,{panPadding:C}),s=a[1]!==o[1],c=a[2]!==o[2],u=s?E.vx:E.vx*n,d=c?E.vy:E.vy*n,f=(0,l.dna)(a);if(s){let n=oe(t.target[1],E.vx,e,o[1]);f[1]=n.position,f[3]=n.position+r,u=n.velocity}else f[1]=t.target[1]+u*e,f[3]=f[1]+r;if(c){let n=oe(t.target[2],E.vy,e,o[2]);f[2]=n.position,f[4]=n.position+i,d=n.velocity}else f[2]=t.target[2]+d*e,f[4]=f[2]+i;E.vx=u,E.vy=d;let[,p]=t.constrainBounds(f,{panPadding:C}),m=Math.hypot(f[1]-p[1],f[2]-p[2])*t.getScaleFactor(),h=Math.hypot(E.vx,E.vy)*t.getScaleFactor();if(m<=.5&&h<=.02){R(),G(p);return}G(f),t.updateNextFrame()});return()=>{R(),H(),t.world.removeEventListener(`mouseup`,de),t.world.removeEventListener(`touchend`,fe),t.world.removeEventListener(`touchcancel`,pe),t.world.removeEventListener(`touchstart`,ge),t.world.removeEventListener(`mousedown`,q),window.removeEventListener(`touchend`,me),window.removeEventListener(`mouseup`,me),window.removeEventListener(`mousemove`,ye),f&&(f.removeEventListener(`touchmove`,ve),f.removeEventListener(`wheel`,xe,{passive:!0,capture:!0})),(i||a)&&t.world.removeEventListener(`click`,X),r&&t.world.removeEventListener(`wheel`,be),Ce(),Se()}},updatePosition(){}});var cn=c(Ut(),1);const ln={scrollWheelFactor:1,scrollLoadAheadFactor:1,clickDragThresholdPx:6,touchScrollMomentumStrength:1.4,touchScrollMomentumMinStartPxPerMs:.04},un=.09999999999999998/2,dn=.8,fn=.08,pn=.02,mn=80,hn=140;let gn=1;const _n=new WeakMap;function vn(e){return{x:e.x,y:e.y,width:e.width,height:e.height}}function yn(e,t,n){return e.points[0]!==0&&t>=e.points[1]&&t<=e.points[3]&&n>=e.points[2]&&n<=e.points[4]}const bn=(e={})=>({start(t){let n=gn++;_n.set(t,n);let r=()=>_n.get(t)===n,{scrollWheelFactor:i,scrollLoadAheadFactor:a,clickDragThresholdPx:o,touchScrollMomentumStrength:s,touchScrollMomentumMinStartPxPerMs:c,enablePanMomentum:l=!0,panMomentumStrength:u=1,panTimeConstant:d=325}={...ln,...e},f=()=>{w||(w=!0,window.requestAnimationFrame(()=>{w=!1,r()&&t.updateNextFrame()}))},p=t.mode,m=t.manualHomePosition,h=`scroll-mode`,g=!1,_=!1,v=!1,y,b,x=!1,S,C=performance.now()+5e3,w=!1,T=0,E=0,ee=0,D=0,te=null,O=!1,k=null,A=!1,j=!1,M=0,N,P=!0,ne=-1,F=-1,I=-1,L=-1,R=-1,z=[],B={active:!1,vy:0},V=sn({...e,enableWheel:!0,enableClickToZoom:!1,enableDoubleClickZoom:!1,enableHoldToHome:!1,wheelInExploreModeOnly:!0}),re=e=>{t.world.activatedEvents.indexOf(e)===-1&&t.world.activatedEvents.push(e)},H=e=>{h=e,t.mode=e===`zone-active`?`explore`:`sketch`},U=()=>{z.length=0},ie=e=>{let t=performance.now(),n=z[z.length-1];if(n&&n.y===e){n.t=t;return}for(z.push({y:e,t});z.length>1&&t-z[0].t>140;)z.shift()},W=()=>{B.active=!1,B.vy=0},ae=()=>{if(z.length<2)return null;let e=z[z.length-1],t=z[0];for(let n=z.length-2;n>=0&&(t=z[n],!(e.t-t.t>=80));n--);let n=e.y-t.y,r=e.t-t.t;return r<=0||Math.abs(n)<=.5?null:n/r},oe=({strengthMultiplier:e=1,minStartPxPerMs:n=fn}={})=>{if(!l||z.length<2)return!1;let r=ae();if(r===null)return!1;let i=r*Math.max(0,u)*Math.max(0,e);return Math.abs(i)*t.getScaleFactor()<n?!1:(B.active=!0,B.vy=i,t.updateNextFrame(),!0)},G=()=>{let e=h===`zone-active`?`explore`:`sketch`;t.mode!==e&&(t.mode=e)},se=()=>{P=!0},K=(e,t)=>Math.abs(e.x-t.x)>.01||Math.abs(e.y-t.y)>.01||Math.abs(e.width-t.width)>.01||Math.abs(e.height-t.height)>.01,ce=()=>{let e,n=0;for(let r of t.world.zones)r.recalculateBounds(),r.points[0]!==0&&(!e||r.points[2]<n)&&(e=r,n=r.points[2]);return e},le=()=>{let e=t.getRendererScreenPosition(),n=Math.max(0,e?.height||0);if(n===0)return;let r=Math.round(n*.04999999999999999);return{top:r,bottom:r}},ue=()=>{let e=ce();if(e)return e.points[2];let n=!1,r=0;for(let e of t.world.getObjects())!e||e.points[0]===0||(!n||e.points[2]<r)&&(r=e.points[2],n=!0);return n?r:0},de=()=>{let e=t.getRendererScreenPosition(),n=Math.round((e?.width||t.width||0)*100)/100,r=Math.round((e?.height||t.height||0)*100)/100,i=e?.width&&e?.height?`renderer`:`runtime`,a=ce();if(a)return[`zone`,a.id,a.points[1],a.points[2],a.points[3]-a.points[1],a.points[4]-a.points[2],`screen:${n}x${r}:${i}`].join(`:`);let o=-1,s=0,c=t.world.getObjects();for(let e=0;e<c.length;e++){let t=c[e];!t||t.points[0]===0||(o===-1||t.points[2]<s)&&(o=e,s=t.points[2])}if(o!==-1){let e=c[o];return[`object`,e.id||o,e.points[1],e.points[2],e.points[3]-e.points[1],e.points[4]-e.points[2],`screen:${n}x${r}:${i}`].join(`:`)}},fe=()=>{if(!r()||x||h!==`scroll-mode`||g||j||_||t.world.hasActiveZone())return;let e=de();if(!e){performance.now()<C&&t.updateNextFrame();return}e!==S&&(S=e,M=ue(),J(M),f())},pe=()=>{let e=t.world.width,n=t.world.height,r=t.getRendererScreenPosition(),i=Math.max(1,r?.width||t.width),a=Math.max(1,r?.height||t.height),o=t.world.zones.length;if(!P&&N&&ne===e&&F===n&&I===i&&L===a&&R===o)return N;let s=ce(),c;if(s){let e=t.getHomeTarget({position:s.points,paddingPx:le()});c={x:e.x,y:e.y,width:e.width,height:e.height}}else c=e>0&&n>0?{x:0,y:0,width:e,height:e/i*a}:void 0;return N=c,P=!1,ne=e,F=n,I=i,L=a,R=o,N},q=e=>{let n=pe();if(!n)return;let r=t.world.height,i=Math.max(1,a),o=n.width*i,s=n.height,c=n.height*i,l=Math.min(0,r-s),u=Math.max(0,r-s);return{x:n.x-(o-n.width)/2,y:Math.min(u,Math.max(l,e)),width:o,height:c}},me=e=>{if(e.recalculateBounds(),e.points[0]!==0)return q(e.points[2])},J=e=>{let n=q(e);if(!n)return;M=n.y;let r=t.getViewport();!t.transitionManager.hasPending()&&!K(r,n)||(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame())},he=e=>{let n=q(e);return n?(M=n.y,t.transitionManager.goToRegion(n),t.updateNextFrame(),!0):!1},Y=()=>{if(h!==`scroll-mode`||g||_||t.world.hasActiveZone())return;let e=t.getViewport(),n=q(e.y);n&&(M=n.y,K(e,n)&&(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame()))},ge=(e,n)=>{for(let r of t.world.zones)if(r.recalculateBounds(),yn(r,e,n))return r},_e=e=>{r()&&(W(),U(),x=!0,b||(b=vn({...t.getViewport(),y:M})),v=!0,t.goToZone(e)?H(`zone-active`):v=!1)},ve=()=>{if(!r())return;let e=he(b?b.y:M);b=void 0,_=e,e||(_=!1,g=!1,J(M)),t.updateNextFrame()},ye=()=>{if(!r()||h!==`zone-active`)return!1;let e=t.world.getActiveZone();if(!e||(e.recalculateBounds(),e.points[0]===0))return!1;let n=t.getViewport();if(n.width<=0||n.height<=0)return!1;let i=e.points[3]-e.points[1],a=e.points[4]-e.points[2],o=i/n.width,s=a/n.height;return o<dn&&s<dn},X=()=>{r()&&h===`zone-active`&&(W(),U(),H(`scroll-mode`),g=!0,t.deselectZone(),ve())},be=(e,t)=>{W(),U(),x=!0,j=!0,A=!1,ee=e,D=t,T=t,E=M,ie(M)},xe=(e,n)=>{if(!j)return!1;Math.hypot(e-ee,n-D)>o&&(A=!0);let r=(n-T)/Math.max(1e-4,t.getScaleFactor());return J(E-r),ie(M),!0},Se=({allowMomentum:e=!0,momentumStrengthMultiplier:t=1,momentumMinStartPxPerMs:n=fn}={})=>{let r=j,i=A;return j=!1,A=!1,r?(e&&h===`scroll-mode`&&!_?oe({strengthMultiplier:t,minStartPxPerMs:n}):W(),U(),{releasedDrag:!0,tapSuppressed:i}):(U(),{releasedDrag:!1,tapSuppressed:i})},Ce=()=>{j=!1,A=!1,U(),W()},we=()=>{te=null,O=!1,k=null,A=!1},Te=e=>{if(!r()||(G(),A||_))return;if(h===`scroll-mode`){let t=ge(e.x,e.y);t&&_e(t.id);return}let n=t.world.getActiveZone();(!n||!yn(n,e.x,e.y))&&X()},Ee=e=>{r()&&e.atlas&&Te(e.atlas)},De=e=>{if(!r())return;if(G(),_){e.stopPropagation();return}if(h!==`scroll-mode`)return;W(),x=!0,e.stopPropagation();let n=((0,cn.default)(e).pixelY||e.deltaY||0)/Math.max(1e-4,t.getScaleFactor())*i;J(M+n)},Oe=e=>{r()&&(G(),!(h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),be(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Z=e=>{r()&&(G(),!(!j||h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),xe(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Q=()=>{r()&&Se()},ke=e=>{if(!r())return;if(G(),h===`zone-active`){if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we();return}let t=e.touches[0],n=e.atlasTouches[0];te=n.id,O=!0,A=!1,ee=t.clientX,D=t.clientY,k={x:n.x,y:n.y};return}if(h!==`scroll-mode`||_)return;if(e.preventDefault(),e.stopPropagation?.(),!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we(),Ce();return}let t=e.touches[0],n=e.atlasTouches[0];te=n.id,O=!0,k={x:n.x,y:n.y},be(t.clientX,t.clientY)},Ae=e=>{if(!r())return;if(G(),h===`zone-active`){if(!O)return;if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we();return}let t=e.atlasTouches.find(e=>e.id===te)||e.atlasTouches[0],n=Array.from(e.touches).find(e=>e.identifier===t.id)||e.touches[0];k={x:t.x,y:t.y},Math.hypot(n.clientX-ee,n.clientY-D)>o&&(A=!0);return}if(h!==`scroll-mode`||_||!j)return;if(e.preventDefault(),e.stopPropagation?.(),!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){we(),Ce();return}let t=e.atlasTouches.find(e=>e.id===te)||e.atlasTouches[0],n=Array.from(e.touches).find(e=>e.identifier===t.id)||e.touches[0];te=t.id,k={x:t.x,y:t.y},xe(n.clientX,n.clientY)},je=e=>{if(!r())return;if(G(),h===`zone-active`){let t=k,n=O&&!A&&e.touches.length===0;we(),t&&n&&Te(t);return}if(h!==`scroll-mode`)return;if(e.preventDefault(),e.stopPropagation?.(),e.touches.length>0){we(),Ce();return}let t=k,n=Se({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c});we(),t&&!n.tapSuppressed&&Te(t)},Me=e=>{if(r()){if(G(),h===`zone-active`){we();return}h===`scroll-mode`&&(e.preventDefault(),e.stopPropagation?.(),we(),Ce())}},Ne=()=>{if(r()){if(h===`zone-active`){we();return}Se({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c}),we()}},Pe=e=>{r()&&e.key===`Escape`&&X()};re(`onClick`),re(`onWheel`),re(`onMouseDown`),re(`onMouseMove`),re(`onMouseUp`),re(`onTouchStart`),re(`onTouchMove`),re(`onTouchEnd`),re(`onTouchCancel`),t.world.addEventListener(`click`,Ee),t.world.addEventListener(`wheel`,De),t.world.addEventListener(`mousedown`,Oe),t.world.addEventListener(`mousemove`,Z),t.world.addEventListener(`mouseup`,Q),t.world.addEventListener(`touchstart`,ke),t.world.addEventListener(`touchmove`,Ae),t.world.addEventListener(`touchend`,je),t.world.addEventListener(`touchcancel`,Me),window.addEventListener(`mouseup`,Q),window.addEventListener(`touchend`,Ne),window.addEventListener(`touchcancel`,Me),window.addEventListener(`keydown`,Pe),t.manualHomePosition=!0,H(`scroll-mode`),M=ue(),fe();let Fe=V.start(t),Ie=t.registerHook(`useFrame`,e=>{if(!B.active)return;if(!r()||h!==`scroll-mode`||g||_||j||t.world.hasActiveZone()){W();return}let n=Math.exp(-e/Math.max(1,d));if(B.vy*=n,Math.abs(B.vy)*t.getScaleFactor()<=.02){W();return}let i=M;if(J(M+B.vy*e),Math.abs(M-i)<=.01){W();return}t.updateNextFrame()}),Le=t.registerHook(`useAfterFrame`,()=>{if(r()){if(G(),Y(),fe(),_&&!t.transitionManager.hasPending()&&(_=!1,g=!1),y&&h===`zone-active`&&!t.transitionManager.hasPending()){let e=t.world.getActiveZone();if(e&&e.id===y){let t=me(e);t&&(b=vn(t),M=t.y)}y=void 0}g||ye()&&X()}}),Re=t.world.addLayoutSubscriber(e=>{if(r()){if((e===`recalculate-world-size`||e===`zone-changed`)&&se(),e===`goto-region`&&(g=!1),e===`recalculate-world-size`&&h===`scroll-mode`&&!g){let e=b?b.y:M;t.world.zones.length&&e===0&&(M=ue()),J(M),f()}if(e===`zone-changed`){if(t.world.hasActiveZone()){W(),U(),x=!0;let e=t.world.getActiveZone();!v&&e?y=e.id:b||(b=vn({...t.getViewport(),y:M})),v=!1,H(`zone-active`);return}let e=h===`zone-active`;if(y=void 0,H(`scroll-mode`),_)return;e?(g=!0,ve()):g||J(M)}}});return()=>{W(),U(),Fe(),Ie(),Le(),Re(),t.world.removeEventListener(`click`,Ee),t.world.removeEventListener(`wheel`,De),t.world.removeEventListener(`mousedown`,Oe),t.world.removeEventListener(`mousemove`,Z),t.world.removeEventListener(`mouseup`,Q),t.world.removeEventListener(`touchstart`,ke),t.world.removeEventListener(`touchmove`,Ae),t.world.removeEventListener(`touchend`,je),t.world.removeEventListener(`touchcancel`,Me),window.removeEventListener(`mouseup`,Q),window.removeEventListener(`touchend`,Ne),window.removeEventListener(`touchcancel`,Me),window.removeEventListener(`keydown`,Pe),r()&&(_n.delete(t),t.manualHomePosition=m,t.mode=p)}},updatePosition(){}});function xn(e,t){let n;return(...r)=>{window.clearTimeout(n),n=window.setTimeout(()=>e(...r),t)}}function Sn({debounce:e,scroll:t,polyfill:n,offsetSize:r}={debounce:0,scroll:!1,offsetSize:!1}){let i=n||(typeof window>`u`?class{}:window.ResizeObserver);if(!i)throw Error(`This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills`);let[a,o]=(0,p.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),s=(0,p.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:a,orientationHandler:null}),c=e?typeof e==`number`?e:e.scroll:null,l=e?typeof e==`number`?e:e.resize:null,u=(0,p.useRef)(!1);(0,p.useEffect)(()=>(u.current=!0,()=>void(u.current=!1)));let[d,f,m]=(0,p.useMemo)(()=>{let e=()=>{if(!s.current.element)return;let{left:e,top:t,width:n,height:i,bottom:a,right:c,x:l,y:d}=s.current.element.getBoundingClientRect(),f={left:e,top:t,width:n,height:i,bottom:a,right:c,x:l,y:d};s.current.element instanceof HTMLElement&&r&&(f.height=s.current.element.offsetHeight,f.width=s.current.element.offsetWidth),Object.freeze(f),u.current&&!Dn(s.current.lastBounds,f)&&o(s.current.lastBounds=f)};return[e,l?xn(e,l):e,c?xn(e,c):e]},[o,r,c,l]);function h(){s.current.scrollContainers&&(s.current.scrollContainers.forEach(e=>e.removeEventListener(`scroll`,m,!0)),s.current.scrollContainers=null),s.current.resizeObserver&&(s.current.resizeObserver.disconnect(),s.current.resizeObserver=null),s.current.orientationHandler&&(`orientation`in screen&&`removeEventListener`in screen.orientation?screen.orientation.removeEventListener(`change`,s.current.orientationHandler):`onorientationchange`in window&&window.removeEventListener(`orientationchange`,s.current.orientationHandler))}function g(){s.current.element&&(s.current.resizeObserver=new i(m),s.current.resizeObserver.observe(s.current.element),t&&s.current.scrollContainers&&s.current.scrollContainers.forEach(e=>e.addEventListener(`scroll`,m,{capture:!0,passive:!0})),s.current.orientationHandler=()=>{m()},`orientation`in screen&&`addEventListener`in screen.orientation?screen.orientation.addEventListener(`change`,s.current.orientationHandler):`onorientationchange`in window&&window.addEventListener(`orientationchange`,s.current.orientationHandler))}return wn(m,!!t),Cn(f),(0,p.useEffect)(()=>{h(),g()},[t,m,f]),(0,p.useEffect)(()=>h,[]),[e=>{!e||e===s.current.element||(h(),s.current.element=e,s.current.scrollContainers=Tn(e),g())},a,d]}function Cn(e){(0,p.useEffect)(()=>{let t=e;return window.addEventListener(`resize`,t),()=>void window.removeEventListener(`resize`,t)},[e])}function wn(e,t){(0,p.useEffect)(()=>{if(t){let t=e;return window.addEventListener(`scroll`,t,{capture:!0,passive:!0}),()=>void window.removeEventListener(`scroll`,t,!0)}},[e,t])}function Tn(e){let t=[];if(!e||e===document.body)return t;let{overflow:n,overflowX:r,overflowY:i}=window.getComputedStyle(e);return[n,r,i].some(e=>e===`auto`||e===`scroll`)&&t.push(e),[...t,...Tn(e.parentElement)]}const En=[`x`,`y`,`top`,`bottom`,`left`,`right`,`width`,`height`],Dn=(e,t)=>En.every(n=>e[n]===t[n]),On=p.default.createContext(null);On.displayName=`Atlas`;const kn=p.default.createContext(null);kn.displayName=`Bounds`;const An=p.default.createContext(`explore`);An.displayName=`Mode`;const jn=()=>(0,p.useContext)(An);function Mn(e){return(0,m.jsx)(An.Provider,{value:e.mode,children:e.children})}var Nn=class{constructor(e){E(this,`runtime`,void 0),E(this,`pendingTransition`,void 0),E(this,`lastZoomTo`,null),E(this,`isConstraining`,!1),E(this,`lastGoToRegion`,null),this.runtime=e,this.pendingTransition={from:(0,l.dna)(5),to:(0,l.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:tn.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:tn.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:tn.easeOutExpo,constrain:!0,callback:()=>{this.lastZoomTo=null}},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){this.isConstraining=!0;let[n,r]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});if(n){this.applyTransition(r,e,{duration:500,easing:tn.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}constrainTarget(e,{origin:t,transition:n,panPadding:r=0}={}){this.isConstraining=!0;let[i,a]=this.runtime.constrainTarget(e,{origin:t,panPadding:r});if(i){this.applyTransition(a,n,{duration:500,easing:tn.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}applyTransition(e,t,n,{stream:r}={}){this.pendingTransition.from=(0,l.dna)(this.runtime.target),this.pendingTransition.to=e,r||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=t?.duration===void 0?n?.duration===void 0?1e3:n.duration:t.duration,this.pendingTransition.constrain=t?.constrain===void 0?n?.constrain===void 0?!1:n.constrain:t.constrain,this.pendingTransition.timingFunction=t?.easing||n?.easing||tn.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:tn.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};Number.MIN_VALUE+1;var Pn=class{get x(){return this.target[1]}set x(e){this.target[1]=e}get y(){return this.target[2]}set y(e){this.target[2]=e}get x2(){return this.target[3]}set x2(e){this.target[3]=e}get y2(){return this.target[4]}set y2(e){this.target[4]=e}get width(){return this.target[3]-this.target[1]}set width(e){this.target[3]=this.target[1]+e}get height(){return this.target[4]-this.target[2]}set height(e){this.target[4]=this.target[2]=e}constructor(e,t,n,r=[],i){E(this,`id`,oe()),E(this,`ready`,!1),E(this,`readyCycle`,0),E(this,`readyReason`,`initial`),E(this,`readyTimestamp`,void 0),E(this,`resourceTransitionKey`,void 0),E(this,`hasResourceTransitionKey`,!1),E(this,`renderer`,void 0),E(this,`world`,void 0),E(this,`target`,void 0),E(this,`homePosition`,void 0),E(this,`manualHomePosition`,void 0),E(this,`manualFocalPosition`,void 0),E(this,`focalPosition`,void 0),E(this,`homePaddingPx`,void 0),E(this,`transitionManager`,void 0),E(this,`aggregate`,void 0),E(this,`transformBuffer`,(0,l.dna)(500)),E(this,`lastTarget`,(0,l.dna)(5)),E(this,`zoomBuffer`,(0,l.dna)(5)),E(this,`logNextRender`,!1),E(this,`pendingUpdate`,!0),E(this,`isCommitting`,!1),E(this,`firstRender`,!0),E(this,`lastTime`,void 0),E(this,`stopId`,void 0),E(this,`mode`,`explore`),E(this,`controllers`,[]),E(this,`controllersRunning`,!1),E(this,`controllerStopFunctions`,[]),E(this,`maxScaleFactor`,1),E(this,`_viewerToWorld`,{x:0,y:0}),E(this,`_lastGoodScale`,1),E(this,`debugFrame`,0),E(this,`debugSubscribers`,new Set),E(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),E(this,`fpsLimit`,void 0),E(this,`options`,void 0),E(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),E(this,`_viewport`,{x:0,y:0,width:0,height:0}),E(this,`setViewport`,e=>{let t=Math.round(e.x===void 0?this.target[1]:e.x),n=Math.round(e.y===void 0?this.target[2]:e.y);e.width?this.target[3]=t+e.width:this.target[3]=this.target[3]-this.target[1]+t,e.height?this.target[4]=n+e.height:this.target[4]=this.target[4]-this.target[2]+n,Math.abs(this.target[1]-t)>.01&&(this.target[1]=t),Math.abs(this.target[2]-n)>.01&&(this.target[2]=n),this.pendingUpdate=!0}),E(this,`render`,e=>{let t=e-this.lastTime;if(this.isCommitting||this.fpsLimit&&t<1e3/this.fpsLimit){this.stopId=window.requestAnimationFrame(this.render);return}this.lastTime=e,this.world.flushSubscriptions(),this.stopId=window.requestAnimationFrame(this.render),this.hook(`useFrame`,t);let n=this.pendingUpdate,r=this.renderer.pendingUpdate(),i=this.world.hasPendingAnimation(),a=this.hasDebugSubscribers();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,n=!0,this.updateControllerPosition()),i&&(this.pendingUpdate=!0,n=!0),!this.firstRender&&!n&&!r&&!i&&this.target[0]===this.lastTarget[0]&&this.target[1]===this.lastTarget[1]&&this.target[2]===this.lastTarget[2]&&this.target[3]===this.lastTarget[3]&&this.target[4]===this.lastTarget[4])return;let o=++this.debugFrame,s=0;a&&this.emitDebug({type:`frame-start`,at:e,runtimeId:this.id,frame:o,delta:t,mode:this.mode,pendingUpdate:n,rendererPendingUpdate:r,target:[this.target[1],this.target[2],this.target[3],this.target[4]]}),this.hook(`useBeforeFrame`,t),this.renderer.beforeFrame(this.world,t,this.target,this.hookOptions);let c=this.getScaleFactor(),u=this.renderer.getPointsAt(this.world,this.target,this.aggregate,c),d=u.length;for(let t=0;t<d;t++){let n=u[t][0],r=u[t][1],i=u[t][2],c=i?(0,l.transform)(r,i,this.transformBuffer):r;this.renderer.prepareLayer(n,n.__parent&&i?(0,l.transform)(n.__parent.crop||n.__parent.points,i):c);let d=c.length/5;for(let r=0;r<d;r++){let i=r*5;if(c[i]!==0){if(this.renderer.paint(n,r,c[i+1],c[i+2],c[i+3]-c[i+1],c[i+4]-c[i+2]),s++,a){let a;if(n.getImageUrl)try{a=n.getImageUrl(r)}catch{a=void 0}this.emitDebug({type:`paint`,at:e,runtimeId:this.id,frame:o,layerIndex:t,tileIndex:r,x:c[i+1],y:c[i+2],width:c[i+3]-c[i+1],height:c[i+4]-c[i+2],paintId:n.id||`${t}:${r}`,paintType:n?.constructor?.name||n.type||`UnknownPaint`,ownerId:n.__owner?.value?.id,compositeId:n.__parent?.id,imageUrl:a})}this.hook(`useAfterPaint`,n)}}this.renderer.finishLayer(n,r)}this.renderer.afterFrame(this.world,t,this.target,this.hookOptions),this.pendingUpdate=!1,this.hook(`useAfterFrame`,t),this.lastTarget[0]=this.target[0],this.lastTarget[1]=this.target[1],this.lastTarget[2]=this.target[2],this.lastTarget[3]=this.target[3],this.lastTarget[4]=this.target[4],this.firstRender=!1,this.logNextRender=!1,!this.ready&&this.renderer.isReady()&&(this.ready=!0,this.readyTimestamp=performance.now(),this.world.trigger(`ready`)),a&&this.emitDebug({type:`frame-end`,at:e,runtimeId:this.id,frame:o,delta:t,scaleFactor:c,paintCount:s,ready:this.ready,pendingUpdate:this.pendingUpdate,worldWidth:this.world.width,worldHeight:this.world.height,target:[this.target[1],this.target[2],this.target[3],this.target[4]]}),this.world.flushSubscriptions();let f=this.world.getScheduledUpdates(this.target,c),p=f.length;if(p>0)for(let e=0;e<p;e++){let t=f[p-e-1]();t?t.then(()=>{this.pendingUpdate=!0}):this.pendingUpdate=!0}}),this.renderer=e,this.world=t,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1,...i||{}},this.target=l.DnaFactory.projection(n),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=l.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new Nn(this),this.aggregate=(0,l.scale)(1),this.world.addLayoutSubscriber(e=>{(e===`repaint`||e===`zone-changed`)&&(this.pendingUpdate=!0),e===`recalculate-world-size`&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=r,this.render(this.lastTime),this.startControllers(),this.homePaddingPx=void 0}setHomePosition(e){this.homePosition.set(l.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}setHomePaddingPx(e){this.homePaddingPx=e,this.pendingUpdate=!0}getHomePaddingPx(){return this.homePaddingPx}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}setResourceTransitionKey(e){if(!this.hasResourceTransitionKey){this.hasResourceTransitionKey=!0,this.resourceTransitionKey=e;return}this.resourceTransitionKey!==e&&(this.resourceTransitionKey=e,e!==void 0&&(this.renderer.resetImageFadeState&&this.renderer.resetImageFadeState(),this.resetReadyState(`resource-transition-key-change`)))}normalizePadding(e){return typeof e==`number`?{left:e,right:e,top:e,bottom:e}:e?{left:e.left||0,right:e.right||0,top:e.top||0,bottom:e.bottom||0}:{left:0,right:0,top:0,bottom:0}}getHomeTarget(e={}){let t=this.getRendererScreenPosition(),n=t?.width||this.width,r=t?.height||this.height,i=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,a=this.normalizePadding(i),o=Math.max(1,n-a.left-a.right),s=Math.max(1,r-a.top-a.bottom),c=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},l=o/s,u=c.width/c.height,d,f,p,m;(e.cover?u<l:u>l)?(d=c.width,f=c.width/l,p=c.x,m=c.y-(f-c.height)/2):(f=c.height,d=c.height*l,p=c.x-(d-c.width)/2,m=c.y);let h=d/o,g=a.left*h,_=a.right*h,v=a.top*h,y=a.bottom*h;return{x:p-g,y:m-v,width:d+g+_,height:f+v+y}}isViewportAtHome(e={}){let{cover:t=!1,tolerance:n=1,target:r=this.getViewport()}=e,i=this.getHomeTarget({cover:t});return Math.abs(r.x-i.x)<=n&&Math.abs(r.y-i.y)<=n&&Math.abs(r.width-i.width)<=n&&Math.abs(r.height-i.height)<=n}isViewportAtHomeZoomLevel(e={}){let{cover:t=!1,tolerance:n=.05,target:r=this.getViewport()}=e,i=this.getHomeTarget({cover:t}),a=this.renderer.getScale(r.width,r.height)||this._lastGoodScale,o=this.renderer.getScale(i.width,i.height)||this._lastGoodScale;return o===0?!1:Math.abs(a/o-1)<=n}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=e.paddingPx===void 0?this.homePaddingPx:e.paddingPx,n=this.normalizePadding(t);if(n.left>0||n.right>0||n.top>0||n.bottom>0){let t=this.getHomeTarget(e);this.target[1]=Math.round(t.x),this.target[2]=Math.round(t.y),this.target[3]=Math.round(t.x+t.width),this.target[4]=Math.round(t.y+t.height)}else{let t=this.getScaleFactor(),n=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},r=this.width*t,i=this.height*t,a=n.width/r,o=n.height/i,s=r/i;if(e.cover?a>o:a<o){let e=s*n.height,t=(e-n.width)/2;this.target[1]=Math.round(-t+n.x),this.target[2]=Math.round(n.y),this.target[3]=Math.round(e-t+n.x),this.target[4]=Math.round(n.height+n.y)}else{let e=n.width/s,t=(e-n.height)/2;this.target[1]=Math.round(n.x),this.target[2]=Math.round(n.y-t),this.target[3]=Math.round(n.x+n.width),this.target[4]=Math.round(n.y+e-t)}}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,n,r){this.transitionManager.hasPending()&&this.transitionManager.stopTransition(),this.updateFocalPosition(e-t,n-r);let i=t/e,a=r/n;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*i,this.target[4]=this.target[2]+(this.target[4]-this.target[2])*a,this.goHome({position:this.focalPosition}),this.renderer.resize(t,r),this.pendingUpdate=!0,this.transitionManager.resumeTransition()}updateFocalPosition(e,t){if(!this.manualFocalPosition){let e=this.width,t=this.height,n=Math.min(e,t),r=this.x+0,i=this.y+0;if(e<t){let e=this.height-this.width;this.focalPosition=l.DnaFactory.projection({x:r,y:i+e/2,width:n-0,height:n-0}),this.pendingUpdate=!0}else{let e=this.width-this.height;this.focalPosition=l.DnaFactory.projection({x:r+e/2,y:i,width:n-0,height:n-0}),this.pendingUpdate=!0}}}getViewport(){return this._viewport.x=this.target[1],this._viewport.y=this.target[2],this._viewport.width=this.target[3]-this.target[1],this._viewport.height=this.target[4]-this.target[2],this._viewport}constrainBounds(e,{panPadding:t=0,ref:n=!1}={}){let{minX:r,maxX:i,minY:a,maxY:o}=this.getBounds({target:e,padding:t}),s=!1,c=n?e:(0,l.dna)(e),u=Math.round(e[3]-e[1]),d=Math.round(e[4]-e[2]);return r>e[1]&&(s=!0,c[1]=r,c[3]=r+u),a>e[2]&&(s=!0,c[2]=a,c[4]=a+d),i<e[1]&&(s=!0,c[1]=i,c[3]=i+u),o<e[2]&&(s=!0,c[2]=o,c[4]=o+d),[s,c]}getBounds(e){let t=e.target||this.target,n=e.padding,r=this.options.visibilityRatio,i=Math.abs(1-r);if(this.world.hasActiveZone()){let e=this.world.getActiveZone();if(e){e.recalculateBounds();let r=he(t,e.points,n);if(r)return r}}let a=t[3]-t[1],o=this.world.width,s=-a*i,c=o-a-s,l=t[4]-t[2],u=this.world.height,d=-l*i,f=u-l-d,p=Math.round(Math.max(s,c)),m=Math.round(Math.min(s,c)),h=Math.round(Math.max(d,f));return{minX:m,maxX:p,minY:Math.round(Math.min(d,f)),maxY:h}}getScaleFactor(e=!1){let t=this.renderer.getScale(this.target[3]-this.target[1],this.target[4]-this.target[2],e);return t===0?this._lastGoodScale:(this._lastGoodScale=t,t)}copyStrandValues(e,t){e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]}getZoomConstraintState(e){let t=e[3]-e[1],n=e[4]-e[2],r=this.renderer.getScale(t,n),i=r===0?this._lastGoodScale:r;r!==0&&(this._lastGoodScale=r);let a=t*i,o=n*i,s=this.world.width/a>this.world.height/o?a*this.options.maxUnderZoom/this.world.width:o*this.options.maxUnderZoom/this.world.height,c=this.getRendererScreenPosition()?.width,l=c?c/this.world.width:1;return{scaleFactor:i,minScale:s,maxScale:Math.max(l||1,this.options.maxOverZoom)}}constrainTarget(e,{origin:t,panPadding:n=0,ref:r=!1}={}){let i=!1,a=r?e:(0,l.dna)(e),{scaleFactor:o,minScale:s,maxScale:c}=this.getZoomConstraintState(a),u=Math.max(s,Math.min(c,o));if(Math.abs(u-o)>1e-6){let e=t||{x:a[1]+(a[3]-a[1])/2,y:a[2]+(a[4]-a[2])/2},n=(0,l.transform)(a,(0,l.scaleAtOrigin)(o/u,e.x,e.y),this.zoomBuffer);this.copyStrandValues(a,n),i=!0}let[d]=this.constrainBounds(a,{ref:!0,panPadding:n});return[i||d,a]}getZoomedPosition(e,{origin:t,fromPos:n}){let r=n||this.target,{scaleFactor:i,minScale:a,maxScale:o}=this.getZoomConstraintState(r),s=1/e,c=i*s;s<1?c<a&&(e=i/a):c>o&&(e=i/o);let u=(0,l.transform)(r,(0,l.scaleAtOrigin)(e,t?t.x:r[1]+(r[3]-r[1])/2,t?t.y:r[2]+(r[4]-r[2])/2),this.zoomBuffer),d=this.world.hasActiveZone()?0:100;return this.constrainBounds(u,{ref:!0,panPadding:d}),u}clampRegion({x:e,y:t,width:n,height:r,padding:i=0}){let a=this.width,o=this.height,s=n/a<r/o,c=e-i,l=t-i,u=n+i*2,d=r+i*2;if(s){let e=d/o*a;return{x:c-(e-u)/2,y:l,width:e,height:d}}let f=u/a*o;return{x:c,y:l-(f-d)/2,width:u,height:f}}viewerToWorld(e,t){let n=this.getScaleFactor();return this._viewerToWorld.x=this.target[1]+e/n,this._viewerToWorld.y=this.target[2]+t/n,this._viewerToWorld}worldToViewer(e,t,n,r){let i=l.DnaFactory.singleBox(n,r,e,t);return(0,l.mutate)(i,(0,l.compose)((0,l.scale)(this.getScaleFactor()),(0,l.translate)(-this.target[1],-this.target[2]))),{x:i[1],y:i[2],width:i[3]-i[1],height:i[4]-i[2],strand:i}}setScale(e,t){(0,l.mutate)(this.target,(0,l.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2)),this.pendingUpdate=!0}syncTo(e){let t=this.target;return this.target=e.target,this.pendingUpdate=!0,()=>{this.target=t}}stop(){return this.stopId!==void 0&&(window.cancelAnimationFrame(this.stopId),this.stopId=void 0),()=>{this.render(performance.now())}}reset(){this.renderer.reset(),this.resetReadyState(`runtime-reset`)}resetReadyState(e=`manual`){this.ready=!1,this.readyCycle+=1,this.readyReason=e,this.readyTimestamp=void 0,this.renderer.resetReadyState&&this.renderer.resetReadyState(),this.pendingUpdate=!0}getReadyState(){return{ready:this.ready,cycle:this.readyCycle,reason:this.readyReason,timestamp:this.readyTimestamp}}selectZone(e){this.world.selectZone(e),this.pendingUpdate=!0}goToZone(e,t={}){let n=this.world.getZoneById(e);if(!n||(n.recalculateBounds(),n.points[0]===0))return!1;this.world.selectZone(e);let r=this.getHomeTarget({position:n.points,paddingPx:t.paddingPx});return t.immediate?(this.transitionManager.stopTransition(),this.setViewport(r),this.constrainBounds(this.target,{ref:!0}),this.updateControllerPosition(),this.pendingUpdate=!0,!0):(this.transitionManager.applyTransition(l.DnaFactory.singleBox(r.width,r.height,r.x,r.y),void 0,{duration:1e3,easing:tn.easeOutExpo,constrain:!1}),this.updateNextFrame(),this.pendingUpdate=!0,!0)}deselectZone(){this.world.deselectZone(),this.pendingUpdate=!0}getZoneRuntimeState(e,t=this.getViewport()){let n=this.world.getZoneById(e);if(!n)return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1};n.recalculateBounds();let r=this.world.getActiveZone()?.id===e;if(n.points[0]===0)return{zoneId:e,exists:!0,active:r,visibleInViewport:!1};let i=n.points[1],a=n.points[2],o=n.points[3]-n.points[1],s=n.points[4]-n.points[2];return{zoneId:e,exists:!0,active:r,visibleInViewport:i<t.x+t.width&&i+o>t.x&&a<t.y+t.height&&a+s>t.y}}hook(e,t){let n=this.hooks[e].length;if(n!==0)for(let r=0;r<n;r++)this.hooks[e][r](t)}registerHook(e,t){return this.hooks[e].push(t),()=>{this.hooks[e]=this.hooks[e].filter(e=>e!==t)}}updateNextFrame(){this.pendingUpdate=!0}addDebugSubscriber(e){return this.debugSubscribers.add(e),()=>{this.removeDebugSubscriber(e)}}removeDebugSubscriber(e){this.debugSubscribers.delete(e)}hasDebugSubscribers(){return this.debugSubscribers.size>0}emitDebug(e){if(this.debugSubscribers.size!==0)for(let t of this.debugSubscribers)t(e)}};const Fn={margin:0};var In=class{constructor(e,t={}){E(this,`id`,void 0),E(this,`config`,void 0),E(this,`points`,void 0),E(this,`objects`,void 0),Array.isArray(e)?(this.id=e.map(e=>e.id).join(`$$`),this.config={...Fn,...t},this.objects=[...e]):(this.id=e.id,this.config={...Fn,margin:typeof e.margin==`number`?e.margin:Fn.margin,x:e.x,y:e.y,width:e.width,height:e.height},this.objects=[...e.objects||[]]),this.points=(0,l.dna)(5),this.recalculateBounds()}applyProps(e){e.id!==void 0&&(this.id=e.id),this.config={...this.config,...e},this.recalculateBounds()}addObject(e){this.objects.indexOf(e)===-1&&(this.objects.push(e),this.recalculateBounds())}removeObject(e){this.objects=this.objects.filter(t=>t!==e),this.recalculateBounds()}recalculateBounds(){if(!(Number.isFinite(this.config.x)&&Number.isFinite(this.config.y)&&Number.isFinite(this.config.width)&&Number.isFinite(this.config.height)&&this.config.width>0&&this.config.height>0)){this.points.set([0,0,0,0,0]);return}let e=this.config.margin,t=this.config.x,n=this.config.y,r=this.config.width,i=this.config.height;this.points.set([1,t-e,n-e,t+r+e,n+i+e])}getPointsAt(e,t,n){return[]}};let Ln;if(typeof performance==`object`&&typeof performance.now==`function`){let e=performance;Ln=()=>e.now()}else{let e=Date,t=e.now();Ln=()=>e.now()-t}const Rn=typeof h.default==`function`?h.default:typeof h.default?.default==`function`?h.default.default:null,zn=8,Bn=32,Vn=2,Hn=0;var Un=class{constructor(e){E(this,`world`,void 0),E(this,`zone`,void 0),E(this,`isRegistered`,!1),E(this,`directWorldObjects`,[]),this.world=e,this.zone=new In({id:``})}applyProps(e){this.zone.applyProps({id:e.id,x:e.x,y:e.y,width:e.width,height:e.height,margin:e.margin})}appendChild(e){e instanceof ct&&(this.registerDirectWorldObject(e),this.world.appendChild(e))}removeChild(e){e instanceof ct&&(this.unregisterDirectWorldObject(e),this.world.removeChild(e))}insertBefore(e,t){if(e instanceof ct){if(this.registerDirectWorldObject(e),t instanceof ct){this.world.insertBefore(e,t);return}this.world.appendChild(e)}}hideInstance(){}attachToWorld(e){this.isRegistered&&this.world!==e&&(this.world.removeZone(this.zone),this.isRegistered=!1),this.world=e,this.isRegistered||(this.world.addZone(this.zone),this.isRegistered=!0)}unmount(){this.directWorldObjects=[],this.isRegistered&&(this.world.removeZone(this.zone),this.isRegistered=!1)}registerDirectWorldObject(e){this.directWorldObjects.indexOf(e)===-1&&this.directWorldObjects.push(e),this.zone.addObject(e)}unregisterDirectWorldObject(e){this.directWorldObjects=this.directWorldObjects.filter(t=>t!==e),this.zone.removeObject(e)}};function Wn(e,t){if(e instanceof lt&&t instanceof Un){t.attachToWorld(e);return}if(e instanceof Un){e.appendChild(t);return}e&&e.appendChild&&t&&e.appendChild(t)}function Gn(e,t){if(e instanceof lt&&t instanceof Un){t.unmount();return}if(e instanceof Un){e.removeChild(t);return}e&&e.removeChild&&t&&e.removeChild(t)}function Kn(e,t){if(t instanceof Un){t.unmount();return}return Gn(e.world,t)}function qn(e,t,n){if(t instanceof Un){t.attachToWorld(e.world);return}return Jn(e.world,t,n)}function Jn(e,t,n){if(e&&e instanceof Pn&&(e=e.world),!(e instanceof lt&&t instanceof Un)){if(e instanceof Un){e.insertBefore(t,n);return}e&&e.insertBefore&&e.insertBefore(t,n)}}function Yn(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof G))for(let r of g){let i=r.slice(2).toLowerCase();n[r]!==t[r]&&(t[r]&&e.removeEventListener(i,t[r]),e.addEventListener(i,n[r]))}}function Xn(e,t){let n=Object.keys(t),r=!1;for(let t of n)if(g.indexOf(t)!==-1){let n=v[t];if(n){if(e.activatedEvents.indexOf(n)!==-1)continue;r=!0,e.activatedEvents.push(n)}}r&&e.triggerEventActivation()}const Zn=new Map,Qn={};function $n(e,{args:t=[],...n},r,i,a){if(!(r instanceof Pn)&&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=lt.withProps({width:n.width,height:n.height,viewingDirection:`left-to-right`}),o.activatedEvents=s.activatedEvents,o.eventHandlers=s.eventHandlers,o.subscriptions=s.subscriptions,o.triggerEventActivation(),s=o;break;case`box`:o=new le;break;case`shape`:o=new pe;break;case`worldObject`:case`world-object`:o=new ct;break;case`zone`:o=new Un(s);break;case`worldImage`:case`world-image`:o=new q;break;case`texture`:o=new Le;break;case`compositeImage`:case`composite-image`:o=new Ie({id:n.id,width:n.width,height:n.height,images:[],renderOptions:n.renderOptions});break;case`tiledImage`:case`tiled-image`:o=J.fromTile(n.uri,n.display,n.tile,n.scaleFactor,void 0,n.format,n.useFloorCalc,n.version3);break;case`mapTiledImage`:case`map-tiled-image`:o=new at({id:n.id,bounds:n.bounds,worldWidth:n.worldWidth,worldHeight:n.worldHeight,zoom:n.zoom,tileSize:n.tileSize,scaleFactor:n.scaleFactor,tileSource:n.tileSource,tileUrlTemplate:n.tileUrlTemplate,subdomains:n.subdomains});break;case`paragraph`:o=new Ft,o.text=n.children;break;default:return}return Xn(s,n),Yn(o,{},n),o}function er(e,t){if(t instanceof lt)e.world=t;else if(t instanceof Un)t.attachToWorld(e.world);else if(t instanceof ct)e.world.appendChild(t);else if(t)throw Error(`Invalid root`)}let tr=0;const nr=Rn?Rn({unstable_now:Ln,now:Ln,createInstance:$n,removeChild:Gn,appendChild:Wn,appendInitialChild:Wn,insertBefore:Jn,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:er,removeChildFromContainer:Kn,createTextInstance(){},insertInContainerBefore:qn,prepareUpdate(e,t,n,r,i){return Xn(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&Yn(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return Qn},getRootHostContext(){return Qn},prepareForCommit(e){return e.isCommitting=!0,null},preparePortalMount(){},hideInstance(e){e&&e.points&&(e.points[0]=0)},unhideInstance(e,t){e&&e.points&&(e.points[0]=1)},getPublicInstance(e){return e},hideTextInstance(){throw Error(`Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.`)},resetAfterCommit(e){e.isCommitting=!1,e.pendingUpdate=!0,e.world&&e.world.needsRecalculate&&(e.world.recalculateWorldSize(),e.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(e){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return 32},getInstanceFromNode(e){throw Error(`Not implemented`)},getInstanceFromScope(e){throw Error(`Not implemented`)},prepareScopeUpdate(e,t){throw Error(`Not implemented`)},logRecoverableError(){},requestPostPaintCallback(){},rendererPackageName:`@atlas-viewer/atlas`,rendererVersion:p.version,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(e){tr=e},getCurrentUpdatePriority(){return tr},resolveUpdatePriority(){if(tr!==0)return tr;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;nr&&nr.injectIntoDevTools();function rr(e,t){let n=Zn.get(e);if(n){if(!nr)return;nr.updateContainer(null,n,null,()=>{Zn.delete(e),t&&t(e)})}}const ir={render(e,t){let n=Zn.get(t);if(nr)if(n)nr.updateContainer(e,n,null);else{let n=nr.createContainer(t,0,null,!1,null,``,()=>{},null);nr.updateContainer(e,n,null),Zn.set(t,n)}},unmountComponentAtNode(e,t){rr(e,t)}},ar=typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)?p.useLayoutEffect:p.useEffect,or=p.default.memo(({children:e,setIsReady:t,onCreated:n,bounds:r,preset:i,mode:a=`explore`,interactionMode:o=`popmotion`})=>{let s=(0,p.useRef)(new WeakSet);return(0,p.useEffect)(()=>{if(!i||s.current.has(i))return;s.current.add(i),o!==`pdf-scroll-zone`&&i.runtime.goHome();let e=!1;return Promise.resolve(n?.(i)).then(()=>{e||t(!0)}),()=>{e=!0}},[o,n,i,t]),ar(()=>{if(i){let t=i.runtime;a!==t.mode&&(t.mode=a),ir.render((0,m.jsx)(p.default.StrictMode,{children:(0,m.jsx)(kn.Provider,{value:r,children:(0,m.jsx)(An.Provider,{value:a,children:(0,m.jsx)(On.Provider,{value:i,children:e})})})}),t)}},[i,a,r,e]),ar(()=>{if(i){let e=i.runtime;return()=>{ir.unmountComponentAtNode(e)}}return()=>{}},[i]),null}),sr=p.default.forwardRef((e,t)=>(0,m.jsx)(`div`,{...e,ref:t,part:e.className})),cr=()=>(0,p.useContext)(On),lr=()=>{let e=cr();return e?e.runtime:void 0},ur=new Set,dr=new Map,fr=new Map,pr=[];let mr,hr,gr={activeCandidateId:void 0,selectedRuntimeId:void 0,candidates:[],runtimes:[]};function _r(){let e=Array.from(dr.entries()).map(([e,t],n)=>({id:e,runtime:t.runtime,preset:t.preset,label:`Atlas ${n+1} (${e.slice(0,6)})`}));gr={activeCandidateId:mr,selectedRuntimeId:hr,candidates:[...pr],runtimes:e}}function vr(){_r();for(let e of ur)e()}function yr(){if(hr&&dr.has(hr))return;let e=dr.keys().next();hr=e.done?void 0:e.value}function br(){mr&&fr.has(mr)||(mr=pr[0])}function xr(e){return ur.add(e),()=>{ur.delete(e)}}function Sr(){return gr}function Cr(e){let t=e.runtime.id;return dr.set(t,{runtime:e.runtime,preset:e}),yr(),vr(),()=>{wr(t)}}function wr(e){dr.delete(e),yr(),vr()}function Tr(e){return fr.get(e.id)||pr.push(e.id),fr.set(e.id,e),br(),!hr&&e.runtimeId&&dr.has(e.runtimeId)&&(hr=e.runtimeId),yr(),vr(),()=>{Dr(e.id)}}function Er(e,t){let n=fr.get(e);n&&(n.runtimeId=t,!hr&&t&&dr.has(t)&&(hr=t),yr(),vr())}function Dr(e){fr.delete(e);let t=pr.indexOf(e);t!==-1&&pr.splice(t,1),br(),vr()}function Or(e){if(!e){hr=void 0,yr(),vr();return}dr.has(e)&&(hr=e,vr())}function kr(e){if(e)return dr.get(e)}_r();function Ar(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)Ar(n,t);return t}return t.push(e),t}function jr(e,t,n,r){if(e){if(e instanceof ct){if(Array.isArray(e.layers))for(let n of e.layers)jr(n,t,e.id,r);return}if(e instanceof Ie){let r=e.id,i=new Set([...e.allImages,...e.images]);for(let e of i)jr(e,t,n,r);return}if(e instanceof q||e instanceof J){let i={id:e.id,type:e.constructor.name,ownerId:n,compositeId:r,anomalies:[]};e.__host?.canvas&&(i.canvas={loading:!!e.__host.canvas.loading,indices:e.__host.canvas.indices?.length||0,loaded:e.__host.canvas.loaded?.length||0},i.canvas.loading&&i.canvas.indices===0&&i.anomalies.push(`Canvas host marked loading with empty queue.`),i.canvas.loaded>i.canvas.indices&&i.canvas.indices>0&&i.anomalies.push(`Canvas loaded count exceeds scheduled indices.`)),e.__host?.webgl&&(i.webgl={loading:e.__host.webgl.loading?.length||0,loaded:e.__host.webgl.loaded?.length||0,textures:e.__host.webgl.textures?.filter(Boolean)?.length||0},i.webgl.loading>0&&i.webgl.textures===0&&i.webgl.loaded===0&&i.anomalies.push(`WebGL has pending loads but no loaded textures.`)),t.push(i)}}}function Mr(e){let t=[],n=e.getObjects();for(let e of n)e&&jr(e,t,e.id,void 0);return t}function Nr(e){let t=Ar(e.renderer);return{rendererTypes:t.map(e=>e?.constructor?.name||`UnknownRenderer`),canvas:t.filter(e=>e?.loadingQueue!==void 0).map(e=>({type:e?.constructor?.name||`CanvasRenderer`,loadingQueue:e.loadingQueue?.length||0,imagesPending:e.imagesPending||0,imagesLoaded:e.imagesLoaded||0,tasksRunning:e.tasksRunning||0,firstMeaningfulPaint:!!e.firstMeaningfulPaint})),webgl:t.filter(e=>e?.gl!==void 0).map(e=>({type:e?.constructor?.name||`WebGLRenderer`}))}}function Pr(e,t=30){let n=new Map;for(let t of e){if(t.type!==`paint`||!t.compositeId)continue;n.has(t.frame)||n.set(t.frame,new Map);let e=n.get(t.frame);e.has(t.compositeId)||e.set(t.compositeId,[]),e.get(t.compositeId).push({paintId:t.paintId,paintType:t.paintType,tileIndex:t.tileIndex,imageUrl:t.imageUrl})}return Array.from(n.entries()).sort((e,t)=>t[0]-e[0]).slice(0,t).map(([e,t])=>({frame:e,composites:Array.from(t.entries()).map(([e,t])=>({compositeId:e,layers:t}))}))}function Fr(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)Fr(n,t);return t}return t.push(e),t}function Ir(e,t){if(e){if(e instanceof q||e instanceof J){t.push(e);return}if(e instanceof Ie){let n=new Set([...e.allImages,...e.images]);for(let e of n)Ir(e,t);return}if(e instanceof ct&&Array.isArray(e.layers))for(let n of e.layers)Ir(n,t)}}function Lr(e){let t=[],n=e.getObjects();for(let e of n)e&&Ir(e,t);return t}function Rr(e){let t=Lr(e.world),n=0;for(let e of t)n++,e.__host||(e.__host={}),e.__host.canvas={canvas:void 0,canvases:[],tiles:{},indices:[],loaded:[],loading:!1},e.__host.webgl&&(e.__host.webgl.loading=[],e.__host.webgl.loaded=[],Array.isArray(e.__host.webgl.textures)&&(e.__host.webgl.textures=[...Array(e.points.length/5)]));let r=Fr(e.renderer),i=0;for(let e of r)i++,Array.isArray(e.loadingQueue)&&(e.loadingQueue=[]),Array.isArray(e.tileRequestQueue)&&(e.tileRequestQueue=[]),Array.isArray(e.drawCalls)&&(e.drawCalls=[]),Array.isArray(e.invalidated)&&(e.invalidated=[]),Array.isArray(e.imageIdsLoaded)&&(e.imageIdsLoaded=[]),e.hostCache?.clear&&e.hostCache.clear(),typeof e.tasksRunning==`number`&&(e.tasksRunning=0),typeof e.imagesPending==`number`&&(e.imagesPending=0),typeof e.imagesLoaded==`number`&&(e.imagesLoaded=0),typeof e.pendingDrawCall==`boolean`&&(e.pendingDrawCall=!1),typeof e.loadingQueueOrdered==`boolean`&&(e.loadingQueueOrdered=!0),e.requiredTileKeys?.clear&&e.requiredTileKeys.clear(),e.requiredPrefetchTileKeys?.clear&&e.requiredPrefetchTileKeys.clear(),e.queuedTileRequestKeys?.clear&&e.queuedTileRequestKeys.clear(),e.imageRequestPool?.cancelAll&&e.imageRequestPool.cancelAll({silent:!0}),e.inFlightImageLoads?.clear&&e.inFlightImageLoads.clear(),typeof e.reset==`function`&&e.reset();return e.updateNextFrame(),{imageHostsReset:n,renderersReset:i}}async function zr(e,t,n){if(p.version.startsWith(`18.`)||p.version.startsWith(`19.`)){let r=await import(`react-dom/client`),i=r.default?r.default.createRoot:r.createRoot,a=n.current;if(!a){let t=i(e);a={unmounted:!1,render(e){this.unmounted||t.render(e)},unmount(){this.unmounted||(this.unmounted=!0,t.unmount())}},n.current=a}a.render(t)}else if(typeof ReactDOM<`u`){let{render:r,unmountComponentAtNode:i}=ReactDOM;n.current=Br(e,r,i,n.current),n.current.render(t)}else{let r=await import(`react-dom`);n.current=Br(e,r.default?r.default.render:r.render,r.default?r.default.unmountComponentAtNode:r.unmountComponentAtNode,n.current),n.current.render(t)}}function Br(e,t,n,r){return r||{unmounted:!1,render(n){this.unmounted||t(n,e)},unmount(){this.unmounted||(this.unmounted=!0,n(e))}}}const Vr=[`Overview`,`World`,`Inspector`,`Events`,`Images`,`Actions`];let Hr=0;const Ur=e=>{let t=lr(),n=e.runtimeId||t?.id,r=(0,p.useRef)(null),i=(0,p.useRef)(null);return(0,p.useEffect)(()=>{if(typeof document>`u`)return;let e=document.createElement(`div`);return e.dataset.atlasDevtools=`true`,document.body.appendChild(e),r.current=e,()=>{i.current?.unmount&&i.current.unmount(),e.remove(),r.current=null}},[]),(0,p.useEffect)(()=>{let t=r.current;t&&zr(t,(0,m.jsx)(Yr,{...e,runtimeId:n}),i)}),null};function Wr(e,t,n){e.push(t),e.length>n&&e.splice(0,e.length-n)}function Gr(e){if(!(!e||e.length<5))return{x1:Number(e[1].toFixed?e[1].toFixed(2):e[1]),y1:Number(e[2].toFixed?e[2].toFixed(2):e[2]),x2:Number(e[3].toFixed?e[3].toFixed(2):e[3]),y2:Number(e[4].toFixed?e[4].toFixed(2):e[4])}}function Kr(e){return e?.constructor?.name||e?.type||`Unknown`}function qr(e){let t=[],n=new Set,r=(e,i,a)=>{if(!e||n.has(e))return;n.add(e);let o=e.id?` #${e.id}`:``;if(t.push({key:a,depth:i,label:`${Kr(e)}${o}`,ref:e}),Array.isArray(e.layers))for(let t=0;t<e.layers.length;t++)r(e.layers[t],i+1,`${a}.layers.${t}`);if(Array.isArray(e.images)||Array.isArray(e.allImages)){let t=new Set([...e.allImages||[],...e.images||[]]),n=0;for(let e of t)r(e,i+1,`${a}.images.${n}`),n++}};r(e.world,0,`world`);let i=e.world.getObjects();for(let e=0;e<i.length;e++){let t=i[e];t&&r(t,1,`world.objects.${e}`)}return t}function Jr(e){return e?.__host?e.__host.canvas?`Canvas host loading=${!!e.__host.canvas.loading} indices=${e.__host.canvas.indices?.length||0} loaded=${e.__host.canvas.loaded?.length||0}`:e.__host.webgl?`WebGL host loading=${e.__host.webgl.loading?.length||0} loaded=${e.__host.webgl.loaded?.length||0}`:`Host attached`:`No host`}const Yr=({initialOpen:e=!1,bottom:t=16,right:n=16,zIndex:r=1e3,maxEvents:i=500,maxRuntimeEvents:a=1e3,runtimeId:o,className:s,style:c})=>{let u=(0,p.useRef)(`devtools-${++Hr}`),[d,f]=(0,p.useState)(e),[h,g]=(0,p.useState)(`Overview`),[_,v]=(0,p.useState)(!1),[y,b]=(0,p.useState)(!1),[x,S]=(0,p.useState)(null),[C,w]=(0,p.useState)(`explore`),[T,E]=(0,p.useState)(``),[ee,D]=(0,p.useState)(!1),[te,O]=(0,p.useState)(``),[k,A]=(0,p.useState)(`all`),[,j]=(0,p.useState)(0),M=(0,p.useRef)([]),N=(0,p.useRef)([]),P=(0,p.useRef)(null),ne=(0,p.useRef)(!1),F=()=>{ne.current||(ne.current=!0,requestAnimationFrame(()=>{ne.current=!1,j(e=>e+1)}))},I=o;(0,p.useEffect)(()=>Tr({id:u.current,runtimeId:I}),[]),(0,p.useEffect)(()=>{Er(u.current,I)},[I]);let L=(0,p.useSyncExternalStore)(xr,Sr,Sr),R=L.activeCandidateId===u.current,z=L.selectedRuntimeId||I||L.runtimes[0]?.id,B=kr(z),V=B?.runtime,re=B?.preset;if((0,p.useEffect)(()=>{z&&z!==L.selectedRuntimeId&&Or(z)},[z,L.selectedRuntimeId]),(0,p.useEffect)(()=>{V&&w(V.mode)},[V?.id]),(0,p.useEffect)(()=>{if(!R||!d||!V)return;let e=V.addDebugSubscriber(e=>{_||(Wr(M.current,e,a),F())}),t=V.world.addDebugSubscriber(e=>{_||(Wr(N.current,e,i),F())});return()=>{e(),t()}},[R,d,V?.id,_,i,a]),(0,p.useEffect)(()=>{if(!R||!d)return;let e=setInterval(()=>{j(e=>e+1)},250);return()=>{clearInterval(e)}},[R,d]),(0,p.useEffect)(()=>{if(!y||!V||!re?.em?.element)return;let e=re.em.element,t=t=>{let n=e.getBoundingClientRect(),{x:r,y:i}=V.viewerToWorld(t.clientX-n.left,t.clientY-n.top),a=l.DnaFactory.singleBox(1,1,r,i),o=V.world.getObjectsAt(a,!0),s=o[o.length-1];if(s){let e=s[1];S(e.length?e[e.length-1]:s[0])}g(`Inspector`),b(!1),F(),t.preventDefault(),t.stopPropagation()};return e.addEventListener(`pointerdown`,t,!0),()=>{e.removeEventListener(`pointerdown`,t,!0)}},[y,V?.id,re?.em?.element]),(0,p.useEffect)(()=>()=>{let e=P.current;e&&(P.current=null,e())},[]),typeof window>`u`||typeof document>`u`||!R)return null;let H=V?qr(V):[],U=x||H[0]?.ref,ie=V?Nr(V):{rendererTypes:[],canvas:[],webgl:[]},W=V?Mr(V.world):[],ae=Pr(M.current,15),oe=N.current.filter(e=>k===`all`||e.type===k),G=(()=>{if(!V)return{width:220,height:220,rects:[],viewport:null};let e=V.world.getPoints(),t=Math.max(1,V.world.width),n=Math.max(1,V.world.height),r=220/t,i=220/n,a=[],o=Math.min(e.length/5,300);for(let t=0;t<o;t++){let n=t*5;e[n]!==0&&a.push({x:e[n+1]*r,y:e[n+2]*i,width:Math.max(1,(e[n+3]-e[n+1])*r),height:Math.max(1,(e[n+4]-e[n+2])*i)})}return{width:220,height:220,rects:a,viewport:{x:V.target[1]*r,y:V.target[2]*i,width:Math.max(1,(V.target[3]-V.target[1])*r),height:Math.max(1,(V.target[4]-V.target[2])*i)}}})(),se={position:`fixed`,right:n,bottom:t,zIndex:r,color:`#eef1ff`,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace`,pointerEvents:`auto`,...c||{}},K={background:`#111827`,color:`#f9fafb`,border:`1px solid #374151`,borderRadius:999,fontSize:12,padding:`8px 12px`,cursor:`pointer`,boxShadow:`0 8px 24px rgba(0, 0, 0, 0.35)`},ce={width:460,maxHeight:`70vh`,overflow:`hidden`,background:`#0f172a`,border:`1px solid #334155`,borderRadius:10,boxShadow:`0 12px 36px rgba(0, 0, 0, 0.4)`,marginBottom:10,display:`flex`,flexDirection:`column`},le={padding:10,overflow:`auto`,fontSize:12,lineHeight:1.4,display:`grid`,gap:8},ue=()=>{!V||P.current||(P.current=V.stop(),D(!0))},de=()=>{let e=P.current;P.current=null,e&&e(),D(!1)},fe=()=>{if(V){if(P.current){let e=P.current;P.current=null,e(),requestAnimationFrame(()=>{V&&(P.current=V.stop(),D(!0))});return}V.updateNextFrame()}},pe=()=>{M.current=[],N.current=[],O(`Logs cleared`),F()};return(0,m.jsxs)(`div`,{className:s,style:se,children:[d?(0,m.jsxs)(`div`,{style:ce,children:[(0,m.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:10,borderBottom:`1px solid #1f2937`},children:[(0,m.jsx)(`strong`,{style:{fontSize:12,letterSpacing:.4},children:`Atlas DevTools`}),(0,m.jsx)(`select`,{style:{marginLeft:`auto`,fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},value:z||``,onChange:e=>Or(e.target.value),children:L.runtimes.map(e=>(0,m.jsx)(`option`,{value:e.id,children:e.label},e.id))}),(0,m.jsx)(`button`,{style:K,onClick:()=>f(!1),children:`Close`})]}),(0,m.jsx)(`div`,{style:{display:`flex`,gap:6,padding:8,borderBottom:`1px solid #1f2937`,flexWrap:`wrap`},children:Vr.map(e=>(0,m.jsx)(`button`,{style:{...K,padding:`4px 8px`,borderRadius:6,background:h===e?`#334155`:`#111827`},onClick:()=>g(e),children:e},e))}),(0,m.jsxs)(`div`,{style:le,children:[V?null:(0,m.jsx)(`div`,{children:`No Atlas runtime available.`}),V&&h===`Overview`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`div`,{children:[`Runtime id: `,V.id]}),(0,m.jsxs)(`div`,{children:[`Mode: `,V.mode]}),(0,m.jsxs)(`div`,{children:[`Scale factor: `,V.getScaleFactor().toFixed(4)]}),(0,m.jsxs)(`div`,{children:[`World: `,V.world.width,` x `,V.world.height]}),(0,m.jsxs)(`div`,{children:[`Target: `,JSON.stringify(Gr(V.target))]}),(0,m.jsxs)(`div`,{children:[`Pending update: `,String(V.pendingUpdate)]}),(0,m.jsxs)(`div`,{children:[`Renderer chain: `,ie.rendererTypes.join(` -> `)||`None`]}),(0,m.jsxs)(`div`,{children:[`Runtime log entries: `,M.current.length]}),(0,m.jsxs)(`div`,{children:[`World log entries: `,N.current.length]})]}):null,V&&h===`World`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`div`,{children:[`World dimensions: `,V.world.width,` x `,V.world.height]}),(0,m.jsxs)(`div`,{children:[`Viewport target: `,JSON.stringify(Gr(V.target))]}),(0,m.jsxs)(`svg`,{width:G.width,height:G.height,style:{background:`#020617`,border:`1px solid #334155`},children:[G.rects.map((e,t)=>(0,m.jsx)(`rect`,{x:e.x,y:e.y,width:e.width,height:e.height,fill:`rgba(56, 189, 248, 0.18)`,stroke:`rgba(56, 189, 248, 0.7)`},`rect-${t}`)),G.viewport?(0,m.jsx)(`rect`,{x:G.viewport.x,y:G.viewport.y,width:G.viewport.width,height:G.viewport.height,fill:`rgba(251, 191, 36, 0.1)`,stroke:`rgba(251, 191, 36, 1)`}):null]})]}):null,V&&h===`Inspector`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{style:{display:`flex`,gap:8},children:(0,m.jsx)(`button`,{style:K,onClick:()=>b(e=>!e),children:y?`Cancel Pick`:`Pick in Viewport`})}),(0,m.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6},children:H.map(e=>(0,m.jsx)(`button`,{onClick:()=>S(e.ref),style:{width:`100%`,display:`block`,textAlign:`left`,padding:`2px 6px 2px ${6+e.depth*14}px`,background:U===e.ref?`#1e293b`:`transparent`,color:`#e2e8f0`,border:0,cursor:`pointer`,fontSize:12},children:e.label},e.key))}),U?(0,m.jsxs)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[(0,m.jsxs)(`div`,{children:[`Type: `,Kr(U)]}),(0,m.jsxs)(`div`,{children:[`ID: `,U.id||`(none)`]}),(0,m.jsxs)(`div`,{children:[`Points: `,JSON.stringify(Gr(U.points))]}),(0,m.jsxs)(`div`,{children:[`Display scale: `,U.display?.scale??`(n/a)`]}),(0,m.jsxs)(`div`,{children:[`Crop: `,U.cropData?JSON.stringify(U.cropData):`(none)`]}),(0,m.jsxs)(`div`,{children:[`Host: `,Jr(U)]})]}):null]}):null,V&&h===`Events`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,m.jsx)(`button`,{style:K,onClick:()=>v(e=>!e),children:_?`Resume Log`:`Pause Log`}),(0,m.jsx)(`button`,{style:K,onClick:pe,children:`Clear`}),(0,m.jsxs)(`select`,{value:k,onChange:e=>A(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,m.jsx)(`option`,{value:`all`,children:`All`}),(0,m.jsx)(`option`,{value:`trigger`,children:`Trigger`}),(0,m.jsx)(`option`,{value:`pointer`,children:`Pointer`}),(0,m.jsx)(`option`,{value:`touch`,children:`Touch`})]})]}),(0,m.jsx)(`div`,{style:{maxHeight:240,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:oe.slice().reverse().map((e,t)=>(0,m.jsxs)(`div`,{style:{marginBottom:4},children:[`[`,e.type,`] `,JSON.stringify(e)]},`event-${t}`))})]}):null,V&&h===`Images`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{children:`Renderer health`}),ie.canvas.map((e,t)=>(0,m.jsxs)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[(0,m.jsx)(`div`,{children:e.type}),(0,m.jsxs)(`div`,{children:[`loadingQueue: `,e.loadingQueue]}),(0,m.jsxs)(`div`,{children:[`imagesPending: `,e.imagesPending]}),(0,m.jsxs)(`div`,{children:[`imagesLoaded: `,e.imagesLoaded]}),(0,m.jsxs)(`div`,{children:[`tasksRunning: `,e.tasksRunning]}),(0,m.jsxs)(`div`,{children:[`firstMeaningfulPaint: `,String(e.firstMeaningfulPaint)]})]},`canvas-${t}`)),ie.webgl.map((e,t)=>(0,m.jsx)(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:(0,m.jsx)(`div`,{children:e.type})},`webgl-${t}`)),(0,m.jsxs)(`div`,{children:[`Image hosts (`,W.length,`)`]}),(0,m.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:W.map(e=>(0,m.jsxs)(`div`,{style:{marginBottom:6},children:[(0,m.jsxs)(`div`,{children:[e.type,` #`,e.id]}),(0,m.jsxs)(`div`,{children:[`owner: `,e.ownerId||`(none)`,` composite: `,e.compositeId||`(none)`]}),(0,m.jsxs)(`div`,{children:[`canvas: `,e.canvas?JSON.stringify(e.canvas):`(none)`]}),(0,m.jsxs)(`div`,{children:[`webgl: `,e.webgl?JSON.stringify(e.webgl):`(none)`]}),e.anomalies.length?(0,m.jsxs)(`div`,{children:[`anomalies: `,e.anomalies.join(` | `)]}):null]},`${e.type}-${e.id}-${e.ownerId||`none`}`))}),(0,m.jsx)(`div`,{children:`Chosen composite layers by frame`}),(0,m.jsx)(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:ae.map(e=>(0,m.jsxs)(`div`,{style:{marginBottom:8},children:[(0,m.jsxs)(`div`,{children:[`frame `,e.frame]}),e.composites.map(t=>(0,m.jsxs)(`div`,{style:{paddingLeft:8},children:[(0,m.jsxs)(`div`,{children:[`composite `,t.compositeId]}),t.layers.map((e,n)=>(0,m.jsxs)(`div`,{style:{paddingLeft:10},children:[e.paintType,` #`,e.paintId,` tile=`,e.tileIndex]},`${t.compositeId}-${n}`))]},`${e.frame}-${t.compositeId}`))]},`frame-${e.frame}`))})]}):null,V&&h===`Actions`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,m.jsx)(`button`,{style:K,onClick:ee?de:ue,children:ee?`Resume Loop`:`Pause Loop`}),(0,m.jsx)(`button`,{style:K,onClick:fe,children:`Step Frame`}),(0,m.jsx)(`button`,{style:K,onClick:()=>V.updateNextFrame(),children:`Repaint`}),(0,m.jsx)(`button`,{style:K,onClick:()=>V.triggerResize(),children:`Trigger Resize`})]}),(0,m.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,m.jsxs)(`select`,{value:C,onChange:e=>w(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,m.jsx)(`option`,{value:`explore`,children:`explore`}),(0,m.jsx)(`option`,{value:`sketch`,children:`sketch`}),(0,m.jsx)(`option`,{value:`static`,children:`static`})]}),(0,m.jsx)(`button`,{style:K,onClick:()=>{V.mode=C,V.updateNextFrame()},children:`Apply Mode`})]}),(0,m.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,m.jsx)(`button`,{style:K,onClick:()=>V.world.goHome(),children:`goHome`}),(0,m.jsx)(`button`,{style:K,onClick:()=>V.world.zoomIn(),children:`zoomIn`}),(0,m.jsx)(`button`,{style:K,onClick:()=>V.world.zoomOut(),children:`zoomOut`}),(0,m.jsx)(`button`,{style:K,onClick:()=>V.world.constraintBounds(!0),children:`constrain-bounds`})]}),(0,m.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,m.jsxs)(`select`,{value:T,onChange:e=>E(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[(0,m.jsx)(`option`,{value:``,children:`Select zone`}),V.world.zones.map((e,t)=>(0,m.jsx)(`option`,{value:String(e.id||t),children:e.id||`zone-${t}`},`${e.id}-${t}`))]}),(0,m.jsx)(`button`,{style:K,onClick:()=>{T&&V.selectZone(T)},children:`Select Zone`}),(0,m.jsx)(`button`,{style:K,onClick:()=>V.deselectZone(),children:`Deselect Zone`})]}),(0,m.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,m.jsx)(`button`,{style:K,onClick:()=>{let e=Rr(V);O(`Reset image hosts=${e.imageHostsReset}, renderers=${e.renderersReset}`),F()},children:`Recover Images`}),(0,m.jsx)(`button`,{style:K,onClick:pe,children:`Clear Logs`})]}),te?(0,m.jsx)(`div`,{children:te}):null]}):null]})]}):null,(0,m.jsx)(`button`,{style:K,onClick:()=>f(e=>!e),children:d?`Hide DevTools`:`Open DevTools`})]})};function Xr(e){return(0,p.useMemo)(()=>It(e),e)}function Zr(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 Qr(e,t=``,n=!1){let r=(0,p.useRef)(e);r.current&&n&&(console.log(`Diff:`,t,Zr(r.current,e)),r.current=e)}function $r(e,t){return!(!(e instanceof q||e instanceof J)||e.crop||e.cropData||e.display.rotation||e.style&&e.style.opacity!==void 0&&e.style.opacity!==1||e.__owner?.value?.rotation)}const ei=new Map;var ti=class{constructor(e,t){E(this,`canvas`,void 0),E(this,`gl`,void 0),E(this,`options`,void 0),E(this,`fatalImageError`,void 0),E(this,`program`,void 0),E(this,`fragmentShader`,void 0),E(this,`vertexShader`,void 0),E(this,`rectBuffer`,void 0),E(this,`fragmentShaderSource`,`
22
22
  precision mediump float;
23
23
 
24
24
  uniform sampler2D u_image;
@@ -53,11 +53,11 @@ function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;va
53
53
 
54
54
  v_texCoord = a_texCoord;
55
55
  }
56
- `),E(this,`attributes`,void 0),E(this,`uniforms`,void 0),E(this,`buffers`,void 0),E(this,`rendererPosition`,void 0),E(this,`dpi`,void 0),E(this,`maxConcurrentTasks`,6),E(this,`maxPrefetchPerFrame`,8),E(this,`imageLoadingConfig`,void 0),E(this,`imageRequestPool`,void 0),E(this,`framePrefetchCount`,0),E(this,`loadingCount`,0),E(this,`hasTilesFading`,!1),E(this,`firstMeaningfulPaint`,!1),E(this,`frameSawFastPathCandidate`,!1),E(this,`requiresRepaint`,!0),E(this,`tileRequestQueue`,[]),E(this,`queuedTileRequestKeys`,new Set),E(this,`inFlightImageLoads`,new Map),E(this,`requiredTileKeys`,new Set),E(this,`requiredPrefetchTileKeys`,new Set),E(this,`requestGeneration`,0),E(this,`frameCounter`,0),E(this,`pendingTileReveals`,new Map),E(this,`activeLayerScissorRect`,void 0),E(this,`onContextLost`,e=>{e.preventDefault(),this.emitFatalImageError({reason:`webgl-context-lost`,error:e})}),E(this,`lastResize`,0),E(this,`lastKnownScale`,1),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.options=t||{},this.imageLoadingConfig=be(this.options.imageLoading),this.maxConcurrentTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Oe({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:`anonymous`,useFetch:!0,cache:Wr});let n=e.getContext(`webgl2`);if(!n)throw this.emitFatalImageError({reason:`webgl-context-unavailable`,error:Error(`WebGL2 context unavailable`)}),Error(`WebGL2 context unavailable`);this.gl=n,this.canvas.addEventListener(`webglcontextlost`,this.onContextLost),this.fragmentShader=this.createShader(this.gl.FRAGMENT_SHADER,this.fragmentShaderSource),this.vertexShader=this.createShader(this.gl.VERTEX_SHADER,this.vertexShaderSource),this.program=this.createProgram(this.vertexShader,this.fragmentShader),this.dpi=t?.dpi||1,this.attributes={position:this.gl.getAttribLocation(this.program,`a_position`),texCoord:this.gl.getAttribLocation(this.program,`a_texCoord`)},this.uniforms={resolution:this.gl.getUniformLocation(this.program,`u_resolution`),texture:this.gl.getUniformLocation(this.program,`u_texture`),alpha:this.gl.getUniformLocation(this.program,`u_alpha`)},this.buffers={position:this.createArrayBuffer(),texCoord:this.createArrayBuffer(new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]))},this.rectBuffer=new Float32Array(12),this.resize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.useProgram(this.program),this.gl.enableVertexAttribArray(this.attributes.position),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.isImmediateReadiness()&&(this.firstMeaningfulPaint=!0)}isImmediateReadiness(){return this.options.readiness===`immediate`}emitFatalImageError(e){if(this.fatalImageError)return;let t={from:`webgl`,to:`canvas`,...e};this.fatalImageError=t,this.options.onFatalImageError&&this.options.onFatalImageError(t)}resize(){this.resizeCanvasToDisplaySize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return this.isImmediateReadiness()||this.firstMeaningfulPaint?!0:this.frameSawFastPathCandidate?!1:this.tileRequestQueue.length===0&&this.loadingCount===0&&this.inFlightImageLoads.size===0&&this.pendingTileReveals.size===0}beforeFrame(e,t,n,r){this.hasTilesFading=!1,this.requiresRepaint=!1,this.frameSawFastPathCandidate=!1,this.framePrefetchCount=0,this.frameCounter+=1,this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.flushTileRevealBatch();let i=ge(r);this.canvas.style.filter!==i&&(this.canvas.style.filter=i),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.disable(this.gl.SCISSOR_TEST),this.activeLayerScissorRect=void 0,this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.uniform2f(this.uniforms.resolution,this.gl.canvas.width/this.dpi,this.gl.canvas.height/this.dpi),this.lastResize>1e3&&(this.lastResize=0,this.resizeCanvasToDisplaySize()),this.lastResize+=t}getCompositeRenderOptions(e){return e.__parent?.renderOptions}shouldClipLayerToBounds(e){return e instanceof J||e instanceof Y?!!this.getCompositeRenderOptions(e)?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}toScissorRect(e){let t=this.gl.canvas.width/this.dpi,n=this.gl.canvas.height/this.dpi,r=Math.max(0,Math.min(t,e.x)),i=Math.max(0,Math.min(n,e.y)),a=Math.max(0,Math.min(t,e.x+e.width)),o=Math.max(0,Math.min(n,e.y+e.height));if(a<=r||o<=i)return;let s=Math.floor(r*this.dpi),c=Math.floor((n-o)*this.dpi),l=Math.ceil((a-r)*this.dpi),u=Math.ceil((o-i)*this.dpi);if(s<0&&(l+=s,s=0),c<0&&(u+=c,c=0),l=Math.min(l,this.gl.canvas.width-s),u=Math.min(u,this.gl.canvas.height-c),!(l<=0||u<=0))return{x:s,y:c,width:l,height:u}}prepareLayer(e,t){if(this.activeLayerScissorRect=void 0,t&&this.shouldClipLayerToBounds(e)){let e=this.getBoundsFromPoints(t);if(e){let t=this.toScissorRect(e);t?(this.activeLayerScissorRect=t,this.gl.enable(this.gl.SCISSOR_TEST),this.gl.scissor(t.x,t.y,t.width,t.height)):(this.gl.enable(this.gl.SCISSOR_TEST),this.gl.scissor(0,0,0,0),this.activeLayerScissorRect={x:0,y:0,width:0,height:0})}}(!e.__host||!e.__host.webgl)&&((e instanceof J||e instanceof Y)&&Ur(e,0)&&this.createImageHost(e),e instanceof Fe&&this.createTextureHost(e))}createTextureHost(e){e.__host=e.__host?e.__host:{};let t=this.gl,n=this.gl.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1);let r;if(e instanceof Fe){let n=e.getTexture();if(n.source)try{t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n.source)}catch(t){this.emitFatalImageError({reason:`teximage-security`,contentId:e.id,error:t})}r=n}t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),e.__host.webgl={height:e.height,width:e.width,texture:n,lastImage:r}}createImageHost(e){let t=[...Array(e.points.length/5)];e.__host=e.__host?e.__host:{},e.__host.webgl={height:e.height,width:e.width,textures:t,loading:[],loaded:[],loadedAt:[],tileState:{},lastLevelRendered:-1,onLoad:(t,n)=>{let r=this.gl,i=this.gl.createTexture();r.bindTexture(r.TEXTURE_2D,i),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1);try{r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n)}catch(n){this.emitFatalImageError({reason:`teximage-security`,imageUrl:e.getImageUrl?e.getImageUrl(t):void 0,contentId:e.id,tileIndex:t,error:n}),this.removeLoadingIndex(e,t);return}r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),e.__host.webgl.textures[t]=i,e.__host.webgl.loaded.push(t),e.__host.webgl.loadedAt[t]=void 0,this.setTileState(e,t,{...this.getTileState(e,t),state:`decoded`,attempts:0,nextRetryAt:void 0,error:void 0}),this.enqueueTileReveal(this.getTileKey(e,t),e,t),this.requiresRepaint=!0,this.removeLoadingIndex(e,t)}}}removeLoadingIndex(e,t){if(!e.__host?.webgl?.loading)return;let n=e.__host.webgl.loading.indexOf(t);n!==-1&&(e.__host.webgl.loading.splice(n,1),this.loadingCount=Math.max(0,this.loadingCount-1),this.requiresRepaint=!0)}getTileKey(e,t){return`${e.id}::${e.display.scale}::${t}`}nextRequestKey(e){return this.requestGeneration+=1,`${e}::${this.requestGeneration}`}getTileState(e,t){let n=e.__host?.webgl;return n?(n.tileState||(n.tileState={}),n.tileState[t]||(n.tileState[t]={state:`idle`}),n.tileState[t]):{state:`idle`}}setTileState(e,t,n){let r=e.__host?.webgl;r&&(r.tileState||(r.tileState={}),r.tileState[t]=n)}markTileRequired(e,t){if(t){this.requiredPrefetchTileKeys.add(e);return}this.requiredTileKeys.add(e)}isTileRequired(e){return this.requiredTileKeys.has(e)||this.requiredPrefetchTileKeys.has(e)}shouldSkipFade(e,t=performance.now()){return e?.requestedAt?t-e.requestedAt<=this.imageLoadingConfig.skipFadeIfLoadedWithinMs:!1}enqueueTileReveal(e,t,n){let r=performance.now();if(this.imageLoadingConfig.revealDelayFrames===0&&this.imageLoadingConfig.revealBatchWindowFrames===0){t.__host?.webgl?.loadedAt&&(t.__host.webgl.loadedAt[n]=r);let e=this.getTileState(t,n);this.setTileState(t,n,{...e,skipFade:this.shouldSkipFade(e,r)});return}this.pendingTileReveals.set(e,{paint:t,index:n,queuedFrame:this.frameCounter})}flushTileRevealBatch(){if(this.pendingTileReveals.size===0)return;let e=this.imageLoadingConfig.revealDelayFrames,t=this.imageLoadingConfig.revealBatchWindowFrames,n=performance.now(),r=[...this.pendingTileReveals.entries()].sort((e,t)=>e[1].queuedFrame-t[1].queuedFrame),i=0;for(;i<r.length;){let a=r[i];if(this.frameCounter-a[1].queuedFrame<e)break;let o=a[1].queuedFrame+t;for(;i<r.length&&r[i][1].queuedFrame<=o;){let[e,t]=r[i],a=t.paint.__host?.webgl,o=this.getTileState(t.paint,t.index);a?.loadedAt&&o.state===`decoded`&&!a.loadedAt[t.index]&&(a.loadedAt[t.index]=n,this.setTileState(t.paint,t.index,{...o,skipFade:this.shouldSkipFade(o,n)}),this.requiresRepaint=!0),this.pendingTileReveals.delete(e),i+=1}}}emitImageError(e){this.options.onImageError&&this.options.onImageError({renderer:`webgl`,...e})}releaseInFlightTileLoad(e,t={}){let n=this.inFlightImageLoads.get(e);n&&(n.release(t),this.inFlightImageLoads.delete(e))}pruneStaleTileWork(){this.tileRequestQueue=this.tileRequestQueue.filter(e=>{if(this.isTileRequired(e.tileKey))return!0;this.queuedTileRequestKeys.delete(e.key);let t=this.getTileState(e.paint,e.index);return t.lastRequestKey===e.requestKey&&t.state===`queued`&&this.setTileState(e.paint,e.index,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e.tileKey),!1});for(let[e,t]of[...this.inFlightImageLoads.entries()]){if(this.isTileRequired(e))continue;let n=this.getTileState(t.paint,t.index);n.lastRequestKey===t.requestKey&&n.state===`loading`&&this.setTileState(t.paint,t.index,{...n,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e),this.removeLoadingIndex(t.paint,t.index),this.releaseInFlightTileLoad(e,{silent:!0})}}getPrefetchRadius(e){let t=this.getCompositeRenderOptions(e);return t?typeof t.prefetchRadius==`number`?Math.max(0,t.prefetchRadius):t.loadingBias===`speed`?2:t.loadingBias===`data`?0:1:0}isLayerActive(e){let t=e.__parent;return t&&typeof t.isImageActive==`function`?!!t.isImageActive(e):!0}shouldDrawLayer(e,t,n){return(this.getCompositeRenderOptions(e)?.layerPolicy||`fallback-only`)===`active-only`?n?!0:!!(e.__host?.webgl?.texture?e.__host.webgl.texture:e.__host?.webgl?.textures?.[t]):!0}getFadeAlpha(e,t,n){if(this.getTileState(e,t).skipFade)return 1;if(this.getTileState(e,t).state===`decoded`&&!e.__host?.webgl?.loadedAt?.[t]&&(this.imageLoadingConfig.revealDelayFrames>0||this.imageLoadingConfig.revealBatchWindowFrames>0))return 0;let r=this.getCompositeRenderOptions(e);if(!r||!r.fadeInMs||r.fadeInMs<=0)return 1;let i=performance.now(),a=1;if(n&&r.fadeOnLayerChange&&r.layerPolicy!==`active-only`){let t=e.__parent;if(t&&typeof t.getImageActivatedAt==`function`){let n=t.getImageActivatedAt(e);typeof n==`number`&&(a=Math.min(a,Math.max(0,Math.min(1,(i-n)/r.fadeInMs))))}}let o=e.__host?.webgl?.loadedAt?.[t];return o&&(n||r.fadeFallbackTiles)&&(a=Math.min(a,Math.max(0,Math.min(1,(i-o)/r.fadeInMs)))),a}getTileRequestKey(e,t){return`${e.id}::${e.display.scale}::${t}`}getCompositeOwner(e){let t=e?.__parent;return t&&t.renderOptions?t:void 0}compareCompositeLoadPriority(e,t){let n=this.getCompositeOwner(e),r=this.getCompositeOwner(t);if(!n||n!==r)return 0;let i=e?.display.scale||0;return(t?.display.scale||0)-i}enqueueTileRequest(e,t,n,r){if(!e.getImageUrl||!e.__host?.webgl)return!1;let i=this.getTileKey(e,t);if(this.markTileRequired(i,r),(e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures?.[t])||e.__host.webgl.loading&&e.__host.webgl.loading.indexOf(t)!==-1)return!1;let a=this.getTileState(e,t),o=performance.now();if(a.nextRetryAt&&a.nextRetryAt>o)return!1;let s=this.getTileRequestKey(e,t);if(this.queuedTileRequestKeys.has(s))return!1;let c=this.nextRequestKey(i);return this.pendingTileReveals.delete(i),this.setTileState(e,t,{...a,state:`queued`,requestedAt:o,lastRequestKey:c,cancelledAt:void 0,error:void 0,skipFade:!1}),this.tileRequestQueue.push({key:s,tileKey:i,requestKey:c,paint:e,index:t,url:e.getImageUrl(t),priority:n,scale:e.display.scale,prefetch:r}),this.queuedTileRequestKeys.add(s),this.requiresRepaint=!0,!0}schedulePrefetchNeighbours(e,t,n){if(this.framePrefetchCount>=this.maxPrefetchPerFrame||this.getCompositeRenderOptions(e)?.loadingBias===`data`)return;let r=this.getPrefetchRadius(e);if(r<=0||!e.columns||!e.rows)return;let i=t%e.columns,a=Math.floor(t/e.columns);for(let t=1;t<=r;t++)for(let r=-t;r<=t;r++)for(let o=-t;o<=t;o++){if(Math.max(Math.abs(o),Math.abs(r))!==t)continue;let s=i+o,c=a+r;if(s<0||c<0||s>=e.columns||c>=e.rows)continue;let l=c*e.columns+s;if(this.enqueueTileRequest(e,l,n+t*1e3,!0)&&(this.framePrefetchCount++,this.framePrefetchCount>=this.maxPrefetchPerFrame))return}}processTileQueue(){if(this.tileRequestQueue.length)for(this.tileRequestQueue.sort((e,t)=>{if(e.prefetch!==t.prefetch)return e.prefetch?1:-1;let n=this.compareCompositeLoadPriority(e.paint,t.paint);return n===0?e.priority===t.priority?t.scale-e.scale:e.priority-t.priority:n});this.loadingCount<this.maxConcurrentTasks&&this.tileRequestQueue.length;){let e=this.tileRequestQueue.shift();this.queuedTileRequestKeys.delete(e.key);let t=e.paint.__host?.webgl;if(!t||!e.paint.getImageUrl)continue;let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey||(t.texture?t.texture:t.textures?.[e.index])||t.loading&&t.loading.indexOf(e.index)!==-1)continue;this.setTileState(e.paint,e.index,{...n,state:`loading`,url:e.url,requestedAt:n.requestedAt||performance.now()}),t.loading.push(e.index),this.loadingCount++,this.requiresRepaint=!0;let r=`${e.tileKey}::${e.requestKey}`,i=this.imageRequestPool.acquire(e.url,r);this.inFlightImageLoads.set(e.tileKey,{tileKey:e.tileKey,requestKey:e.requestKey,consumerId:r,paint:e.paint,index:e.index,release:i.release}),i.promise.then(t=>{this.releaseInFlightTileLoad(e.tileKey,{silent:!0});let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey||n.state!==`loading`){this.removeLoadingIndex(e.paint,e.index);return}e.paint.__host?.webgl?.onLoad(e.index,t)}).catch(t=>{if(this.releaseInFlightTileLoad(e.tileKey,{silent:!0}),Ce(t)){let t=this.getTileState(e.paint,e.index);t.lastRequestKey===e.requestKey&&this.setTileState(e.paint,e.index,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e.tileKey),this.removeLoadingIndex(e.paint,e.index);return}let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey){this.removeLoadingIndex(e.paint,e.index);return}let r=(n.attempts||0)+1,i=r<this.imageLoadingConfig.maxAttempts,a=i?performance.now()+xe(this.imageLoadingConfig,r):performance.now()+this.imageLoadingConfig.errorRetryIntervalMs;this.setTileState(e.paint,e.index,{...n,state:i?`idle`:`error`,attempts:r,nextRetryAt:a,error:t}),this.pendingTileReveals.delete(e.tileKey),this.removeLoadingIndex(e.paint,e.index),this.emitImageError({severity:`recoverable`,imageUrl:e.url,contentId:e.paint.id,tileIndex:e.index,attempt:r,maxAttempts:this.imageLoadingConfig.maxAttempts,willRetry:i,nextRetryAt:a,error:t}),!i&&this.options.fallbackOnImageLoadError&&this.emitFatalImageError({reason:`image-cors-or-load`,imageUrl:e.url,contentId:e.paint.id,tileIndex:e.index,error:t})}).finally(()=>{this.processTileQueue()})}}paint(e,t,n,r,i,a){if(e.type!==`spacial-content`||!e.__host||!e.__host.webgl)return;let o=e instanceof J||e instanceof Y;if(o&&!Ur(e,t))return;o&&(this.frameSawFastPathCandidate=!0);let s=o?this.isLayerActive(e):!0;if(e.getTexture){let n=e.getTexture();if(n&&e.__host.webgl.lastImage!==n.hash&&n.source&&!e.__host.webgl.error)try{let t=this.gl.RGBA,r=this.gl.RGBA,i=this.gl.UNSIGNED_BYTE;this.gl.bindTexture(this.gl.TEXTURE_2D,e.__host.webgl.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,t,r,i,n.source),e.__host.webgl.lastImage=n.hash}catch(n){e.__host.webgl.error=n,this.emitFatalImageError({reason:`teximage-security`,contentId:e.id,tileIndex:t,error:n})}}let c=e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures[t];if(o&&s){let o=this.gl.canvas.width/this.dpi/2,s=this.gl.canvas.height/this.dpi/2,l=n+i/2,u=r+a/2,d=Math.hypot(l-o,u-s);c||this.enqueueTileRequest(e,t,d,!1),e instanceof Y&&this.schedulePrefetchNeighbours(e,t,d)}if(!(o&&!this.shouldDrawLayer(e,t,s))&&c){let l=o&&typeof e.style?.opacity==`number`?e.style.opacity:1,u=typeof e.__zoneVisibilityAlpha==`number`?e.__zoneVisibilityAlpha:1;if(!l)return;let d=o?this.getFadeAlpha(e,t,s):1;d<1&&(this.hasTilesFading=!0);let f=l*d*u;this.gl.enableVertexAttribArray(this.attributes.texCoord),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffers.texCoord),this.gl.enableVertexAttribArray(this.attributes.texCoord),this.gl.vertexAttribPointer(this.attributes.texCoord,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffers.position),this.gl.enableVertexAttribArray(this.attributes.position),this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,c),this.gl.uniform1i(this.uniforms.texture,0),this.gl.uniform1f(this.uniforms.alpha,f),this.setRectangle(n,r,i,a),this.gl.drawArrays(this.gl.TRIANGLES,0,6),!this.isImmediateReadiness()&&o&&f>0&&(this.firstMeaningfulPaint=!0)}}afterPaintLayer(e,t){}pendingUpdate(){return this.requiresRepaint||this.tileRequestQueue.length>0||this.loadingCount>0||this.inFlightImageLoads.size>0||this.pendingTileReveals.size>0||this.hasTilesFading}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}afterFrame(){this.pruneStaleTileWork(),this.processTileQueue()}getScale(e,t,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}getViewportBounds(e,t,n){return null}createShader(e,t){let n=this.gl.createShader(e);if(n){if(this.gl.shaderSource(n,t),this.gl.compileShader(n),this.gl.getShaderParameter(n,this.gl.COMPILE_STATUS))return n;let e=this.gl.getShaderInfoLog(n);if(this.gl.deleteShader(n),e)throw Error(e)}throw Error(`Invalid shader`)}createProgram(e,t){let n=this.gl.createProgram();if(n){if(this.gl.attachShader(n,e),this.gl.attachShader(n,t),this.gl.linkProgram(n),this.gl.getProgramParameter(n,this.gl.LINK_STATUS))return n;let r=this.gl.getProgramInfoLog(n);if(this.gl.deleteProgram(n),r)throw Error(r)}throw Error(`Invalid program`)}resizeCanvasToDisplaySize(){let e=this.gl.canvas,t=e.clientWidth,n=e.clientHeight,r=Math.round(t*this.dpi),i=Math.round(n*this.dpi),a=e.width!==r||e.height!==i;return a&&(e.width=r,e.height=i),a}createArrayBuffer(e){let t=this.gl.createBuffer();if(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),e&&this.gl.bufferData(this.gl.ARRAY_BUFFER,e,this.gl.STATIC_DRAW),!t)throw Error(`Cannot create buffer`);return t}setRectangle(e,t,n,r){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,n,r),this.gl.STATIC_DRAW)}getRectangle(e,t,n,r){let i=e,a=e+n,o=t,s=t+r;return this.rectBuffer.set([i,o,a,o,i,s,i,s,a,o,a,s]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){this.activeLayerScissorRect&&(this.gl.disable(this.gl.SCISSOR_TEST),this.activeLayerScissorRect=void 0)}resetReadyState(){this.isImmediateReadiness()||(this.firstMeaningfulPaint=!1)}reset(){this.canvas.removeEventListener(`webglcontextlost`,this.onContextLost),this.canvas.style.filter=`none`,this.framePrefetchCount=0,this.loadingCount=0,this.hasTilesFading=!1,this.requiresRepaint=!1,this.tileRequestQueue=[],this.queuedTileRequestKeys.clear();for(let e of[...this.inFlightImageLoads.keys()])this.releaseInFlightTileLoad(e,{silent:!0});this.imageRequestPool.cancelAll({silent:!0}),this.inFlightImageLoads.clear(),this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.pendingTileReveals.clear(),this.requestGeneration+=1,this.frameCounter=0,this.frameSawFastPathCandidate=!1,this.firstMeaningfulPaint=this.isImmediateReadiness()}};function Kr({interactive:e=!0,viewport:t,forceRefresh:n,canvasElement:r,parityCanvasElement:i,overlayElement:a,controllerConfig:o,interactionMode:s=`popmotion`,unstable_webglRenderer:c,dpi:l,debug:u,canvasBox:d=!0,polygon:f=!0,navigatorElement:p,runtimeOptions:m,onWebGLFallback:h,onImageError:g,imageLoading:_,webglFallbackOnImageLoadError:v,webglReadiness:y,navigatorRendererOptions:b}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let x=e?(s===`pdf-scroll-zone`?vn:an)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...o||{}}):void 0,S,C;if(c)try{S=new Gr(r,{dpi:l,onFatalImageError:h,onImageError:g,imageLoading:_,fallbackOnImageLoadError:v,readiness:y})}catch{S=new je(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g})}else S=new je(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g});let w=S instanceof Gr;w&&i&&(C=new je(i,{dpi:l,debug:u,box:d,polygon:f,paintImages:!0,shouldPaintImage:(e,t)=>!Ur(e,t),readiness:`immediate`,imageLoading:_,onImageError:g}));let T=w&&!C?!0:!d,ee={},E=b?.onRequestRender,O=p?new Mt(p,{...b||{},sharedCanvasRenderer:S instanceof je?S:void 0,onRequestRender:()=>{E&&E(),ee.current&&ee.current.updateNextFrame()}}):void 0,k=new Me([S,C,a?new It(a,{box:T,text:!0,triggerResize:n}):void 0,O]),A=new Tn(k,new st(1024,1024),t,x?[x]:[],m);ee.current=A;let j=new D(r,A);return{name:`default-preset`,em:j,runtime:A,renderer:k,controller:x,canvas:r,parityCanvas:C?i:void 0,navigator:p,unmount(){Jn(A),A.stopControllers(),A.stop(),A.reset(),j&&j.stop()}}}const qr=1+Number.MIN_VALUE;var Jr=class{constructor(e,t){E(this,`container`,void 0),E(this,`width`,void 0),E(this,`height`,void 0),E(this,`pending`,!0),E(this,`options`,void 0),E(this,`stylesheet`,void 0),E(this,`zIndex`,0),E(this,`lastKnownScale`,1),E(this,`rendererPosition`,void 0),E(this,`currentlyVisible`,[]),E(this,`previouslyVisible`,[]),this.container=e,this.rendererPosition=e.getBoundingClientRect();let{width:n,height:r}=this.rendererPosition;this.width=n,this.height=r,this.options={addPart:!1,setDraggableFalse:!1,imageClass:``,widthStylesheet:!1,sheetPrefix:`position-`,background:`#000`,...t||{}},this.stylesheet=new Ft({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
56
+ `),E(this,`attributes`,void 0),E(this,`uniforms`,void 0),E(this,`buffers`,void 0),E(this,`rendererPosition`,void 0),E(this,`dpi`,void 0),E(this,`maxConcurrentTasks`,6),E(this,`maxPrefetchPerFrame`,8),E(this,`imageLoadingConfig`,void 0),E(this,`imageRequestPool`,void 0),E(this,`framePrefetchCount`,0),E(this,`loadingCount`,0),E(this,`hasTilesFading`,!1),E(this,`firstMeaningfulPaint`,!1),E(this,`frameSawFastPathCandidate`,!1),E(this,`requiresRepaint`,!0),E(this,`tileRequestQueue`,[]),E(this,`queuedTileRequestKeys`,new Set),E(this,`inFlightImageLoads`,new Map),E(this,`requiredTileKeys`,new Set),E(this,`requiredPrefetchTileKeys`,new Set),E(this,`imagePaints`,new Set),E(this,`requestGeneration`,0),E(this,`frameCounter`,0),E(this,`pendingTileReveals`,new Map),E(this,`activeLayerScissorRect`,void 0),E(this,`onContextLost`,e=>{e.preventDefault(),this.emitFatalImageError({reason:`webgl-context-lost`,error:e})}),E(this,`lastResize`,0),E(this,`lastKnownScale`,1),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.options=t||{},this.imageLoadingConfig=X(this.options.imageLoading),this.maxConcurrentTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Z({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:`anonymous`,useFetch:!0,cache:ei});let n=e.getContext(`webgl2`);if(!n)throw this.emitFatalImageError({reason:`webgl-context-unavailable`,error:Error(`WebGL2 context unavailable`)}),Error(`WebGL2 context unavailable`);this.gl=n,this.canvas.addEventListener(`webglcontextlost`,this.onContextLost),this.fragmentShader=this.createShader(this.gl.FRAGMENT_SHADER,this.fragmentShaderSource),this.vertexShader=this.createShader(this.gl.VERTEX_SHADER,this.vertexShaderSource),this.program=this.createProgram(this.vertexShader,this.fragmentShader),this.dpi=t?.dpi||1,this.attributes={position:this.gl.getAttribLocation(this.program,`a_position`),texCoord:this.gl.getAttribLocation(this.program,`a_texCoord`)},this.uniforms={resolution:this.gl.getUniformLocation(this.program,`u_resolution`),texture:this.gl.getUniformLocation(this.program,`u_texture`),alpha:this.gl.getUniformLocation(this.program,`u_alpha`)},this.buffers={position:this.createArrayBuffer(),texCoord:this.createArrayBuffer(new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]))},this.rectBuffer=new Float32Array(12),this.resize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.useProgram(this.program),this.gl.enableVertexAttribArray(this.attributes.position),this.gl.enable(this.gl.BLEND),this.gl.blendFuncSeparate(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA,this.gl.ONE,this.gl.ONE_MINUS_SRC_ALPHA),this.isImmediateReadiness()&&(this.firstMeaningfulPaint=!0)}isImmediateReadiness(){return this.options.readiness===`immediate`}emitFatalImageError(e){if(this.fatalImageError)return;let t={from:`webgl`,to:`canvas`,...e};this.fatalImageError=t,this.options.onFatalImageError&&this.options.onFatalImageError(t)}resize(){this.resizeCanvasToDisplaySize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return this.isImmediateReadiness()||this.firstMeaningfulPaint?!0:this.frameSawFastPathCandidate?!1:this.tileRequestQueue.length===0&&this.loadingCount===0&&this.inFlightImageLoads.size===0&&this.pendingTileReveals.size===0}beforeFrame(e,t,n,r){this.hasTilesFading=!1,this.requiresRepaint=!1,this.frameSawFastPathCandidate=!1,this.framePrefetchCount=0,this.frameCounter+=1,this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.flushTileRevealBatch();let i=Y(r);this.canvas.style.filter!==i&&(this.canvas.style.filter=i),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.disable(this.gl.SCISSOR_TEST),this.activeLayerScissorRect=void 0,this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.uniform2f(this.uniforms.resolution,this.gl.canvas.width/this.dpi,this.gl.canvas.height/this.dpi),this.lastResize>1e3&&(this.lastResize=0,this.resizeCanvasToDisplaySize()),this.lastResize+=t}getCompositeRenderOptions(e){return e.__parent?.renderOptions}shouldClipLayerToBounds(e){return e instanceof q||e instanceof J?!!this.getCompositeRenderOptions(e)?.clipToBounds:!1}getBoundsFromPoints(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a=0;a<e.length;a+=5)e[a]&&(t=Math.min(t,e[a+1]),n=Math.min(n,e[a+2]),r=Math.max(r,e[a+3]),i=Math.max(i,e[a+4]));if(!(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i))&&!(r<=t||i<=n))return{x:t,y:n,width:r-t,height:i-n}}toScissorRect(e){let t=this.gl.canvas.width/this.dpi,n=this.gl.canvas.height/this.dpi,r=Math.max(0,Math.min(t,e.x)),i=Math.max(0,Math.min(n,e.y)),a=Math.max(0,Math.min(t,e.x+e.width)),o=Math.max(0,Math.min(n,e.y+e.height));if(a<=r||o<=i)return;let s=Math.floor(r*this.dpi),c=Math.floor((n-o)*this.dpi),l=Math.ceil((a-r)*this.dpi),u=Math.ceil((o-i)*this.dpi);if(s<0&&(l+=s,s=0),c<0&&(u+=c,c=0),l=Math.min(l,this.gl.canvas.width-s),u=Math.min(u,this.gl.canvas.height-c),!(l<=0||u<=0))return{x:s,y:c,width:l,height:u}}prepareLayer(e,t){if(this.activeLayerScissorRect=void 0,t&&this.shouldClipLayerToBounds(e)){let e=this.getBoundsFromPoints(t);if(e){let t=this.toScissorRect(e);t?(this.activeLayerScissorRect=t,this.gl.enable(this.gl.SCISSOR_TEST),this.gl.scissor(t.x,t.y,t.width,t.height)):(this.gl.enable(this.gl.SCISSOR_TEST),this.gl.scissor(0,0,0,0),this.activeLayerScissorRect={x:0,y:0,width:0,height:0})}}(!e.__host||!e.__host.webgl)&&((e instanceof q||e instanceof J)&&$r(e,0)&&this.createImageHost(e),e instanceof Le&&this.createTextureHost(e)),(e instanceof q||e instanceof J)&&this.imagePaints.add(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 Le){let n=e.getTexture();if(n.source)try{t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n.source)}catch(t){this.emitFatalImageError({reason:`teximage-security`,contentId:e.id,error:t})}r=n}t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),e.__host.webgl={height:e.height,width:e.width,texture:n,lastImage:r}}createImageHost(e){let t=[...Array(e.points.length/5)];e.__host=e.__host?e.__host:{},e.__host.webgl={height:e.height,width:e.width,textures:t,loading:[],loaded:[],loadedAt:[],tileState:{},lastLevelRendered:-1,onLoad:(t,n)=>{let r=this.gl,i=this.gl.createTexture();r.bindTexture(r.TEXTURE_2D,i),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1);try{r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n)}catch(n){this.emitFatalImageError({reason:`teximage-security`,imageUrl:e.getImageUrl?e.getImageUrl(t):void 0,contentId:e.id,tileIndex:t,error:n}),this.removeLoadingIndex(e,t);return}r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),e.__host.webgl.textures[t]=i,e.__host.webgl.loaded.push(t),e.__host.webgl.loadedAt[t]=void 0,this.setTileState(e,t,{...this.getTileState(e,t),state:`decoded`,attempts:0,nextRetryAt:void 0,error:void 0}),this.enqueueTileReveal(this.getTileKey(e,t),e,t),this.requiresRepaint=!0,this.removeLoadingIndex(e,t)}}}removeLoadingIndex(e,t){if(!e.__host?.webgl?.loading)return;let n=e.__host.webgl.loading.indexOf(t);n!==-1&&(e.__host.webgl.loading.splice(n,1),this.loadingCount=Math.max(0,this.loadingCount-1),this.requiresRepaint=!0)}getTileKey(e,t){return`${e.id}::${e.display.scale}::${t}`}nextRequestKey(e){return this.requestGeneration+=1,`${e}::${this.requestGeneration}`}getTileState(e,t){let n=e.__host?.webgl;return n?(n.tileState||(n.tileState={}),n.tileState[t]||(n.tileState[t]={state:`idle`}),n.tileState[t]):{state:`idle`}}setTileState(e,t,n){let r=e.__host?.webgl;r&&(r.tileState||(r.tileState={}),r.tileState[t]=n)}markTileRequired(e,t){if(t){this.requiredPrefetchTileKeys.add(e);return}this.requiredTileKeys.add(e)}isTileRequired(e){return this.requiredTileKeys.has(e)||this.requiredPrefetchTileKeys.has(e)}shouldSkipFade(e,t=performance.now()){return e?.requestedAt?t-e.requestedAt<=this.imageLoadingConfig.skipFadeIfLoadedWithinMs:!1}enqueueTileReveal(e,t,n){let r=performance.now();if(this.imageLoadingConfig.revealDelayFrames===0&&this.imageLoadingConfig.revealBatchWindowFrames===0){t.__host?.webgl?.loadedAt&&(t.__host.webgl.loadedAt[n]=r);let e=this.getTileState(t,n);this.setTileState(t,n,{...e,skipFade:this.shouldSkipFade(e,r)});return}this.pendingTileReveals.set(e,{paint:t,index:n,queuedFrame:this.frameCounter})}flushTileRevealBatch(){if(this.pendingTileReveals.size===0)return;let e=this.imageLoadingConfig.revealDelayFrames,t=this.imageLoadingConfig.revealBatchWindowFrames,n=performance.now(),r=[...this.pendingTileReveals.entries()].sort((e,t)=>e[1].queuedFrame-t[1].queuedFrame),i=0;for(;i<r.length;){let a=r[i];if(this.frameCounter-a[1].queuedFrame<e)break;let o=a[1].queuedFrame+t;for(;i<r.length&&r[i][1].queuedFrame<=o;){let[e,t]=r[i],a=t.paint.__host?.webgl,o=this.getTileState(t.paint,t.index);a?.loadedAt&&o.state===`decoded`&&!a.loadedAt[t.index]&&(a.loadedAt[t.index]=n,this.setTileState(t.paint,t.index,{...o,skipFade:this.shouldSkipFade(o,n)}),this.requiresRepaint=!0),this.pendingTileReveals.delete(e),i+=1}}}emitImageError(e){this.options.onImageError&&this.options.onImageError({renderer:`webgl`,...e})}releaseInFlightTileLoad(e,t={}){let n=this.inFlightImageLoads.get(e);n&&(n.release(t),this.inFlightImageLoads.delete(e))}pruneStaleTileWork(){this.tileRequestQueue=this.tileRequestQueue.filter(e=>{if(this.isTileRequired(e.tileKey))return!0;this.queuedTileRequestKeys.delete(e.key);let t=this.getTileState(e.paint,e.index);return t.lastRequestKey===e.requestKey&&t.state===`queued`&&this.setTileState(e.paint,e.index,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e.tileKey),!1});for(let[e,t]of[...this.inFlightImageLoads.entries()]){if(this.isTileRequired(e))continue;let n=this.getTileState(t.paint,t.index);n.lastRequestKey===t.requestKey&&n.state===`loading`&&this.setTileState(t.paint,t.index,{...n,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e),this.removeLoadingIndex(t.paint,t.index),this.releaseInFlightTileLoad(e,{silent:!0})}}getPrefetchRadius(e){let t=this.getCompositeRenderOptions(e);return t?typeof t.prefetchRadius==`number`?Math.max(0,t.prefetchRadius):t.loadingBias===`speed`?2:t.loadingBias===`data`?0:1:0}isLayerActive(e){let t=e.__parent;return t&&typeof t.isImageActive==`function`?!!t.isImageActive(e):!0}shouldDrawLayer(e,t,n){return(this.getCompositeRenderOptions(e)?.layerPolicy||`fallback-only`)===`active-only`?n?!0:!!(e.__host?.webgl?.texture?e.__host.webgl.texture:e.__host?.webgl?.textures?.[t]):!0}getFadeAlpha(e,t,n){if(this.getTileState(e,t).skipFade)return 1;if(this.getTileState(e,t).state===`decoded`&&!e.__host?.webgl?.loadedAt?.[t]&&(this.imageLoadingConfig.revealDelayFrames>0||this.imageLoadingConfig.revealBatchWindowFrames>0))return 0;let r=this.getCompositeRenderOptions(e);if(!r||!r.fadeInMs||r.fadeInMs<=0)return 1;let i=r.fadeInMs,a=performance.now(),o=1;if(n&&r.fadeOnLayerChange&&r.layerPolicy!==`active-only`){let t=e.__parent;if(t&&typeof t.getImageActivatedAt==`function`){let n=t.getImageActivatedAt(e);typeof n==`number`&&(o=Math.min(o,Math.max(0,Math.min(1,(a-n)/i))))}}if(e.__host?.webgl?.loadedAt?.[t]&&(n||r.fadeFallbackTiles)){let n=this.getTileState(e,t);n.fadeStartedAt||(n.fadeStartedAt=a),o=Math.min(o,Math.max(0,Math.min(1,(a-n.fadeStartedAt)/i)))}return o}getTileRequestKey(e,t){return`${e.id}::${e.display.scale}::${t}`}getCompositeOwner(e){let t=e?.__parent;return t&&t.renderOptions?t:void 0}compareCompositeLoadPriority(e,t){let n=this.getCompositeOwner(e),r=this.getCompositeOwner(t);if(!n||n!==r)return 0;let i=e?.display.scale||0;return(t?.display.scale||0)-i}enqueueTileRequest(e,t,n,r){if(!e.getImageUrl||!e.__host?.webgl)return!1;let i=this.getTileKey(e,t);if(this.markTileRequired(i,r),(e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures?.[t])||e.__host.webgl.loading&&e.__host.webgl.loading.indexOf(t)!==-1)return!1;let a=this.getTileState(e,t),o=performance.now();if(a.nextRetryAt&&a.nextRetryAt>o)return!1;let s=this.getTileRequestKey(e,t);if(this.queuedTileRequestKeys.has(s))return!1;let c=this.nextRequestKey(i);return this.pendingTileReveals.delete(i),this.setTileState(e,t,{...a,state:`queued`,requestedAt:o,lastRequestKey:c,cancelledAt:void 0,error:void 0,skipFade:!1}),this.tileRequestQueue.push({key:s,tileKey:i,requestKey:c,paint:e,index:t,url:e.getImageUrl(t),priority:n,scale:e.display.scale,prefetch:r}),this.queuedTileRequestKeys.add(s),this.requiresRepaint=!0,!0}schedulePrefetchNeighbours(e,t,n){if(this.framePrefetchCount>=this.maxPrefetchPerFrame||this.getCompositeRenderOptions(e)?.loadingBias===`data`)return;let r=this.getPrefetchRadius(e);if(r<=0||!e.columns||!e.rows)return;let i=t%e.columns,a=Math.floor(t/e.columns);for(let t=1;t<=r;t++)for(let r=-t;r<=t;r++)for(let o=-t;o<=t;o++){if(Math.max(Math.abs(o),Math.abs(r))!==t)continue;let s=i+o,c=a+r;if(s<0||c<0||s>=e.columns||c>=e.rows)continue;let l=c*e.columns+s;if(this.enqueueTileRequest(e,l,n+t*1e3,!0)&&(this.framePrefetchCount++,this.framePrefetchCount>=this.maxPrefetchPerFrame))return}}processTileQueue(){if(this.tileRequestQueue.length)for(this.tileRequestQueue.sort((e,t)=>{if(e.prefetch!==t.prefetch)return e.prefetch?1:-1;let n=this.compareCompositeLoadPriority(e.paint,t.paint);return n===0?e.priority===t.priority?t.scale-e.scale:e.priority-t.priority:n});this.loadingCount<this.maxConcurrentTasks&&this.tileRequestQueue.length;){let e=this.tileRequestQueue.shift();this.queuedTileRequestKeys.delete(e.key);let t=e.paint.__host?.webgl;if(!t||!e.paint.getImageUrl)continue;let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey||(t.texture?t.texture:t.textures?.[e.index])||t.loading&&t.loading.indexOf(e.index)!==-1)continue;this.setTileState(e.paint,e.index,{...n,state:`loading`,url:e.url,requestedAt:n.requestedAt||performance.now()}),t.loading.push(e.index),this.loadingCount++,this.requiresRepaint=!0;let r=`${e.tileKey}::${e.requestKey}`,i=this.imageRequestPool.acquire(e.url,r);this.inFlightImageLoads.set(e.tileKey,{tileKey:e.tileKey,requestKey:e.requestKey,consumerId:r,paint:e.paint,index:e.index,release:i.release}),i.promise.then(t=>{this.releaseInFlightTileLoad(e.tileKey,{silent:!0});let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey||n.state!==`loading`){this.removeLoadingIndex(e.paint,e.index);return}e.paint.__host?.webgl?.onLoad(e.index,t)}).catch(t=>{if(this.releaseInFlightTileLoad(e.tileKey,{silent:!0}),Se(t)){let t=this.getTileState(e.paint,e.index);t.lastRequestKey===e.requestKey&&this.setTileState(e.paint,e.index,{...t,state:`idle`,cancelledAt:performance.now()}),this.pendingTileReveals.delete(e.tileKey),this.removeLoadingIndex(e.paint,e.index);return}let n=this.getTileState(e.paint,e.index);if(n.lastRequestKey!==e.requestKey){this.removeLoadingIndex(e.paint,e.index);return}let r=(n.attempts||0)+1,i=r<this.imageLoadingConfig.maxAttempts,a=i?performance.now()+be(this.imageLoadingConfig,r):performance.now()+this.imageLoadingConfig.errorRetryIntervalMs;this.setTileState(e.paint,e.index,{...n,state:i?`idle`:`error`,attempts:r,nextRetryAt:a,error:t}),this.pendingTileReveals.delete(e.tileKey),this.removeLoadingIndex(e.paint,e.index),this.emitImageError({severity:`recoverable`,imageUrl:e.url,contentId:e.paint.id,tileIndex:e.index,attempt:r,maxAttempts:this.imageLoadingConfig.maxAttempts,willRetry:i,nextRetryAt:a,error:t}),!i&&this.options.fallbackOnImageLoadError&&this.emitFatalImageError({reason:`image-cors-or-load`,imageUrl:e.url,contentId:e.paint.id,tileIndex:e.index,error:t})}).finally(()=>{this.processTileQueue()})}}paint(e,t,n,r,i,a){if(e.type!==`spacial-content`||!e.__host||!e.__host.webgl)return;let o=e instanceof q||e instanceof J;if(o&&!$r(e,t))return;o&&(this.frameSawFastPathCandidate=!0);let s=o?this.isLayerActive(e):!0;if(e.getTexture){let n=e.getTexture();if(n&&e.__host.webgl.lastImage!==n.hash&&n.source&&!e.__host.webgl.error)try{let t=this.gl.RGBA,r=this.gl.RGBA,i=this.gl.UNSIGNED_BYTE;this.gl.bindTexture(this.gl.TEXTURE_2D,e.__host.webgl.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,t,r,i,n.source),e.__host.webgl.lastImage=n.hash}catch(n){e.__host.webgl.error=n,this.emitFatalImageError({reason:`teximage-security`,contentId:e.id,tileIndex:t,error:n})}}let c=e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures[t];if(o&&s){let o=this.gl.canvas.width/this.dpi/2,s=this.gl.canvas.height/this.dpi/2,l=n+i/2,u=r+a/2,d=Math.hypot(l-o,u-s);c||this.enqueueTileRequest(e,t,d,!1),e instanceof J&&this.schedulePrefetchNeighbours(e,t,d)}if(!(o&&!this.shouldDrawLayer(e,t,s))&&c){let l=o&&typeof e.style?.opacity==`number`?e.style.opacity:1,u=typeof e.__zoneVisibilityAlpha==`number`?e.__zoneVisibilityAlpha:1;if(!l)return;let d=o?this.getFadeAlpha(e,t,s):1;d<1&&(this.hasTilesFading=!0);let f=l*d*u;this.gl.enableVertexAttribArray(this.attributes.texCoord),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffers.texCoord),this.gl.enableVertexAttribArray(this.attributes.texCoord),this.gl.vertexAttribPointer(this.attributes.texCoord,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffers.position),this.gl.enableVertexAttribArray(this.attributes.position),this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,c),this.gl.uniform1i(this.uniforms.texture,0),this.gl.uniform1f(this.uniforms.alpha,f),this.setRectangle(n,r,i,a),this.gl.drawArrays(this.gl.TRIANGLES,0,6),!this.isImmediateReadiness()&&o&&f>0&&(this.firstMeaningfulPaint=!0)}}afterPaintLayer(e,t){}pendingUpdate(){return this.requiresRepaint||this.tileRequestQueue.length>0||this.loadingCount>0||this.inFlightImageLoads.size>0||this.pendingTileReveals.size>0||this.hasTilesFading}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}afterFrame(){this.pruneStaleTileWork(),this.processTileQueue()}getScale(e,t,n){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),i=r.width/e,a=r.height/t,o=(i<a?a:i)*(n&&this.dpi||1);return Number.isNaN(o)||(this.lastKnownScale=o),this.lastKnownScale}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}getViewportBounds(e,t,n){return null}createShader(e,t){let n=this.gl.createShader(e);if(n){if(this.gl.shaderSource(n,t),this.gl.compileShader(n),this.gl.getShaderParameter(n,this.gl.COMPILE_STATUS))return n;let e=this.gl.getShaderInfoLog(n);if(this.gl.deleteShader(n),e)throw Error(e)}throw Error(`Invalid shader`)}createProgram(e,t){let n=this.gl.createProgram();if(n){if(this.gl.attachShader(n,e),this.gl.attachShader(n,t),this.gl.linkProgram(n),this.gl.getProgramParameter(n,this.gl.LINK_STATUS))return n;let r=this.gl.getProgramInfoLog(n);if(this.gl.deleteProgram(n),r)throw Error(r)}throw Error(`Invalid program`)}resizeCanvasToDisplaySize(){let e=this.gl.canvas,t=e.clientWidth,n=e.clientHeight,r=Math.round(t*this.dpi),i=Math.round(n*this.dpi),a=e.width!==r||e.height!==i;return a&&(e.width=r,e.height=i),a}createArrayBuffer(e){let t=this.gl.createBuffer();if(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),e&&this.gl.bufferData(this.gl.ARRAY_BUFFER,e,this.gl.STATIC_DRAW),!t)throw Error(`Cannot create buffer`);return t}setRectangle(e,t,n,r){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,n,r),this.gl.STATIC_DRAW)}getRectangle(e,t,n,r){let i=e,a=e+n,o=t,s=t+r;return this.rectBuffer.set([i,o,a,o,i,s,i,s,a,o,a,s]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){this.activeLayerScissorRect&&(this.gl.disable(this.gl.SCISSOR_TEST),this.activeLayerScissorRect=void 0)}resetReadyState(){this.isImmediateReadiness()||(this.firstMeaningfulPaint=!1)}resetImageFadeState(){let e=performance.now();for(let t of this.imagePaints){if(!(t instanceof q||t instanceof J))continue;let n=t.__host?.webgl;if(!(!n?.tileState||!n.loadedAt))for(let r of Object.keys(n.tileState)){let i=Number(r),a=this.getTileState(t,i);a.state===`decoded`&&(n.loadedAt[i]=e,this.setTileState(t,i,{...a,fadeStartedAt:void 0,skipFade:!1}))}}this.hasTilesFading=!0,this.requiresRepaint=!0}reset(){this.canvas.removeEventListener(`webglcontextlost`,this.onContextLost),this.canvas.style.filter=`none`,this.framePrefetchCount=0,this.loadingCount=0,this.hasTilesFading=!1,this.requiresRepaint=!1,this.tileRequestQueue=[],this.queuedTileRequestKeys.clear();for(let e of[...this.inFlightImageLoads.keys()])this.releaseInFlightTileLoad(e,{silent:!0});this.imageRequestPool.cancelAll({silent:!0}),this.inFlightImageLoads.clear(),this.requiredTileKeys.clear(),this.requiredPrefetchTileKeys.clear(),this.pendingTileReveals.clear(),this.imagePaints.clear(),this.requestGeneration+=1,this.frameCounter=0,this.frameSawFastPathCandidate=!1,this.firstMeaningfulPaint=this.isImmediateReadiness()}};function ni({interactive:e=!0,viewport:t,forceRefresh:n,canvasElement:r,parityCanvasElement:i,overlayElement:a,controllerConfig:o,interactionMode:s=`popmotion`,unstable_webglRenderer:c,dpi:l,debug:u,canvasBox:d=!0,polygon:f=!0,navigatorElement:p,runtimeOptions:m,onWebGLFallback:h,onImageError:g,imageLoading:_,webglFallbackOnImageLoadError:v,webglReadiness:y,navigatorRendererOptions:b}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let x=e?(s===`pdf-scroll-zone`?bn:sn)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...o||{}}):void 0,S,C;if(c)try{S=new ti(r,{dpi:l,onFatalImageError:h,onImageError:g,imageLoading:_,fallbackOnImageLoadError:v,readiness:y})}catch{S=new Ne(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g})}else S=new Ne(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g});let w=S instanceof ti;if(w&&i)try{C=new Ne(i,{dpi:l,debug:u,box:d,polygon:f,paintImages:!0,shouldPaintImage:(e,t)=>!$r(e,t),readiness:`immediate`,imageLoading:_,onImageError:g})}catch{C=void 0}let T=w&&!C?!0:!d,E={},D=b?.onRequestRender,te=p?new Pt(p,{...b||{},sharedCanvasRenderer:S instanceof Ne?S:void 0,onRequestRender:()=>{D&&D(),E.current&&E.current.updateNextFrame()}}):void 0,O=new Pe([S,C,a?new Rt(a,{box:T,text:!0,triggerResize:n}):void 0,te]),k=new Pn(O,new lt(1024,1024),t,x?[x]:[],m);E.current=k;let A=new ee(r,k);return{name:`default-preset`,em:A,runtime:k,renderer:O,controller:x,canvas:r,parityCanvas:C?i:void 0,navigator:p,unmount(){rr(k),k.stopControllers(),k.stop(),k.reset(),A&&A.stop()}}}const ri=1+Number.MIN_VALUE;var ii=class{constructor(e,t){E(this,`container`,void 0),E(this,`width`,void 0),E(this,`height`,void 0),E(this,`pending`,!0),E(this,`options`,void 0),E(this,`stylesheet`,void 0),E(this,`zIndex`,0),E(this,`lastKnownScale`,1),E(this,`rendererPosition`,void 0),E(this,`currentlyVisible`,[]),E(this,`previouslyVisible`,[]),this.container=e,this.rendererPosition=e.getBoundingClientRect();let{width:n,height:r}=this.rendererPosition;this.width=n,this.height=r,this.options={addPart:!1,setDraggableFalse:!1,imageClass:``,widthStylesheet:!1,sheetPrefix:`position-`,background:`#000`,...t||{}},this.stylesheet=new Lt({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
57
57
  background: ${this.options.background};
58
- `)),this.options.widthStylesheet&&this.container.appendChild(this.stylesheet.getElement())}isReady(){return!0}resize(){this.rendererPosition=this.container.getBoundingClientRect(),this.width=this.rendererPosition.width,this.height=this.rendererPosition.height,this.pending=!0}getRendererScreenPosition(){return this.rendererPosition}afterFrame(e,t,n){this.stylesheet.updateSheet();for(let e of this.previouslyVisible)this.currentlyVisible.indexOf(e)===-1&&this.container.removeChild(e);for(let e of this.currentlyVisible)this.previouslyVisible.indexOf(e)===-1&&this.container.appendChild(e);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[],this.pending=!1}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let n=this.width/e,r=this.height/t,i=n<r?r:n;return Number.isNaN(i)||(this.lastKnownScale=i),this.lastKnownScale}getViewportBounds(e,t,n){return null}createImage(){let e=document.createElement(`img`);return this.options.imageClass?(e.className=this.options.imageClass,this.options.addPart&&e.setAttribute(`part`,this.options.imageClass)):(e.style.position=`absolute`,e.style.pointerEvents=`none`,e.style.userSelect=`none`),this.options.setDraggableFalse&&e.setAttribute(`draggable`,`false`),e}paint(e,t,n,r,i,a){if(this.zIndex++,e instanceof J){if(!e.__host){let t=this.createImage();t.src=e.uri,e.__host=t,this.container.appendChild(e.__host)}let t=e.__host;this.currentlyVisible.push(t),t.style.zIndex=`${this.zIndex}`,t.style.opacity=`${e.style.opacity}`,this.options.widthStylesheet?t.className=this.options.imageClass+` `+this.stylesheet.addStylesheet(`width:${(i+qr).toFixed(2)}px;height:${(a+qr).toFixed(2)}px;`):(t.style.width=`${i+qr}px`,t.style.height=`${a+qr}px`),t.style.transform=`translate(${n}px, ${r}px)`}if(e instanceof Y){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let n=e.getImageUrl(t),r=this.createImage();r.src=n,e.__host.images[t]=r,this.container.appendChild(r)}let o=e.__host.images[t];o.style.zIndex=`${this.zIndex}`,o.style.opacity=`${e.style.opacity}`,this.currentlyVisible.push(o),this.options.widthStylesheet?o.className=this.options.imageClass+` `+this.stylesheet.addStylesheet(`width:${(i+qr).toFixed(2)}px;height:${(a+qr).toFixed(2)}px;`):(o.style.width=`${i+qr}px`,o.style.height=`${a+qr}px`),o.style.transform=`translate(${n}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){this.pending=!0}};function Yr({interactive:e,viewport:t,forceRefresh:n,containerElement:r,overlayElement:i,controllerConfig:a,interactionMode:o=`popmotion`}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let s=e?(o===`pdf-scroll-zone`?vn:an)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,c=new Jr(r,{addPart:!1,setDraggableFalse:!1,imageClass:`atlas-static-image`}),l=i?new Me([c,new It(i,{box:!0,text:!0,triggerResize:n})]):c,u=new Tn(l,new st(1024,1024),t,s?[s]:[]),d=new D(r,u);return{name:`static-preset`,em:d,runtime:u,renderer:l,controller:s,container:r,overlay:i,unmount(){Jn(u),u.stopControllers(),u.stop(),d&&d.stop()}}}const Xr={"default-preset":Kr,"static-preset":Yr},Zr={};function Qr(e,t){let n=(0,p.useRef)(),r=(0,p.useRef)(),i=(0,p.useRef)(),a=(0,p.useRef)(),o=(0,p.useRef)(),s=(0,p.useRef)({x:0,y:0,width:t.width,height:t.height,scale:1,didUpdate:!0}),c=(0,p.useRef)({onWebGLFallback:t.onWebGLFallback,onImageError:t.onImageError}),[l=`default-preset`,u=Zr]=Array.isArray(e)?e||[]:[e],[d,f]=(0,p.useState)(null);return(0,p.useLayoutEffect)(()=>{c.current.onWebGLFallback=t.onWebGLFallback,c.current.onImageError=t.onImageError},[t.onImageError,t.onWebGLFallback]),(0,p.useLayoutEffect)(()=>{let e=r.current,d=o.current,p=n.current,m=a.current,h=(Xr[l]||Kr)({containerElement:d,canvasElement:e,parityCanvasElement:i.current,overlayElement:p,navigatorElement:m,viewport:s.current,dpi:window.devicePixelRatio||1,forceRefresh:t.forceRefresh,controllerConfig:t.controllerConfig,interactionMode:t.interactionMode,unstable_webglRenderer:t.unstable_webglRenderer,onWebGLFallback:e=>{c.current.onWebGLFallback&&c.current.onWebGLFallback(e)},onImageError:e=>{c.current.onImageError&&c.current.onImageError(e)},imageLoading:t.imageLoading,webglFallbackOnImageLoadError:t.webglFallbackOnImageLoadError,webglReadiness:t.webglReadiness,runtimeOptions:t.runtimeOptions,...u||{}});return f(h),()=>{if(h){let t=h.runtime.getViewport();s.current={...s.current,...t,didUpdate:!0},h.unmount(),e&&(e.height=0,e.width=0),p&&(p.innerHTML=``),m&&(m.height=0,m.width=0)}}},[l,u,t.unstable_webglRenderer,t.controllerConfig,t.interactionMode,t.imageLoading,t.webglFallbackOnImageLoadError,t.webglReadiness]),[l,d,s,(0,p.useMemo)(()=>({canvas:r,parityCanvas:i,overlay:n,container:o,navigator:a}),[])]}function $r(e){let t=e;if(Array.isArray(t?.renderers))return`composite`;let n=t?.constructor?.name||``;return n===`CanvasRenderer`?`canvas`:n===`WebGLRenderer`?`webgl`:n===`StaticRenderer`?`static`:`unknown`}const ei=1,ti=[`brightness`,`contrast`,`grayscale`,`hueRotate`,`invert`,`saturate`,`sepia`,`blur`],ni=(0,p.memo)(function(e){let{htmlChildren:t,renderPreset:n,onCreated:r,mode:i=`explore`,resetWorldOnChange:a=!0,unstable_webglRenderer:o=!1,onWebGLFallback:s,onReady:c,onImageError:u,readyResetKey:d,webglFallbackOnImageLoadError:f=!1,webglReadiness:g,imageLoading:_,unstable_noReconciler:v=!1,hideInlineStyle:y=!1,controllerConfig:b,interactionMode:x=`popmotion`,children:S,overlayStyle:C,containerStyle:w,enableNavigator:T,className:ee,containerProps:E={},homePosition:D,homeOnResize:O,homeCover:k,background:A,navigatorOptions:j,runtimeOptions:M,debug:N,filters:P,homePaddingPx:F,devTools:te,...I}=e;Hr(e,`Atlas.tsx`,e.debug);let[L,ne]=(0,p.useState)(i),[R,z]=(0,p.useState)(o),B=(0,p.useRef)(!1),V=(0,p.useRef)(null),H=(0,p.useRef)(null),U=(0,p.useRef)(void 0),W=(0,p.useRef)(void 0),[re,G]=(0,p.useState)(!1),ie=(0,p.useRef)(void 0),[ae,K]=(0,p.useState)(!1),[oe,q]=(0,p.useState)(!1),[se,ce]=(0,p.useState)(!1),le=(0,p.useRef)(!1),ue=j?.style?.background,de=j?.style?.objectFill,fe=j?.style?.objectStroke,pe=j?.style?.viewportFill,J=j?.style?.viewportStroke,me=j?.style?.viewportLineWidth,Y=j?.pdfScrollZoneZoneWindow?.total,he=j?.pdfScrollZoneZoneWindow?.before,ge=j?.pdfScrollZoneZoneWindow?.after,_e=(0,p.useMemo)(()=>{if(!(ue===void 0&&de===void 0&&fe===void 0&&pe===void 0&&J===void 0&&me===void 0))return{background:ue,objectFill:de,objectStroke:fe,viewportFill:pe,viewportStroke:J,viewportLineWidth:me}},[ue,de,fe,pe,J,me]),ve=(0,p.useMemo)(()=>{if(x===`pdf-scroll-zone`)return{total:Y??9,before:he,after:ge}},[x,ge,he,Y]),ye=(0,p.useCallback)(e=>{N&&console.debug(`[Atlas navigator]`,e)},[N]),X=(0,p.useMemo)(()=>({width:j?.width??120,idleFade:j?.idleFade??!0,idleMs:j?.idleMs??800,fadeDurationMs:j?.fadeDurationMs??250,opacityActive:j?.opacityActive??.94,opacityIdle:j?.opacityIdle??0,style:_e,zoneWindow:ve}),[j?.fadeDurationMs,j?.idleFade,j?.idleMs,j?.opacityActive,j?.opacityIdle,j?.width,_e,ve]),be=(0,p.useMemo)(()=>{let e=`default-preset`,t={},r=!1;if(Array.isArray(n)?(e=n[0],t={...n[1]||{}},r=!0):typeof n==`string`&&(e=n),N&&(t.debug=N,r=!0),e===`default-preset`){let e={};X.style&&(e.style=X.style),X.zoneWindow&&(e.zoneWindow=X.zoneWindow),N&&(e.onDebugEvent=ye),Object.keys(e).length>0&&(t.navigatorRendererOptions={...t.navigatorRendererOptions||{},...e},r=!0)}return r?[e,t]:n||`default-preset`},[n,N,ye,X.style,X.zoneWindow]),[xe,Se,Ce]=(0,m.default)({scroll:!0}),we=(0,p.useRef)(),Te=e=>{we.current=e,xe(e)},Ee=(0,p.useCallback)(e=>{B.current||(B.current=!0,H.current&&(V.current=H.current.getViewport()),z(!1),s&&s(e))},[s]),De=(0,p.useCallback)(e=>{if(V.current&&(e.runtime.setViewport(V.current),e.runtime.updateNextFrame(),V.current=null),r)return r(e)},[r]),[Oe,Z,Q,ke]=Qr(be,{width:I.width,height:I.height,forceRefresh:Ce,controllerConfig:b,interactionMode:x,unstable_webglRenderer:R,onWebGLFallback:Ee,onImageError:u,webglFallbackOnImageLoadError:f,webglReadiness:g,imageLoading:_,runtimeOptions:M});(0,p.useEffect)(()=>{if(Z)return mr(Z)},[Z]);let[Ae,je]=(0,p.useState)(``);(0,p.useEffect)(()=>{ne(i)},[i]),(0,p.useEffect)(()=>{G(!1),H.current=Z?Z.runtime:null,U.current=void 0,W.current=void 0},[Z]),(0,p.useEffect)(()=>{if(!o){z(!1);return}B.current||z(!0)},[o]),(0,p.useEffect)(()=>{if(!Z||!c)return;let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t!==`ready`)return;let n=e.getReadyState();W.current!==n.cycle&&(W.current=n.cycle,n.timestamp&&c({runtimeId:e.id,cycle:n.cycle,reason:n.reason,renderer:$r(e.renderer),timestamp:n.timestamp}))})},[Z,c]),(0,p.useEffect)(()=>{if(Z){if(d===void 0){U.current=void 0;return}if(U.current===void 0){U.current=d;return}U.current!==d&&(U.current=d,W.current=void 0,Z.runtime.resetReadyState(`ready-reset-key-change`))}},[Z,d]),(0,p.useEffect)(()=>{Z&&Z.em&&Z.em.updateBounds()},[Z,Se]),(0,p.useEffect)(()=>{Z&&Z.runtime.setOptions(M||{})},[Z,M]),(0,p.useEffect)(()=>{Z&&Z.runtime&&(Z.runtime.mode=L),re&&Z&&(Z.ready=!0)},[Z,re,L]),(0,p.useEffect)(()=>{Z&&(k||(Z.runtime.manualHomePosition=x===`pdf-scroll-zone`||!!D,Z.runtime.setHomePosition(D)))},[Z,k,D,x]),(0,p.useEffect)(()=>{Z&&Z.runtime.setHomePaddingPx(F)},[Z,F]),(0,p.useEffect)(()=>{if(Z){let e=Z.runtime;(Q.current.width!==I.width||Q.current.height!==I.height)&&(e.resize(Q.current.width,I.width,Q.current.height,I.height),Q.current.width=I.width,Q.current.height=I.height,Q.current.didUpdate=!0,e.updateNextFrame())}},[Z,I.width,I.height,Q]),(0,p.useEffect)(()=>{if(P&&Z){let e=Z.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of ti)P[n]?P[n]!==Z.runtime.hookOptions.filters[n]&&(e.hookOptions.filters[n]=P[n],t=!0):e.hookOptions.filters[n]&&(e.hookOptions.filters[n]=0,t=!0);t&&e.updateNextFrame()}else if(Z){let e=Z.runtime;for(let t of ti)e.hookOptions.filters[t]=0;e.hookOptions.enableFilters=!1,e.updateNextFrame()}},[Z,P]);function Me(){if(Z&&(Z.overlay&&(Z.overlay.style.width=`${Se.width}px`,Z.overlay.style.height=`${Se.height}px`),Z.container&&(Z.container.style.width=`${Se.width}px`,Z.container.style.height=`${Se.height}px`),k)){let e=Z.runtime.world.width,t=Z.runtime.world.height,n=e/t,r=Q.current.width,i=Q.current.height,a=r/i;if(n>a){a=i/r,Z.runtime.manualHomePosition=!0;let n=(e-t/a)/2;k===`start`&&(n=0),k===`end`&&(n=e-t/a);let o={x:n,y:0,width:t/a,height:t};Z.runtime.setHomePosition(o)}else{let n=(t-e/a)/2;k===`start`&&(n=0),k===`end`&&(n=t-e/a),Z.runtime.manualHomePosition=!0;let r={x:0,y:n,width:e,height:e/a};Z.runtime.setHomePosition(r)}O&&Z.runtime.goHome({})}}Xn(()=>{Me()},[Z,e.runtimeOptions?.maxOverZoom,Se.height,Se.width,k]),Xn(()=>{let e=()=>{if(Z){let e=Z.runtime;(Q.current.width!==I.width||Q.current.height!==I.height)&&(e.resize(Q.current.width,I.width,Q.current.height,I.height),Q.current.width=I.width,Q.current.height=I.height,e.updateNextFrame(),Q.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[Z,I.height,I.width]);let Ne=()=>{if(!Z)return;let e=Z.renderer;if(Array.isArray(e.renderers))return e.renderers.find(e=>typeof e.invalidateWorldLayer==`function`)},Pe=(0,p.useCallback)(()=>{if(!Z)return window.devicePixelRatio||1;let e=Z.renderer,t=(Array.isArray(e.renderers)?e.renderers[0]:e)?.dpi;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:window.devicePixelRatio||1},[Z]),Fe=(0,p.useCallback)(e=>kt(e.world,{target:e.getViewport(),zoneWindow:X.zoneWindow}),[X.zoneWindow]),Ie=(0,p.useCallback)(e=>e.isViewportAtHome({cover:!!k,tolerance:1}),[k,F]),Le=()=>{if(Z&&Z.navigator){let e=Fe(Z.runtime),t=e.height,n=e.width,r=Pe(),i=Math.max(1,n),a=Math.max(1,t),o=Math.max(1,X.width),s=Math.max(1,I.height-20),c=o,l=o/i*a;if(l>s){let e=s/l;l=s,c=Math.max(1,o*e)}Z.navigator.width=c*r,Z.navigator.height=l*r,Z.navigator.style.width=c+`px`,Z.navigator.style.height=l+`px`;let u=Ne();u&&u.invalidateWorldLayer&&u.invalidateWorldLayer()}};Xn(()=>{if(Z){Le();let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t===`repaint`){let e=Ne();e&&e.invalidateWorldLayer&&e.invalidateWorldLayer()}(t===`recalculate-world-size`||t===`zone-changed`)&&(Le(),Me(),t===`recalculate-world-size`&&(Q.current.width!==I.width||Q.current.height!==I.height)&&e.resize(Q.current.width,I.width,Q.current.height,I.height))})}return()=>{}},[Z,I.width,I.height,X.width,Fe,Pe]),(0,p.useEffect)(()=>{if(!Z||!T){ce(!1);return}let e=Z.runtime,t=()=>{let t=Ie(e);ce(e=>e===t?e:t)};return t(),e.world.addLayoutSubscriber(()=>{t()})},[Z,T,Ie]);let Re=(0,p.useCallback)(function(e){let t=()=>{G(!0)};return(0,p.useEffect)(()=>{if(!Z)return;x!==`pdf-scroll-zone`&&Z.runtime.goHome();let e=De&&De(Z);e&&e.then?e.then(t):t()},[]),e.children},[Z,De,x]);(0,p.useEffect)(()=>{if(Z){let e=Z.runtime;if(a)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&x!==`pdf-scroll-zone`&&e.goHome()})}return()=>{}},[Z,a,x]),(0,p.useEffect)(()=>Z?Z.runtime.registerHook(`useBeforeFrame`,()=>{if(Q.current.didUpdate&&Z.canvas){let e=Pe(),t=Q.current.width,n=Q.current.height;Z.canvas.width=t*e,Z.canvas.height=n*e,Z.canvas.style.width=t+`px`,Z.canvas.style.height=n+`px`;let r=Z.canvas.getContext(`2d`);if(r&&(r.setTransform(1,0,0,1,0,0),r.scale(e,e)),Z.parityCanvas){Z.parityCanvas.width=t*e,Z.parityCanvas.height=n*e,Z.parityCanvas.style.width=t+`px`,Z.parityCanvas.style.height=n+`px`;let r=Z.parityCanvas.getContext(`2d`);r&&(r.setTransform(1,0,0,1,0,0),r.scale(e,e))}Z&&Z.em&&Z.em.updateBounds(),Q.current.didUpdate=!1}}):()=>{},[Z,a,Pe]),(0,p.useEffect)(()=>{let e=()=>{Z&&(ne(`sketch`),je(`mode-sketch`)),window.removeEventListener(`keyup`,e)},t=t=>{if(t.code===`Space`&&Z&&Z.runtime.mode===`sketch`){let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||t.target?.isContentEditable)return;t.preventDefault(),ne(`explore`),je(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[Z]);let ze=(0,p.useCallback)(()=>{!T||!X.idleFade||(K(!1),ie.current!==void 0&&window.clearTimeout(ie.current),ie.current=window.setTimeout(()=>{le.current||K(!0)},X.idleMs))},[T,X.idleFade,X.idleMs]);(0,p.useEffect)(()=>()=>{ie.current!==void 0&&(window.clearTimeout(ie.current),ie.current=void 0)},[]),(0,p.useEffect)(()=>{if(!Z?.canvas||!T||!X.idleFade)return;let e=Z.canvas,t=()=>ze(),n=[`pointerdown`,`pointermove`,`pointerup`,`touchstart`,`touchmove`,`touchend`,`wheel`];for(let r of n)e.addEventListener(r,t,{passive:!0});return ze(),()=>{for(let r of n)e.removeEventListener(r,t)}},[Z,T,X.idleFade,ze]),(0,p.useEffect)(()=>{if(!Z?.navigator||!T)return;let e=Z.navigator,t=Z.runtime,n={active:!1,pointerId:-1,offsetX:0,offsetY:0,startClientX:0,startClientY:0,startWorldX:0,startWorldY:0},r=e=>{le.current=e,q(e)},i=n=>{let r=e.getBoundingClientRect();if(r.width<=0||r.height<=0)return{x:0,y:0};let i=n.clientX-r.left,a=n.clientY-r.top,o=Fe(t);return jt(Ot(o.width,o.height,r.width,r.height,o.x,o.y),i,a)},a=(e,r,{preserveOffset:i=!0,constrainAfterMove:a=!1}={})=>{let o=t.getViewport(),s=i?e-n.offsetX:e-o.width/2,c=i?r-n.offsetY:r-o.height/2,u=l.DnaFactory.singleBox(o.width,o.height,s,c),[,d]=t.constrainBounds(u,{ref:!0});t.setViewport({x:d[1],y:d[2],width:d[3]-d[1],height:d[4]-d[2]}),t.updateControllerPosition(),t.updateNextFrame(),a&&t.world.constraintBounds(!0)},o=(e,n)=>{let r=At(t.world,{target:t.getViewport(),zoneWindow:X.zoneWindow});for(let i of t.world.zones)if(!(r&&!r.has(i.id))&&(i.recalculateBounds(),i.points[0]!==0&&e>=i.points[1]&&e<=i.points[3]&&n>=i.points[2]&&n<=i.points[4]))return i},s=o=>{if(o.button!==0)return;ze();let s=i(o),c=t.getViewport(),l=s.x>=c.x&&s.y>=c.y&&s.x<=c.x+c.width&&s.y<=c.y+c.height;n.active=!0,n.pointerId=o.pointerId,n.startClientX=o.clientX,n.startClientY=o.clientY,n.startWorldX=s.x,n.startWorldY=s.y,l?(n.offsetX=s.x-c.x,n.offsetY=s.y-c.y):(n.offsetX=c.width/2,n.offsetY=c.height/2,a(s.x,s.y,{preserveOffset:!0,constrainAfterMove:!0})),r(!0),e.setPointerCapture(o.pointerId),o.preventDefault(),o.stopPropagation()},c=e=>{if(!n.active||e.pointerId!==n.pointerId)return;let t=i(e);a(t.x,t.y,{preserveOffset:!0}),ze(),e.preventDefault(),e.stopPropagation()},u=a=>{if(!n.active||a.pointerId!==n.pointerId)return;i(a);let s=Math.hypot(a.clientX-n.startClientX,a.clientY-n.startClientY),c=!1;if(s<4){let e=o(n.startWorldX,n.startWorldY);e&&(c=t.goToZone(e.id),c&&t.updateNextFrame())}n.active=!1,n.pointerId=-1,r(!1),c||t.world.constraintBounds(!0),e.hasPointerCapture(a.pointerId)&&e.releasePointerCapture(a.pointerId),ze(),a.preventDefault(),a.stopPropagation()},d=t=>{!n.active||t.pointerId!==n.pointerId||(n.active=!1,n.pointerId=-1,r(!1),e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),ze())};return e.addEventListener(`pointerdown`,s),e.addEventListener(`pointermove`,c),e.addEventListener(`pointerup`,u),e.addEventListener(`pointercancel`,d),()=>{r(!1),e.removeEventListener(`pointerdown`,s),e.removeEventListener(`pointermove`,c),e.removeEventListener(`pointerup`,u),e.removeEventListener(`pointercancel`,d)}},[Z,T,ze,Fe]);let{height:Be,width:Ve,...He}=I,Ue=Br([I.width,I.height]),We=!0;be&&Array.isArray(be)&&be.length>1&&be[1].interactive===!1&&(We=!1),A=A??`#000`,we.current&&(A=getComputedStyle(we.current).getPropertyValue(`--atlas-background`)||A);let Ge=typeof te==`object`?te:void 0,Ke=(0,p.useMemo)(()=>({"--atlas-navigator-fade-duration":`${X.fadeDurationMs}ms`,"--atlas-navigator-opacity-active":`${X.opacityActive}`,"--atlas-navigator-opacity-idle":`${X.opacityIdle}`}),[X.fadeDurationMs,X.opacityActive,X.opacityIdle]);return(0,h.jsxs)(Qn,{ref:Te,className:[`atlas`,`atlas-interaction-${x}`,y?``:`atlas-width-${Ue}`,Ae,ee,`atlas-${Oe}`].filter(Boolean).join(` `).trim(),style:{...w,...y?{}:{width:I.width,height:I.height}},children:[Oe===`static-preset`?(0,h.jsx)(Qn,{className:`atlas-static-container`,ref:ke.container,tabIndex:0,...E}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...He,...E,ref:ke.canvas,"data-background":A}),R?(0,h.jsx)(`canvas`,{className:`atlas-parity-canvas`,part:`atlas-parity-canvas`,"aria-hidden":`true`,"data-background":`transparent`,ref:ke.parityCanvas}):null]}),(0,h.jsx)(Qn,{className:[`atlas-overlay`,We?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...C||{}},ref:ke.overlay,children:v?(0,h.jsx)(Re,{children:(0,h.jsx)(bn.Provider,{value:Se,children:(0,h.jsx)(xn.Provider,{value:L,children:(0,h.jsx)(yn.Provider,{value:Z,children:S})})})}):(0,h.jsx)(Zn,{bounds:Se,preset:Z,mode:L,interactionMode:x,setIsReady:G,onCreated:De,children:S})}),T?(0,h.jsx)(Qn,{className:[`atlas-navigator`,se?`atlas-navigator--hidden-at-home`:``,X.idleFade&&ae?`atlas-navigator--idle`:``,oe?`atlas-navigator--dragging`:``].filter(Boolean).join(` `).trim(),style:Ke,children:(0,h.jsx)(`canvas`,{className:`atlas-navigator-canvas`,part:`atlas-navigator-canvas`,ref:ke.navigator})}):null,te?(0,h.jsx)(Nr,{...Ge,runtimeId:Ge?.runtimeId||Z?.runtime.id}):null,y?(0,h.jsx)(`style`,{children:`.atlas-width-${Ue} { width: ${I.width}px; height: ${I.height}px; }`}):(0,h.jsx)(`style`,{children:`
59
- .atlas { position: relative; display: flex; background: ${A}; z-index: var(--atlas-z-index, 10); -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
60
- .atlas-width-${Ue} { width: ${I.width}px; height: ${I.height}px; }
58
+ `)),this.options.widthStylesheet&&this.container.appendChild(this.stylesheet.getElement())}isReady(){return!0}resize(){this.rendererPosition=this.container.getBoundingClientRect(),this.width=this.rendererPosition.width,this.height=this.rendererPosition.height,this.pending=!0}getRendererScreenPosition(){return this.rendererPosition}afterFrame(e,t,n){this.stylesheet.updateSheet();for(let e of this.previouslyVisible)this.currentlyVisible.indexOf(e)===-1&&this.container.removeChild(e);for(let e of this.currentlyVisible)this.previouslyVisible.indexOf(e)===-1&&this.container.appendChild(e);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[],this.pending=!1}afterPaintLayer(e,t){}beforeFrame(e,t,n){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,n,r){return e.getPointsAt(t,n,r)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let n=this.width/e,r=this.height/t,i=n<r?r:n;return Number.isNaN(i)||(this.lastKnownScale=i),this.lastKnownScale}getViewportBounds(e,t,n){return null}createImage(){let e=document.createElement(`img`);return this.options.imageClass?(e.className=this.options.imageClass,this.options.addPart&&e.setAttribute(`part`,this.options.imageClass)):(e.style.position=`absolute`,e.style.pointerEvents=`none`,e.style.userSelect=`none`),this.options.setDraggableFalse&&e.setAttribute(`draggable`,`false`),e}paint(e,t,n,r,i,a){if(this.zIndex++,e instanceof q){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+ri).toFixed(2)}px;height:${(a+ri).toFixed(2)}px;`):(t.style.width=`${i+ri}px`,t.style.height=`${a+ri}px`),t.style.transform=`translate(${n}px, ${r}px)`}if(e instanceof J){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+ri).toFixed(2)}px;height:${(a+ri).toFixed(2)}px;`):(o.style.width=`${i+ri}px`,o.style.height=`${a+ri}px`),o.style.transform=`translate(${n}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){this.pending=!0}};function ai({interactive:e,viewport:t,forceRefresh:n,containerElement:r,overlayElement:i,controllerConfig:a,interactionMode:o=`popmotion`}){if(!r)throw Error(`Invalid container`);r.style.userSelect=`none`;let s=e?(o===`pdf-scroll-zone`?bn:sn)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,c=new ii(r,{addPart:!1,setDraggableFalse:!1,imageClass:`atlas-static-image`}),l=i?new Pe([c,new Rt(i,{box:!0,text:!0,triggerResize:n})]):c,u=new Pn(l,new lt(1024,1024),t,s?[s]:[]),d=new ee(r,u);return{name:`static-preset`,em:d,runtime:u,renderer:l,controller:s,container:r,overlay:i,unmount(){rr(u),u.stopControllers(),u.stop(),d&&d.stop()}}}const oi={"default-preset":ni,"static-preset":ai},si={};function ci(e,t){let n=(0,p.useRef)(),r=(0,p.useRef)(),i=(0,p.useRef)(),a=(0,p.useRef)(),o=(0,p.useRef)(),s=(0,p.useRef)({x:0,y:0,width:t.width,height:t.height,scale:1,didUpdate:!0}),c=(0,p.useRef)({onWebGLFallback:t.onWebGLFallback,onImageError:t.onImageError}),[l=`default-preset`,u=si]=Array.isArray(e)?e||[]:[e],[d,f]=(0,p.useState)(null);return(0,p.useLayoutEffect)(()=>{c.current.onWebGLFallback=t.onWebGLFallback,c.current.onImageError=t.onImageError},[t.onImageError,t.onWebGLFallback]),(0,p.useLayoutEffect)(()=>{let e=r.current,d=o.current,p=n.current,m=a.current,h=(oi[l]||ni)({containerElement:d,canvasElement:e,parityCanvasElement:i.current,overlayElement:p,navigatorElement:m,viewport:s.current,dpi:window.devicePixelRatio||1,forceRefresh:t.forceRefresh,controllerConfig:t.controllerConfig,interactionMode:t.interactionMode,unstable_webglRenderer:t.unstable_webglRenderer,onWebGLFallback:e=>{c.current.onWebGLFallback&&c.current.onWebGLFallback(e)},onImageError:e=>{c.current.onImageError&&c.current.onImageError(e)},imageLoading:t.imageLoading,webglFallbackOnImageLoadError:t.webglFallbackOnImageLoadError,webglReadiness:t.webglReadiness,runtimeOptions:t.runtimeOptions,...u||{}});return f(h),()=>{if(h){let t=h.runtime.getViewport();s.current={...s.current,...t,didUpdate:!0},h.unmount(),e&&(e.height=0,e.width=0),p&&(p.innerHTML=``),m&&(m.height=0,m.width=0)}}},[l,u,t.unstable_webglRenderer,t.controllerConfig,t.interactionMode,t.imageLoading,t.webglFallbackOnImageLoadError,t.webglReadiness]),[l,d,s,(0,p.useMemo)(()=>({canvas:r,parityCanvas:i,overlay:n,container:o,navigator:a}),[])]}function li(e){let t=e;if(Array.isArray(t?.renderers))return`composite`;let n=t?.constructor?.name||``;return n===`CanvasRenderer`?`canvas`:n===`WebGLRenderer`?`webgl`:n===`StaticRenderer`?`static`:`unknown`}const ui=1,di=[`brightness`,`contrast`,`grayscale`,`hueRotate`,`invert`,`saturate`,`sepia`,`blur`],fi=(0,p.memo)(function(e){let{htmlChildren:t,renderPreset:n,onCreated:r,mode:i=`explore`,resetWorldOnChange:a=!0,unstable_webglRenderer:o=!1,onWebGLFallback:s,onReady:c,onImageError:u,readyResetKey:d,resourceTransitionKey:f,webglFallbackOnImageLoadError:h=!1,webglReadiness:g,imageLoading:_,unstable_noReconciler:v=!1,hideInlineStyle:y=!1,controllerConfig:b,interactionMode:x=`popmotion`,children:S,overlayStyle:C,containerStyle:w,enableNavigator:T,className:E,containerProps:ee={},homePosition:D,homeOnResize:te,homeCover:O,background:k,navigatorOptions:A,runtimeOptions:j,debug:M,filters:N,homePaddingPx:P,devTools:ne,...F}=e;Qr(e,`Atlas.tsx`,e.debug);let[I,L]=(0,p.useState)(i),[R,z]=(0,p.useState)(o),B=(0,p.useRef)(!1),V=(0,p.useRef)(null),re=(0,p.useRef)(null),H=(0,p.useRef)(void 0),U=(0,p.useRef)(void 0),[ie,W]=(0,p.useState)(!1),ae=(0,p.useRef)(void 0),[oe,G]=(0,p.useState)(!1),[se,K]=(0,p.useState)(!1),[ce,le]=(0,p.useState)(!1),ue=(0,p.useRef)(!1),de=A?.style?.background,fe=A?.style?.objectFill,pe=A?.style?.objectStroke,q=A?.style?.viewportFill,me=A?.style?.viewportStroke,J=A?.style?.viewportLineWidth,he=A?.pdfScrollZoneZoneWindow?.total,Y=A?.pdfScrollZoneZoneWindow?.before,ge=A?.pdfScrollZoneZoneWindow?.after,_e=(0,p.useMemo)(()=>{if(!(de===void 0&&fe===void 0&&pe===void 0&&q===void 0&&me===void 0&&J===void 0))return{background:de,objectFill:fe,objectStroke:pe,viewportFill:q,viewportStroke:me,viewportLineWidth:J}},[de,fe,pe,q,me,J]),ve=(0,p.useMemo)(()=>{if(x===`pdf-scroll-zone`)return{total:he??9,before:Y,after:ge}},[x,ge,Y,he]),ye=(0,p.useCallback)(e=>{M&&console.debug(`[Atlas navigator]`,e)},[M]),X=(0,p.useMemo)(()=>({width:A?.width??120,idleFade:A?.idleFade??!0,idleMs:A?.idleMs??800,fadeDurationMs:A?.fadeDurationMs??250,opacityActive:A?.opacityActive??.94,opacityIdle:A?.opacityIdle??0,style:_e,zoneWindow:ve}),[A?.fadeDurationMs,A?.idleFade,A?.idleMs,A?.opacityActive,A?.opacityIdle,A?.width,_e,ve]),be=(0,p.useMemo)(()=>{let e=`default-preset`,t={},r=!1;if(Array.isArray(n)?(e=n[0],t={...n[1]||{}},r=!0):typeof n==`string`&&(e=n),M&&(t.debug=M,r=!0),e===`default-preset`){let e={};X.style&&(e.style=X.style),X.zoneWindow&&(e.zoneWindow=X.zoneWindow),M&&(e.onDebugEvent=ye),Object.keys(e).length>0&&(t.navigatorRendererOptions={...t.navigatorRendererOptions||{},...e},r=!0)}return r?[e,t]:n||`default-preset`},[n,M,ye,X.style,X.zoneWindow]),[xe,Se,Ce]=Sn({scroll:!0}),we=(0,p.useRef)(),Te=e=>{we.current=e,xe(e)},Ee=(0,p.useCallback)(e=>{B.current||(B.current=!0,re.current&&(V.current=re.current.getViewport()),z(!1),s&&s(e))},[s]),De=(0,p.useCallback)(e=>{if(V.current&&(e.runtime.setViewport(V.current),e.runtime.updateNextFrame(),V.current=null),r)return r(e)},[r]),[Oe,Z,Q,ke]=ci(be,{width:F.width,height:F.height,forceRefresh:Ce,controllerConfig:b,interactionMode:x,unstable_webglRenderer:R,onWebGLFallback:Ee,onImageError:u,webglFallbackOnImageLoadError:h,webglReadiness:g,imageLoading:_,runtimeOptions:j});(0,p.useEffect)(()=>{if(Z)return Cr(Z)},[Z]);let[Ae,je]=(0,p.useState)(``);(0,p.useEffect)(()=>{L(i)},[i]),(0,p.useEffect)(()=>{W(!1),re.current=Z?Z.runtime:null,H.current=void 0,U.current=void 0},[Z]),(0,p.useEffect)(()=>{if(!o){z(!1);return}B.current||z(!0)},[o]),(0,p.useEffect)(()=>{if(!Z||!c)return;let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t!==`ready`)return;let n=e.getReadyState();U.current!==n.cycle&&(U.current=n.cycle,n.timestamp&&c({runtimeId:e.id,cycle:n.cycle,reason:n.reason,renderer:li(e.renderer),timestamp:n.timestamp}))})},[Z,c]),(0,p.useEffect)(()=>{if(Z){if(d===void 0){H.current=void 0;return}if(H.current===void 0){H.current=d;return}H.current!==d&&(H.current=d,U.current=void 0,Z.runtime.resetReadyState(`ready-reset-key-change`))}},[Z,d]),(0,p.useEffect)(()=>{Z&&Z.runtime.setResourceTransitionKey(f)},[Z,f]),(0,p.useEffect)(()=>{Z&&Z.em&&Z.em.updateBounds()},[Z,Se]),(0,p.useEffect)(()=>{Z&&Z.runtime.setOptions(j||{})},[Z,j]),(0,p.useEffect)(()=>{Z&&Z.runtime&&(Z.runtime.mode=I),ie&&Z&&(Z.ready=!0)},[Z,ie,I]),(0,p.useEffect)(()=>{Z&&(O||(Z.runtime.manualHomePosition=x===`pdf-scroll-zone`||!!D,Z.runtime.setHomePosition(D)))},[Z,O,D,x]),(0,p.useEffect)(()=>{Z&&Z.runtime.setHomePaddingPx(P)},[Z,P]),(0,p.useEffect)(()=>{if(Z){let e=Z.runtime;(Q.current.width!==F.width||Q.current.height!==F.height)&&(e.resize(Q.current.width,F.width,Q.current.height,F.height),Q.current.width=F.width,Q.current.height=F.height,Q.current.didUpdate=!0,e.updateNextFrame())}},[Z,F.width,F.height,Q]),(0,p.useEffect)(()=>{if(N&&Z){let e=Z.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of di)N[n]?N[n]!==Z.runtime.hookOptions.filters[n]&&(e.hookOptions.filters[n]=N[n],t=!0):e.hookOptions.filters[n]&&(e.hookOptions.filters[n]=0,t=!0);t&&e.updateNextFrame()}else if(Z){let e=Z.runtime;for(let t of di)e.hookOptions.filters[t]=0;e.hookOptions.enableFilters=!1,e.updateNextFrame()}},[Z,N]);function Me(){if(Z&&(Z.overlay&&(Z.overlay.style.width=`${Se.width}px`,Z.overlay.style.height=`${Se.height}px`),Z.container&&(Z.container.style.width=`${Se.width}px`,Z.container.style.height=`${Se.height}px`),O)){let e=Z.runtime.world.width,t=Z.runtime.world.height,n=e/t,r=Q.current.width,i=Q.current.height,a=r/i;if(n>a){a=i/r,Z.runtime.manualHomePosition=!0;let n=(e-t/a)/2;O===`start`&&(n=0),O===`end`&&(n=e-t/a);let o={x:n,y:0,width:t/a,height:t};Z.runtime.setHomePosition(o)}else{let n=(t-e/a)/2;O===`start`&&(n=0),O===`end`&&(n=t-e/a),Z.runtime.manualHomePosition=!0;let r={x:0,y:n,width:e,height:e/a};Z.runtime.setHomePosition(r)}te&&Z.runtime.goHome({})}}ar(()=>{Me()},[Z,e.runtimeOptions?.maxOverZoom,Se.height,Se.width,O]),ar(()=>{let e=()=>{if(Z){let e=Z.runtime;(Q.current.width!==F.width||Q.current.height!==F.height)&&(e.resize(Q.current.width,F.width,Q.current.height,F.height),Q.current.width=F.width,Q.current.height=F.height,e.updateNextFrame(),Q.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[Z,F.height,F.width]);let Ne=()=>{if(!Z)return;let e=Z.renderer;if(Array.isArray(e.renderers))return e.renderers.find(e=>typeof e.invalidateWorldLayer==`function`)},Pe=(0,p.useCallback)(()=>{if(!Z)return window.devicePixelRatio||1;let e=Z.renderer,t=(Array.isArray(e.renderers)?e.renderers[0]:e)?.dpi;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:window.devicePixelRatio||1},[Z]),Fe=(0,p.useCallback)(e=>jt(e.world,{target:e.getViewport(),zoneWindow:X.zoneWindow}),[X.zoneWindow]),Ie=(0,p.useCallback)(e=>e.isViewportAtHome({cover:!!O,tolerance:1}),[O,P]),Le=()=>{if(Z&&Z.navigator){let e=Fe(Z.runtime),t=e.height,n=e.width,r=Pe(),i=Math.max(1,n),a=Math.max(1,t),o=Math.max(1,X.width),s=Math.max(1,F.height-20),c=o,l=o/i*a;if(l>s){let e=s/l;l=s,c=Math.max(1,o*e)}Z.navigator.width=c*r,Z.navigator.height=l*r,Z.navigator.style.width=c+`px`,Z.navigator.style.height=l+`px`;let u=Ne();u&&u.invalidateWorldLayer&&u.invalidateWorldLayer()}};ar(()=>{if(Z){Le();let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t===`repaint`){let e=Ne();e&&e.invalidateWorldLayer&&e.invalidateWorldLayer()}(t===`recalculate-world-size`||t===`zone-changed`)&&(Le(),Me(),t===`recalculate-world-size`&&(Q.current.width!==F.width||Q.current.height!==F.height)&&e.resize(Q.current.width,F.width,Q.current.height,F.height))})}return()=>{}},[Z,F.width,F.height,X.width,Fe,Pe]),(0,p.useEffect)(()=>{if(!Z||!T){le(!1);return}let e=Z.runtime,t=()=>{let t=Ie(e);le(e=>e===t?e:t)};return t(),e.world.addLayoutSubscriber(()=>{t()})},[Z,T,Ie]);let Re=(0,p.useCallback)(function(e){let t=()=>{W(!0)};return(0,p.useEffect)(()=>{if(!Z)return;x!==`pdf-scroll-zone`&&Z.runtime.goHome();let e=De&&De(Z);e&&e.then?e.then(t):t()},[]),e.children},[Z,De,x]);(0,p.useEffect)(()=>{if(Z){let e=Z.runtime;if(a)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&x!==`pdf-scroll-zone`&&e.goHome()})}return()=>{}},[Z,a,x]),(0,p.useEffect)(()=>Z?Z.runtime.registerHook(`useBeforeFrame`,()=>{if(Q.current.didUpdate&&Z.canvas){let e=Pe(),t=Q.current.width,n=Q.current.height;Z.canvas.width=t*e,Z.canvas.height=n*e,Z.canvas.style.width=t+`px`,Z.canvas.style.height=n+`px`;let r=Z.canvas.getContext(`2d`);if(r&&(r.setTransform(1,0,0,1,0,0),r.scale(e,e)),Z.parityCanvas){Z.parityCanvas.width=t*e,Z.parityCanvas.height=n*e,Z.parityCanvas.style.width=t+`px`,Z.parityCanvas.style.height=n+`px`;let r=Z.parityCanvas.getContext(`2d`);r&&(r.setTransform(1,0,0,1,0,0),r.scale(e,e))}Z&&Z.em&&Z.em.updateBounds(),Q.current.didUpdate=!1}}):()=>{},[Z,a,Pe]),(0,p.useEffect)(()=>{let e=()=>{Z&&(L(`sketch`),je(`mode-sketch`)),window.removeEventListener(`keyup`,e)},t=t=>{if(t.code===`Space`&&Z&&Z.runtime.mode===`sketch`){let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||t.target?.isContentEditable)return;t.preventDefault(),L(`explore`),je(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[Z]);let ze=(0,p.useCallback)(()=>{!T||!X.idleFade||(G(!1),ae.current!==void 0&&window.clearTimeout(ae.current),ae.current=window.setTimeout(()=>{ue.current||G(!0)},X.idleMs))},[T,X.idleFade,X.idleMs]);(0,p.useEffect)(()=>()=>{ae.current!==void 0&&(window.clearTimeout(ae.current),ae.current=void 0)},[]),(0,p.useEffect)(()=>{if(!Z?.canvas||!T||!X.idleFade)return;let e=Z.canvas,t=()=>ze(),n=[`pointerdown`,`pointermove`,`pointerup`,`touchstart`,`touchmove`,`touchend`,`wheel`];for(let r of n)e.addEventListener(r,t,{passive:!0});return ze(),()=>{for(let r of n)e.removeEventListener(r,t)}},[Z,T,X.idleFade,ze]),(0,p.useEffect)(()=>{if(!Z?.navigator||!T)return;let e=Z.navigator,t=Z.runtime,n={active:!1,pointerId:-1,offsetX:0,offsetY:0,startClientX:0,startClientY:0,startWorldX:0,startWorldY:0},r=e=>{ue.current=e,K(e)},i=n=>{let r=e.getBoundingClientRect();if(r.width<=0||r.height<=0)return{x:0,y:0};let i=n.clientX-r.left,a=n.clientY-r.top,o=Fe(t);return Nt(At(o.width,o.height,r.width,r.height,o.x,o.y),i,a)},a=(e,r,{preserveOffset:i=!0,constrainAfterMove:a=!1}={})=>{let o=t.getViewport(),s=i?e-n.offsetX:e-o.width/2,c=i?r-n.offsetY:r-o.height/2,u=l.DnaFactory.singleBox(o.width,o.height,s,c),[,d]=t.constrainBounds(u,{ref:!0});t.setViewport({x:d[1],y:d[2],width:d[3]-d[1],height:d[4]-d[2]}),t.updateControllerPosition(),t.updateNextFrame(),a&&t.world.constraintBounds(!0)},o=(e,n)=>{let r=Mt(t.world,{target:t.getViewport(),zoneWindow:X.zoneWindow});for(let i of t.world.zones)if(!(r&&!r.has(i.id))&&(i.recalculateBounds(),i.points[0]!==0&&e>=i.points[1]&&e<=i.points[3]&&n>=i.points[2]&&n<=i.points[4]))return i},s=o=>{if(o.button!==0)return;ze();let s=i(o),c=t.getViewport(),l=s.x>=c.x&&s.y>=c.y&&s.x<=c.x+c.width&&s.y<=c.y+c.height;n.active=!0,n.pointerId=o.pointerId,n.startClientX=o.clientX,n.startClientY=o.clientY,n.startWorldX=s.x,n.startWorldY=s.y,l?(n.offsetX=s.x-c.x,n.offsetY=s.y-c.y):(n.offsetX=c.width/2,n.offsetY=c.height/2,a(s.x,s.y,{preserveOffset:!0,constrainAfterMove:!0})),r(!0),e.setPointerCapture(o.pointerId),o.preventDefault(),o.stopPropagation()},c=e=>{if(!n.active||e.pointerId!==n.pointerId)return;let t=i(e);a(t.x,t.y,{preserveOffset:!0}),ze(),e.preventDefault(),e.stopPropagation()},u=a=>{if(!n.active||a.pointerId!==n.pointerId)return;i(a);let s=Math.hypot(a.clientX-n.startClientX,a.clientY-n.startClientY),c=!1;if(s<4){let e=o(n.startWorldX,n.startWorldY);e&&(c=t.goToZone(e.id),c&&t.updateNextFrame())}n.active=!1,n.pointerId=-1,r(!1),c||t.world.constraintBounds(!0),e.hasPointerCapture(a.pointerId)&&e.releasePointerCapture(a.pointerId),ze(),a.preventDefault(),a.stopPropagation()},d=t=>{!n.active||t.pointerId!==n.pointerId||(n.active=!1,n.pointerId=-1,r(!1),e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),ze())};return e.addEventListener(`pointerdown`,s),e.addEventListener(`pointermove`,c),e.addEventListener(`pointerup`,u),e.addEventListener(`pointercancel`,d),()=>{r(!1),e.removeEventListener(`pointerdown`,s),e.removeEventListener(`pointermove`,c),e.removeEventListener(`pointerup`,u),e.removeEventListener(`pointercancel`,d)}},[Z,T,ze,Fe]);let{height:Be,width:Ve,...He}=F,Ue=Xr([F.width,F.height]),We=!0;be&&Array.isArray(be)&&be.length>1&&be[1].interactive===!1&&(We=!1),k=k??`#000`,we.current&&(k=getComputedStyle(we.current).getPropertyValue(`--atlas-background`)||k);let Ge=typeof ne==`object`?ne:void 0,Ke=(0,p.useMemo)(()=>({"--atlas-navigator-fade-duration":`${X.fadeDurationMs}ms`,"--atlas-navigator-opacity-active":`${X.opacityActive}`,"--atlas-navigator-opacity-idle":`${X.opacityIdle}`}),[X.fadeDurationMs,X.opacityActive,X.opacityIdle]);return(0,m.jsxs)(sr,{ref:Te,className:[`atlas`,`atlas-interaction-${x}`,y?``:`atlas-width-${Ue}`,Ae,E,`atlas-${Oe}`].filter(Boolean).join(` `).trim(),style:{...w,...y?{}:{width:F.width,height:F.height}},children:[Oe===`static-preset`?(0,m.jsx)(sr,{className:`atlas-static-container`,ref:ke.container,tabIndex:0,...ee}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...He,...ee,ref:ke.canvas,"data-background":k},R?`webgl-canvas`:`canvas-canvas`),R?(0,m.jsx)(`canvas`,{className:`atlas-parity-canvas`,part:`atlas-parity-canvas`,"aria-hidden":`true`,"data-background":`transparent`,ref:ke.parityCanvas},`parity-canvas`):null]}),(0,m.jsx)(sr,{className:[`atlas-overlay`,We?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...C||{}},ref:ke.overlay,children:v?(0,m.jsx)(Re,{children:(0,m.jsx)(kn.Provider,{value:Se,children:(0,m.jsx)(An.Provider,{value:I,children:(0,m.jsx)(On.Provider,{value:Z,children:S})})})}):(0,m.jsx)(or,{bounds:Se,preset:Z,mode:I,interactionMode:x,setIsReady:W,onCreated:De,children:S})}),T?(0,m.jsx)(sr,{className:[`atlas-navigator`,ce?`atlas-navigator--hidden-at-home`:``,X.idleFade&&oe?`atlas-navigator--idle`:``,se?`atlas-navigator--dragging`:``].filter(Boolean).join(` `).trim(),style:Ke,children:(0,m.jsx)(`canvas`,{className:`atlas-navigator-canvas`,part:`atlas-navigator-canvas`,ref:ke.navigator})}):null,ne?(0,m.jsx)(Ur,{...Ge,runtimeId:Ge?.runtimeId||Z?.runtime.id}):null,y?(0,m.jsx)(`style`,{children:`.atlas-width-${Ue} { width: ${F.width}px; height: ${F.height}px; }`}):(0,m.jsx)(`style`,{children:`
59
+ .atlas { position: relative; display: flex; background: ${k}; z-index: var(--atlas-z-index, 10); -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
60
+ .atlas-width-${Ue} { width: ${F.width}px; height: ${F.height}px; }
61
61
  .atlas-canvas { flex: 1 1 0px; }
62
62
  .atlas-interaction-pdf-scroll-zone .atlas-canvas,
63
63
  .atlas-interaction-pdf-scroll-zone .atlas-static-container { touch-action: none; }
@@ -75,9 +75,9 @@ function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;va
75
75
  .atlas-navigator--hidden-at-home { opacity: 0; pointer-events: none; }
76
76
  .atlas-navigator-canvas { width: 100%; height: 100%; display: block; cursor: grab; touch-action: none; border-radius: var(--atlas-navigator-radius, 6px); border: var(--atlas-navigator-border, 1px solid rgba(0, 0, 0, 0.7)); box-shadow: var(--atlas-navigator-shadow, 0 6px 16px rgba(2, 6, 23, 0.45)); box-sizing: border-box; }
77
77
  .atlas-navigator--dragging .atlas-navigator-canvas { cursor: grabbing; }
78
- `}),t]})});function ri(e){return Number(e)==e?`${e}px`:e}const ii=(0,p.memo)(function({resizeHash:e,aspectRatio:t,containerProps:n={},htmlChildren:r,...i}){let[a,o,s]=(0,m.default)(),c=(0,p.useId)(),{height:l,width:u,...d}=i;(0,p.useEffect)(()=>{s()},[u,l,e,s]);let f=(0,p.useMemo)(()=>t?{width:o.width,height:o.width*(1/t)}:o,[o,t]),g=(0,p.useMemo)(()=>`atlas-auto-${c.replace(/[^a-zA-Z0-9_-]/g,``)}`,[c]),_=(0,p.useMemo)(()=>[`atlas-container`,g,n.className].filter(Boolean).join(` `).trim(),[g,n.className]),v=(0,p.useMemo)(()=>`.${g} {
78
+ `}),t]})});function pi(e){return Number(e)==e?`${e}px`:e}const mi=(0,p.memo)(function({resizeHash:e,aspectRatio:t,containerProps:n={},htmlChildren:r,...i}){let[a,o,s]=Sn(),c=(0,p.useId)(),{className:l,...u}=n,{height:d,width:f,...h}=i;(0,p.useEffect)(()=>{s()},[f,d,e,s]);let g=(0,p.useMemo)(()=>t?{width:o.width,height:o.width*(1/t)}:o,[o,t]),_=(0,p.useMemo)(()=>`atlas-auto-${c.replace(/[^a-zA-Z0-9_-]/g,``)}`,[c]),v=(0,p.useMemo)(()=>[`atlas-container`,_,l].filter(Boolean).join(` `).trim(),[_,l]),y=(0,p.useMemo)(()=>`.${_} {
79
79
  display: var(--atlas-container-display, block);
80
80
  flex: var(--atlas-container-flex, none);
81
- width: var(--atlas-container-width, ${ri(u??`100%`)});
82
- height: var(--atlas-container-height, ${ri(l||(t?f.height:512))})
83
- }`,[t,g,f.height,l,u]);return(0,h.jsxs)(Qn,{ref:a,className:_,...n,children:[f.width?(0,h.jsx)(ni,{width:f.width||100,height:f.height||100,...d,children:i.children}):null,i.hideInlineStyle?null:(0,h.jsx)(`style`,{children:v}),r]})}),ai=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useAfterFrame`,e):()=>{},t)},oi=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useFrame`,e):()=>{},t)},si=()=>{let e=$n();return e&&e.canvas?e.canvas:void 0};function ci(){return(0,p.useContext)(bn)}const li=({onCreate:e})=>{let t=(0,p.useRef)({x:0,y:0}),n=si(),r=ci(),i=er(),[a,o]=(0,p.useState)(),[s,c]=(0,p.useState)(),l=Sn();return oi(()=>{i&&a&&!s&&(i.pendingUpdate=!0)},[a,s]),ai(()=>{if(a&&n&&i){let e=n.getContext(`2d`);if(e){let{x:n,y:r,width:o,height:c}=i.worldToViewer(a.x,a.y,(s?s.x:t.current.x)-a.x,(s?s.y:t.current.y)-a.y);e.lineWidth=s?3:1,e.strokeStyle=`#fff`,e.strokeRect(n,r,o,c),e.lineWidth=s?3:1,e.strokeStyle=`#000`,e.strokeRect(n+1,r+1,o-2,c-2)}}},[a,s]),(0,p.useEffect)(()=>{let e=e=>{if(r&&i){let{x:n,y:a}=i.viewerToWorld(e.clientX-r.left,e.clientY-r.top);t.current.x=~~n,t.current.y=~~a}};return n?(n.addEventListener(`mousemove`,e),()=>n.removeEventListener(`mousemove`,e)):()=>{}},[r,n,i]),(0,p.useEffect)(()=>{let e=e=>{l===`sketch`&&(o({x:Math.round(t.current.x),y:Math.round(t.current.y)}),c(void 0))};return n?(n.addEventListener(`mousedown`,e),()=>n.removeEventListener(`mousedown`,e)):()=>{}},[n,l]),(0,p.useEffect)(()=>{let e=e=>{a&&!s&&c({x:Math.round(t.current.x),y:Math.round(t.current.y)})};return n?(n.addEventListener(`mouseup`,e),()=>n.removeEventListener(`mouseup`,e)):()=>{}},[n,a,s]),(0,p.useEffect)(()=>{a&&s&&e({x:Math.min(a.x,s.x),y:Math.min(a.y,s.y),width:Math.abs(s.x-a.x),height:Math.abs(s.y-a.y)})},[a,e,s]),null},ui=p.default.forwardRef(({children:e,...t},n)=>{let r=(0,p.useRef)(),i=er(),a=(0,p.useRef)(0),o=(0,p.useRef)(),s=(0,p.useRef)();return oi(()=>{if(t.relative){let e=r.current;if(e&&i){let t=i.getScaleFactor();a.current!==t&&(a.current=t,e.style.transformOrigin=`0 0`,e.style.transform=`scale(${1/a.current})`,e.style.width=`${a.current*100}%`,e.style.height=`${a.current*100}%`,r.current&&o.current?.__owner.value?.rotation&&(e.style.transform=`scale(${1/a.current}) translate(50%, 50%) rotate(${o.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[t.relative]),(0,p.useLayoutEffect)(()=>{let i=o.current;n&&i&&(typeof n==`function`?n(i):n.current=i);async function a(){if(i&&i.__host){let n=t.relative?(0,h.jsx)(`div`,{ref:r,children:e}):e;await Ar(i.__host.element,n,s)}}i&&i.__host?a():i&&(i.__onCreate=a)},[n,e,o,t.relative]),(0,p.useLayoutEffect)(()=>()=>{s.current&&setTimeout(()=>{s.current.unmount()},0)},[]),(0,h.jsx)(`box`,{html:!0,...t,ref:o})});ui.displayName=`HTMLPortal`;const di=e=>{let t=e.width/(e.crop?.width||e.tiles.width),n=e.tiles.imageService.sizes||[],r=e.enableThumbnail,i=e.enableSizes,a=(0,p.useMemo)(()=>{let t=e.tiles.imageService.id||e.tiles.imageService[`@id`];return t&&t.endsWith(`/info.json`)?t.slice(0,-10):t},[e.tiles.imageService.id]),o=(0,p.useMemo)(()=>{let t=e.tiles.imageService.tiles||[];if(!t.length){let t=e.width,n=[1],r=1;for(;2**r<t;)r*=2,n.push(r);return[]}return t},[e.tiles.imageService]),s=(0,p.useMemo)(()=>{let t=e.tiles.imageService;return(t&&t[`@context`]?Array.isArray(t[`@context`])?t[`@context`]:[t[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1},[e.tiles.imageService.id]);return(0,h.jsx)(`world-object`,{rotation:e.rotation,scale:t,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:(0,h.jsxs)(`composite-image`,{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[r&&e.tiles.thumbnail?(0,h.jsx)(`world-image`,{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,i&&n.map((t,n)=>(0,h.jsx)(`world-image`,{uri:`${a}/full/${t.width},${t.height}/0/default.jpg`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:t.width,height:t.height},crop:e.crop},n)),o.map(t=>(t.scaleFactors||[]).map(n=>(0,h.jsx)(`tiled-image`,{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},tile:t,scaleFactor:n,crop:e.crop,version3:s},`${e.tiles.imageService.id}-tile-${n}-${t.width}x${t.height||t.width}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)},fi=e=>{let[t,n]=(0,p.useState)();return(0,p.useEffect)(()=>{mt(e.id,e.width,e.height).then(e=>{n(e)})},[e.height,e.id,e.width]),(0,h.jsx)(`world-object`,{x:e.x||0,y:e.y||0,width:e.width,height:e.height,scale:e.scale,children:t?(0,h.jsx)(di,{tiles:t,x:e.x,y:e.y,width:e.crop?.width||e.width,height:e.crop?.height||e.height,rotation:e.rotation,crop:e.crop,enableSizes:e.enableSizes,enableThumbnail:e.enableThumbnail,renderOptions:e.renderOptions,children:e.children}):null})},pi=(0,p.createContext)(null);pi.displayName=`MapProjection`;function mi(){let e=(0,p.useContext)(pi);if(!e)throw Error(`useMapProjection must be used within <MapObject />`);return e}function hi(){return mi().projection}function gi(e,t,n,r,i){switch(e.type){case`Point`:{let t=n(e.coordinates[0],e.coordinates[1]);return[{kind:`point`,x:t.x,y:t.y,key:`${r}-point`,feature:i}]}case`MultiPoint`:return e.coordinates.map(([e,t],a)=>{let o=n(e,t);return{kind:`point`,x:o.x,y:o.y,key:`${r}-point-${a}`,feature:i}});case`LineString`:return[{kind:`shape`,open:!0,points:t(e.coordinates),key:`${r}-line`,feature:i}];case`MultiLineString`:return e.coordinates.map((e,n)=>({kind:`shape`,open:!0,points:t(e),key:`${r}-line-${n}`,feature:i}));case`Polygon`:return e.coordinates.map((e,n)=>({kind:`shape`,open:!1,points:t(e),key:`${r}-polygon-${n}`,feature:i}));case`MultiPolygon`:{let n=[];for(let a=0;a<e.coordinates.length;a++){let o=e.coordinates[a];for(let e=0;e<o.length;e++)n.push({kind:`shape`,open:!1,points:t(o[e]),key:`${r}-polygon-${a}-${e}`,feature:i})}return n}default:return[]}}function _i(e,t){if(!e)return[];if(e.type===`FeatureCollection`){let n=e,r=[];for(let e=0;e<n.features.length;e++){let i=n.features[e];i.geometry&&r.push(...gi(i.geometry,t.projectRing,t.lngLatToWorld,`feature-${i.id||e}`,i))}return r}if(e.type===`Feature`){let n=e;return n.geometry?gi(n.geometry,t.projectRing,t.lngLatToWorld,`feature-${n.id||0}`,n):[]}return gi(e,t.projectRing,t.lngLatToWorld,`geometry`)}function vi(){let e=hi();return(0,p.useMemo)(()=>({project:t=>_i(t,e)}),[e])}const yi=({data:e,markerSize:t=8,markerStyle:n={backgroundColor:`rgba(220, 38, 38, 0.9)`,border:`1px solid white`},lineStyle:r={borderColor:`#1d4ed8`,borderWidth:`2`,borderStyle:`solid`},polygonStyle:i={backgroundColor:`rgba(37, 99, 235, 0.25)`,borderColor:`#1d4ed8`,borderWidth:`2`,borderStyle:`solid`},interactive:a})=>{let o=mi(),s=vi().project(e);return p.default.createElement(p.default.Fragment,null,s.map(e=>e.kind===`point`?p.default.createElement(`box`,{key:e.key,interactive:a,target:{x:e.x-t/2,y:e.y-t/2,width:t,height:t},style:n}):p.default.createElement(`shape`,{id:e.key,key:e.key,interactive:a,open:e.open,target:{x:0,y:0,width:o.width,height:o.height},points:e.points,style:e.open?r:i})))},bi=({bounds:e,width:t,height:n,preserveAspectRatio:r=!0,children:i,...a})=>{Be(e);let o=(0,p.useMemo)(()=>{if(!r)return{x:0,y:0,width:t,height:n};let i=(Ve(e.east)-Ve(e.west))/(He(e.south)-He(e.north)),a=t/n;if(!Number.isFinite(i)||i<=0)return{x:0,y:0,width:t,height:n};if(a>i){let e=n*i;return{x:(t-e)/2,y:0,width:e,height:n}}let o=t/i;return{x:0,y:(n-o)/2,width:t,height:o}},[e.east,e.north,e.south,e.west,n,r,t]),s=(0,p.useMemo)(()=>{let t=Ye({bounds:e,width:o.width,height:o.height});return{lngLatToWorld(e,n){let r=t.lngLatToWorld(e,n);return{x:r.x+o.x,y:r.y+o.y}},worldToLngLat(e,n){return t.worldToLngLat(e-o.x,n-o.y)},lngLatBoundsToWorldRect(e){let n=t.lngLatBoundsToWorldRect(e);return{x:n.x+o.x,y:n.y+o.y,width:n.width,height:n.height}},worldRectToLngLatBounds(e){return t.worldRectToLngLatBounds({x:e.x-o.x,y:e.y-o.y,width:e.width,height:e.height})},projectRing(e){return e.map(([e,n])=>{let r=t.lngLatToWorld(e,n);return[r.x+o.x,r.y+o.y]})}}},[e,o.height,o.width,o.x,o.y]),c=(0,p.useMemo)(()=>({bounds:e,width:t,height:n,mapRect:o,projection:s}),[e,n,o,s,t]);return p.default.createElement(pi.Provider,{value:c},p.default.createElement(`world-object`,{width:t,height:n,...a},i))},xi=16e3,Si=12e4,Ci=12,wi=({id:e,tileUrlTemplate:t,tileSource:n,subdomains:r,tileSize:i=256,minZoom:a=0,maxZoom:o=19,maxQualityLevels:s=12,maxTilesPerLayer:c=16e3,maxTotalTiles:l=12e4,useDevicePixelRatio:u=!1,renderOptions:d})=>{let f=mi(),m=Math.max(0,Math.floor(a)),h=Math.max(m,Math.floor(o)),g=n||t||Xe,_=(0,p.useMemo)(()=>{let e=[],t=0;for(let n=m;n<=h;n++){let r=tt({bounds:f.bounds,zoom:n});if(r.count>c||t+r.count>l)break;t+=r.count,e.push({zoom:n,coverage:r})}if(!e.length){let t=m;for(;t>0&&!(tt({bounds:f.bounds,zoom:t}).count<=c);)--t;e.push({zoom:t,coverage:tt({bounds:f.bounds,zoom:t})})}if(e.length>s){let t=e[0],n=e[e.length-1],r=Math.max(t.zoom+1,n.zoom-(s-2));return[t,...e.filter(e=>e.zoom>=r)].filter((e,t,n)=>t===0||e.zoom!==n[t-1].zoom)}return e},[f.bounds,s,c,l,h,m]),v=(0,p.useMemo)(()=>({layerPolicy:`always-blend`,renderLayers:2,renderSmallestFallback:!0,prefetchRadius:0,quality:.9,useDevicePixelRatio:u,fadeInMs:300,fadeFallbackTiles:!0,fadeOnLayerChange:!0,clipToBounds:!0,...d||{}}),[d,u]),y=typeof g==`string`?g:`function-source`,b=e||`map-tile-layer-${f.width}x${f.height}`,x=_.map(({zoom:e,coverage:t})=>{let n=t.tileSpanX*i,a=t.tileSpanY*i,o=Math.max(f.mapRect.width/n,f.mapRect.height/a);return p.default.createElement(`map-tiled-image`,{key:`${b}-${e}-${y}-${i}`,id:`${b}-z${e}`,bounds:f.bounds,worldWidth:f.mapRect.width,worldHeight:f.mapRect.height,zoom:e,scaleFactor:o,tileSize:i,tileSource:g,subdomains:r})}),S=p.default.createElement(`composite-image`,{id:b,width:f.mapRect.width,height:f.mapRect.height,renderOptions:v},x);return f.mapRect.x===0&&f.mapRect.y===0?S:p.default.createElement(`world-object`,{id:`${b}-frame`,x:f.mapRect.x,y:f.mapRect.y,width:f.mapRect.width,height:f.mapRect.height},S)},Ti=(e,t,n=[])=>{let r=er();(0,p.useEffect)(()=>{if(r){let n=t,i=y[e];r.world.activatedEvents.push(i);let a=i.slice(2).toLowerCase();return r.world.addEventListener(a,n),()=>{r.world.removeEventListener(a,n)}}return()=>{}},[r?r.world:void 0,e,...n])};function Ei(e,t){if(e===0)return[0,1];if(t===0)return[1,0];let n=Math.abs(e)/Math.abs(t);return[n,1-n]}function Di(){let e=(0,p.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,p.useLayoutEffect)(()=>{function t(t){t.key===`Shift`&&(e.current.shift=!0),t.key===`Control`&&(e.current.ctrl=!0),t.key===`Alt`&&(e.current.alt=!0)}function n(t){t.key===`Shift`&&(e.current.shift=!1),t.key===`Control`&&(e.current.ctrl=!1),t.key===`Alt`&&(e.current.alt=!1)}return window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,n),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,n)}},[]),e}const Oi=(e,t)=>{let n=Sn(),r=er(),i=ci(),a=(0,p.useRef)(),o=(0,p.useRef)(null),s=(0,p.useRef)(),[c,l]=(0,p.useState)(!1),u=(0,p.useRef)(!1),d=(0,p.useRef)({north:0,south:0,east:0,west:0}),f=Di(),m=(0,p.useCallback)(e=>t=>{if(u.current=!0,l(!0),i&&r){let{top:n,left:o}=i,c=r.viewerToWorld(t.pageX-o,t.pageY-n);s.current={x:c.x,y:c.y},a.current=e}},[i,r]),h=(0,p.useMemo)(()=>e.width/e.height,[e.width,e.height]),g=(0,p.useCallback)(t=>{if(!Math.abs(t.north-t.south+(t.east-t.west)))return;let n=-t.west+t.east,r=-t.north+t.south,i=e.width+n,a=e.height+r;if(i/a>=h){let e=i-a*h,[n,r]=Ei(t.east,t.west);t.west+=e*r,t.east-=e*n}else{let e=a-i/h,[n,r]=Ei(t.north,t.south);t.north+=e*n,t.south-=e*r}},[e.width,e.height,h]);oi(()=>{s&&r&&r.updateNextFrame()}),(0,p.useEffect)(()=>{r&&r.updateNextFrame()},[r,c]);let _=(0,p.useCallback)(t=>{if(!r||!i||r.mode!==`sketch`)return;let{top:n,left:c}=i,l=r.viewerToWorld(t.pageX-c,t.pageY-n),u=o.current,p=!e.maintainAspectRatio&&f.current.alt,m=!p&&f.current.shift&&a.current?.indexOf(`-`)!==-1;if((a.current===`translate`||a.current===`east`||a.current===`north-east`||a.current===`south-east`)&&(d.current.east=l.x-(s.current?s.current.x:0),p&&(d.current.west=-d.current.east)),(a.current===`translate`||a.current===`west`||a.current===`north-west`||a.current===`south-west`)&&(d.current.west=l.x-(s.current?s.current.x:0),p&&(d.current.east=-d.current.west)),(a.current===`translate`||a.current===`north`||a.current===`north-east`||a.current===`north-west`)&&(d.current.north=l.y-(s.current?s.current.y:0),p&&(d.current.south=-d.current.north)),(a.current===`translate`||a.current===`south`||a.current===`south-west`||a.current===`south-east`)&&(d.current.south=l.y-(s.current?s.current.y:0),p&&(d.current.north=-d.current.south)),(e.maintainAspectRatio||m)&&g(d.current),u){let t=d.current.west,n=d.current.north,i=e.width+d.current.east,a=e.height+d.current.south;u.points[1]=Math.min(t,i),u.points[2]=Math.min(n,a),u.points[3]=Math.max(t,i),u.points[4]=Math.max(n,a),r.updateNextFrame()}},[r,e.width,e.height,e.maintainAspectRatio,i]);Ti(`mousemove`,_,[e.width,e.height,i]),Ti(`pointermove`,_,[e.width,e.height,i]);let v=(0,p.useRef)();return(0,p.useEffect)(()=>{v.current=()=>{if(u.current){let n=d.current.west,r=d.current.north,i=e.width+d.current.east,o=e.height+d.current.south,c=Math.min(n,i),f=Math.min(r,o),p=Math.max(n,i),m=Math.max(r,o),h={x:(e.x||0)+c,y:(e.y||0)+f,width:p-c||1,height:m-f||1};e.maintainAspectRatio,t(h),a.current=void 0,s.current=void 0,d.current.east=0,d.current.west=0,d.current.north=0,d.current.south=0,u.current=!1,l(!1)}}},[t,e.height,e.width,e.x,e.y]),(0,p.useEffect)(()=>{let e=()=>{v.current&&v.current()};return window.addEventListener(`pointerup`,e),window.addEventListener(`touchend`,e),()=>{window.removeEventListener(`pointerup`,e),window.removeEventListener(`touchend`,e)}},[]),{portalRef:o,mode:n,mouseEvent:m,onPointerMoveCallback:_,isEditing:c}};function ki({handleSize:e,resizable:t,onSave:n,children:r,maintainAspectRatio:i,disableCardinalControls:a,...o}){let s=e===void 0?i?10:8:e,{portalRef:c,mode:l,mouseEvent:u,isEditing:d}=Oi({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:i},n),f=(0,p.useMemo)(()=>u(`translate`),[u]),m=(0,p.useMemo)(()=>u(`east`),[u]),g=(0,p.useMemo)(()=>u(`west`),[u]),_=(0,p.useMemo)(()=>u(`south`),[u]),v=(0,p.useMemo)(()=>u(`north`),[u]),y=(0,p.useMemo)(()=>u(`south-east`),[u]),b=(0,p.useMemo)(()=>u(`south-west`),[u]),x=(0,p.useMemo)(()=>u(`north-east`),[u]),S=(0,p.useMemo)(()=>u(`north-west`),[u]),C=l===`sketch`,w={zIndex:999,boxShadow:`0px 2px 3px 0 rgba(0,0,0,0.2)`,border:`1px solid rgba(155,155,155,.7)`,borderRadius:i||a?`50%`:2,position:`absolute`,background:`#fff`,pointerEvents:d?`none`:C?`initial`:`none`};return(0,h.jsx)(h.Fragment,{children:(0,h.jsxs)(`world-object`,{...o,children:[r,C&&t?(0,h.jsx)(ui,{ref:c,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:C&&t?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{onMouseDown:f,onTouchStart:f,style:{display:`block`,width:`100%`,height:`100%`,position:`relative`,border:`1px solid rgba(155,155,155, .7)`,boxSizing:`border-box`,pointerEvents:d?`none`:C?`initial`:`none`}}),i?null:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{title:`east`,onTouchStart:m,onMouseDown:m,style:{...w,cursor:`e-resize`,height:s*2,width:s,right:0,top:`50%`,opacity:a?0:1,transform:`translate(${s/2}px, -${s}px)`}}),(0,h.jsx)(`div`,{title:`west`,onMouseDown:g,style:{...w,cursor:`w-resize`,position:`absolute`,height:s*2,width:s,left:0,top:`50%`,opacity:a?0:1,transform:`translate(-${s/2}px, -${s}px)`}}),(0,h.jsx)(`div`,{title:`north`,onMouseDown:v,style:{...w,cursor:`n-resize`,position:`absolute`,height:s,width:s*2,left:`50%`,top:0,opacity:a?0:1,transform:`translate(-${s}px, -${s/2}px)`}}),(0,h.jsx)(`div`,{title:`south`,onMouseDown:_,style:{...w,cursor:`s-resize`,position:`absolute`,height:s,width:s*2,left:`50%`,bottom:0,opacity:a?0:1,transform:`translate(-${s}px, ${s/2}px)`}})]}),(0,h.jsx)(`div`,{title:`north-east`,onMouseDown:x,style:{...w,cursor:`ne-resize`,position:`absolute`,height:s,width:s,right:0,top:0,transform:`translate(${s/2}px, -${s/2}px)`}}),(0,h.jsx)(`div`,{title:`south-east`,onMouseDown:y,style:{...w,cursor:`se-resize`,position:`absolute`,height:s,width:s,bottom:0,right:0,transform:`translate(${s/2}px, ${s/2}px)`}}),(0,h.jsx)(`div`,{title:`south-west`,onMouseDown:b,style:{...w,cursor:`sw-resize`,position:`absolute`,height:s,width:s,bottom:0,left:0,transform:`translate(-${s/2}px, ${s/2}px)`}}),(0,h.jsx)(`div`,{title:`north-west`,onMouseDown:S,style:{...w,cursor:`nw-resize`,position:`absolute`,height:s,width:s,top:0,left:0,transform:`translate(-${s/2}px, -${s/2}px)`}})]}):null}):null]})})}function Ai({interactive:e,region:t,onClick:n,onSave:r,maintainAspectRatio:i,disableCardinalControls:a,isEditing:o,rotation:s,style:c={backgroundColor:`rgba(0,0,0,.5)`}}){let l=(0,p.useCallback)(e=>{r({id:t.id,x:t.x,y:t.y,height:t.height,width:t.width,...e})},[r,t.id,t.x,t.y,t.height,t.width]);return(0,h.jsx)(ki,{x:t.x,y:t.y,rotation:s,width:t.width,height:t.height,resizable:o,onSave:l,maintainAspectRatio:i,disableCardinalControls:a,children:(0,h.jsx)(`box`,{interactive:e,onContextMenu:e=>{e.preventDefault()},onClick:e=>{e.preventDefault(),e.stopPropagation(),n(t)},target:{x:0,y:0,width:t.width,height:t.height},style:c})})}const ji=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useAfterPaint`,e):()=>{},t)},Mi=(e,{onCreated:t,resetWorldOnChange:n=!0,mode:r=`explore`,cover:i,containerRef:a,...o})=>{let[s,c]=(0,p.useState)(!1),[l,u]=(0,p.useState)(void 0),[d,f]=(0,p.useState)(void 0),m=(0,p.useRef)(),g=(0,p.useRef)(),_=(0,p.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[v,y,b,x]=Qr(void 0,{width:o.width,height:o.height});Xn(()=>{let e=document.createElement(`canvas`);e.height=_.height,e.width=_.width,m.current=e},[]),Xn(()=>{let e=m.current;e&&(e.height=_.height,e.width=_.width)},[_.width,_.height]),(0,p.useEffect)(()=>y?y.runtime.registerHook(`useAfterFrame`,()=>{if(m.current)try{u(m.current.toDataURL())}catch(e){e instanceof Error&&f(e.message)}}):()=>{},[]),(0,p.useEffect)(()=>y?y.runtime.world.addLayoutSubscriber(e=>{e===`ready`&&c(!0)}):()=>{},[]),(0,p.useEffect)(()=>{y&&y.em&&y.em.updateBounds()},[_]),(0,p.useEffect)(()=>{y&&(y.runtime.mode=r)},[r]),(0,p.useEffect)(()=>{if(y){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),i?e.cover():e.goHome(),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}},[o.width,o.height]),Xn(()=>{let e=g.current;e&&(e.style.width=`${_.width}px`,e.style.height=`${_.height}px`,e.style.pointerEvents=`none`,e.style.overflow=`hidden`)},[_.height,_.width]),Xn(()=>{let e=()=>{if(y&&y.runtime){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[y,o.height,o.width]);let S=(0,p.useCallback)(function(e){let n=()=>{y&&(y.ready=!0)};return(0,p.useEffect)(()=>{if(y){let e=t&&t(y);e&&e.then?e.then(n):n();return}return()=>{}},[]),e.children},[y]);return(0,p.useEffect)(()=>{if(y&&y.runtime){let e=y.runtime;if(n)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome({cover:i})})}return()=>{}},[y,i,n]),Xn(()=>{y&&Yn.render((0,h.jsx)(S,{children:(0,h.jsx)(xn.Provider,{value:r,children:(0,h.jsx)(yn.Provider,{value:y,children:e})})}),y.runtime)},[y,r,e]),{loading:!l&&s,uri:l,imageError:d}},Ni=(e,t=[])=>{let n=er();(0,p.useEffect)(()=>n?n.registerHook(`useBeforeFrame`,e):()=>{},t)},Pi=(e=[])=>{let[t,n]=(0,p.useState)(e),[r,i]=(0,p.useState)(!1),[a,o]=(0,p.useState)(),s=(0,p.useCallback)(()=>{i(!0),o(void 0)},[]),c=(0,p.useCallback)(e=>{i(!0),o(e)},[]),l=e=>{n(t=>t.map(t=>t.id===e.id?e:t))},u=(0,p.useCallback)(e=>{let t=K();n(n=>[...n,{id:t,...e}]),i(!1),o(void 0)},[]);return{isEditing:r,onDeselect:(0,p.useCallback)(()=>{i(!1),o(void 0)},[]),selectedAnnotation:a,onCreateNewAnnotation:u,annotations:t,onUpdateAnnotation:l,setIsEditing:i,setSelectedAnnotation:o,editAnnotation:c,addNewAnnotation:s}};function Fi(e){return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1}}const Ii=e=>{let t=er(),[n,r]=(0,p.useState)(()=>Fi(e)),i=(0,p.useCallback)(()=>{let n=t?t.getZoneRuntimeState(e):Fi(e);r(e=>e.zoneId===n.zoneId&&e.exists===n.exists&&e.active===n.active&&e.visibleInViewport===n.visibleInViewport?e:n)},[t,e]);return ai(i,[t,i]),(0,p.useEffect)(()=>(i(),t?t.world.addLayoutSubscriber(e=>{(e===`zone-changed`||e===`goto-region`||e===`recalculate-world-size`)&&i()}):()=>{}),[t,i]),n};function Li(e){return e.current===`sketch`}function Ri(e,t){return e?t?{...e,...t||{},":hover":e[`:hover`]?Object.assign(e[`:hover`]||{},t[`:hover`]||{}):t[`:hover`],":active":e[`:active`]?Object.assign(e[`:active`]||{},t[`:active`]||{}):t[`:hover`]}:e:t}function zi(e){let{src:t,target:n}=e,r=n?n.width:e.width,i=n?n.height:e.height;return new ot({id:t,height:i,width:r,layers:[J.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}exports.Atlas=ni,exports.AtlasAuto=ii,exports.AtlasContext=yn,exports.BoundsContext=bn,exports.Box=le,exports.BrowserEventManager=D,exports.CanvasRenderer=je,exports.CompositeRenderer=Me,exports.CompositeResource=Pe,exports.DEFAULT_OSM_TILE_TEMPLATE=Xe,exports.DebugRenderer=it,exports.DevTools=Nr,exports.DrawBox=li,exports.Geometry=pe,exports.GridBuilder=ct,exports.HTMLPortal=ui,exports.ImageService=fi,exports.ImageTexture=Fe,exports.MAX_MERCATOR_LATITUDE=Ie,exports.MapGeoJSON=yi,exports.MapObject=bi,exports.MapProjectionContext=pi,exports.MapTileLayer=wi,exports.MapTiledImage=rt,exports.ModeContext=xn,exports.ModeProvider=Cn,exports.NavigatorRenderer=Mt,exports.OverlayRenderer=It,exports.ReactAtlas=Yn,exports.RegionHighlight=Ai,exports.ResizeWorldItem=ki,exports.Runtime=Tn,exports.SingleImage=J,exports.StaticRenderer=Jr,exports.Text=Nt,exports.TileSet=di,exports.TiledImage=Y,exports.WarpAdapterController=vt,exports.WebGLRenderer=Gr,exports.World=st,exports.WorldObject=ot,exports.Zone=Dn,exports.activateEvents=Vn,exports.applyProps=Bn,exports.bounceOut=Qt,exports.canDrag=Li,exports.clampMercatorLatitude=ze,exports.createDefaultEventMap=v,exports.createFiniteTileGrid=nt,exports.createMapProjection=Ye,exports.createWarpAdapterController=yt,exports.defaultConfig=rn,exports.defaultPreset=Kr,exports.easingFunctions=$t,exports.estimateFiniteTileGridCoverage=tt,exports.fromImage=zi,exports.getId=lt,exports.getNavigatorVisibleZoneIdSet=At,exports.getNavigatorWorldRegion=kt,exports.getNavigatorWorldTransform=Ot,exports.getRetryDelayMs=xe,exports.getSubdomainForTile=Ze,exports.getTileFromCanvas=ht,exports.getTileFromImageService=mt,exports.getTiles=_t,exports.getTilesFromManifest=gt,exports.latToTileY=Ke,exports.latitudeToMercatorY=He,exports.lngToTileX=Ge,exports.longitudeToMercatorX=Ve,exports.mercatorXToLongitude=Ue,exports.mercatorYToLatitude=We,exports.mergeStyles=Ri,exports.navigatorToWorldPoint=jt,exports.pdfScrollZoneController=vn,exports.popmotionController=an,exports.presets=Xr,exports.projectMapGeoJSON=_i,exports.resolveImageLoadingConfig=be,exports.resolveTileTemplate=Qe,exports.resolveTileUrl=$e,exports.staticPreset=Yr,exports.supportedEventAttributes=_,exports.supportedEventMap=y,exports.tileXToLng=qe,exports.tileYToLat=Je,exports.unmountComponentAtNode=Jn,exports.useAfterFrame=ai,exports.useAfterPaint=ji,exports.useAtlas=$n,exports.useAtlasImage=Mi,exports.useBeforeFrame=Ni,exports.useCanvas=si,exports.useControlledAnnotationList=Pi,exports.useFrame=oi,exports.useMapGeoJSON=vi,exports.useMapProjection=hi,exports.useMapProjectionContext=mi,exports.useMode=Sn,exports.useResizeWorldItem=Oi,exports.useRuntime=er,exports.useWorldEvent=Ti,exports.useZoneRuntimeState=Ii,exports.validateMapBounds=Be;
81
+ width: var(--atlas-container-width, ${pi(f??`100%`)});
82
+ height: var(--atlas-container-height, ${pi(d||(t?g.height:`100%`))})
83
+ }`,[t,_,g.height,d,f]);return(0,m.jsxs)(sr,{ref:a,...u,className:v,children:[g.width?(0,m.jsx)(fi,{width:g.width||100,height:g.height||100,...h,children:i.children}):null,i.hideInlineStyle?null:(0,m.jsx)(`style`,{children:y}),r]})}),hi=(e,t=[])=>{let n=lr();(0,p.useEffect)(()=>n?n.registerHook(`useAfterFrame`,e):()=>{},t)},gi=(e,t=[])=>{let n=lr();(0,p.useEffect)(()=>n?n.registerHook(`useFrame`,e):()=>{},t)},_i=()=>{let e=cr();return e&&e.canvas?e.canvas:void 0};function vi(){return(0,p.useContext)(kn)}const yi=({onCreate:e})=>{let t=(0,p.useRef)({x:0,y:0}),n=_i(),r=vi(),i=lr(),[a,o]=(0,p.useState)(),[s,c]=(0,p.useState)(),l=jn();return gi(()=>{i&&a&&!s&&(i.pendingUpdate=!0)},[a,s]),hi(()=>{if(a&&n&&i){let e=n.getContext(`2d`);if(e){let{x:n,y:r,width:o,height:c}=i.worldToViewer(a.x,a.y,(s?s.x:t.current.x)-a.x,(s?s.y:t.current.y)-a.y);e.lineWidth=s?3:1,e.strokeStyle=`#fff`,e.strokeRect(n,r,o,c),e.lineWidth=s?3:1,e.strokeStyle=`#000`,e.strokeRect(n+1,r+1,o-2,c-2)}}},[a,s]),(0,p.useEffect)(()=>{let e=e=>{if(r&&i){let{x:n,y:a}=i.viewerToWorld(e.clientX-r.left,e.clientY-r.top);t.current.x=~~n,t.current.y=~~a}};return n?(n.addEventListener(`mousemove`,e),()=>n.removeEventListener(`mousemove`,e)):()=>{}},[r,n,i]),(0,p.useEffect)(()=>{let e=e=>{l===`sketch`&&(o({x:Math.round(t.current.x),y:Math.round(t.current.y)}),c(void 0))};return n?(n.addEventListener(`mousedown`,e),()=>n.removeEventListener(`mousedown`,e)):()=>{}},[n,l]),(0,p.useEffect)(()=>{let e=e=>{a&&!s&&c({x:Math.round(t.current.x),y:Math.round(t.current.y)})};return n?(n.addEventListener(`mouseup`,e),()=>n.removeEventListener(`mouseup`,e)):()=>{}},[n,a,s]),(0,p.useEffect)(()=>{a&&s&&e({x:Math.min(a.x,s.x),y:Math.min(a.y,s.y),width:Math.abs(s.x-a.x),height:Math.abs(s.y-a.y)})},[a,e,s]),null},bi=p.default.forwardRef(({children:e,...t},n)=>{let r=(0,p.useRef)(),i=lr(),a=(0,p.useRef)(0),o=(0,p.useRef)(),s=(0,p.useRef)(),c=(0,p.useRef)(!1),l=(0,p.useRef)(void 0),u=(0,p.useRef)(void 0);return gi(()=>{if(t.relative){let e=r.current;if(e&&i){let t=i.getScaleFactor();a.current!==t&&(a.current=t,e.style.transformOrigin=`0 0`,e.style.transform=`scale(${1/a.current})`,e.style.width=`${a.current*100}%`,e.style.height=`${a.current*100}%`,r.current&&o.current?.__owner.value?.rotation&&(e.style.transform=`scale(${1/a.current}) translate(50%, 50%) rotate(${o.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[t.relative]),(0,p.useLayoutEffect)(()=>{c.current=!1,l.current!==void 0&&(clearTimeout(l.current),l.current=void 0);let i=o.current;n&&i&&(typeof n==`function`?n(i):n.current=i);async function a(){let n=o.current;if(!n||!n.__host||c.current)return;let i=t.relative?(0,m.jsx)(`div`,{ref:r,children:e}):e;if(await zr(n.__host.element,i,s),c.current&&s.current&&!s.current.unmounted){let e=s.current;s.current=void 0,e.unmount()}}i&&i.__host?a():i&&(u.current=a,i.__onCreate=a)},[n,e,o,t.relative]),(0,p.useLayoutEffect)(()=>()=>{c.current=!0;let e=o.current;e&&u.current&&e.__onCreate===u.current&&(e.__onCreate=void 0),u.current=void 0,s.current&&!s.current.unmounted&&(l.current=setTimeout(()=>{l.current=void 0;let e=s.current;s.current=void 0,e&&e.unmount()},0))},[]),(0,m.jsx)(`box`,{html:!0,...t,ref:o})});bi.displayName=`HTMLPortal`;const xi=e=>{let t=e.width/(e.crop?.width||e.tiles.width),n=e.tiles.imageService.sizes||[],r=e.enableThumbnail,i=e.enableSizes,a=(0,p.useMemo)(()=>{let t=e.tiles.imageService.id||e.tiles.imageService[`@id`];return t&&t.endsWith(`/info.json`)?t.slice(0,-10):t},[e.tiles.imageService.id]),o=(0,p.useMemo)(()=>{let t=e.tiles.imageService.tiles||[];if(!t.length){let t=e.width,n=[1],r=1;for(;2**r<t;)r*=2,n.push(r);return[]}return t},[e.tiles.imageService]),s=(0,p.useMemo)(()=>{let t=e.tiles.imageService;return(t&&t[`@context`]?Array.isArray(t[`@context`])?t[`@context`]:[t[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1},[e.tiles.imageService.id]);return(0,m.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,m.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,m.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,m.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,m.jsx)(`tiled-image`,{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},tile:t,scaleFactor:n,crop:e.crop,version3:s},`${e.tiles.imageService.id}-tile-${n}-${t.width}x${t.height||t.width}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)},Si=e=>{let[t,n]=(0,p.useState)();return(0,p.useEffect)(()=>{gt(e.id,e.width,e.height).then(e=>{n(e)})},[e.height,e.id,e.width]),(0,m.jsx)(`world-object`,{x:e.x||0,y:e.y||0,width:e.width,height:e.height,scale:e.scale,children:t?(0,m.jsx)(xi,{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})},Ci=(0,p.createContext)(null);Ci.displayName=`MapProjection`;function wi(){let e=(0,p.useContext)(Ci);if(!e)throw Error(`useMapProjection must be used within <MapObject />`);return e}function Ti(){return wi().projection}function Ei(e,t,n,r,i){switch(e.type){case`Point`:{let t=n(e.coordinates[0],e.coordinates[1]);return[{kind:`point`,x:t.x,y:t.y,key:`${r}-point`,feature:i}]}case`MultiPoint`:return e.coordinates.map(([e,t],a)=>{let o=n(e,t);return{kind:`point`,x:o.x,y:o.y,key:`${r}-point-${a}`,feature:i}});case`LineString`:return[{kind:`shape`,open:!0,points:t(e.coordinates),key:`${r}-line`,feature:i}];case`MultiLineString`:return e.coordinates.map((e,n)=>({kind:`shape`,open:!0,points:t(e),key:`${r}-line-${n}`,feature:i}));case`Polygon`:return e.coordinates.map((e,n)=>({kind:`shape`,open:!1,points:t(e),key:`${r}-polygon-${n}`,feature:i}));case`MultiPolygon`:{let n=[];for(let a=0;a<e.coordinates.length;a++){let o=e.coordinates[a];for(let e=0;e<o.length;e++)n.push({kind:`shape`,open:!1,points:t(o[e]),key:`${r}-polygon-${a}-${e}`,feature:i})}return n}default:return[]}}function Di(e,t){if(!e)return[];if(e.type===`FeatureCollection`){let n=e,r=[];for(let e=0;e<n.features.length;e++){let i=n.features[e];i.geometry&&r.push(...Ei(i.geometry,t.projectRing,t.lngLatToWorld,`feature-${i.id||e}`,i))}return r}if(e.type===`Feature`){let n=e;return n.geometry?Ei(n.geometry,t.projectRing,t.lngLatToWorld,`feature-${n.id||0}`,n):[]}return Ei(e,t.projectRing,t.lngLatToWorld,`geometry`)}function Oi(){let e=Ti();return(0,p.useMemo)(()=>({project:t=>Di(t,e)}),[e])}const ki=({data:e,markerSize:t=8,markerStyle:n={backgroundColor:`rgba(220, 38, 38, 0.9)`,border:`1px solid white`},lineStyle:r={borderColor:`#1d4ed8`,borderWidth:`2`,borderStyle:`solid`},polygonStyle:i={backgroundColor:`rgba(37, 99, 235, 0.25)`,borderColor:`#1d4ed8`,borderWidth:`2`,borderStyle:`solid`},interactive:a})=>{let o=wi(),s=Oi().project(e);return p.default.createElement(p.default.Fragment,null,s.map(e=>e.kind===`point`?p.default.createElement(`box`,{key:e.key,interactive:a,target:{x:e.x-t/2,y:e.y-t/2,width:t,height:t},style:n}):p.default.createElement(`shape`,{id:e.key,key:e.key,interactive:a,open:e.open,target:{x:0,y:0,width:o.width,height:o.height},points:e.points,style:e.open?r:i})))},Ai=({bounds:e,width:t,height:n,preserveAspectRatio:r=!0,children:i,...a})=>{He(e);let o=(0,p.useMemo)(()=>{if(!r)return{x:0,y:0,width:t,height:n};let i=(Ue(e.east)-Ue(e.west))/(We(e.south)-We(e.north)),a=t/n;if(!Number.isFinite(i)||i<=0)return{x:0,y:0,width:t,height:n};if(a>i){let e=n*i;return{x:(t-e)/2,y:0,width:e,height:n}}let o=t/i;return{x:0,y:(n-o)/2,width:t,height:o}},[e.east,e.north,e.south,e.west,n,r,t]),s=(0,p.useMemo)(()=>{let t=Ze({bounds:e,width:o.width,height:o.height});return{lngLatToWorld(e,n){let r=t.lngLatToWorld(e,n);return{x:r.x+o.x,y:r.y+o.y}},worldToLngLat(e,n){return t.worldToLngLat(e-o.x,n-o.y)},lngLatBoundsToWorldRect(e){let n=t.lngLatBoundsToWorldRect(e);return{x:n.x+o.x,y:n.y+o.y,width:n.width,height:n.height}},worldRectToLngLatBounds(e){return t.worldRectToLngLatBounds({x:e.x-o.x,y:e.y-o.y,width:e.width,height:e.height})},projectRing(e){return e.map(([e,n])=>{let r=t.lngLatToWorld(e,n);return[r.x+o.x,r.y+o.y]})}}},[e,o.height,o.width,o.x,o.y]),c=(0,p.useMemo)(()=>({bounds:e,width:t,height:n,mapRect:o,projection:s}),[e,n,o,s,t]);return p.default.createElement(Ci.Provider,{value:c},p.default.createElement(`world-object`,{width:t,height:n,...a},i))},ji=16e3,Mi=12e4,Ni=12,Pi=({id:e,tileUrlTemplate:t,tileSource:n,subdomains:r,tileSize:i=256,minZoom:a=0,maxZoom:o=19,maxQualityLevels:s=12,maxTilesPerLayer:c=16e3,maxTotalTiles:l=12e4,useDevicePixelRatio:u=!1,renderOptions:d})=>{let f=wi(),m=Math.max(0,Math.floor(a)),h=Math.max(m,Math.floor(o)),g=n||t||Qe,_=(0,p.useMemo)(()=>{let e=[],t=0;for(let n=m;n<=h;n++){let r=rt({bounds:f.bounds,zoom:n});if(r.count>c||t+r.count>l)break;t+=r.count,e.push({zoom:n,coverage:r})}if(!e.length){let t=m;for(;t>0&&!(rt({bounds:f.bounds,zoom:t}).count<=c);)--t;e.push({zoom:t,coverage:rt({bounds:f.bounds,zoom:t})})}if(e.length>s){let t=e[0],n=e[e.length-1],r=Math.max(t.zoom+1,n.zoom-(s-2));return[t,...e.filter(e=>e.zoom>=r)].filter((e,t,n)=>t===0||e.zoom!==n[t-1].zoom)}return e},[f.bounds,s,c,l,h,m]),v=(0,p.useMemo)(()=>({layerPolicy:`always-blend`,renderLayers:2,renderSmallestFallback:!0,prefetchRadius:0,quality:.9,useDevicePixelRatio:u,fadeInMs:300,fadeFallbackTiles:!0,fadeOnLayerChange:!0,clipToBounds:!0,...d||{}}),[d,u]),y=typeof g==`string`?g:`function-source`,b=e||`map-tile-layer-${f.width}x${f.height}`,x=_.map(({zoom:e,coverage:t})=>{let n=t.tileSpanX*i,a=t.tileSpanY*i,o=Math.max(f.mapRect.width/n,f.mapRect.height/a);return p.default.createElement(`map-tiled-image`,{key:`${b}-${e}-${y}-${i}`,id:`${b}-z${e}`,bounds:f.bounds,worldWidth:f.mapRect.width,worldHeight:f.mapRect.height,zoom:e,scaleFactor:o,tileSize:i,tileSource:g,subdomains:r})}),S=p.default.createElement(`composite-image`,{id:b,width:f.mapRect.width,height:f.mapRect.height,renderOptions:v},x);return f.mapRect.x===0&&f.mapRect.y===0?S:p.default.createElement(`world-object`,{id:`${b}-frame`,x:f.mapRect.x,y:f.mapRect.y,width:f.mapRect.width,height:f.mapRect.height},S)},Fi=(e,t,n=[])=>{let r=lr();(0,p.useEffect)(()=>{if(r){let n=t,i=v[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 Ii(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 Li(){let e=(0,p.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,p.useLayoutEffect)(()=>{function t(t){t.key===`Shift`&&(e.current.shift=!0),t.key===`Control`&&(e.current.ctrl=!0),t.key===`Alt`&&(e.current.alt=!0)}function n(t){t.key===`Shift`&&(e.current.shift=!1),t.key===`Control`&&(e.current.ctrl=!1),t.key===`Alt`&&(e.current.alt=!1)}return window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,n),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,n)}},[]),e}const Ri=(e,t)=>{let n=jn(),r=lr(),i=vi(),a=(0,p.useRef)(),o=(0,p.useRef)(null),s=(0,p.useRef)(),[c,l]=(0,p.useState)(!1),u=(0,p.useRef)(!1),d=(0,p.useRef)({north:0,south:0,east:0,west:0}),f=Li(),m=(0,p.useCallback)(e=>t=>{if(u.current=!0,l(!0),i&&r){let{top:n,left:o}=i,c=r.viewerToWorld(t.pageX-o,t.pageY-n);s.current={x:c.x,y:c.y},a.current=e}},[i,r]),h=(0,p.useMemo)(()=>e.width/e.height,[e.width,e.height]),g=(0,p.useCallback)(t=>{if(!Math.abs(t.north-t.south+(t.east-t.west)))return;let n=-t.west+t.east,r=-t.north+t.south,i=e.width+n,a=e.height+r;if(i/a>=h){let e=i-a*h,[n,r]=Ii(t.east,t.west);t.west+=e*r,t.east-=e*n}else{let e=a-i/h,[n,r]=Ii(t.north,t.south);t.north+=e*n,t.south-=e*r}},[e.width,e.height,h]);gi(()=>{s&&r&&r.updateNextFrame()}),(0,p.useEffect)(()=>{r&&r.updateNextFrame()},[r,c]);let _=(0,p.useCallback)(t=>{if(!r||!i||r.mode!==`sketch`)return;let{top:n,left:c}=i,l=r.viewerToWorld(t.pageX-c,t.pageY-n),u=o.current,p=!e.maintainAspectRatio&&f.current.alt,m=!p&&f.current.shift&&a.current?.indexOf(`-`)!==-1;if((a.current===`translate`||a.current===`east`||a.current===`north-east`||a.current===`south-east`)&&(d.current.east=l.x-(s.current?s.current.x:0),p&&(d.current.west=-d.current.east)),(a.current===`translate`||a.current===`west`||a.current===`north-west`||a.current===`south-west`)&&(d.current.west=l.x-(s.current?s.current.x:0),p&&(d.current.east=-d.current.west)),(a.current===`translate`||a.current===`north`||a.current===`north-east`||a.current===`north-west`)&&(d.current.north=l.y-(s.current?s.current.y:0),p&&(d.current.south=-d.current.north)),(a.current===`translate`||a.current===`south`||a.current===`south-west`||a.current===`south-east`)&&(d.current.south=l.y-(s.current?s.current.y:0),p&&(d.current.north=-d.current.south)),(e.maintainAspectRatio||m)&&g(d.current),u){let t=d.current.west,n=d.current.north,i=e.width+d.current.east,a=e.height+d.current.south;u.points[1]=Math.min(t,i),u.points[2]=Math.min(n,a),u.points[3]=Math.max(t,i),u.points[4]=Math.max(n,a),r.updateNextFrame()}},[r,e.width,e.height,e.maintainAspectRatio,i]);Fi(`mousemove`,_,[e.width,e.height,i]),Fi(`pointermove`,_,[e.width,e.height,i]);let v=(0,p.useRef)();return(0,p.useEffect)(()=>{v.current=()=>{if(u.current){let n=d.current.west,r=d.current.north,i=e.width+d.current.east,o=e.height+d.current.south,c=Math.min(n,i),f=Math.min(r,o),p=Math.max(n,i),m=Math.max(r,o),h={x:(e.x||0)+c,y:(e.y||0)+f,width:p-c||1,height:m-f||1};e.maintainAspectRatio,t(h),a.current=void 0,s.current=void 0,d.current.east=0,d.current.west=0,d.current.north=0,d.current.south=0,u.current=!1,l(!1)}}},[t,e.height,e.width,e.x,e.y]),(0,p.useEffect)(()=>{let e=()=>{v.current&&v.current()};return window.addEventListener(`pointerup`,e),window.addEventListener(`touchend`,e),()=>{window.removeEventListener(`pointerup`,e),window.removeEventListener(`touchend`,e)}},[]),{portalRef:o,mode:n,mouseEvent:m,onPointerMoveCallback:_,isEditing:c}};function zi({handleSize:e,resizable:t,onSave:n,children:r,maintainAspectRatio:i,disableCardinalControls:a,...o}){let s=e===void 0?i?10:8:e,{portalRef:c,mode:l,mouseEvent:u,isEditing:d}=Ri({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:i},n),f=(0,p.useMemo)(()=>u(`translate`),[u]),h=(0,p.useMemo)(()=>u(`east`),[u]),g=(0,p.useMemo)(()=>u(`west`),[u]),_=(0,p.useMemo)(()=>u(`south`),[u]),v=(0,p.useMemo)(()=>u(`north`),[u]),y=(0,p.useMemo)(()=>u(`south-east`),[u]),b=(0,p.useMemo)(()=>u(`south-west`),[u]),x=(0,p.useMemo)(()=>u(`north-east`),[u]),S=(0,p.useMemo)(()=>u(`north-west`),[u]),C=l===`sketch`,w={zIndex:999,boxShadow:`0px 2px 3px 0 rgba(0,0,0,0.2)`,border:`1px solid rgba(155,155,155,.7)`,borderRadius:i||a?`50%`:2,position:`absolute`,background:`#fff`,pointerEvents:d?`none`:C?`initial`:`none`};return(0,m.jsx)(m.Fragment,{children:(0,m.jsxs)(`world-object`,{...o,children:[r,C&&t?(0,m.jsx)(bi,{ref:c,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:C&&t?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{onMouseDown:f,onTouchStart:f,style:{display:`block`,width:`100%`,height:`100%`,position:`relative`,border:`1px solid rgba(155,155,155, .7)`,boxSizing:`border-box`,pointerEvents:d?`none`:C?`initial`:`none`}}),i?null:(0,m.jsxs)(m.Fragment,{children:[(0,m.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,m.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,m.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,m.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,m.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,m.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,m.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,m.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 Bi({interactive:e,region:t,onClick:n,onSave:r,maintainAspectRatio:i,disableCardinalControls:a,isEditing:o,rotation:s,style:c={backgroundColor:`rgba(0,0,0,.5)`}}){let l=(0,p.useCallback)(e=>{r({id:t.id,x:t.x,y:t.y,height:t.height,width:t.width,...e})},[r,t.id,t.x,t.y,t.height,t.width]);return(0,m.jsx)(zi,{x:t.x,y:t.y,rotation:s,width:t.width,height:t.height,resizable:o,onSave:l,maintainAspectRatio:i,disableCardinalControls:a,children:(0,m.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 Vi=(e,t=[])=>{let n=lr();(0,p.useEffect)(()=>n?n.registerHook(`useAfterPaint`,e):()=>{},t)},Hi=(e,{onCreated:t,resetWorldOnChange:n=!0,mode:r=`explore`,cover:i,containerRef:a,...o})=>{let[s,c]=(0,p.useState)(!1),[l,u]=(0,p.useState)(void 0),[d,f]=(0,p.useState)(void 0),h=(0,p.useRef)(),g=(0,p.useRef)(),_=(0,p.useMemo)(()=>({width:o.width,height:o.height}),[o.width,o.height]),[v,y,b,x]=ci(void 0,{width:o.width,height:o.height});ar(()=>{let e=document.createElement(`canvas`);e.height=_.height,e.width=_.width,h.current=e},[]),ar(()=>{let e=h.current;e&&(e.height=_.height,e.width=_.width)},[_.width,_.height]),(0,p.useEffect)(()=>y?y.runtime.registerHook(`useAfterFrame`,()=>{if(h.current)try{u(h.current.toDataURL())}catch(e){e instanceof Error&&f(e.message)}}):()=>{},[]),(0,p.useEffect)(()=>y?y.runtime.world.addLayoutSubscriber(e=>{e===`ready`&&c(!0)}):()=>{},[]),(0,p.useEffect)(()=>{y&&y.em&&y.em.updateBounds()},[_]),(0,p.useEffect)(()=>{y&&(y.runtime.mode=r)},[r]),(0,p.useEffect)(()=>{if(y){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),i?e.cover():e.goHome(),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}},[o.width,o.height]),ar(()=>{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]),ar(()=>{let e=()=>{if(y&&y.runtime){let e=y.runtime;e.resize(b.current.width,o.width,b.current.height,o.height),b.current.width=o.width,b.current.height=o.height,e.updateNextFrame()}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[y,o.height,o.width]);let S=(0,p.useCallback)(function(e){let n=()=>{y&&(y.ready=!0)};return(0,p.useEffect)(()=>{if(y){let e=t&&t(y);e&&e.then?e.then(n):n();return}return()=>{}},[]),e.children},[y]);return(0,p.useEffect)(()=>{if(y&&y.runtime){let e=y.runtime;if(n)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome({cover:i})})}return()=>{}},[y,i,n]),ar(()=>{y&&ir.render((0,m.jsx)(S,{children:(0,m.jsx)(An.Provider,{value:r,children:(0,m.jsx)(On.Provider,{value:y,children:e})})}),y.runtime)},[y,r,e]),{loading:!l&&s,uri:l,imageError:d}},Ui=(e,t=[])=>{let n=lr();(0,p.useEffect)(()=>n?n.registerHook(`useBeforeFrame`,e):()=>{},t)},Wi=(e=[])=>{let[t,n]=(0,p.useState)(e),[r,i]=(0,p.useState)(!1),[a,o]=(0,p.useState)(),s=(0,p.useCallback)(()=>{i(!0),o(void 0)},[]),c=(0,p.useCallback)(e=>{i(!0),o(e)},[]),l=e=>{n(t=>t.map(t=>t.id===e.id?e:t))},u=(0,p.useCallback)(e=>{let t=oe();n(n=>[...n,{id:t,...e}]),i(!1),o(void 0)},[]);return{isEditing:r,onDeselect:(0,p.useCallback)(()=>{i(!1),o(void 0)},[]),selectedAnnotation:a,onCreateNewAnnotation:u,annotations:t,onUpdateAnnotation:l,setIsEditing:i,setSelectedAnnotation:o,editAnnotation:c,addNewAnnotation:s}};function Gi(e){return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1}}const Ki=e=>{let t=lr(),[n,r]=(0,p.useState)(()=>Gi(e)),i=(0,p.useCallback)(()=>{let n=t?t.getZoneRuntimeState(e):Gi(e);r(e=>e.zoneId===n.zoneId&&e.exists===n.exists&&e.active===n.active&&e.visibleInViewport===n.visibleInViewport?e:n)},[t,e]);return hi(i,[t,i]),(0,p.useEffect)(()=>(i(),t?t.world.addLayoutSubscriber(e=>{(e===`zone-changed`||e===`goto-region`||e===`recalculate-world-size`)&&i()}):()=>{}),[t,i]),n};function qi(e){return e.current===`sketch`}function Ji(e,t){return e?t?{...e,...t||{},":hover":e[`:hover`]?Object.assign(e[`:hover`]||{},t[`:hover`]||{}):t[`:hover`],":active":e[`:active`]?Object.assign(e[`:active`]||{},t[`:active`]||{}):t[`:hover`]}:e:t}function Yi(e){let{src:t,target:n}=e,r=n?n.width:e.width,i=n?n.height:e.height;return new ct({id:t,height:i,width:r,layers:[q.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}exports.Atlas=fi,exports.AtlasAuto=mi,exports.AtlasContext=On,exports.BoundsContext=kn,exports.Box=le,exports.BrowserEventManager=ee,exports.CanvasRenderer=Ne,exports.CompositeRenderer=Pe,exports.CompositeResource=Ie,exports.DEFAULT_OSM_TILE_TEMPLATE=Qe,exports.DebugRenderer=ot,exports.DevTools=Ur,exports.DrawBox=yi,exports.Geometry=pe,exports.GridBuilder=ut,exports.HTMLPortal=bi,exports.ImageService=Si,exports.ImageTexture=Le,exports.MAX_MERCATOR_LATITUDE=Re,exports.MapGeoJSON=ki,exports.MapObject=Ai,exports.MapProjectionContext=Ci,exports.MapTileLayer=Pi,exports.MapTiledImage=at,exports.ModeContext=An,exports.ModeProvider=Mn,exports.NavigatorRenderer=Pt,exports.OverlayRenderer=Rt,exports.ReactAtlas=ir,exports.RegionHighlight=Bi,exports.ResizeWorldItem=zi,exports.Runtime=Pn,exports.SingleImage=q,exports.StaticRenderer=ii,exports.Text=Ft,exports.TileSet=xi,exports.TiledImage=J,exports.WarpAdapterController=bt,exports.WebGLRenderer=ti,exports.World=lt,exports.WorldObject=ct,exports.Zone=In,exports.activateEvents=Xn,exports.applyProps=Yn,exports.bounceOut=en,exports.canDrag=qi,exports.clampMercatorLatitude=Ve,exports.createDefaultEventMap=_,exports.createFiniteTileGrid=it,exports.createMapProjection=Ze,exports.createWarpAdapterController=xt,exports.defaultConfig=on,exports.defaultPreset=ni,exports.easingFunctions=tn,exports.estimateFiniteTileGridCoverage=rt,exports.fromImage=Yi,exports.getId=dt,exports.getNavigatorVisibleZoneIdSet=Mt,exports.getNavigatorWorldRegion=jt,exports.getNavigatorWorldTransform=At,exports.getRetryDelayMs=be,exports.getSubdomainForTile=$e,exports.getTileFromCanvas=_t,exports.getTileFromImageService=gt,exports.getTiles=yt,exports.getTilesFromManifest=vt,exports.latToTileY=Je,exports.latitudeToMercatorY=We,exports.lngToTileX=qe,exports.longitudeToMercatorX=Ue,exports.mercatorXToLongitude=Ge,exports.mercatorYToLatitude=Ke,exports.mergeStyles=Ji,exports.navigatorToWorldPoint=Nt,exports.pdfScrollZoneController=bn,exports.popmotionController=sn,exports.presets=oi,exports.projectMapGeoJSON=Di,exports.resolveImageLoadingConfig=X,exports.resolveTileTemplate=et,exports.resolveTileUrl=tt,exports.staticPreset=ai,exports.supportedEventAttributes=g,exports.supportedEventMap=v,exports.tileXToLng=Ye,exports.tileYToLat=Xe,exports.unmountComponentAtNode=rr,exports.useAfterFrame=hi,exports.useAfterPaint=Vi,exports.useAtlas=cr,exports.useAtlasImage=Hi,exports.useBeforeFrame=Ui,exports.useCanvas=_i,exports.useControlledAnnotationList=Wi,exports.useFrame=gi,exports.useMapGeoJSON=Oi,exports.useMapProjection=Ti,exports.useMapProjectionContext=wi,exports.useMode=jn,exports.useResizeWorldItem=Ri,exports.useRuntime=lr,exports.useWorldEvent=Fi,exports.useZoneRuntimeState=Ki,exports.validateMapBounds=He;