@atlas-viewer/atlas 3.2.1 → 3.2.2

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.js CHANGED
@@ -1,4 +1,4 @@
1
- import{DnaFactory as e,compose as t,dna as n,dnaLength as r,getIntersection as i,hidePointsOutsideRegion as a,mutate as o,scale as s,scaleAtOrigin as c,transform as l,translate as u}from"@atlas-viewer/dna";import{ImageServiceLoader as d}from"@atlas-viewer/iiif-image-api";import{createThumbnailHelper as f}from"@iiif/helpers/thumbnail";import*as p from"react";import m,{createContext as h,memo as g,useCallback as _,useContext as v,useEffect as y,useId as b,useLayoutEffect as x,useMemo as S,useRef as C,useState as w,useSyncExternalStore as T,version as E}from"react";import ee from"react-use-measure";import{Fragment as D,jsx as O,jsxs as k}from"react/jsx-runtime";import A from"react-reconciler";var j=Object.create,M=Object.defineProperty,N=Object.getOwnPropertyDescriptor,te=Object.getOwnPropertyNames,P=Object.getPrototypeOf,ne=Object.prototype.hasOwnProperty,F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),re=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=te(t),a=0,o=i.length,s;a<o;a++)s=i[a],!ne.call(e,s)&&s!==n&&M(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=N(t,s))||r.enumerable});return e},ie=(e,t,n)=>(n=e==null?{}:j(P(e)),re(t||!e||!e.__esModule?M(n,`default`,{value:e,enumerable:!0}):n,e));const I=`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 L(){return I.reduce((e,t)=>(e[t]=[],e),{})}const R=I.reduce((e,t)=>(e[t.slice(2).toLowerCase()]=t,e[t]=t,e),{});function z(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 V(e,t){let n=B(e.x,t.x),r=B(e.y,t.y);return Math.sqrt(n**2+r**2)}function H(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function ae(e){"@babel/helpers - typeof";return ae=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},ae(e)}function U(e,t){if(ae(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(ae(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function oe(e){var t=U(e,`string`);return ae(t)==`symbol`?t:t+``}function W(e,t,n){return(t=oe(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var G=class e{constructor(e,t,n){W(this,`element`,void 0),W(this,`runtime`,void 0),W(this,`unsubscribe`,void 0),W(this,`activatedEvents`,[]),W(this,`eventHandlers`,[]),W(this,`bounds`,void 0),W(this,`listening`,void 0),W(this,`pointerMoveEvent`,void 0),W(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),W(this,`options`,void 0),W(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),W(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),W(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)}}),W(this,`onTouchEvent`,e=>{let t=R[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=[])}),W(this,`onPointerEvent`,e=>{if(e.button===2)return;let t=R[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)}}),W(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))}),W(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)}}),W(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&&V(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)}};W(G,`eventPool`,{atlas:{x:0,y:0}});const se=typeof performance==`object`&&performance&&typeof performance.now==`function`?performance:Date,K=typeof AbortController==`function`?AbortController:class{constructor(){this.signal=new ue}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})}},ce=typeof AbortSignal==`function`,le=typeof K.AbortSignal==`function`,ue=ce?AbortSignal:le?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))}},de=new Set,q=(e,t)=>{let n=`LRU_CACHE_OPTION_${e}`;he(n)&&ge(n,`${e} option`,`options.${t}`,xe)},fe=(e,t)=>{let n=`LRU_CACHE_METHOD_${e}`;if(he(n)){let{prototype:r}=xe,{get:i}=Object.getOwnPropertyDescriptor(r,e);ge(n,`${e} method`,`cache.${t}()`,i)}},pe=(e,t)=>{let n=`LRU_CACHE_PROPERTY_${e}`;if(he(n)){let{prototype:r}=xe,{get:i}=Object.getOwnPropertyDescriptor(r,e);ge(n,`${e} property`,`cache.${t}`,i)}},me=(...e)=>{typeof process==`object`&&process&&typeof process.emitWarning==`function`?process.emitWarning(...e):console.error(...e)},he=e=>!de.has(e),ge=(e,t,n,r)=>{de.add(e),me(`The ${t} is deprecated. Please use ${n} instead.`,`DeprecationWarning`,e,r)},_e=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),ve=e=>_e(e)?e<=2**8?Uint8Array:e<=2**16?Uint16Array:e<=2**32?Uint32Array:e<=2**53-1?ye:null:null;var ye=class extends Array{constructor(e){super(e),this.fill(0)}},be=class{constructor(e){if(e===0)return[];this.heap=new(ve(e))(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},xe=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&&!_e(n))throw TypeError(`max option must be a nonnegative integer`);let E=n?ve(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 be(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&&!_e(this.maxSize))throw TypeError(`maxSize must be a positive integer if specified`);if(!_e(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=_e(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||w||0,this.ttl){if(!_e(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`;he(t)&&(de.add(t),me(`TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.`,`UnboundedCacheWarning`,t,e))}T&&q(`stale`,`allowStale`),w&&q(`maxAge`,`ttl`),C&&q(`length`,`sizeCalculation`)}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new ye(this.max),this.starts=new ye(this.max),this.setItemTTL=(e,t,n=se.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:se.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=se.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 ye(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(!_e(n))if(r){if(typeof r!=`function`)throw TypeError(`sizeCalculation must be a function`);if(n=r(t,e),!_e(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 fe(`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=se.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=se.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 fe(`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 fe(`reset`,`clear`),this.clear}get length(){return pe(`length`,`size`),this.size}static get AbortController(){return K}static get AbortSignal(){return ue}},Se=xe;let Ce=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[n[e]&63];return t};var we=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(){W(this,`__id`,void 0),W(this,`__revision`,0),W(this,`__host`,void 0),W(this,`__onCreate`,void 0),W(this,`__parent`,void 0),W(this,`__owner`,{value:void 0}),W(this,`__state`,{}),W(this,`eventHandlers`,void 0),W(this,`scale`,1),W(this,`layers`,[]),W(this,`time`,[]),W(this,`_crop`,void 0),W(this,`cropData`,void 0),W(this,`id`,void 0),W(this,`addEventListener`,(e,t,n)=>{let r=R[e];if(!this.eventHandlers[r])throw Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)}),W(this,`removeEventListener`,(e,t)=>{let n=R[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=Ce(),this.eventHandlers=L()}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){o(this.points,u(e,t))}atScale(e){o(this.points,c(e,this.x,this.y)),this.scale*=e}transform(e){o(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};const Te=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Ee={},De=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var J=class extends we{constructor(){super(),W(this,`id`,void 0),W(this,`type`,`spacial-content`),W(this,`points`,void 0),W(this,`hoverEvents`,!1),W(this,`activeEvents`,!1),W(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:n(5)}),W(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),W(this,`hovering`,void 0),W(this,`pressing`,void 0),W(this,`props`,{}),W(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),W(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),W(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),W(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=Ce(12),this.points=n(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps(t={}){let n=!1;if(t.interactive!==this.props.interactive&&(n=!0,this.props.interactive=t.interactive),t.style){let e=t.border||t.style.border;if(e!==this._parsed.border.id)if(!e)this._parsed.border.id=null,this._parsed.border.match=[];else{let t=Ee[e]||Te.exec(e)||Te.exec(e);t&&(this._parsed.border.id=e,this._parsed.border.match=Ee[e]=t)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle=`solid`,t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let e=Ee[t.style.outline]||Te.exec(t.style.outline)||Te.exec(t.style.outline);e&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Ee[t.style.outline]=e)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle=`solid`,t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,n=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,n=!0);for(let e of De)if(this.props.style[e]!==t.style[e]){n=!0;break}t.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),n=!0),t.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=t.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0)}t.href!==this.props.href&&(this.props.href=t.href,n=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,n=!0),t.title!==this.props.title&&(this.props.title=t.title,n=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,n=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,n=!0),t.html!==this.props.html&&(this.props.html=t.html,n=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(n=!0,this.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),n&&this.__revision++}};const Oe=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,ke={},Ae=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var je=class extends we{constructor(){super(),W(this,`id`,void 0),W(this,`type`,`spacial-content`),W(this,`isShape`,!0),W(this,`points`,void 0),W(this,`hoverEvents`,!1),W(this,`activeEvents`,!1),W(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:n(5)}),W(this,`boundingBox`,null),W(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),W(this,`hovering`,void 0),W(this,`pressing`,void 0),W(this,`props`,{}),W(this,`shape`,{type:`none`}),W(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),W(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),W(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),W(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=Ce(12),this.points=n(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(t={}){let n=!1;if(t.points)if(this.shape.type!==`polygon`||this.shape.points.length!==t.points.length)this.shape={type:`polygon`,points:t.points,open:t.open},this.updateBoundingBox();else{let e=!1,n=t.points.length;for(let r=0;r<n;r++)if(t.points[r][0]!==this.shape.points[r][0]||t.points[r][1]!==this.shape.points[r][1]){e=!0;break}e&&(this.shape={type:`polygon`,points:t.points,open:t.open},this.updateBoundingBox())}if(t.interactive!==this.props.interactive&&(n=!0,this.props.interactive=t.interactive),(t.open||t.open===!1)&&(n=!0,this.shape.open=t.open),t.style){let e=t.border||t.style.border;if(e!==this._parsed.border.id)if(!e)this._parsed.border.id=null,this._parsed.border.match=[];else{let t=ke[e]||Oe.exec(e)||Oe.exec(e);t&&(this._parsed.border.id=e,this._parsed.border.match=ke[e]=t)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle=`solid`,t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let e=ke[t.style.outline]||Oe.exec(t.style.outline)||Oe.exec(t.style.outline);e&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=ke[t.style.outline]=e)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle=`solid`,t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,n=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,n=!0);for(let e of Ae)if(this.props.style[e]!==t.style[e]){n=!0;break}t.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),n=!0),t.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=t.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0)}t.href!==this.props.href&&(this.props.href=t.href,n=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,n=!0),t.title!==this.props.title&&(this.props.title=t.title,n=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,n=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,n=!0),t.html!==this.props.html&&(this.props.html=t.html,n=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(n=!0,this.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),n&&this.__revision++}},Y=class t extends we{constructor(t){if(super(),W(this,`type`,`spacial-content`),W(this,`id`,void 0),W(this,`uri`,void 0),W(this,`display`,void 0),W(this,`points`,void 0),W(this,`priority`,void 0),W(this,`style`,{opacity:1}),!t)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:n(5)},this.points=n(5);else{let n=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=e.singleBox(t.width,t.height,t.x,t.y),this.display={x:0,y:0,scale:n,width:t.width/n,height:t.height/n,points:e.singleBox(t.width/n,t.height/n),rotation:t?.rotation}}}applyProps(t){let r=t.display?t.display.width:t.target.width,i=t.target.width/r;if(this.id=t.id||t.uri,this.uri=t.uri,this.points.set(e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y)),t.style&&t.style.opacity!==void 0&&(this.style.opacity=t.style.opacity),t.crop){this.cropData=t.crop;let r=e.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);o(r,u(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(r):this.crop=n(r)}t.display?(this.display.scale=i,this.display.width=t.display.width,this.display.height=t.display.height,this.display.rotation=t.display.rotation,this.display.points=e.singleBox(t.display.width,t.display.height)):(this.display.scale=i,this.display.width=t.target.width/i,this.display.height=t.target.height/i,this.display.points=e.singleBox(t.target.width/i,t.target.height/i))}getAllPointsAt(e,t,n){return[[this,this.crop||this.points,t]]}static fromSvg(e,n,r,i){return t.fromImage(`data:image/svg+xml;base64,`+btoa(e),n,r,i)}static fromImage(e,n,r,i){let a=new t;return a.applyProps({uri:e,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 X=class t extends we{constructor(e){super(),W(this,`id`,void 0),W(this,`type`,`spacial-content`),W(this,`display`,void 0),W(this,`tileWidth`,void 0),W(this,`tileHeight`,void 0),W(this,`columns`,void 0),W(this,`rows`,void 0),W(this,`style`,{opacity:1}),W(this,`points`,void 0),W(this,`service`,void 0),W(this,`format`,`jpg`),W(this,`crop2`,void 0),W(this,`version3`,void 0),W(this,`tileUrl`,void 0),this.tileUrl=H(e.url),this.id=e.id||`${this.tileUrl}--${e.scaleFactor}--${e.tileWidth}x${e.tileHeight}`,this.points=e.displayPoints?e.displayPoints:l(e.points,s(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=n([...this.points]),r=t.length/5,i=e.crop.x||0,a=e.crop.y||0,s=e.crop.x+e.crop.width,c=e.crop.y+e.crop.height;for(let e=0;e<r;e++){let n=e*5;t[n+1]<s&&t[n+3]>i&&t[n+2]<c&&t[n+4]>a?(t[n+1]=Me(t[n+1],i,s),t[n+3]=Me(t[n+3],i,s),t[n+2]=Me(t[n+2],a,c),t[n+4]=Me(t[n+4],a,c)):t[n]=0}o(t,u(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=t}}static fromTile(n,r,i,a,o,s,c,l){let u=i.height?i.height:i.width,d=c?Math.floor(r.width/a):Math.ceil(r.width/a),f=c?Math.floor(r.height/a):Math.ceil(r.height/a),p=Math.ceil(d/i.width),m=Math.ceil(f/u),h=e.grid(p,m),g=e.grid(p,m),_=o&&o[`@context`]?Array.isArray(o[`@context`])?o[`@context`]:[o[`@context`]]:[],v=l===void 0?_.indexOf(`http://iiif.io/api/image/3/context.json`)!==-1:l;for(let e=0;e<m;e++)for(let t=0;t<p;t++){let n=t*i.width,o=e*u;g.addPoints(n*a,o*a,t===p-1?r.width:(n+i.width)*a,e===m-1?r.height:(o+u)*a),h.addPoints(n,o,t===p-1?d:n+i.width,e===m-1?f:o+u)}let y=new t({url:n,scaleFactor:a,points:h.build(),displayPoints:g.build(),width:r.width,height:r.height,tileWidth:i.width,tileHeight:u,columns:p,rows:m,format:s,version3:v});return y.applyProps({service:o}),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=a(this.crop||this.points,e);return[[this,r,t]]}transform(e){o(this.points,e)}getScheduledUpdates(e,t){return[]}};function Ne(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 Pe(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 Z(e,t,n){return Math.max(t,Math.min(n,e))}function Q(){if(typeof navigator>`u`)return;let e=navigator;return e.connection||e.mozConnection||e.webkitConnection}function Fe(e){let t=10;return typeof navigator<`u`&&typeof navigator.hardwareConcurrency==`number`&&(t=Z(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 Ie(e,t){return t?.saveData||t?.effectiveType===`slow-2g`||t?.effectiveType===`2g`?0:t?.effectiveType===`3g`?2:Math.min(e+2,12)}function Le(e={}){let t=Q(),n=Fe(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)):Ie(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`?Z(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 Re(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 ze=class extends Error{constructor(e=`Image request cancelled`,t=!0){super(e),W(this,`silent`,void 0),this.name=`ImageRequestCancelledError`,this.silent=t}};function Be(e){return e instanceof ze}let Ve=0;function He(e){return Ve+=1,`${Ve}:${e}`}function Ue(e){return Error(`Image load timeout: ${e}`)}function We(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(Ue(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 Ge=class{constructor(e){W(this,`timeoutMs`,void 0),W(this,`crossOrigin`,void 0),W(this,`useFetch`,void 0),W(this,`cache`,void 0),W(this,`inFlight`,new Map),W(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:He(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 ze(`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(Ue(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}=We(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}=We(e.url,{timeoutMs:this.timeoutMs,crossOrigin:this.crossOrigin});return e.abortDomImage=n,t}};const Ke=/(-?[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,qe={},Je=typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(`firefox`),Ye=new Map;var Xe=class{constructor(e,t){W(this,`canvas`,void 0),W(this,`ctx`,void 0),W(this,`options`,void 0),W(this,`imagesPending`,0),W(this,`imagesLoaded`,0),W(this,`imageIdsLoaded`,[]),W(this,`frameIsRendering`,!1),W(this,`pendingDrawCall`,!1),W(this,`firstMeaningfulPaint`,!1),W(this,`parallelTasks`,6),W(this,`maxPrefetchPerFrame`,8),W(this,`imageLoadingConfig`,void 0),W(this,`imageRequestPool`,void 0),W(this,`frameTasks`,0),W(this,`loadingQueueOrdered`,!0),W(this,`loadingQueue`,[]),W(this,`currentTask`,Promise.resolve()),W(this,`tasksRunning`,0),W(this,`inFlightImageLoads`,new Map),W(this,`requiredTileKeys`,new Set),W(this,`requiredPrefetchTileKeys`,new Set),W(this,`requestGeneration`,0),W(this,`frameCounter`,0),W(this,`pendingTileReveals`,new Map),W(this,`stats`,void 0),W(this,`averageJobTime`,64),W(this,`lastKnownScale`,1),W(this,`visible`,[]),W(this,`previousVisible`,[]),W(this,`rendererPosition`,void 0),W(this,`dpi`,void 0),W(this,`drawCalls`,[]),W(this,`lastPaintedObject`,void 0),W(this,`hostCache`,void 0),W(this,`invalidated`,[]),W(this,`fallbackRevealTimeout`,null),W(this,`framePrefetchCount`,0),W(this,`hasTilesFading`,!1),W(this,`hasActiveLayerClip`,!1),W(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--}))}}),W(this,`_scheduled`,0),W(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=Le(this.options.imageLoading),this.parallelTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Ge({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:this.options.crossOrigin?`anonymous`:void 0,useFetch:!!this.options.crossOrigin,cache:Ye}),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 Se({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=Pe(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 Y||e instanceof X?!!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 X)||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 Y){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 Y||e instanceof X){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=V({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 Je?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 J&&this.options.box,l=e instanceof je&&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=qe[t]||Ke.exec(t)||Ke.exec(t);qe[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}),Be(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()+Re(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 Y||e instanceof X)&&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=Ne(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}},Ze=class{constructor(e){W(this,`renderers`,[]),W(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()}},Qe=class extends we{constructor(...e){super(...e),W(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},$e=class extends Qe{constructor(t){super(),W(this,`id`,void 0),W(this,`display`,void 0),W(this,`points`,void 0),W(this,`images`,[]),W(this,`allImages`,[]),W(this,`scaleFactors`,[]),W(this,`aggregateBuffer`,n(9)),W(this,`lazyLoader`,void 0),W(this,`isFullyLoaded`,!1),W(this,`isLoadingFullResource`,!1),W(this,`maxScaleFactor`,0),W(this,`layerSelection`,new WeakMap),W(this,`layerSelectionFrame`,0),W(this,`renderOptions`,void 0),W(this,`_scheduleSortByScales`,!1),W(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 Y&&(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 Y||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}),W(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}}}),W(this,`fallback`,[this.loadFullResource]),this.id=t.id,this.points=e.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:e.singleBox(t.width,t.height),height:t.height,width:t.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,...t.renderOptions||{}},this.addImages(t.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,n,r){if(this.images.length===0)return[];let i=this.renderOptions.useDevicePixelRatio&&typeof window<`u`&&window.devicePixelRatio||1,a=z(1/(r||1)/i,this.images,this.renderOptions.quality),o=this.images.length,s=n?t(n,u(this.x,this.y)):u(this.x,this.y),c=[a];if(a!==this.images.length-1&&this.images[a+1]){c=[];for(let e=o-1;e>=a;e--)c.push(e);let e=c[0];this.renderOptions.renderLayers&&(c=c.slice(-Math.min(c.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&c.indexOf(e)===-1&&c.unshift(e)}c.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 l=new Set;switch(this.renderOptions.layerPolicy){case`always-blend`:for(let e of c)l.add(e);break;case`active-only`:l.add(a),c=[a];break;case`fallback-only`:default:l.add(a),this.renderOptions.renderSmallestFallback&&c.length&&l.add(c[0]);break}let d=new Set;for(let e of l){let t=this.images[e];t&&d.add(t)}this.layerSelectionFrame+=1;let f=this.getNow(),p=f-Math.max(0,this.renderOptions.fadeInMs);for(let e of this.allImages){let t=this.layerSelection.get(e);if(!d.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?f:p})}let m=[];for(let t=0;t<c.length;t++){let n=c[t],i=this.images[n];m.push(...i.getAllPointsAt(e,s,r))}return m}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()}},et=class extends we{constructor(t){if(super(),W(this,`type`,`spacial-content`),W(this,`id`,void 0),W(this,`uri`,void 0),W(this,`display`,void 0),W(this,`points`,void 0),W(this,`getTexture`,void 0),this.getTexture=()=>({source:void 0,hash:-1}),!t)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:n(5)},this.points=n(5);else{let n=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=e.singleBox(t.width,t.height),this.display={x:0,y:0,scale:n,width:t.width/n,height:t.height/n,points:n===1?this.points:e.singleBox(t.width/n,t.height/n)}}}applyProps(t){let n=t.display?t.display.width:t.target.width,r=t.target.width/n;this.id=t.id,this.points.set(e.singleBox(t.target.width,t.target.height)),this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.getTexture=t.getTexture,this.display.points=r===1?this.points:e.singleBox(t.target.width/r,t.target.height/r)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}};const tt=85.05112878;function nt(e,t){if(!Number.isFinite(e))throw Error(`${t} must be a finite number`)}function rt(e,t){if(nt(e,t),e<=0)throw Error(`${t} must be greater than 0`)}function it(e){if(!Number.isFinite(e))throw Error(`Latitude must be a finite number`);return e>tt?tt:e<-tt?-tt:e}function at(e){if(nt(e.west,`Map bounds west`),nt(e.south,`Map bounds south`),nt(e.east,`Map bounds east`),nt(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 ot(e){if(!Number.isFinite(e))throw Error(`Longitude must be a finite number`);return(e+180)/360}function st(e){let t=it(e)*Math.PI/180;return(1-Math.log(Math.tan(t)+1/Math.cos(t))/Math.PI)/2}function ct(e){if(!Number.isFinite(e))throw Error(`Mercator X must be a finite number`);return e*360-180}function lt(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 ut(e,t){return ot(e)*2**t}function dt(e,t){return st(e)*2**t}function ft(e,t){return ct(e/2**t)}function pt(e,t){return lt(e/2**t)}function mt(e){let t=at(e.bounds);rt(e.width,`Map world width`),rt(e.height,`Map world height`);let n=ot(t.west),r=ot(t.east),i=st(t.north),a=st(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=ot(t),c=st(r);return{x:(a-n)/o*e.width,y:(c-i)/s*e.height}},l=(t,r)=>{nt(t,`World x`),nt(r,`World y`);let a=n+t/e.width*o,c=i+r/e.height*s;return{lng:ct(a),lat:lt(c)}};return{lngLatToWorld:c,worldToLngLat:l,lngLatBoundsToWorldRect:e=>{at(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=>{nt(e.x,`World rect x`),nt(e.y,`World rect y`),nt(e.width,`World rect width`),nt(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 ht=`https://tile.openstreetmap.org/{z}/{x}/{y}.png`;function gt(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 _t(e,t){let n=gt(t)||``;return e.replace(/\{z\}/g,`${t.z}`).replace(/\{x\}/g,`${t.x}`).replace(/\{y\}/g,`${t.y}`).replace(/\{s\}/g,n)}function vt(e,t){let n=e||ht;return typeof n==`function`?n(t):_t(n,t)}function yt(e,t,n){return Math.min(n,Math.max(t,e))}function bt(e){at(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=2**t,r=n-1,i=ut(e.bounds.west,t),a=ut(e.bounds.east,t),o=dt(e.bounds.north,t),s=dt(e.bounds.south,t),c=yt(i,0,n),l=yt(a,0,n),u=yt(o,0,n),d=yt(s,0,n),f=Math.max(1e-9,l-c),p=Math.max(1e-9,d-u),m=yt(Math.floor(i),0,r),h=yt(Math.ceil(a)-1,0,r),g=yt(Math.floor(o),0,r),_=yt(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 xt(e){at(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),r=mt({bounds:e.bounds,width:e.worldWidth,height:e.worldHeight}),i=bt({bounds:e.bounds,zoom:t}),a=typeof e.maxTiles==`number`?e.maxTiles:1/0;if(i.count>a)throw Error(`Map tile grid too large at zoom ${t}: ${i.count} tiles exceeds the configured max (${a})`);let o=[],s=[];for(let e=i.minTileY;e<=i.maxTileY;e++)for(let n=i.minTileX;n<=i.maxTileX;n++){let i=ft(n,t),a=ft(n+1,t),c=pt(e,t),l=pt(e+1,t),u=r.lngLatToWorld(i,c),d=r.lngLatToWorld(a,l);o.push(1,u.x,u.y,d.x,d.y),s.push({x:n,y:e,z:t})}return{points:n(o.length?o:[0]),tiles:s,columns:i.columns,rows:i.rows,count:i.count,minTileX:i.minTileX,maxTileX:i.maxTileX,minTileY:i.minTileY,maxTileY:i.maxTileY}}var St=class extends X{constructor(e){let t=e.scaleFactor||1,n=e.tileSize||256,r=e.tileSource||e.tileUrlTemplate||ht,i=xt({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}),W(this,`zoom`,void 0),W(this,`bounds`,void 0),W(this,`worldWidth`,void 0),W(this,`worldHeight`,void 0),W(this,`tileSize`,void 0),W(this,`tileSource`,void 0),W(this,`subdomains`,void 0),W(this,`tileCoordinates`,void 0),W(this,`minTileX`,void 0),W(this,`maxTileX`,void 0),W(this,`minTileY`,void 0),W(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?vt(this.tileSource,{z:t.z,x:t.x,y:t.y,tileSize:this.tileSize,subdomains:this.subdomains}):``}},Ct=class{constructor(e){W(this,`canvas`,void 0),W(this,`context`,void 0),W(this,`heightRatio`,1),W(this,`widthRatio`,1),W(this,`target`,new Float32Array(5)),W(this,`initialWidth`,void 0),W(this,`initialHeight`,void 0),W(this,`bounds`,void 0),W(this,`aggregate`,void 0),W(this,`delta`,0),W(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=s(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 Y&&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(t,n){this.bounds=e.singleBox(t.width,t.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 wt(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 Tt=class e extends we{constructor(e,t){super(),W(this,`id`,void 0),W(this,`type`,`world-object`),W(this,`scale`,void 0),W(this,`layers`,void 0),W(this,`points`,void 0),W(this,`worldPoints`,void 0),W(this,`intersectionBuffer`,n(5)),W(this,`aggregateBuffer`,n(9)),W(this,`invertedBuffer`,n(9)),W(this,`rotation`,0),W(this,`filteredPointsBuffer`,void 0),W(this,`_updatedList`,[]),W(this,`geometry`,void 0);let{x:r=0,y:i=0}=t||{};e?(this.id=e.id||``,this.scale=1,this.layers=e.layers,this.points=n([1,r,i,r+e.width,i+e.height]),this.worldPoints=n([1,r,i,r+e.width,i+e.height]),this.filteredPointsBuffer=n(e.layers.length*5)):(this.id=``,this.scale=1,this.layers=[],this.points=n(5),this.worldPoints=n(5),this.filteredPointsBuffer=n(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=n(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)),a(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=l(n.points,u(this.x,this.y));if(!n.intersects([e[1]-t[1],e[2]-t[2]]))continue}if(a(l(n.points,u(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]},r={x:e[1],y:e[4]},i={x:e[3],y:e[2]},a={x:e[3],y:e[4]},o=this.points[1]+(this.points[3]-this.points[1])/2,s=this.points[2]+(this.points[4]-this.points[2])/2,[c,l]=wt(o,s,t.x,t.y,this.rotation),[u,d]=wt(o,s,r.x,r.y,this.rotation),[f,p]=wt(o,s,i.x,i.y,this.rotation),[m,h]=wt(o,s,a.x,a.y,this.rotation),g=Math.min(c,u,f,m),_=Math.max(c,u,f,m),v=Math.min(l,d,p,h),y=Math.max(l,d,p,h);return n([e[0],g,v,_,y])}return e}getAllPointsAt(e,n,r){let a=t(u(this.x,this.y),s(this.scale),this.aggregateBuffer);this.rotation&&(e=this.applyRotation(e));let o=i(e,this.points,this.intersectionBuffer),c=this.layers.length,d=[],f=l(o,t(s(1/this.scale),u(-this.x,-this.y),this.invertedBuffer)),p=n?t(n,a,this.aggregateBuffer):a,m=r*this.scale;for(let e=0;e<c;e++)d.push(...this.layers[e].getAllPointsAt(f,p,m));return d}addLayers(e){let t=[];for(let r of e)this.layers.indexOf(r)===-1&&(t.push(r),r.points.length===5&&(r.points[1]<this.worldPoints[1]/this.scale||r.points[2]<this.worldPoints[2]/this.scale||r.points[3]>this.worldPoints[3]/this.scale||r.points[4]>this.worldPoints[4]/this.scale)&&(r.crop=r.crop||n([1,Math.max(this.worldPoints[1]/this.scale,r.points[1]),Math.max(this.worldPoints[2]/this.scale,r.points[2]),Math.min(this.worldPoints[3]/this.scale,r.points[3]),Math.min(this.worldPoints[4]/this.scale,r.points[4])])));this.layers=this.layers.concat(t),this.filteredPointsBuffer=n(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}},Et=class i extends we{get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}constructor(e=0,t=0,r=100,i=`left-to-right`){super(),W(this,`id`,`world`),W(this,`_width`,void 0),W(this,`_height`,void 0),W(this,`aspectRatio`,void 0),W(this,`viewingDirection`,void 0),W(this,`aggregateBuffer`,n(9)),W(this,`isDirty`,!1),W(this,`zones`,[]),W(this,`filteredPointsBuffer`,void 0),W(this,`selectedZone`,void 0),W(this,`triggerQueue`,[]),W(this,`activatedEvents`,[]),W(this,`_updatedList`,[]),W(this,`translationBuffer`,n(9)),W(this,`needsRecalculate`,!0),W(this,`emptyPaintables`,[]),W(this,`renderOrder`,[]),W(this,`debugSubscribers`,new Set),W(this,`zoneVisibilityFadeDurationMs`,220),W(this,`zoneOutsideOpacity`,.2),W(this,`zoneVisibilityFade`,void 0),W(this,`points`,void 0),W(this,`objects`,[]),W(this,`subscriptions`,[]),W(this,`_propagateEventTargets`,[]),W(this,`_alreadyFlushed`,[]),this._width=e,this._height=t,this.aspectRatio=Number.isNaN(e/t)?1:e/t,this.viewingDirection=i,this.points=n(r*5),this.filteredPointsBuffer=n(r*5)}static withProps(e){let t=new i;return t.applyProps(e),t}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(t,n,r){let i=[];for(let t of r)if(t.x&&t.y){let n=e.singleBox(1,1,t.x,t.y);i.push(this.getObjectsAt(n,!0).reverse())}return this.emitDebug({type:`touch`,at:performance.now(),event:t,touches:r.length}),i.map(e=>this.propagateEvent(t,n,e,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,n,r,i,a={}){let o=e.singleBox(1,1,r,i),s=this.getObjectsAt(o,!0).reverse(),c=this.propagateEvent(t,n,s,a);return this.emitDebug({type:`pointer`,at:performance.now(),event:t,x:r,y:i,targets:c.length}),c}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(r(this.points)===this.objects.length){let e=this.points,t=n(this.points.length*2);t.set(e,0),this.points=t}}appendWorldObject(e){this.checkResizeInternalBuffer();let t=this.objects.length*5,r=e.points;return e.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),e.points[1]=r[1],e.points[2]=r[2],e.points[3]=r[3],e.points[4]=r[4],this.objects.push(e),this.filteredPointsBuffer=n(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(t,r){r.width&&!r.height?r.height=r.width/t.width*t.height:r.height&&!r.width&&(r.width=r.height/t.height*t.width),(!r||!r.width||!r.height)&&(r.width=t.width,r.height=t.height);let{width:i,x:a,y:o}=r,s=i/t.width;this.checkResizeInternalBuffer(),this.points.set(e.singleBox(t.width,t.height,0,0),this.objects.length*5);let c=new Tt(t);return c.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(c),this.scaleWorldObject(this.objects.length-1,s),this.translateWorldObject(this.objects.length-1,a,o),this.filteredPointsBuffer=n(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,c}scaleWorldObject(e,t){o(this.points.subarray(e*5,e*5+5),c(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){o(this.points.subarray(e*5,e*5+5),u(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(t,n){let r=e.singleBox(t.width,t.height,t.x,t.y);return this.getPointsAt(r,n,t.scale)}addLayoutSubscriber(e){return this.subscriptions.push(e),()=>{this.subscriptions.splice(this.subscriptions.indexOf(e),1)}}getScheduledUpdates(e,t){let n=a(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,o=a(this.points,e,this.filteredPointsBuffer),s=this.renderOrder.length,c=[];for(let n=0;n<s;n++){let a=this.renderOrder[n];if(o[a*5]!==0){let n=this.objects[a],o=!r||r.objects.indexOf(n)!==-1;if(!n||!o&&!i)continue;if(n.type!==`world-object`){c.push([n,[n]]);continue}t?c.push([n,n.getObjectsAt(e,t)]):c.push([n,this.emptyPaintables])}}return c}getPointsAt(e,n,r=1){let i=this.getActiveZone(),a=i?this.getZoneOutsideVisibility(i):0,o=this.getObjectsAt(e,!1,!0),c=t(s(r),u(-e[1],-e[2]),this.translationBuffer),l=n?t(n,c,this.aggregateBuffer):c,d=o.length,f=[];for(let t=0;t<d;t++)if(o[t]){let n=o[t][0],s=n.getAllPointsAt(e,l,r),c=!i||i.objects.indexOf(n)!==-1?1:a;for(let e=0;e<s.length;e++)s[e][0].__zoneVisibilityAlpha=c;f.push(...s)}return i&&this.isZoneOutsideVisibilityFading(i)&&this.triggerRepaint(),f}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)}},Dt=class{constructor(){W(this,`autoWidth`,!1),W(this,`autoHeight`,!0),W(this,`width`,void 0),W(this,`height`,void 0),W(this,`world`,void 0),W(this,`content`,[]),W(this,`viewingDirection`,`left-to-right`),W(this,`rows`,void 0),W(this,`columns`,4),W(this,`spacing`,20),W(this,`reversed`,!1),W(this,`padding`,20),this.world=Et.withProps({width:0,height:0,viewingDirection:`left-to-right`}),this.width=0,this.height=0}setViewingDirection(e){this.viewingDirection=e}addContent(e){this.content.push(...e.map(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 Ot(e){return e.id||e[`@id`]}function kt(){return typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}function At(){let e=kt();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 jt={};function Mt(){return jt.helper||(jt.vault=At(),jt.loader=new d,jt.helper=f(jt.vault,{imageServiceLoader:jt.loader})),jt}async function Nt(e,t,n){let{loader:r}=Mt(),i=await r.loadService({id:e,width:t,height:n});return{id:Ot(i),width:t,height:n,imageService:i,thumbnail:void 0}}async function Pt(e,t=512){let{vault:n,loader:r,helper:i}=Mt(),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 Nt(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 Ft(e){let{vault:t}=Mt(),n=[];for(let r of e.items){let e=t.get(r);n.push(...await Pt(e))}return n}async function It(e){try{let{vault:t}=Mt(),n=await t.loadManifest(e);return n?Ft(n):[]}catch(e){return console.log(`ERR`,e),[]}}var Lt=class{constructor(e,t={}){this.adapter=e,this.hooks=t,W(this,`controlPoints`,[]),W(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 Rt(e,t){return new Lt(e,t)}const zt={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 Bt(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return Math.floor(e)}function Vt(e,t){if(!e||t<=1)return null;let n=Bt(e.total),r=Bt(e.before),i=Bt(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 Ht(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 Ut(e,t){let n=Vt(t.zoneWindow,e.zones.length);if(!n)return null;let r=Ht(e);if(r.length<=n.total)return r;let i=Gt(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 Wt(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 Gt(e,t){if(e.length===0)return 0;let n=Wt(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 qt(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=Ut(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 Yt(e,t={}){let n=e.getActiveZone();if(n)return n.recalculateBounds(),n.points[0]===0?new Set:new Set([n.id]);let r=Ut(e,t);if(!r)return null;let i=new Set;for(let e of r)i.add(e.zone.id);return i}function Xt(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 Zt=class extends Ct{constructor(t,n={}){super(t),W(this,`style`,void 0),W(this,`maxRects`,void 0),W(this,`minVisibleRectSize`,void 0),W(this,`drawFallbackBoxes`,void 0),W(this,`zoneWindow`,void 0),W(this,`sharedCanvasRenderer`,void 0),W(this,`onRequestRender`,void 0),W(this,`onDebugEvent`,void 0),W(this,`baseCanvas`,void 0),W(this,`baseContext`,void 0),W(this,`worldTarget`,e.singleBox(1,1,0,0)),W(this,`previewImageCache`,new Map),W(this,`worldLayerDirty`,!0),W(this,`lastWorldWidth`,0),W(this,`lastWorldHeight`,0),W(this,`lastTargetX`,NaN),W(this,`lastTargetY`,NaN),W(this,`lastTargetX2`,NaN),W(this,`lastTargetY2`,NaN),W(this,`lastRegionX`,NaN),W(this,`lastRegionY`,NaN),W(this,`lastRegionWidth`,NaN),W(this,`lastRegionHeight`,NaN),W(this,`worldLayerInvalidationVersion`,0),W(this,`sharedCanvasResourcesPending`,!1),this.style={...zt,...n.style||{}},this.maxRects=Math.max(100,n.maxRects||5e3),this.minVisibleRectSize=Math.max(1,n.minVisibleRectSize||1),this.drawFallbackBoxes=n.drawFallbackBoxes!==!1,this.zoneWindow=n.zoneWindow,this.sharedCanvasRenderer=n.sharedCanvasRenderer,this.onRequestRender=n.onRequestRender,this.onDebugEvent=n.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 Y||e instanceof X?!!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?l(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=qt(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?l(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 je?this.renderGeometry(n,t,s,c,i.scale):t instanceof J?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 et)s=t.getTexture()?.source;else if(t instanceof Y||t instanceof X){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=qt(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))}},Qt=class extends we{constructor(){super(),W(this,`type`,`spacial-content`),W(this,`id`,void 0),W(this,`points`,void 0),W(this,`color`,`#000`),W(this,`backgroundColor`,void 0),W(this,`hovering`,void 0),W(this,`pressing`,void 0),W(this,`text`,``),W(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:n(5)}),W(this,`className`,void 0),W(this,`html`,void 0),W(this,`interactive`,!1),W(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=n(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps({id:t,target:n,text:r,color:i,backgroundColor:a,fontSize:o=18,interactive:s,fontFamily:c=`Arial, sans-serif`,...l}){l.font=`${o}px ${c}`,this.interactive=s||!1,r!==void 0&&(this.text=r||``),i&&(this.color=i),a&&(this.backgroundColor=a),t&&(this.id=t),n&&(this.points=e.singleBox(n.width,n.height,n.x,n.y),this.display.points=this.points,this.display.width=n.width,this.display.height=n.height),this.props={...this.props,...l},this.__revision++}};function $t(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 en=class{constructor(e){W(this,`$element`,void 0),W(this,`stylesheetClasses`,void 0),W(this,`activeStylesheetClasses`,void 0),W(this,`sheetsDidUpdate`,void 0),W(this,`sheetPrefix`,void 0),W(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+$t(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+$t(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])}},tn=class{constructor(e,t){W(this,`htmlContainer`,void 0),W(this,`visible`,[]),W(this,`previousVisible`,[]),W(this,`htmlIds`,[]),W(this,`firstMeaningfulPaint`,!1),W(this,`rendererPosition`,void 0),W(this,`stylesheet`,void 0),W(this,`options`,void 0),W(this,`paintTx`,1),W(this,`zIndex`,0),W(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 en({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
1
+ import{DnaFactory as e,compose as t,dna as n,dnaLength as r,getIntersection as i,hidePointsOutsideRegion as a,mutate as o,scale as s,scaleAtOrigin as c,transform as l,translate as u}from"@atlas-viewer/dna";import{ImageServiceLoader as d}from"@atlas-viewer/iiif-image-api";import{createThumbnailHelper as f}from"@iiif/helpers/thumbnail";import*as p from"react";import m,{createContext as h,memo as g,useCallback as _,useContext as v,useEffect as y,useId as b,useLayoutEffect as x,useMemo as S,useRef as C,useState as w,useSyncExternalStore as T,version as E}from"react";import ee from"react-use-measure";import{Fragment as D,jsx as O,jsxs as k}from"react/jsx-runtime";import A from"react-reconciler";var j=Object.create,M=Object.defineProperty,N=Object.getOwnPropertyDescriptor,te=Object.getOwnPropertyNames,P=Object.getPrototypeOf,ne=Object.prototype.hasOwnProperty,F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),re=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=te(t),a=0,o=i.length,s;a<o;a++)s=i[a],!ne.call(e,s)&&s!==n&&M(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=N(t,s))||r.enumerable});return e},ie=(e,t,n)=>(n=e==null?{}:j(P(e)),re(t||!e||!e.__esModule?M(n,`default`,{value:e,enumerable:!0}):n,e));const I=`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 L(){return I.reduce((e,t)=>(e[t]=[],e),{})}const R=I.reduce((e,t)=>(e[t.slice(2).toLowerCase()]=t,e[t]=t,e),{});function z(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 V(e,t){let n=B(e.x,t.x),r=B(e.y,t.y);return Math.sqrt(n**2+r**2)}function H(e){let t=e.length;return e.indexOf(`/info.json`)===t-10?e.slice(0,-10):e}function ae(e){"@babel/helpers - typeof";return ae=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},ae(e)}function U(e,t){if(ae(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(ae(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function oe(e){var t=U(e,`string`);return ae(t)==`symbol`?t:t+``}function W(e,t,n){return(t=oe(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var G=class e{constructor(e,t,n){W(this,`element`,void 0),W(this,`runtime`,void 0),W(this,`unsubscribe`,void 0),W(this,`activatedEvents`,[]),W(this,`eventHandlers`,[]),W(this,`bounds`,void 0),W(this,`listening`,void 0),W(this,`pointerMoveEvent`,void 0),W(this,`pointerEventState`,{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]}),W(this,`options`,void 0),W(this,`_realPointerMove`,e=>{this.pointerMoveEvent=e}),W(this,`onWheelEvent`,e=>{e.preventDefault(),this.onPointerEvent(e)}),W(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)}}),W(this,`onTouchEvent`,e=>{let t=R[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=[])}),W(this,`onPointerEvent`,e=>{if(e.button===2)return;let t=R[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)}}),W(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))}),W(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)}}),W(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&&V(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)}};W(G,`eventPool`,{atlas:{x:0,y:0}});const se=typeof performance==`object`&&performance&&typeof performance.now==`function`?performance:Date,K=typeof AbortController==`function`?AbortController:class{constructor(){this.signal=new ue}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})}},ce=typeof AbortSignal==`function`,le=typeof K.AbortSignal==`function`,ue=ce?AbortSignal:le?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))}},de=new Set,q=(e,t)=>{let n=`LRU_CACHE_OPTION_${e}`;he(n)&&ge(n,`${e} option`,`options.${t}`,xe)},fe=(e,t)=>{let n=`LRU_CACHE_METHOD_${e}`;if(he(n)){let{prototype:r}=xe,{get:i}=Object.getOwnPropertyDescriptor(r,e);ge(n,`${e} method`,`cache.${t}()`,i)}},pe=(e,t)=>{let n=`LRU_CACHE_PROPERTY_${e}`;if(he(n)){let{prototype:r}=xe,{get:i}=Object.getOwnPropertyDescriptor(r,e);ge(n,`${e} property`,`cache.${t}`,i)}},me=(...e)=>{typeof process==`object`&&process&&typeof process.emitWarning==`function`?process.emitWarning(...e):console.error(...e)},he=e=>!de.has(e),ge=(e,t,n,r)=>{de.add(e),me(`The ${t} is deprecated. Please use ${n} instead.`,`DeprecationWarning`,e,r)},_e=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),ve=e=>_e(e)?e<=2**8?Uint8Array:e<=2**16?Uint16Array:e<=2**32?Uint32Array:e<=2**53-1?ye:null:null;var ye=class extends Array{constructor(e){super(e),this.fill(0)}},be=class{constructor(e){if(e===0)return[];this.heap=new(ve(e))(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},xe=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&&!_e(n))throw TypeError(`max option must be a nonnegative integer`);let E=n?ve(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 be(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&&!_e(this.maxSize))throw TypeError(`maxSize must be a positive integer if specified`);if(!_e(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=_e(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||w||0,this.ttl){if(!_e(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`;he(t)&&(de.add(t),me(`TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.`,`UnboundedCacheWarning`,t,e))}T&&q(`stale`,`allowStale`),w&&q(`maxAge`,`ttl`),C&&q(`length`,`sizeCalculation`)}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new ye(this.max),this.starts=new ye(this.max),this.setItemTTL=(e,t,n=se.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:se.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=se.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 ye(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(!_e(n))if(r){if(typeof r!=`function`)throw TypeError(`sizeCalculation must be a function`);if(n=r(t,e),!_e(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 fe(`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=se.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=se.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 fe(`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 fe(`reset`,`clear`),this.clear}get length(){return pe(`length`,`size`),this.size}static get AbortController(){return K}static get AbortSignal(){return ue}},Se=xe;let Ce=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[n[e]&63];return t};var we=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(){W(this,`__id`,void 0),W(this,`__revision`,0),W(this,`__host`,void 0),W(this,`__onCreate`,void 0),W(this,`__parent`,void 0),W(this,`__owner`,{value:void 0}),W(this,`__state`,{}),W(this,`eventHandlers`,void 0),W(this,`scale`,1),W(this,`layers`,[]),W(this,`time`,[]),W(this,`_crop`,void 0),W(this,`cropData`,void 0),W(this,`id`,void 0),W(this,`addEventListener`,(e,t,n)=>{let r=R[e];if(!this.eventHandlers[r])throw Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)}),W(this,`removeEventListener`,(e,t)=>{let n=R[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=Ce(),this.eventHandlers=L()}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){o(this.points,u(e,t))}atScale(e){o(this.points,c(e,this.x,this.y)),this.scale*=e}transform(e){o(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};const Te=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Ee={},De=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var J=class extends we{constructor(){super(),W(this,`id`,void 0),W(this,`type`,`spacial-content`),W(this,`points`,void 0),W(this,`hoverEvents`,!1),W(this,`activeEvents`,!1),W(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:n(5)}),W(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),W(this,`hovering`,void 0),W(this,`pressing`,void 0),W(this,`props`,{}),W(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),W(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),W(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),W(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=Ce(12),this.points=n(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps(t={}){let n=!1;if(t.interactive!==this.props.interactive&&(n=!0,this.props.interactive=t.interactive),t.style){let e=t.border||t.style.border;if(e!==this._parsed.border.id)if(!e)this._parsed.border.id=null,this._parsed.border.match=[];else{let t=Ee[e]||Te.exec(e)||Te.exec(e);t&&(this._parsed.border.id=e,this._parsed.border.match=Ee[e]=t)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle=`solid`,t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let e=Ee[t.style.outline]||Te.exec(t.style.outline)||Te.exec(t.style.outline);e&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Ee[t.style.outline]=e)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle=`solid`,t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,n=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,n=!0);for(let e of De)if(this.props.style[e]!==t.style[e]){n=!0;break}t.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),n=!0),t.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=t.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0)}t.href!==this.props.href&&(this.props.href=t.href,n=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,n=!0),t.title!==this.props.title&&(this.props.title=t.title,n=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,n=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,n=!0),t.html!==this.props.html&&(this.props.html=t.html,n=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(n=!0,this.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),n&&this.__revision++}};const Oe=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,ke={},Ae=[`backgroundColor`,`opacity`,`boxShadow`,`borderColor`,`borderWidth`,`borderStyle`,`outlineColor`,`outlineWidth`,`outlineOffset`,`outlineStyle`];var je=class extends we{constructor(){super(),W(this,`id`,void 0),W(this,`type`,`spacial-content`),W(this,`isShape`,!0),W(this,`points`,void 0),W(this,`hoverEvents`,!1),W(this,`activeEvents`,!1),W(this,`display`,{x:0,y:0,scale:1,width:-1,height:-1,points:n(5)}),W(this,`boundingBox`,null),W(this,`_parsed`,{border:{id:null,match:[]},outline:{id:null,match:[]}}),W(this,`hovering`,void 0),W(this,`pressing`,void 0),W(this,`props`,{}),W(this,`shape`,{type:`none`}),W(this,`addHover`,()=>{this.hovering=!0,this.__revision++}),W(this,`removeHover`,()=>{this.hovering=!1,this.pressing=!1,this.__revision++}),W(this,`addPress`,()=>{this.pressing=!0,this.__revision++}),W(this,`removePress`,()=>{this.pressing=!1,this.__revision++}),this.id=Ce(12),this.points=n(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(t={}){let n=!1;if(t.points)if(this.shape.type!==`polygon`||this.shape.points.length!==t.points.length)this.shape={type:`polygon`,points:t.points,open:t.open},this.updateBoundingBox();else{let e=!1,n=t.points.length;for(let r=0;r<n;r++)if(t.points[r][0]!==this.shape.points[r][0]||t.points[r][1]!==this.shape.points[r][1]){e=!0;break}e&&(this.shape={type:`polygon`,points:t.points,open:t.open},this.updateBoundingBox())}if(t.interactive!==this.props.interactive&&(n=!0,this.props.interactive=t.interactive),(t.open||t.open===!1)&&(n=!0,this.shape.open=t.open),t.style){let e=t.border||t.style.border;if(e!==this._parsed.border.id)if(!e)this._parsed.border.id=null,this._parsed.border.match=[];else{let t=ke[e]||Oe.exec(e)||Oe.exec(e);t&&(this._parsed.border.id=e,this._parsed.border.match=ke[e]=t)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle=`solid`,t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let e=ke[t.style.outline]||Oe.exec(t.style.outline)||Oe.exec(t.style.outline);e&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=ke[t.style.outline]=e)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle=`solid`,t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,n=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,n=!0);for(let e of Ae)if(this.props.style[e]!==t.style[e]){n=!0;break}t.style[`:hover`]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[`:hover`],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),n=!0),t.style[`:active`]!==this.props.pressStyles&&(this.props.pressStyles=t.style[`:active`],this.activeEvents||(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0)}t.href!==this.props.href&&(this.props.href=t.href,n=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,n=!0),t.title!==this.props.title&&(this.props.title=t.title,n=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener(`pointerenter`,this.addHover),this.addEventListener(`pointerleave`,this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener(`mousedown`,this.addPress),this.addEventListener(`mouseup`,this.removePress)),n=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,n=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,n=!0),t.html!==this.props.html&&(this.props.html=t.html,n=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(n=!0,this.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),n&&this.__revision++}},Y=class t extends we{constructor(t){if(super(),W(this,`type`,`spacial-content`),W(this,`id`,void 0),W(this,`uri`,void 0),W(this,`display`,void 0),W(this,`points`,void 0),W(this,`priority`,void 0),W(this,`style`,{opacity:1}),!t)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:n(5)},this.points=n(5);else{let n=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=e.singleBox(t.width,t.height,t.x,t.y),this.display={x:0,y:0,scale:n,width:t.width/n,height:t.height/n,points:e.singleBox(t.width/n,t.height/n),rotation:t?.rotation}}}applyProps(t){let r=t.display?t.display.width:t.target.width,i=t.target.width/r;if(this.id=t.id||t.uri,this.uri=t.uri,this.points.set(e.singleBox(t.target.width,t.target.height,t.target.x,t.target.y)),t.style&&t.style.opacity!==void 0&&(this.style.opacity=t.style.opacity),t.crop){this.cropData=t.crop;let r=e.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);o(r,u(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(r):this.crop=n(r)}t.display?(this.display.scale=i,this.display.width=t.display.width,this.display.height=t.display.height,this.display.rotation=t.display.rotation,this.display.points=e.singleBox(t.display.width,t.display.height)):(this.display.scale=i,this.display.width=t.target.width/i,this.display.height=t.target.height/i,this.display.points=e.singleBox(t.target.width/i,t.target.height/i))}getAllPointsAt(e,t,n){return[[this,this.crop||this.points,t]]}static fromSvg(e,n,r,i){return t.fromImage(`data:image/svg+xml;base64,`+btoa(e),n,r,i)}static fromImage(e,n,r,i){let a=new t;return a.applyProps({uri:e,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 X=class t extends we{constructor(e){super(),W(this,`id`,void 0),W(this,`type`,`spacial-content`),W(this,`display`,void 0),W(this,`tileWidth`,void 0),W(this,`tileHeight`,void 0),W(this,`columns`,void 0),W(this,`rows`,void 0),W(this,`style`,{opacity:1}),W(this,`points`,void 0),W(this,`service`,void 0),W(this,`format`,`jpg`),W(this,`crop2`,void 0),W(this,`version3`,void 0),W(this,`tileUrl`,void 0),this.tileUrl=H(e.url),this.id=e.id||`${this.tileUrl}--${e.scaleFactor}--${e.tileWidth}x${e.tileHeight}`,this.points=e.displayPoints?e.displayPoints:l(e.points,s(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=n([...this.points]),r=t.length/5,i=e.crop.x||0,a=e.crop.y||0,s=e.crop.x+e.crop.width,c=e.crop.y+e.crop.height;for(let e=0;e<r;e++){let n=e*5;t[n+1]<s&&t[n+3]>i&&t[n+2]<c&&t[n+4]>a?(t[n+1]=Me(t[n+1],i,s),t[n+3]=Me(t[n+3],i,s),t[n+2]=Me(t[n+2],a,c),t[n+4]=Me(t[n+4],a,c)):t[n]=0}o(t,u(-e.crop.x,-e.crop.y)),this.crop?this.crop.set(t):this.crop=t}}static fromTile(n,r,i,a,o,s,c,l){let u=i.height?i.height:i.width,d=c?Math.floor(r.width/a):Math.ceil(r.width/a),f=c?Math.floor(r.height/a):Math.ceil(r.height/a),p=Math.ceil(d/i.width),m=Math.ceil(f/u),h=e.grid(p,m),g=e.grid(p,m),_=o&&o[`@context`]?Array.isArray(o[`@context`])?o[`@context`]:[o[`@context`]]:[],v=l===void 0?_.indexOf(`http://iiif.io/api/image/3/context.json`)!==-1:l;for(let e=0;e<m;e++)for(let t=0;t<p;t++){let n=t*i.width,o=e*u;g.addPoints(n*a,o*a,t===p-1?r.width:(n+i.width)*a,e===m-1?r.height:(o+u)*a),h.addPoints(n,o,t===p-1?d:n+i.width,e===m-1?f:o+u)}let y=new t({url:n,scaleFactor:a,points:h.build(),displayPoints:g.build(),width:r.width,height:r.height,tileWidth:i.width,tileHeight:u,columns:p,rows:m,format:s,version3:v});return y.applyProps({service:o}),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=a(this.crop||this.points,e);return[[this,r,t]]}transform(e){o(this.points,e)}getScheduledUpdates(e,t){return[]}};function Ne(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 Pe(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 Z(e,t,n){return Math.max(t,Math.min(n,e))}function Q(){if(typeof navigator>`u`)return;let e=navigator;return e.connection||e.mozConnection||e.webkitConnection}function Fe(e){let t=10;return typeof navigator<`u`&&typeof navigator.hardwareConcurrency==`number`&&(t=Z(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 Ie(e,t){return t?.saveData||t?.effectiveType===`slow-2g`||t?.effectiveType===`2g`?0:t?.effectiveType===`3g`?2:Math.min(e+2,12)}function Le(e={}){let t=Q(),n=Fe(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)):Ie(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`?Z(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 Re(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 ze=class extends Error{constructor(e=`Image request cancelled`,t=!0){super(e),W(this,`silent`,void 0),this.name=`ImageRequestCancelledError`,this.silent=t}};function Be(e){return e instanceof ze}let Ve=0;function He(e){return Ve+=1,`${Ve}:${e}`}function Ue(e){return Error(`Image load timeout: ${e}`)}function We(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(Ue(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 Ge=class{constructor(e){W(this,`timeoutMs`,void 0),W(this,`crossOrigin`,void 0),W(this,`useFetch`,void 0),W(this,`cache`,void 0),W(this,`inFlight`,new Map),W(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:He(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 ze(`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(Ue(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}=We(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}=We(e.url,{timeoutMs:this.timeoutMs,crossOrigin:this.crossOrigin});return e.abortDomImage=n,t}};const Ke=/(-?[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,qe={},Je=typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(`firefox`),Ye=new Map;var Xe=class{constructor(e,t){W(this,`canvas`,void 0),W(this,`ctx`,void 0),W(this,`options`,void 0),W(this,`imagesPending`,0),W(this,`imagesLoaded`,0),W(this,`imageIdsLoaded`,[]),W(this,`frameIsRendering`,!1),W(this,`pendingDrawCall`,!1),W(this,`firstMeaningfulPaint`,!1),W(this,`parallelTasks`,6),W(this,`maxPrefetchPerFrame`,8),W(this,`imageLoadingConfig`,void 0),W(this,`imageRequestPool`,void 0),W(this,`frameTasks`,0),W(this,`loadingQueueOrdered`,!0),W(this,`loadingQueue`,[]),W(this,`currentTask`,Promise.resolve()),W(this,`tasksRunning`,0),W(this,`inFlightImageLoads`,new Map),W(this,`requiredTileKeys`,new Set),W(this,`requiredPrefetchTileKeys`,new Set),W(this,`requestGeneration`,0),W(this,`frameCounter`,0),W(this,`pendingTileReveals`,new Map),W(this,`stats`,void 0),W(this,`averageJobTime`,64),W(this,`lastKnownScale`,1),W(this,`visible`,[]),W(this,`previousVisible`,[]),W(this,`rendererPosition`,void 0),W(this,`dpi`,void 0),W(this,`drawCalls`,[]),W(this,`lastPaintedObject`,void 0),W(this,`hostCache`,void 0),W(this,`invalidated`,[]),W(this,`fallbackRevealTimeout`,null),W(this,`framePrefetchCount`,0),W(this,`hasTilesFading`,!1),W(this,`hasActiveLayerClip`,!1),W(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--}))}}),W(this,`_scheduled`,0),W(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=Le(this.options.imageLoading),this.parallelTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Ge({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:this.options.crossOrigin?`anonymous`:void 0,useFetch:!!this.options.crossOrigin,cache:Ye}),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 Se({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=Pe(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 Y||e instanceof X?!!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=Math.min(r.fadeInMs,1e3),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)&&(o=Math.min(o,Math.max(0,Math.min(1,(a-t.loadedAt)/i)))),o}schedulePrefetchNeighbours(e,t,n,r){if(!(t instanceof X)||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 Y){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 Y||e instanceof X){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=V({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 Je?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 J&&this.options.box,l=e instanceof je&&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=qe[t]||Ke.exec(t)||Ke.exec(t);qe[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}),Be(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()+Re(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 Y||e instanceof X)&&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=Ne(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}},Ze=class{constructor(e){W(this,`renderers`,[]),W(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()}},Qe=class extends we{constructor(...e){super(...e),W(this,`type`,`spacial-content`)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}},$e=class extends Qe{constructor(t){super(),W(this,`id`,void 0),W(this,`display`,void 0),W(this,`points`,void 0),W(this,`images`,[]),W(this,`allImages`,[]),W(this,`scaleFactors`,[]),W(this,`aggregateBuffer`,n(9)),W(this,`lazyLoader`,void 0),W(this,`isFullyLoaded`,!1),W(this,`isLoadingFullResource`,!1),W(this,`maxScaleFactor`,0),W(this,`layerSelection`,new WeakMap),W(this,`layerSelectionFrame`,0),W(this,`renderOptions`,void 0),W(this,`_scheduleSortByScales`,!1),W(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 Y&&(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 Y||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}),W(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}}}),W(this,`fallback`,[this.loadFullResource]),this.id=t.id,this.points=e.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:e.singleBox(t.width,t.height),height:t.height,width:t.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,...t.renderOptions||{}},this.addImages(t.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,n,r){if(this.images.length===0)return[];let i=this.renderOptions.useDevicePixelRatio&&typeof window<`u`&&window.devicePixelRatio||1,a=z(1/(r||1)/i,this.images,this.renderOptions.quality),o=this.images.length,s=n?t(n,u(this.x,this.y)):u(this.x,this.y),c=[a];if(a!==this.images.length-1&&this.images[a+1]){c=[];for(let e=o-1;e>=a;e--)c.push(e);let e=c[0];this.renderOptions.renderLayers&&(c=c.slice(-Math.min(c.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&c.indexOf(e)===-1&&c.unshift(e)}c.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 l=new Set;switch(this.renderOptions.layerPolicy){case`always-blend`:for(let e of c)l.add(e);break;case`active-only`:l.add(a),c=[a];break;case`fallback-only`:default:l.add(a),this.renderOptions.renderSmallestFallback&&c.length&&l.add(c[0]);break}let d=new Set;for(let e of l){let t=this.images[e];t&&d.add(t)}this.layerSelectionFrame+=1;let f=this.getNow(),p=f-Math.max(0,this.renderOptions.fadeInMs);for(let e of this.allImages){let t=this.layerSelection.get(e);if(!d.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?f:p})}let m=[];for(let t=0;t<c.length;t++){let n=c[t],i=this.images[n];m.push(...i.getAllPointsAt(e,s,r))}return m}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()}},et=class extends we{constructor(t){if(super(),W(this,`type`,`spacial-content`),W(this,`id`,void 0),W(this,`uri`,void 0),W(this,`display`,void 0),W(this,`points`,void 0),W(this,`getTexture`,void 0),this.getTexture=()=>({source:void 0,hash:-1}),!t)this.id=``,this.uri=``,this.display={x:0,y:0,scale:1,width:0,height:0,points:n(5)},this.points=n(5);else{let n=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=e.singleBox(t.width,t.height),this.display={x:0,y:0,scale:n,width:t.width/n,height:t.height/n,points:n===1?this.points:e.singleBox(t.width/n,t.height/n)}}}applyProps(t){let n=t.display?t.display.width:t.target.width,r=t.target.width/n;this.id=t.id,this.points.set(e.singleBox(t.target.width,t.target.height)),this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.getTexture=t.getTexture,this.display.points=r===1?this.points:e.singleBox(t.target.width/r,t.target.height/r)}getAllPointsAt(e,t,n){return[[this,this.points,t]]}};const tt=85.05112878;function nt(e,t){if(!Number.isFinite(e))throw Error(`${t} must be a finite number`)}function rt(e,t){if(nt(e,t),e<=0)throw Error(`${t} must be greater than 0`)}function it(e){if(!Number.isFinite(e))throw Error(`Latitude must be a finite number`);return e>tt?tt:e<-tt?-tt:e}function at(e){if(nt(e.west,`Map bounds west`),nt(e.south,`Map bounds south`),nt(e.east,`Map bounds east`),nt(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 ot(e){if(!Number.isFinite(e))throw Error(`Longitude must be a finite number`);return(e+180)/360}function st(e){let t=it(e)*Math.PI/180;return(1-Math.log(Math.tan(t)+1/Math.cos(t))/Math.PI)/2}function ct(e){if(!Number.isFinite(e))throw Error(`Mercator X must be a finite number`);return e*360-180}function lt(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 ut(e,t){return ot(e)*2**t}function dt(e,t){return st(e)*2**t}function ft(e,t){return ct(e/2**t)}function pt(e,t){return lt(e/2**t)}function mt(e){let t=at(e.bounds);rt(e.width,`Map world width`),rt(e.height,`Map world height`);let n=ot(t.west),r=ot(t.east),i=st(t.north),a=st(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=ot(t),c=st(r);return{x:(a-n)/o*e.width,y:(c-i)/s*e.height}},l=(t,r)=>{nt(t,`World x`),nt(r,`World y`);let a=n+t/e.width*o,c=i+r/e.height*s;return{lng:ct(a),lat:lt(c)}};return{lngLatToWorld:c,worldToLngLat:l,lngLatBoundsToWorldRect:e=>{at(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=>{nt(e.x,`World rect x`),nt(e.y,`World rect y`),nt(e.width,`World rect width`),nt(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 ht=`https://tile.openstreetmap.org/{z}/{x}/{y}.png`;function gt(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 _t(e,t){let n=gt(t)||``;return e.replace(/\{z\}/g,`${t.z}`).replace(/\{x\}/g,`${t.x}`).replace(/\{y\}/g,`${t.y}`).replace(/\{s\}/g,n)}function vt(e,t){let n=e||ht;return typeof n==`function`?n(t):_t(n,t)}function yt(e,t,n){return Math.min(n,Math.max(t,e))}function bt(e){at(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),n=2**t,r=n-1,i=ut(e.bounds.west,t),a=ut(e.bounds.east,t),o=dt(e.bounds.north,t),s=dt(e.bounds.south,t),c=yt(i,0,n),l=yt(a,0,n),u=yt(o,0,n),d=yt(s,0,n),f=Math.max(1e-9,l-c),p=Math.max(1e-9,d-u),m=yt(Math.floor(i),0,r),h=yt(Math.ceil(a)-1,0,r),g=yt(Math.floor(o),0,r),_=yt(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 xt(e){at(e.bounds);let t=Math.max(0,Math.floor(e.zoom)),r=mt({bounds:e.bounds,width:e.worldWidth,height:e.worldHeight}),i=bt({bounds:e.bounds,zoom:t}),a=typeof e.maxTiles==`number`?e.maxTiles:1/0;if(i.count>a)throw Error(`Map tile grid too large at zoom ${t}: ${i.count} tiles exceeds the configured max (${a})`);let o=[],s=[];for(let e=i.minTileY;e<=i.maxTileY;e++)for(let n=i.minTileX;n<=i.maxTileX;n++){let i=ft(n,t),a=ft(n+1,t),c=pt(e,t),l=pt(e+1,t),u=r.lngLatToWorld(i,c),d=r.lngLatToWorld(a,l);o.push(1,u.x,u.y,d.x,d.y),s.push({x:n,y:e,z:t})}return{points:n(o.length?o:[0]),tiles:s,columns:i.columns,rows:i.rows,count:i.count,minTileX:i.minTileX,maxTileX:i.maxTileX,minTileY:i.minTileY,maxTileY:i.maxTileY}}var St=class extends X{constructor(e){let t=e.scaleFactor||1,n=e.tileSize||256,r=e.tileSource||e.tileUrlTemplate||ht,i=xt({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}),W(this,`zoom`,void 0),W(this,`bounds`,void 0),W(this,`worldWidth`,void 0),W(this,`worldHeight`,void 0),W(this,`tileSize`,void 0),W(this,`tileSource`,void 0),W(this,`subdomains`,void 0),W(this,`tileCoordinates`,void 0),W(this,`minTileX`,void 0),W(this,`maxTileX`,void 0),W(this,`minTileY`,void 0),W(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?vt(this.tileSource,{z:t.z,x:t.x,y:t.y,tileSize:this.tileSize,subdomains:this.subdomains}):``}},Ct=class{constructor(e){W(this,`canvas`,void 0),W(this,`context`,void 0),W(this,`heightRatio`,1),W(this,`widthRatio`,1),W(this,`target`,new Float32Array(5)),W(this,`initialWidth`,void 0),W(this,`initialHeight`,void 0),W(this,`bounds`,void 0),W(this,`aggregate`,void 0),W(this,`delta`,0),W(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=s(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 Y&&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(t,n){this.bounds=e.singleBox(t.width,t.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 wt(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 Tt=class e extends we{constructor(e,t){super(),W(this,`id`,void 0),W(this,`type`,`world-object`),W(this,`scale`,void 0),W(this,`layers`,void 0),W(this,`points`,void 0),W(this,`worldPoints`,void 0),W(this,`intersectionBuffer`,n(5)),W(this,`aggregateBuffer`,n(9)),W(this,`invertedBuffer`,n(9)),W(this,`rotation`,0),W(this,`filteredPointsBuffer`,void 0),W(this,`_updatedList`,[]),W(this,`geometry`,void 0);let{x:r=0,y:i=0}=t||{};e?(this.id=e.id||``,this.scale=1,this.layers=e.layers,this.points=n([1,r,i,r+e.width,i+e.height]),this.worldPoints=n([1,r,i,r+e.width,i+e.height]),this.filteredPointsBuffer=n(e.layers.length*5)):(this.id=``,this.scale=1,this.layers=[],this.points=n(5),this.worldPoints=n(5),this.filteredPointsBuffer=n(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=n(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)),a(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=l(n.points,u(this.x,this.y));if(!n.intersects([e[1]-t[1],e[2]-t[2]]))continue}if(a(l(n.points,u(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]},r={x:e[1],y:e[4]},i={x:e[3],y:e[2]},a={x:e[3],y:e[4]},o=this.points[1]+(this.points[3]-this.points[1])/2,s=this.points[2]+(this.points[4]-this.points[2])/2,[c,l]=wt(o,s,t.x,t.y,this.rotation),[u,d]=wt(o,s,r.x,r.y,this.rotation),[f,p]=wt(o,s,i.x,i.y,this.rotation),[m,h]=wt(o,s,a.x,a.y,this.rotation),g=Math.min(c,u,f,m),_=Math.max(c,u,f,m),v=Math.min(l,d,p,h),y=Math.max(l,d,p,h);return n([e[0],g,v,_,y])}return e}getAllPointsAt(e,n,r){let a=t(u(this.x,this.y),s(this.scale),this.aggregateBuffer);this.rotation&&(e=this.applyRotation(e));let o=i(e,this.points,this.intersectionBuffer),c=this.layers.length,d=[],f=l(o,t(s(1/this.scale),u(-this.x,-this.y),this.invertedBuffer)),p=n?t(n,a,this.aggregateBuffer):a,m=r*this.scale;for(let e=0;e<c;e++)d.push(...this.layers[e].getAllPointsAt(f,p,m));return d}addLayers(e){let t=[];for(let r of e)this.layers.indexOf(r)===-1&&(t.push(r),r.points.length===5&&(r.points[1]<this.worldPoints[1]/this.scale||r.points[2]<this.worldPoints[2]/this.scale||r.points[3]>this.worldPoints[3]/this.scale||r.points[4]>this.worldPoints[4]/this.scale)&&(r.crop=r.crop||n([1,Math.max(this.worldPoints[1]/this.scale,r.points[1]),Math.max(this.worldPoints[2]/this.scale,r.points[2]),Math.min(this.worldPoints[3]/this.scale,r.points[3]),Math.min(this.worldPoints[4]/this.scale,r.points[4])])));this.layers=this.layers.concat(t),this.filteredPointsBuffer=n(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}},Et=class i extends we{get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}constructor(e=0,t=0,r=100,i=`left-to-right`){super(),W(this,`id`,`world`),W(this,`_width`,void 0),W(this,`_height`,void 0),W(this,`aspectRatio`,void 0),W(this,`viewingDirection`,void 0),W(this,`aggregateBuffer`,n(9)),W(this,`isDirty`,!1),W(this,`zones`,[]),W(this,`filteredPointsBuffer`,void 0),W(this,`selectedZone`,void 0),W(this,`triggerQueue`,[]),W(this,`activatedEvents`,[]),W(this,`_updatedList`,[]),W(this,`translationBuffer`,n(9)),W(this,`needsRecalculate`,!0),W(this,`emptyPaintables`,[]),W(this,`renderOrder`,[]),W(this,`debugSubscribers`,new Set),W(this,`zoneVisibilityFadeDurationMs`,220),W(this,`zoneOutsideOpacity`,.2),W(this,`zoneVisibilityFade`,void 0),W(this,`points`,void 0),W(this,`objects`,[]),W(this,`subscriptions`,[]),W(this,`_propagateEventTargets`,[]),W(this,`_alreadyFlushed`,[]),this._width=e,this._height=t,this.aspectRatio=Number.isNaN(e/t)?1:e/t,this.viewingDirection=i,this.points=n(r*5),this.filteredPointsBuffer=n(r*5)}static withProps(e){let t=new i;return t.applyProps(e),t}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(t,n,r){let i=[];for(let t of r)if(t.x&&t.y){let n=e.singleBox(1,1,t.x,t.y);i.push(this.getObjectsAt(n,!0).reverse())}return this.emitDebug({type:`touch`,at:performance.now(),event:t,touches:r.length}),i.map(e=>this.propagateEvent(t,n,e,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,n,r,i,a={}){let o=e.singleBox(1,1,r,i),s=this.getObjectsAt(o,!0).reverse(),c=this.propagateEvent(t,n,s,a);return this.emitDebug({type:`pointer`,at:performance.now(),event:t,x:r,y:i,targets:c.length}),c}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(r(this.points)===this.objects.length){let e=this.points,t=n(this.points.length*2);t.set(e,0),this.points=t}}appendWorldObject(e){this.checkResizeInternalBuffer();let t=this.objects.length*5,r=e.points;return e.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),e.points[1]=r[1],e.points[2]=r[2],e.points[3]=r[3],e.points[4]=r[4],this.objects.push(e),this.filteredPointsBuffer=n(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(t,r){r.width&&!r.height?r.height=r.width/t.width*t.height:r.height&&!r.width&&(r.width=r.height/t.height*t.width),(!r||!r.width||!r.height)&&(r.width=t.width,r.height=t.height);let{width:i,x:a,y:o}=r,s=i/t.width;this.checkResizeInternalBuffer(),this.points.set(e.singleBox(t.width,t.height,0,0),this.objects.length*5);let c=new Tt(t);return c.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(c),this.scaleWorldObject(this.objects.length-1,s),this.translateWorldObject(this.objects.length-1,a,o),this.filteredPointsBuffer=n(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,c}scaleWorldObject(e,t){o(this.points.subarray(e*5,e*5+5),c(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){o(this.points.subarray(e*5,e*5+5),u(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(t,n){let r=e.singleBox(t.width,t.height,t.x,t.y);return this.getPointsAt(r,n,t.scale)}addLayoutSubscriber(e){return this.subscriptions.push(e),()=>{this.subscriptions.splice(this.subscriptions.indexOf(e),1)}}getScheduledUpdates(e,t){let n=a(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,o=a(this.points,e,this.filteredPointsBuffer),s=this.renderOrder.length,c=[];for(let n=0;n<s;n++){let a=this.renderOrder[n];if(o[a*5]!==0){let n=this.objects[a],o=!r||r.objects.indexOf(n)!==-1;if(!n||!o&&!i)continue;if(n.type!==`world-object`){c.push([n,[n]]);continue}t?c.push([n,n.getObjectsAt(e,t)]):c.push([n,this.emptyPaintables])}}return c}getPointsAt(e,n,r=1){let i=this.getActiveZone(),a=i?this.getZoneOutsideVisibility(i):0,o=this.getObjectsAt(e,!1,!0),c=t(s(r),u(-e[1],-e[2]),this.translationBuffer),l=n?t(n,c,this.aggregateBuffer):c,d=o.length,f=[];for(let t=0;t<d;t++)if(o[t]){let n=o[t][0],s=n.getAllPointsAt(e,l,r),c=!i||i.objects.indexOf(n)!==-1?1:a;for(let e=0;e<s.length;e++)s[e][0].__zoneVisibilityAlpha=c;f.push(...s)}return i&&this.isZoneOutsideVisibilityFading(i)&&this.triggerRepaint(),f}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)}},Dt=class{constructor(){W(this,`autoWidth`,!1),W(this,`autoHeight`,!0),W(this,`width`,void 0),W(this,`height`,void 0),W(this,`world`,void 0),W(this,`content`,[]),W(this,`viewingDirection`,`left-to-right`),W(this,`rows`,void 0),W(this,`columns`,4),W(this,`spacing`,20),W(this,`reversed`,!1),W(this,`padding`,20),this.world=Et.withProps({width:0,height:0,viewingDirection:`left-to-right`}),this.width=0,this.height=0}setViewingDirection(e){this.viewingDirection=e}addContent(e){this.content.push(...e.map(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 Ot(e){return e.id||e[`@id`]}function kt(){return typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}function At(){let e=kt();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 jt={};function Mt(){return jt.helper||(jt.vault=At(),jt.loader=new d,jt.helper=f(jt.vault,{imageServiceLoader:jt.loader})),jt}async function Nt(e,t,n){let{loader:r}=Mt(),i=await r.loadService({id:e,width:t,height:n});return{id:Ot(i),width:t,height:n,imageService:i,thumbnail:void 0}}async function Pt(e,t=512){let{vault:n,loader:r,helper:i}=Mt(),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 Nt(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 Ft(e){let{vault:t}=Mt(),n=[];for(let r of e.items){let e=t.get(r);n.push(...await Pt(e))}return n}async function It(e){try{let{vault:t}=Mt(),n=await t.loadManifest(e);return n?Ft(n):[]}catch(e){return console.log(`ERR`,e),[]}}var Lt=class{constructor(e,t={}){this.adapter=e,this.hooks=t,W(this,`controlPoints`,[]),W(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 Rt(e,t){return new Lt(e,t)}const zt={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 Bt(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return Math.floor(e)}function Vt(e,t){if(!e||t<=1)return null;let n=Bt(e.total),r=Bt(e.before),i=Bt(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 Ht(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 Ut(e,t){let n=Vt(t.zoneWindow,e.zones.length);if(!n)return null;let r=Ht(e);if(r.length<=n.total)return r;let i=Gt(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 Wt(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 Gt(e,t){if(e.length===0)return 0;let n=Wt(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 qt(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=Ut(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 Yt(e,t={}){let n=e.getActiveZone();if(n)return n.recalculateBounds(),n.points[0]===0?new Set:new Set([n.id]);let r=Ut(e,t);if(!r)return null;let i=new Set;for(let e of r)i.add(e.zone.id);return i}function Xt(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 Zt=class extends Ct{constructor(t,n={}){super(t),W(this,`style`,void 0),W(this,`maxRects`,void 0),W(this,`minVisibleRectSize`,void 0),W(this,`drawFallbackBoxes`,void 0),W(this,`zoneWindow`,void 0),W(this,`sharedCanvasRenderer`,void 0),W(this,`onRequestRender`,void 0),W(this,`onDebugEvent`,void 0),W(this,`baseCanvas`,void 0),W(this,`baseContext`,void 0),W(this,`worldTarget`,e.singleBox(1,1,0,0)),W(this,`previewImageCache`,new Map),W(this,`worldLayerDirty`,!0),W(this,`lastWorldWidth`,0),W(this,`lastWorldHeight`,0),W(this,`lastTargetX`,NaN),W(this,`lastTargetY`,NaN),W(this,`lastTargetX2`,NaN),W(this,`lastTargetY2`,NaN),W(this,`lastRegionX`,NaN),W(this,`lastRegionY`,NaN),W(this,`lastRegionWidth`,NaN),W(this,`lastRegionHeight`,NaN),W(this,`worldLayerInvalidationVersion`,0),W(this,`sharedCanvasResourcesPending`,!1),this.style={...zt,...n.style||{}},this.maxRects=Math.max(100,n.maxRects||5e3),this.minVisibleRectSize=Math.max(1,n.minVisibleRectSize||1),this.drawFallbackBoxes=n.drawFallbackBoxes!==!1,this.zoneWindow=n.zoneWindow,this.sharedCanvasRenderer=n.sharedCanvasRenderer,this.onRequestRender=n.onRequestRender,this.onDebugEvent=n.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 Y||e instanceof X?!!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?l(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=qt(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?l(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 je?this.renderGeometry(n,t,s,c,i.scale):t instanceof J?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 et)s=t.getTexture()?.source;else if(t instanceof Y||t instanceof X){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=qt(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))}},Qt=class extends we{constructor(){super(),W(this,`type`,`spacial-content`),W(this,`id`,void 0),W(this,`points`,void 0),W(this,`color`,`#000`),W(this,`backgroundColor`,void 0),W(this,`hovering`,void 0),W(this,`pressing`,void 0),W(this,`text`,``),W(this,`display`,{x:0,y:0,scale:1,width:100,height:100,points:n(5)}),W(this,`className`,void 0),W(this,`html`,void 0),W(this,`interactive`,!1),W(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=n(5)}getAllPointsAt(e,t){return[[this,this.points,t]]}applyProps({id:t,target:n,text:r,color:i,backgroundColor:a,fontSize:o=18,interactive:s,fontFamily:c=`Arial, sans-serif`,...l}){l.font=`${o}px ${c}`,this.interactive=s||!1,r!==void 0&&(this.text=r||``),i&&(this.color=i),a&&(this.backgroundColor=a),t&&(this.id=t),n&&(this.points=e.singleBox(n.width,n.height,n.x,n.y),this.display.points=this.points,this.display.width=n.width,this.display.height=n.height),this.props={...this.props,...l},this.__revision++}};function $t(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 en=class{constructor(e){W(this,`$element`,void 0),W(this,`stylesheetClasses`,void 0),W(this,`activeStylesheetClasses`,void 0),W(this,`sheetsDidUpdate`,void 0),W(this,`sheetPrefix`,void 0),W(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+$t(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+$t(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])}},tn=class{constructor(e,t){W(this,`htmlContainer`,void 0),W(this,`visible`,[]),W(this,`previousVisible`,[]),W(this,`htmlIds`,[]),W(this,`firstMeaningfulPaint`,!1),W(this,`rendererPosition`,void 0),W(this,`stylesheet`,void 0),W(this,`options`,void 0),W(this,`paintTx`,1),W(this,`zIndex`,0),W(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 en({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;
@@ -18,7 +18,7 @@ import{DnaFactory as e,compose as t,dna as n,dnaLength as r,getIntersection as i
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})),on=F(((e,t)=>{var n=nn(),r=an(),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})),sn=F(((e,t)=>{t.exports=on()})),cn=ie(sn(),1);const $=Math.pow,ln=Math.sqrt,un=Math.sin,dn=Math.cos,fn=Math.PI,pn=1.70158,mn=pn*1.525,hn=pn+1,gn=2*fn/3,_n=2*fn/4.5,vn=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},yn={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-dn(e*fn/2)},easeOutSine:function(e){return un(e*fn/2)},easeInOutSine:function(e){return-(dn(fn*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-ln(1-$(e,2))},easeOutCirc:function(e){return ln(1-$(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-ln(1-$(2*e,2)))/2:(ln(1-$(-2*e+2,2))+1)/2},easeInBack:function(e){return hn*e*e*e-pn*e*e},easeOutBack:function(e){return 1+hn*$(e-1,3)+pn*$(e-1,2)},easeInOutBack:function(e){return e<.5?$(2*e,2)*((mn+1)*2*e-mn)/2:($(2*e-2,2)*((mn+1)*(e*2-2)+mn)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-$(2,10*e-10)*un((e*10-10.75)*gn)},easeOutElastic:function(e){return e===0?0:e===1?1:$(2,-10*e)*un((e*10-.75)*gn)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-($(2,20*e-10)*un((20*e-11.125)*_n))/2:$(2,-20*e+10)*un((20*e-11.125)*_n)/2+1},easeInBounce:function(e){return 1-vn(1-e)},easeOutBounce:vn,easeInOutBounce:function(e){return e<.5?(1-vn(1-2*e))/2:(1+vn(2*e-1))/2}},bn=`scroll`,xn=`gesture`,Sn={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},Cn=(r={})=>({start:i=>{let{zoomWheelConstant:a,enableWheel:o,enableClickToZoom:s,enableDoubleTapZoom:d,ignoreSingleFingerTouch:f,enablePanOnWait:p,panOnWaitDelay:m,parentElement:h,requireMetaKeyForWheelZoom:g,wheelInExploreModeOnly:_,enablePanMomentum:v,panMomentumStrength:y,panBounceStiffness:b,panBounceDamping:x,panTimeConstant:S,panPadding:C}={...Sn,...r},w={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:n(5),multiTouch:{distance:0},hasMovedSincePress:!1},T=[],E={active:!1,vx:0,vy:0},ee=null,D,O=0,k,A;function j(){T.length=0}function M(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 N(){E.active=!1,E.vx=0,E.vy=0}function te(){ee=null,D=void 0}function P(){if(!d||i.mode!==`explore`||w.hasMovedSincePress||!A)return!1;let e=performance.now();if(W&&e-W>250)return!1;let t=k&&O>0&&e-O<=350&&V(k,A)<=100;if(O=e,k={...A},!t)return!1;let n=i.isViewportAtHomeZoomLevel({tolerance:.1})?i.getHomeTarget({cover:!0}):i.getHomeTarget();return i.transitionManager.goToRegion(n,{transition:{duration:500,easing:yn.easeInOutQuad}}),O=0,k=void 0,!0}function ne(e,t,n,r){let i=Math.min(n,32)/1e3,a=t*1e3,o=e+a*i,s=o-r,c=-b*s-x*a,l=a+c*i;return{position:o+.5*c*i*i,velocity:l/1e3}}function F(e){i.transitionManager.customTransition(t=>{t.from=n(i.target),t.to=e,t.elapsed_time=0,t.total_time=0,t.timingFunction=yn.easeInOutExpo,t.done=!1})}function re(){if(T.length<2)return null;let e=T[T.length-1],t=T[0];for(let n=T.length-2;n>=0&&(t=T[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 ie(){if(!v||!w.hasMovedSincePress||T.length<2)return!1;let e=re();if(!e)return!1;let t=Math.max(0,y),n=e.vx*t,r=e.vy*t;return Math.hypot(n,r)*i.getScaleFactor()<.08?!1:(E.active=!0,E.vx=n,E.vy=r,i.updateNextFrame(),!0)}function I(){if(!w.isPressing){te(),R();return}let e=i.mode===`explore`?ie():!1;i.mode===`explore`&&!e&&i.world.constraintBounds(),w.isPressing=!1,w.hasMovedSincePress=!1,j(),te(),R()}function L(){if(!w.isPressing){te(),R();return}if(N(),i.mode===`explore`){let e=i.transitionManager.getPendingTransition(),t=ee||(e&&e.total_time===0&&!e.done?e.to:i.target);i.transitionManager.constrainTarget(t,{origin:D,panPadding:C})}w.isPressing=!1,w.hasMovedSincePress=!1,j(),te(),R()}i.world.activatedEvents.push(`onMouseUp`,`onMouseDown`,`onMouseMove`,`onTouchStart`,`onTouchEnd`,`onTouchCancel`,`onTouchMove`,`onContextMenu`);function R(){oe=0,G=``,K(),K(void 0,`notice`),W=0,A=void 0}function z(){I()}function B(e){if(G===xn&&e.touches.length<2){L();return}e.touches.length===0&&(P(),I())}function H(e){if(G===xn){L();return}I()}function ae(e){if(e.which>1){w.isPressing=!1;return}i.mode===`explore`&&(e.preventDefault(),N(),j(),w.hasMovedSincePress=!1,w.pointerStart.x=e.atlas.x,w.pointerStart.y=e.atlas.y,M(i.target[1],i.target[2]),i.transitionManager.stopTransition(),w.isPressing=!0)}function U(){I()}let oe=0,W=0,G=``;function se(e){if(i.mode===`explore`){if(N(),j(),w.hasMovedSincePress=!1,e.atlasTouches.length===1&&(W=performance.now(),f==0&&e.preventDefault(),w.pointerStart.x=e.atlasTouches[0].x,w.pointerStart.y=e.atlasTouches[0].y,A={x:e.atlasTouches[0].x,y:e.atlasTouches[0].y},M(i.target[1],i.target[2])),e.atlasTouches.length===2){G=xn,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,oe=V({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY}),j(),te()}i.transitionManager.stopTransition(),w.isPressing=!0}}function K(e,t=`intent`){h&&(h.dataset[t]=e)}function ce(e){let r=null,a=null,o=0,s=!1;if(w.isPressing&&e.touches.length===2&&(r=(e.touches[0].clientX+e.touches[1].clientX)/2,a=(e.touches[0].clientY+e.touches[1].clientY)/2,o=V({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY})),K(G),w.isPressing&&e.touches.length===1){if(p&&(performance.now()-W<m&&G==``&&(G=bn),G==``&&(G=`pan`)),K(G),G==``&&f==1||G==bn){K(`require-two-finger`,`notice`);return}let t=e.touches[0];r=t.clientX,a=t.clientY,s=!0}if(r!==null&&a!==null){let d=i.getRendererScreenPosition();if(d){let{x:f,y:p}=i.viewerToWorld(r-d.x,a-d.y),m=o&&oe?o/oe:1,h=l(n(i.target),t(u(w.pointerStart.x-f,w.pointerStart.y-p),c(1/m,f,p)),w.mousemoveBuffer);if(s){let e=T[T.length-1];e&&(e.x!==h[1]||e.y!==h[2])&&(w.hasMovedSincePress=!0),M(h[1],h[2])}e.touches.length===2&&(ee=n(h),D={x:f,y:p}),F(h)}oe=o}G==`pan`&&e.preventDefault()}function le(e){if(w.isPressing){let t=i.getRendererScreenPosition();if(t){let{x:r,y:a}=i.viewerToWorld(e.clientX-t.x,e.clientY-t.y),o=l(n(i.target),u(w.pointerStart.x-r,w.pointerStart.y-a),w.mousemoveBuffer),s=T[T.length-1];s&&(s.x!==o[1]||s.y!==o[2])&&(w.hasMovedSincePress=!0),M(o[1],o[2]),F(o)}}}function ue(e){i.mode===`explore`&&i.world.zoomIn(e.atlas)}function de(e){if(_&&i.mode!==`explore`)return;N();let t=1+(0,cn.default)(e).spinY/a;i.world.zoomTo(t,e.atlas,!0)}function q(e){return g&&e.metaKey==0?(K(`meta-required`,`notice`),e.stopPropagation(),!1):!0}i.world.addEventListener(`mouseup`,z),i.world.addEventListener(`touchend`,B),i.world.addEventListener(`touchcancel`,H),i.world.addEventListener(`touchstart`,se),i.world.addEventListener(`mousedown`,ae),window.addEventListener(`touchend`,U),window.addEventListener(`mouseup`,U),window.addEventListener(`mousemove`,le),h&&h.addEventListener(`touchmove`,ce),s&&(i.world.activatedEvents.push(`onClick`),i.world.addEventListener(`click`,ue)),o&&(i.world.activatedEvents.push(`onWheel`),g&&h?.addEventListener(`wheel`,q,{passive:!0,capture:!0}),i.world.addEventListener(`wheel`,de));let fe=i.world.addLayoutSubscriber((t,n)=>{if(t===`zone-changed`&&(N(),i.transitionManager.hasPending()||i.transitionManager.constrainBounds()),t===`zoom-to`&&n&&(N(),i.transitionManager.zoomTo(n.factor,{origin:n.point,stream:n.stream})),t===`go-home`){N();let e=n.immediate?{duration:0}:void 0,t=n?.paddingPx,r=i.getHomeTarget({paddingPx:t});i.transitionManager.goToRegion(r,{transition:e})}if(t===`goto-region`&&n){N();let t=n.immediate?{duration:0}:{};if(n.paddingPx!==void 0){let r=i.getHomeTarget({position:e.singleBox(n.width,n.height,n.x,n.y),paddingPx:n.paddingPx});i.transitionManager.goToRegion(r,{transition:t})}else i.transitionManager.goToRegion(n,{transition:t})}t===`constrain-bounds`&&(N(),i.transitionManager.constrainBounds({panPadding:C,transition:n?.immediate?{duration:0}:void 0}))}),pe=i.registerHook(`useFrame`,e=>{if(!E.active)return;let t=Math.exp(-e/Math.max(1,S)),r=i.target[3]-i.target[1],a=i.target[4]-i.target[2],o=l(n(i.target),u(E.vx*e,E.vy*e),w.mousemoveBuffer),[,s]=i.constrainBounds(o,{panPadding:C}),c=o[1]!==s[1],d=o[2]!==s[2],f=c?E.vx:E.vx*t,p=d?E.vy:E.vy*t,m=n(o);if(c){let t=ne(i.target[1],E.vx,e,s[1]);m[1]=t.position,m[3]=t.position+r,f=t.velocity}else m[1]=i.target[1]+f*e,m[3]=m[1]+r;if(d){let t=ne(i.target[2],E.vy,e,s[2]);m[2]=t.position,m[4]=t.position+a,p=t.velocity}else m[2]=i.target[2]+p*e,m[4]=m[2]+a;E.vx=f,E.vy=p;let[,h]=i.constrainBounds(m,{panPadding:C}),g=Math.hypot(m[1]-h[1],m[2]-h[2])*i.getScaleFactor(),_=Math.hypot(E.vx,E.vy)*i.getScaleFactor();if(g<=.5&&_<=.02){N(),F(h);return}F(m),i.updateNextFrame()});return()=>{N(),i.world.removeEventListener(`mouseup`,z),i.world.removeEventListener(`touchend`,B),i.world.removeEventListener(`touchcancel`,H),i.world.removeEventListener(`touchstart`,se),i.world.removeEventListener(`mousedown`,ae),window.removeEventListener(`touchend`,U),window.removeEventListener(`mouseup`,U),window.removeEventListener(`mousemove`,le),h&&(h.removeEventListener(`touchmove`,ce),h.removeEventListener(`wheel`,q,{passive:!0,capture:!0})),s&&i.world.removeEventListener(`click`,ue),o&&i.world.removeEventListener(`wheel`,de),pe(),fe()}},updatePosition(){}});var wn=ie(sn(),1);const Tn={scrollWheelFactor:1,scrollLoadAheadFactor:1,clickDragThresholdPx:6,touchScrollMomentumStrength:1.4,touchScrollMomentumMinStartPxPerMs:.04},En=.8,Dn=.08;let On=1;const kn=new WeakMap;function An(e){return{x:e.x,y:e.y,width:e.width,height:e.height}}function jn(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 Mn=(e={})=>({start(t){let n=On++;kn.set(t,n);let r=()=>kn.get(t)===n,{scrollWheelFactor:i,scrollLoadAheadFactor:a,clickDragThresholdPx:o,touchScrollMomentumStrength:s,touchScrollMomentumMinStartPxPerMs:c,enablePanMomentum:l=!0,panMomentumStrength:u=1,panTimeConstant:d=325}={...Tn,...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,O=null,k=!1,A=null,j=!1,M=!1,N=0,te,P=!0,ne=-1,F=-1,re=-1,ie=-1,I=-1,L=[],R={active:!1,vy:0},z=Cn({...e,enableWheel:!0,enableClickToZoom:!1,wheelInExploreModeOnly:!0}),B=e=>{t.world.activatedEvents.indexOf(e)===-1&&t.world.activatedEvents.push(e)},V=e=>{h=e,t.mode=e===`zone-active`?`explore`:`sketch`},H=()=>{L.length=0},ae=e=>{let t=performance.now(),n=L[L.length-1];if(n&&n.y===e){n.t=t;return}for(L.push({y:e,t});L.length>1&&t-L[0].t>140;)L.shift()},U=()=>{R.active=!1,R.vy=0},oe=()=>{if(L.length<2)return null;let e=L[L.length-1],t=L[0];for(let n=L.length-2;n>=0&&(t=L[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},W=({strengthMultiplier:e=1,minStartPxPerMs:n=Dn}={})=>{if(!l||L.length<2)return!1;let r=oe();if(r===null)return!1;let i=r*Math.max(0,u)*Math.max(0,e);return Math.abs(i)*t.getScaleFactor()<n?!1:(R.active=!0,R.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(`:`)}},q=()=>{if(!r()||x||h!==`scroll-mode`||g||M||_||t.world.hasActiveZone())return;let e=de();if(!e){performance.now()<C&&t.updateNextFrame();return}e!==S&&(S=e,N=ue(),he(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(!P&&te&&ne===e&&F===n&&re===i&&ie===a&&I===o)return te;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 te=c,P=!1,ne=e,F=n,re=i,ie=a,I=o,te},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}},me=e=>{if(e.recalculateBounds(),e.points[0]!==0)return pe(e.points[2])},he=e=>{let n=pe(e);if(!n)return;N=n.y;let r=t.getViewport();!t.transitionManager.hasPending()&&!K(r,n)||(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame())},ge=e=>{let n=pe(e);return n?(N=n.y,t.transitionManager.goToRegion(n),t.updateNextFrame(),!0):!1},_e=()=>{if(h!==`scroll-mode`||g||_||t.world.hasActiveZone())return;let e=t.getViewport(),n=pe(e.y);n&&(N=n.y,K(e,n)&&(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame()))},ve=(e,n)=>{for(let r of t.world.zones)if(r.recalculateBounds(),jn(r,e,n))return r},ye=e=>{r()&&(U(),H(),x=!0,b||(b=An({...t.getViewport(),y:N})),v=!0,t.goToZone(e)?V(`zone-active`):v=!1)},be=()=>{if(!r())return;let e=ge(b?b.y:N);b=void 0,_=e,e||(_=!1,g=!1,he(N)),t.updateNextFrame()},xe=()=>{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<En&&s<En},Se=()=>{r()&&h===`zone-active`&&(U(),H(),V(`scroll-mode`),g=!0,t.deselectZone(),be())},Ce=(e,t)=>{U(),H(),x=!0,M=!0,j=!1,ee=e,D=t,T=t,E=N,ae(N)},we=(e,n)=>{if(!M)return!1;Math.hypot(e-ee,n-D)>o&&(j=!0);let r=(n-T)/Math.max(1e-4,t.getScaleFactor());return he(E-r),ae(N),!0},Te=({allowMomentum:e=!0,momentumStrengthMultiplier:t=1,momentumMinStartPxPerMs:n=Dn}={})=>{let r=M,i=j;return M=!1,j=!1,r?(e&&h===`scroll-mode`&&!_?W({strengthMultiplier:t,minStartPxPerMs:n}):U(),H(),{releasedDrag:!0,tapSuppressed:i}):(H(),{releasedDrag:!1,tapSuppressed:i})},Ee=()=>{M=!1,j=!1,H(),U()},De=()=>{O=null,k=!1,A=null,j=!1},J=e=>{if(!r()||(G(),j||_))return;if(h===`scroll-mode`){let t=ve(e.x,e.y);t&&ye(t.id);return}let n=t.world.getActiveZone();(!n||!jn(n,e.x,e.y))&&Se()},Oe=e=>{r()&&e.atlas&&J(e.atlas)},ke=e=>{if(!r())return;if(G(),_){e.stopPropagation();return}if(h!==`scroll-mode`)return;U(),x=!0,e.stopPropagation();let n=((0,wn.default)(e).pixelY||e.deltaY||0)/Math.max(1e-4,t.getScaleFactor())*i;he(N+n)},Ae=e=>{r()&&(G(),!(h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),Ce(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},je=e=>{r()&&(G(),!(!M||h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),we(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Y=()=>{r()&&Te()},Me=e=>{if(!r())return;if(G(),h===`zone-active`){if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){De();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,j=!1,ee=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){De(),Ee();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,A={x:n.x,y:n.y},Ce(t.clientX,t.clientY)},X=e=>{if(!r())return;if(G(),h===`zone-active`){if(!k)return;if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){De();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-ee,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){De(),Ee();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},we(n.clientX,n.clientY)},Ne=e=>{if(!r())return;if(G(),h===`zone-active`){let t=A,n=k&&!j&&e.touches.length===0;De(),t&&n&&J(t);return}if(h!==`scroll-mode`)return;if(e.preventDefault(),e.stopPropagation?.(),e.touches.length>0){De(),Ee();return}let t=A,n=Te({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c});De(),t&&!n.tapSuppressed&&J(t)},Pe=e=>{if(r()){if(G(),h===`zone-active`){De();return}h===`scroll-mode`&&(e.preventDefault(),e.stopPropagation?.(),De(),Ee())}},Z=()=>{if(r()){if(h===`zone-active`){De();return}Te({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c}),De()}},Q=e=>{r()&&e.key===`Escape`&&Se()};B(`onClick`),B(`onWheel`),B(`onMouseDown`),B(`onMouseMove`),B(`onMouseUp`),B(`onTouchStart`),B(`onTouchMove`),B(`onTouchEnd`),B(`onTouchCancel`),t.world.addEventListener(`click`,Oe),t.world.addEventListener(`wheel`,ke),t.world.addEventListener(`mousedown`,Ae),t.world.addEventListener(`mousemove`,je),t.world.addEventListener(`mouseup`,Y),t.world.addEventListener(`touchstart`,Me),t.world.addEventListener(`touchmove`,X),t.world.addEventListener(`touchend`,Ne),t.world.addEventListener(`touchcancel`,Pe),window.addEventListener(`mouseup`,Y),window.addEventListener(`touchend`,Z),window.addEventListener(`touchcancel`,Pe),window.addEventListener(`keydown`,Q),t.manualHomePosition=!0,V(`scroll-mode`),N=ue(),q();let Fe=z.start(t),Ie=t.registerHook(`useFrame`,e=>{if(!R.active)return;if(!r()||h!==`scroll-mode`||g||_||M||t.world.hasActiveZone()){U();return}let n=Math.exp(-e/Math.max(1,d));if(R.vy*=n,Math.abs(R.vy)*t.getScaleFactor()<=.02){U();return}let i=N;if(he(N+R.vy*e),Math.abs(N-i)<=.01){U();return}t.updateNextFrame()}),Le=t.registerHook(`useAfterFrame`,()=>{if(r()){if(G(),_e(),q(),_&&!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=An(t),N=t.y)}y=void 0}g||xe()&&Se()}}),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:N;t.world.zones.length&&e===0&&(N=ue()),he(N),f()}if(e===`zone-changed`){if(t.world.hasActiveZone()){U(),H(),x=!0;let e=t.world.getActiveZone();!v&&e?y=e.id:b||(b=An({...t.getViewport(),y:N})),v=!1,V(`zone-active`);return}let e=h===`zone-active`;if(y=void 0,V(`scroll-mode`),_)return;e?(g=!0,be()):g||he(N)}}});return()=>{U(),H(),Fe(),Ie(),Le(),Re(),t.world.removeEventListener(`click`,Oe),t.world.removeEventListener(`wheel`,ke),t.world.removeEventListener(`mousedown`,Ae),t.world.removeEventListener(`mousemove`,je),t.world.removeEventListener(`mouseup`,Y),t.world.removeEventListener(`touchstart`,Me),t.world.removeEventListener(`touchmove`,X),t.world.removeEventListener(`touchend`,Ne),t.world.removeEventListener(`touchcancel`,Pe),window.removeEventListener(`mouseup`,Y),window.removeEventListener(`touchend`,Z),window.removeEventListener(`touchcancel`,Pe),window.removeEventListener(`keydown`,Q),r()&&(kn.delete(t),t.manualHomePosition=m,t.mode=p)}},updatePosition(){}}),Nn=m.createContext(null);Nn.displayName=`Atlas`;const Pn=m.createContext(null);Pn.displayName=`Bounds`;const Fn=m.createContext(`explore`);Fn.displayName=`Mode`;const In=()=>v(Fn);function Ln(e){return O(Fn.Provider,{value:e.mode,children:e.children})}var Rn=class{constructor(e){W(this,`runtime`,void 0),W(this,`pendingTransition`,void 0),W(this,`lastZoomTo`,null),W(this,`isConstraining`,!1),W(this,`lastGoToRegion`,null),this.runtime=e,this.pendingTransition={from:n(5),to:n(5),elapsed_time:0,done:!0,total_time:0,timingFunction:yn.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=n(this.runtime.target),this.pendingTransition.to=n(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:yn.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:yn.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:yn.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:yn.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}applyTransition(e,t,r,{stream:i}={}){this.pendingTransition.from=n(this.runtime.target),this.pendingTransition.to=e,i||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=t?.duration===void 0?r?.duration===void 0?1e3:r.duration:t.duration,this.pendingTransition.constrain=t?.constrain===void 0?r?.constrain===void 0?!1:r.constrain:t.constrain,this.pendingTransition.timingFunction=t?.easing||r?.easing||yn.easeInOutSine}goToRegion(t,{transition:n}={}){this.lastGoToRegion={target:t,options:{transition:n}};let r=this.runtime.clampRegion(t);this.applyTransition(e.singleBox(r.width,r.height,r.x,r.y),n,{duration:1e3,easing:yn.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};Number.MIN_VALUE+1;var zn=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(t,r,i,a=[],o){W(this,`id`,Ce()),W(this,`ready`,!1),W(this,`readyCycle`,0),W(this,`readyReason`,`initial`),W(this,`readyTimestamp`,void 0),W(this,`renderer`,void 0),W(this,`world`,void 0),W(this,`target`,void 0),W(this,`homePosition`,void 0),W(this,`manualHomePosition`,void 0),W(this,`manualFocalPosition`,void 0),W(this,`focalPosition`,void 0),W(this,`homePaddingPx`,void 0),W(this,`transitionManager`,void 0),W(this,`aggregate`,void 0),W(this,`transformBuffer`,n(500)),W(this,`lastTarget`,n(5)),W(this,`zoomBuffer`,n(5)),W(this,`logNextRender`,!1),W(this,`pendingUpdate`,!0),W(this,`isCommitting`,!1),W(this,`firstRender`,!0),W(this,`lastTime`,void 0),W(this,`stopId`,void 0),W(this,`mode`,`explore`),W(this,`controllers`,[]),W(this,`controllersRunning`,!1),W(this,`controllerStopFunctions`,[]),W(this,`maxScaleFactor`,1),W(this,`_viewerToWorld`,{x:0,y:0}),W(this,`_lastGoodScale`,1),W(this,`debugFrame`,0),W(this,`debugSubscribers`,new Set),W(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),W(this,`fpsLimit`,void 0),W(this,`options`,void 0),W(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),W(this,`_viewport`,{x:0,y:0,width:0,height:0}),W(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}),W(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?l(r,i,this.transformBuffer):r;this.renderer.prepareLayer(n,n.__parent&&i?l(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=t,this.world=r,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1,...o||{}},this.target=e.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=e.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new Rn(this),this.aggregate=s(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=a,this.render(this.lastTime),this.startControllers(),this.homePaddingPx=void 0}setHomePosition(t){this.homePosition.set(e.projection(t||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(t,n){if(!this.manualFocalPosition){let t=this.width,n=this.height,r=Math.min(t,n),i=this.x+0,a=this.y+0;if(t<n){let t=this.height-this.width;this.focalPosition=e.projection({x:i,y:a+t/2,width:r-0,height:r-0}),this.pendingUpdate=!0}else{let t=this.width-this.height;this.focalPosition=e.projection({x:i+t/2,y:a,width:r-0,height:r-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:r=!1}={}){let{minX:i,maxX:a,minY:o,maxY:s}=this.getBounds({target:e,padding:t}),c=!1,l=r?e:n(e),u=Math.round(e[3]-e[1]),d=Math.round(e[4]-e[2]);return i>e[1]&&(c=!0,l[1]=i,l[3]=i+u),o>e[2]&&(c=!0,l[2]=o,l[4]=o+d),a<e[1]&&(c=!0,l[1]=a,l[3]=a+u),s<e[2]&&(c=!0,l[2]=s,l[4]=s+d),[c,l]}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=Ne(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:r=0,ref:i=!1}={}){let a=!1,o=i?e:n(e),{scaleFactor:s,minScale:u,maxScale:d}=this.getZoomConstraintState(o),f=Math.max(u,Math.min(d,s));if(Math.abs(f-s)>1e-6){let e=t||{x:o[1]+(o[3]-o[1])/2,y:o[2]+(o[4]-o[2])/2},n=l(o,c(s/f,e.x,e.y),this.zoomBuffer);this.copyStrandValues(o,n),a=!0}let[p]=this.constrainBounds(o,{ref:!0,panPadding:r});return[a||p,o]}getZoomedPosition(e,{origin:t,fromPos:n}){let r=n||this.target,{scaleFactor:i,minScale:a,maxScale:o}=this.getZoomConstraintState(r),s=1/e,u=i*s;s<1?u<a&&(e=i/a):u>o&&(e=i/o);let d=l(r,c(e,t?t.x:r[1]+(r[3]-r[1])/2,t?t.y:r[2]+(r[4]-r[2])/2),this.zoomBuffer),f=this.world.hasActiveZone()?0:100;return this.constrainBounds(d,{ref:!0,panPadding:f}),d}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(n,r,i,a){let c=e.singleBox(i,a,n,r);return o(c,t(s(this.getScaleFactor()),u(-this.target[1],-this.target[2]))),{x:c[1],y:c[2],width:c[3]-c[1],height:c[4]-c[2],strand:c}}setScale(e,t){o(this.target,c(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(t,n={}){let r=this.world.getZoneById(t);if(!r||(r.recalculateBounds(),r.points[0]===0))return!1;this.world.selectZone(t);let i=this.getHomeTarget({position:r.points,paddingPx:n.paddingPx});return n.immediate?(this.transitionManager.stopTransition(),this.setViewport(i),this.constrainBounds(this.target,{ref:!0}),this.updateControllerPosition(),this.pendingUpdate=!0,!0):(this.transitionManager.applyTransition(e.singleBox(i.width,i.height,i.x,i.y),void 0,{duration:1e3,easing:yn.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 Bn={margin:0};var Vn=class{constructor(e,t={}){W(this,`id`,void 0),W(this,`config`,void 0),W(this,`points`,void 0),W(this,`objects`,void 0),Array.isArray(e)?(this.id=e.map(e=>e.id).join(`$$`),this.config={...Bn,...t},this.objects=[...e]):(this.id=e.id,this.config={...Bn,margin:typeof e.margin==`number`?e.margin:Bn.margin,x:e.x,y:e.y,width:e.width,height:e.height},this.objects=[...e.objects||[]]),this.points=n(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 Hn;if(typeof performance==`object`&&typeof performance.now==`function`){let e=performance;Hn=()=>e.now()}else{let e=Date,t=e.now();Hn=()=>e.now()-t}const Un=typeof A==`function`?A:typeof A?.default==`function`?A.default:null;var Wn=class{constructor(e){W(this,`world`,void 0),W(this,`zone`,void 0),W(this,`isRegistered`,!1),W(this,`directWorldObjects`,[]),this.world=e,this.zone=new Vn({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 Tt&&(this.registerDirectWorldObject(e),this.world.appendChild(e))}removeChild(e){e instanceof Tt&&(this.unregisterDirectWorldObject(e),this.world.removeChild(e))}insertBefore(e,t){if(e instanceof Tt){if(this.registerDirectWorldObject(e),t instanceof Tt){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 Gn(e,t){if(e instanceof Et&&t instanceof Wn){t.attachToWorld(e);return}if(e instanceof Wn){e.appendChild(t);return}e&&e.appendChild&&t&&e.appendChild(t)}function Kn(e,t){if(e instanceof Et&&t instanceof Wn){t.unmount();return}if(e instanceof Wn){e.removeChild(t);return}e&&e.removeChild&&t&&e.removeChild(t)}function qn(e,t){if(t instanceof Wn){t.unmount();return}return Kn(e.world,t)}function Jn(e,t,n){if(t instanceof Wn){t.attachToWorld(e.world);return}return Yn(e.world,t,n)}function Yn(e,t,n){if(e&&e instanceof zn&&(e=e.world),!(e instanceof Et&&t instanceof Wn)){if(e instanceof Wn){e.insertBefore(t,n);return}e&&e.insertBefore&&e.insertBefore(t,n)}}function Xn(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof we))for(let r of I){let i=r.slice(2).toLowerCase();n[r]!==t[r]&&(t[r]&&e.removeEventListener(i,t[r]),e.addEventListener(i,n[r]))}}function Zn(e,t){let n=Object.keys(t),r=!1;for(let t of n)if(I.indexOf(t)!==-1){let n=R[t];if(n){if(e.activatedEvents.indexOf(n)!==-1)continue;r=!0,e.activatedEvents.push(n)}}r&&e.triggerEventActivation()}const Qn=new Map,$n={};function er(e,{args:t=[],...n},r,i,a){if(!(r instanceof zn)&&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=Et.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 J;break;case`shape`:o=new je;break;case`worldObject`:case`world-object`:o=new Tt;break;case`zone`:o=new Wn(s);break;case`worldImage`:case`world-image`:o=new Y;break;case`texture`:o=new et;break;case`compositeImage`:case`composite-image`:o=new $e({id:n.id,width:n.width,height:n.height,images:[],renderOptions:n.renderOptions});break;case`tiledImage`:case`tiled-image`:o=X.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 St({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 Qt,o.text=n.children;break;default:return}return Zn(s,n),Xn(o,{},n),o}function tr(e,t){if(t instanceof Et)e.world=t;else if(t instanceof Wn)t.attachToWorld(e.world);else if(t instanceof Tt)e.world.appendChild(t);else if(t)throw Error(`Invalid root`)}let nr=0;const rr=Un?Un({unstable_now:Hn,now:Hn,createInstance:er,removeChild:Kn,appendChild:Gn,appendInitialChild:Gn,insertBefore:Yn,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:tr,removeChildFromContainer:qn,createTextInstance(){},insertInContainerBefore:Jn,prepareUpdate(e,t,n,r,i){return Zn(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&Xn(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return $n},getRootHostContext(){return $n},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:E,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(e){nr=e},getCurrentUpdatePriority(){return nr},resolveUpdatePriority(){if(nr!==0)return nr;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;rr&&rr.injectIntoDevTools();function ir(e,t){let n=Qn.get(e);if(n){if(!rr)return;rr.updateContainer(null,n,null,()=>{Qn.delete(e),t&&t(e)})}}const ar={render(e,t){let n=Qn.get(t);if(rr)if(n)rr.updateContainer(e,n,null);else{let n=rr.createContainer(t,0,null,!1,null,``,()=>{},null);rr.updateContainer(e,n,null),Qn.set(t,n)}},unmountComponentAtNode(e,t){ir(e,t)}},or=typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)?p.useLayoutEffect:p.useEffect,sr=m.memo(({children:e,setIsReady:t,onCreated:n,bounds:r,preset:i,mode:a=`explore`,interactionMode:o=`popmotion`})=>{let s=C(new WeakSet);return y(()=>{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]),or(()=>{if(i){let t=i.runtime;a!==t.mode&&(t.mode=a),ar.render(O(m.StrictMode,{children:O(Pn.Provider,{value:r,children:O(Fn.Provider,{value:a,children:O(Nn.Provider,{value:i,children:e})})})}),t)}},[i,a,r,e]),or(()=>{if(i){let e=i.runtime;return()=>{ar.unmountComponentAtNode(e)}}return()=>{}},[i]),null}),cr=m.forwardRef((e,t)=>O(`div`,{...e,ref:t,part:e.className})),lr=()=>v(Nn),ur=()=>{let e=lr();return e?e.runtime:void 0},dr=new Set,fr=new Map,pr=new Map,mr=[];let hr,gr,_r={activeCandidateId:void 0,selectedRuntimeId:void 0,candidates:[],runtimes:[]};function vr(){let e=Array.from(fr.entries()).map(([e,t],n)=>({id:e,runtime:t.runtime,preset:t.preset,label:`Atlas ${n+1} (${e.slice(0,6)})`}));_r={activeCandidateId:hr,selectedRuntimeId:gr,candidates:[...mr],runtimes:e}}function yr(){vr();for(let e of dr)e()}function br(){if(gr&&fr.has(gr))return;let e=fr.keys().next();gr=e.done?void 0:e.value}function xr(){hr&&pr.has(hr)||(hr=mr[0])}function Sr(e){return dr.add(e),()=>{dr.delete(e)}}function Cr(){return _r}function wr(e){let t=e.runtime.id;return fr.set(t,{runtime:e.runtime,preset:e}),br(),yr(),()=>{Tr(t)}}function Tr(e){fr.delete(e),br(),yr()}function Er(e){return pr.get(e.id)||mr.push(e.id),pr.set(e.id,e),xr(),!gr&&e.runtimeId&&fr.has(e.runtimeId)&&(gr=e.runtimeId),br(),yr(),()=>{Or(e.id)}}function Dr(e,t){let n=pr.get(e);n&&(n.runtimeId=t,!gr&&t&&fr.has(t)&&(gr=t),br(),yr())}function Or(e){pr.delete(e);let t=mr.indexOf(e);t!==-1&&mr.splice(t,1),xr(),yr()}function kr(e){if(!e){gr=void 0,br(),yr();return}fr.has(e)&&(gr=e,yr())}function Ar(e){if(e)return fr.get(e)}vr();function jr(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)jr(n,t);return t}return t.push(e),t}function Mr(e,t,n,r){if(e){if(e instanceof Tt){if(Array.isArray(e.layers))for(let n of e.layers)Mr(n,t,e.id,r);return}if(e instanceof $e){let r=e.id,i=new Set([...e.allImages,...e.images]);for(let e of i)Mr(e,t,n,r);return}if(e instanceof Y||e instanceof X){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 Nr(e){let t=[],n=e.getObjects();for(let e of n)e&&Mr(e,t,e.id,void 0);return t}function Pr(e){let t=jr(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 Fr(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 Ir(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)Ir(n,t);return t}return t.push(e),t}function Lr(e,t){if(e){if(e instanceof Y||e instanceof X){t.push(e);return}if(e instanceof $e){let n=new Set([...e.allImages,...e.images]);for(let e of n)Lr(e,t);return}if(e instanceof Tt&&Array.isArray(e.layers))for(let n of e.layers)Lr(n,t)}}function Rr(e){let t=[],n=e.getObjects();for(let e of n)e&&Lr(e,t);return t}function zr(e){let t=Rr(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=Ir(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 Br(e,t,n){if(E.startsWith(`18.`)||E.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 Vr=[`Overview`,`World`,`Inspector`,`Events`,`Images`,`Actions`];let Hr=0;const Ur=e=>{let t=ur(),n=e.runtimeId||t?.id,r=C(null),i=C(null);return y(()=>{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}},[]),y(()=>{let t=r.current;t&&Br(t,O(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:t=!1,bottom:n=16,right:r=16,zIndex:i=1e3,maxEvents:a=500,maxRuntimeEvents:o=1e3,runtimeId:s,className:c,style:l})=>{let u=C(`devtools-${++Hr}`),[d,f]=w(t),[p,m]=w(`Overview`),[h,g]=w(!1),[_,v]=w(!1),[b,x]=w(null),[S,E]=w(`explore`),[ee,A]=w(``),[j,M]=w(!1),[N,te]=w(``),[P,ne]=w(`all`),[,F]=w(0),re=C([]),ie=C([]),I=C(null),L=C(!1),R=()=>{L.current||(L.current=!0,requestAnimationFrame(()=>{L.current=!1,F(e=>e+1)}))},z=s;y(()=>Er({id:u.current,runtimeId:z}),[]),y(()=>{Dr(u.current,z)},[z]);let B=T(Sr,Cr,Cr),V=B.activeCandidateId===u.current,H=B.selectedRuntimeId||z||B.runtimes[0]?.id,ae=Ar(H),U=ae?.runtime,oe=ae?.preset;if(y(()=>{H&&H!==B.selectedRuntimeId&&kr(H)},[H,B.selectedRuntimeId]),y(()=>{U&&E(U.mode)},[U?.id]),y(()=>{if(!V||!d||!U)return;let e=U.addDebugSubscriber(e=>{h||(Wr(re.current,e,o),R())}),t=U.world.addDebugSubscriber(e=>{h||(Wr(ie.current,e,a),R())});return()=>{e(),t()}},[V,d,U?.id,h,a,o]),y(()=>{if(!V||!d)return;let e=setInterval(()=>{F(e=>e+1)},250);return()=>{clearInterval(e)}},[V,d]),y(()=>{if(!_||!U||!oe?.em?.element)return;let t=oe.em.element,n=n=>{let r=t.getBoundingClientRect(),{x:i,y:a}=U.viewerToWorld(n.clientX-r.left,n.clientY-r.top),o=e.singleBox(1,1,i,a),s=U.world.getObjectsAt(o,!0),c=s[s.length-1];if(c){let e=c[1];x(e.length?e[e.length-1]:c[0])}m(`Inspector`),v(!1),R(),n.preventDefault(),n.stopPropagation()};return t.addEventListener(`pointerdown`,n,!0),()=>{t.removeEventListener(`pointerdown`,n,!0)}},[_,U?.id,oe?.em?.element]),y(()=>()=>{let e=I.current;e&&(I.current=null,e())},[]),typeof window>`u`||typeof document>`u`||!V)return null;let W=U?qr(U):[],G=b||W[0]?.ref,se=U?Pr(U):{rendererTypes:[],canvas:[],webgl:[]},K=U?Nr(U.world):[],ce=Fr(re.current,15),le=ie.current.filter(e=>P===`all`||e.type===P),ue=(()=>{if(!U)return{width:220,height:220,rects:[],viewport:null};let e=U.world.getPoints(),t=Math.max(1,U.world.width),n=Math.max(1,U.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:U.target[1]*r,y:U.target[2]*i,width:Math.max(1,(U.target[3]-U.target[1])*r),height:Math.max(1,(U.target[4]-U.target[2])*i)}}})(),de={position:`fixed`,right:r,bottom:n,zIndex:i,color:`#eef1ff`,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace`,pointerEvents:`auto`,...l||{}},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)`},fe={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`},pe={padding:10,overflow:`auto`,fontSize:12,lineHeight:1.4,display:`grid`,gap:8},me=()=>{!U||I.current||(I.current=U.stop(),M(!0))},he=()=>{let e=I.current;I.current=null,e&&e(),M(!1)},ge=()=>{if(U){if(I.current){let e=I.current;I.current=null,e(),requestAnimationFrame(()=>{U&&(I.current=U.stop(),M(!0))});return}U.updateNextFrame()}},_e=()=>{re.current=[],ie.current=[],te(`Logs cleared`),R()};return k(`div`,{className:c,style:de,children:[d?k(`div`,{style:fe,children:[k(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:10,borderBottom:`1px solid #1f2937`},children:[O(`strong`,{style:{fontSize:12,letterSpacing:.4},children:`Atlas DevTools`}),O(`select`,{style:{marginLeft:`auto`,fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},value:H||``,onChange:e=>kr(e.target.value),children:B.runtimes.map(e=>O(`option`,{value:e.id,children:e.label},e.id))}),O(`button`,{style:q,onClick:()=>f(!1),children:`Close`})]}),O(`div`,{style:{display:`flex`,gap:6,padding:8,borderBottom:`1px solid #1f2937`,flexWrap:`wrap`},children:Vr.map(e=>O(`button`,{style:{...q,padding:`4px 8px`,borderRadius:6,background:p===e?`#334155`:`#111827`},onClick:()=>m(e),children:e},e))}),k(`div`,{style:pe,children:[U?null:O(`div`,{children:`No Atlas runtime available.`}),U&&p===`Overview`?k(D,{children:[k(`div`,{children:[`Runtime id: `,U.id]}),k(`div`,{children:[`Mode: `,U.mode]}),k(`div`,{children:[`Scale factor: `,U.getScaleFactor().toFixed(4)]}),k(`div`,{children:[`World: `,U.world.width,` x `,U.world.height]}),k(`div`,{children:[`Target: `,JSON.stringify(Gr(U.target))]}),k(`div`,{children:[`Pending update: `,String(U.pendingUpdate)]}),k(`div`,{children:[`Renderer chain: `,se.rendererTypes.join(` -> `)||`None`]}),k(`div`,{children:[`Runtime log entries: `,re.current.length]}),k(`div`,{children:[`World log entries: `,ie.current.length]})]}):null,U&&p===`World`?k(D,{children:[k(`div`,{children:[`World dimensions: `,U.world.width,` x `,U.world.height]}),k(`div`,{children:[`Viewport target: `,JSON.stringify(Gr(U.target))]}),k(`svg`,{width:ue.width,height:ue.height,style:{background:`#020617`,border:`1px solid #334155`},children:[ue.rects.map((e,t)=>O(`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}`)),ue.viewport?O(`rect`,{x:ue.viewport.x,y:ue.viewport.y,width:ue.viewport.width,height:ue.viewport.height,fill:`rgba(251, 191, 36, 0.1)`,stroke:`rgba(251, 191, 36, 1)`}):null]})]}):null,U&&p===`Inspector`?k(D,{children:[O(`div`,{style:{display:`flex`,gap:8},children:O(`button`,{style:q,onClick:()=>v(e=>!e),children:_?`Cancel Pick`:`Pick in Viewport`})}),O(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6},children:W.map(e=>O(`button`,{onClick:()=>x(e.ref),style:{width:`100%`,display:`block`,textAlign:`left`,padding:`2px 6px 2px ${6+e.depth*14}px`,background:G===e.ref?`#1e293b`:`transparent`,color:`#e2e8f0`,border:0,cursor:`pointer`,fontSize:12},children:e.label},e.key))}),G?k(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[k(`div`,{children:[`Type: `,Kr(G)]}),k(`div`,{children:[`ID: `,G.id||`(none)`]}),k(`div`,{children:[`Points: `,JSON.stringify(Gr(G.points))]}),k(`div`,{children:[`Display scale: `,G.display?.scale??`(n/a)`]}),k(`div`,{children:[`Crop: `,G.cropData?JSON.stringify(G.cropData):`(none)`]}),k(`div`,{children:[`Host: `,Jr(G)]})]}):null]}):null,U&&p===`Events`?k(D,{children:[k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:()=>g(e=>!e),children:h?`Resume Log`:`Pause Log`}),O(`button`,{style:q,onClick:_e,children:`Clear`}),k(`select`,{value:P,onChange:e=>ne(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[O(`option`,{value:`all`,children:`All`}),O(`option`,{value:`trigger`,children:`Trigger`}),O(`option`,{value:`pointer`,children:`Pointer`}),O(`option`,{value:`touch`,children:`Touch`})]})]}),O(`div`,{style:{maxHeight:240,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:le.slice().reverse().map((e,t)=>k(`div`,{style:{marginBottom:4},children:[`[`,e.type,`] `,JSON.stringify(e)]},`event-${t}`))})]}):null,U&&p===`Images`?k(D,{children:[O(`div`,{children:`Renderer health`}),se.canvas.map((e,t)=>k(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[O(`div`,{children:e.type}),k(`div`,{children:[`loadingQueue: `,e.loadingQueue]}),k(`div`,{children:[`imagesPending: `,e.imagesPending]}),k(`div`,{children:[`imagesLoaded: `,e.imagesLoaded]}),k(`div`,{children:[`tasksRunning: `,e.tasksRunning]}),k(`div`,{children:[`firstMeaningfulPaint: `,String(e.firstMeaningfulPaint)]})]},`canvas-${t}`)),se.webgl.map((e,t)=>O(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:O(`div`,{children:e.type})},`webgl-${t}`)),k(`div`,{children:[`Image hosts (`,K.length,`)`]}),O(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:K.map(e=>k(`div`,{style:{marginBottom:6},children:[k(`div`,{children:[e.type,` #`,e.id]}),k(`div`,{children:[`owner: `,e.ownerId||`(none)`,` composite: `,e.compositeId||`(none)`]}),k(`div`,{children:[`canvas: `,e.canvas?JSON.stringify(e.canvas):`(none)`]}),k(`div`,{children:[`webgl: `,e.webgl?JSON.stringify(e.webgl):`(none)`]}),e.anomalies.length?k(`div`,{children:[`anomalies: `,e.anomalies.join(` | `)]}):null]},`${e.type}-${e.id}-${e.ownerId||`none`}`))}),O(`div`,{children:`Chosen composite layers by frame`}),O(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:ce.map(e=>k(`div`,{style:{marginBottom:8},children:[k(`div`,{children:[`frame `,e.frame]}),e.composites.map(t=>k(`div`,{style:{paddingLeft:8},children:[k(`div`,{children:[`composite `,t.compositeId]}),t.layers.map((e,n)=>k(`div`,{style:{paddingLeft:10},children:[e.paintType,` #`,e.paintId,` tile=`,e.tileIndex]},`${t.compositeId}-${n}`))]},`${e.frame}-${t.compositeId}`))]},`frame-${e.frame}`))})]}):null,U&&p===`Actions`?k(D,{children:[k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:j?he:me,children:j?`Resume Loop`:`Pause Loop`}),O(`button`,{style:q,onClick:ge,children:`Step Frame`}),O(`button`,{style:q,onClick:()=>U.updateNextFrame(),children:`Repaint`}),O(`button`,{style:q,onClick:()=>U.triggerResize(),children:`Trigger Resize`})]}),k(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[k(`select`,{value:S,onChange:e=>E(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[O(`option`,{value:`explore`,children:`explore`}),O(`option`,{value:`sketch`,children:`sketch`}),O(`option`,{value:`static`,children:`static`})]}),O(`button`,{style:q,onClick:()=>{U.mode=S,U.updateNextFrame()},children:`Apply Mode`})]}),k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:()=>U.world.goHome(),children:`goHome`}),O(`button`,{style:q,onClick:()=>U.world.zoomIn(),children:`zoomIn`}),O(`button`,{style:q,onClick:()=>U.world.zoomOut(),children:`zoomOut`}),O(`button`,{style:q,onClick:()=>U.world.constraintBounds(!0),children:`constrain-bounds`})]}),k(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[k(`select`,{value:ee,onChange:e=>A(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[O(`option`,{value:``,children:`Select zone`}),U.world.zones.map((e,t)=>O(`option`,{value:String(e.id||t),children:e.id||`zone-${t}`},`${e.id}-${t}`))]}),O(`button`,{style:q,onClick:()=>{ee&&U.selectZone(ee)},children:`Select Zone`}),O(`button`,{style:q,onClick:()=>U.deselectZone(),children:`Deselect Zone`})]}),k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:()=>{let e=zr(U);te(`Reset image hosts=${e.imageHostsReset}, renderers=${e.renderersReset}`),R()},children:`Recover Images`}),O(`button`,{style:q,onClick:_e,children:`Clear Logs`})]}),N?O(`div`,{children:N}):null]}):null]})]}):null,O(`button`,{style:q,onClick:()=>f(e=>!e),children:d?`Hide DevTools`:`Open DevTools`})]})};function Xr(e){return S(()=>$t(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=C(e);r.current&&n&&(console.log(`Diff:`,t,Zr(r.current,e)),r.current=e)}function $r(e,t){return!(!(e instanceof Y||e instanceof X)||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){W(this,`canvas`,void 0),W(this,`gl`,void 0),W(this,`options`,void 0),W(this,`fatalImageError`,void 0),W(this,`program`,void 0),W(this,`fragmentShader`,void 0),W(this,`vertexShader`,void 0),W(this,`rectBuffer`,void 0),W(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})),on=F(((e,t)=>{var n=nn(),r=an(),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})),sn=F(((e,t)=>{t.exports=on()})),cn=ie(sn(),1);const $=Math.pow,ln=Math.sqrt,un=Math.sin,dn=Math.cos,fn=Math.PI,pn=1.70158,mn=pn*1.525,hn=pn+1,gn=2*fn/3,_n=2*fn/4.5,vn=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},yn={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-dn(e*fn/2)},easeOutSine:function(e){return un(e*fn/2)},easeInOutSine:function(e){return-(dn(fn*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-ln(1-$(e,2))},easeOutCirc:function(e){return ln(1-$(e-1,2))},easeInOutCirc:function(e){return e<.5?(1-ln(1-$(2*e,2)))/2:(ln(1-$(-2*e+2,2))+1)/2},easeInBack:function(e){return hn*e*e*e-pn*e*e},easeOutBack:function(e){return 1+hn*$(e-1,3)+pn*$(e-1,2)},easeInOutBack:function(e){return e<.5?$(2*e,2)*((mn+1)*2*e-mn)/2:($(2*e-2,2)*((mn+1)*(e*2-2)+mn)+2)/2},easeInElastic:function(e){return e===0?0:e===1?1:-$(2,10*e-10)*un((e*10-10.75)*gn)},easeOutElastic:function(e){return e===0?0:e===1?1:$(2,-10*e)*un((e*10-.75)*gn)+1},easeInOutElastic:function(e){return e===0?0:e===1?1:e<.5?-($(2,20*e-10)*un((20*e-11.125)*_n))/2:$(2,-20*e+10)*un((20*e-11.125)*_n)/2+1},easeInBounce:function(e){return 1-vn(1-e)},easeOutBounce:vn,easeInOutBounce:function(e){return e<.5?(1-vn(1-2*e))/2:(1+vn(2*e-1))/2}},bn=`scroll`,xn=`gesture`,Sn={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},Cn=(r={})=>({start:i=>{let{zoomWheelConstant:a,enableWheel:o,enableClickToZoom:s,enableDoubleTapZoom:d,ignoreSingleFingerTouch:f,enablePanOnWait:p,panOnWaitDelay:m,parentElement:h,requireMetaKeyForWheelZoom:g,wheelInExploreModeOnly:_,enablePanMomentum:v,panMomentumStrength:y,panBounceStiffness:b,panBounceDamping:x,panTimeConstant:S,panPadding:C}={...Sn,...r},w={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:n(5),multiTouch:{distance:0},hasMovedSincePress:!1},T=[],E={active:!1,vx:0,vy:0},ee=null,D,O=0,k,A;function j(){T.length=0}function M(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 N(){E.active=!1,E.vx=0,E.vy=0}function te(){ee=null,D=void 0}function P(){if(!d||i.mode!==`explore`||w.hasMovedSincePress||!A)return!1;let e=performance.now();if(W&&e-W>250)return!1;let t=k&&O>0&&e-O<=350&&V(k,A)<=100;if(O=e,k={...A},!t)return!1;let n=i.isViewportAtHomeZoomLevel({tolerance:.1})?i.getHomeTarget({cover:!0}):i.getHomeTarget();return i.transitionManager.goToRegion(n,{transition:{duration:500,easing:yn.easeInOutQuad}}),O=0,k=void 0,!0}function ne(e,t,n,r){let i=Math.min(n,32)/1e3,a=t*1e3,o=e+a*i,s=o-r,c=-b*s-x*a,l=a+c*i;return{position:o+.5*c*i*i,velocity:l/1e3}}function F(e){i.transitionManager.customTransition(t=>{t.from=n(i.target),t.to=e,t.elapsed_time=0,t.total_time=0,t.timingFunction=yn.easeInOutExpo,t.done=!1})}function re(){if(T.length<2)return null;let e=performance.now(),t=T[T.length-1];if(e-t.t>60)return null;let n=T[0];for(let e=T.length-2;e>=0&&(n=T[e],!(t.t-n.t>=80));e--);let r=t.t-n.t;return r<=0||Math.hypot(t.x-n.x,t.y-n.y)*i.getScaleFactor()<5?null:{vx:(t.x-n.x)/r,vy:(t.y-n.y)/r}}function ie(){if(!v||!w.hasMovedSincePress||T.length<2)return!1;let e=re();if(!e)return!1;let t=Math.max(0,y),n=e.vx*t,r=e.vy*t;return Math.hypot(n,r)*i.getScaleFactor()<.08?!1:(E.active=!0,E.vx=n,E.vy=r,i.updateNextFrame(),!0)}function I(){if(!w.isPressing){te(),R();return}let e=i.mode===`explore`?ie():!1;i.mode===`explore`&&!e&&i.world.constraintBounds(),w.isPressing=!1,w.hasMovedSincePress=!1,j(),te(),R()}function L(){if(!w.isPressing){te(),R();return}if(N(),i.mode===`explore`){let e=i.transitionManager.getPendingTransition(),t=ee||(e&&e.total_time===0&&!e.done?e.to:i.target);i.transitionManager.constrainTarget(t,{origin:D,panPadding:C})}w.isPressing=!1,w.hasMovedSincePress=!1,j(),te(),R()}i.world.activatedEvents.push(`onMouseUp`,`onMouseDown`,`onMouseMove`,`onTouchStart`,`onTouchEnd`,`onTouchCancel`,`onTouchMove`,`onContextMenu`);function R(){oe=0,G=``,K(),K(void 0,`notice`),W=0,A=void 0}function z(){I()}function B(e){if(G===xn&&e.touches.length<2){L();return}e.touches.length===0&&(P(),I())}function H(e){if(G===xn){L();return}I()}function ae(e){if(e.which>1){w.isPressing=!1;return}i.mode===`explore`&&(e.preventDefault(),N(),j(),w.hasMovedSincePress=!1,w.pointerStart.x=e.atlas.x,w.pointerStart.y=e.atlas.y,M(i.target[1],i.target[2]),i.transitionManager.stopTransition(),w.isPressing=!0)}function U(){I()}let oe=0,W=0,G=``;function se(e){if(i.mode===`explore`){if(N(),j(),w.hasMovedSincePress=!1,e.atlasTouches.length===1&&(W=performance.now(),f==0&&e.preventDefault(),w.pointerStart.x=e.atlasTouches[0].x,w.pointerStart.y=e.atlasTouches[0].y,A={x:e.atlasTouches[0].x,y:e.atlasTouches[0].y},M(i.target[1],i.target[2])),e.atlasTouches.length===2){G=xn,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,oe=V({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY}),j(),te()}i.transitionManager.stopTransition(),w.isPressing=!0}}function K(e,t=`intent`){h&&(h.dataset[t]=e)}function ce(e){let r=null,a=null,o=0,s=!1;if(w.isPressing&&e.touches.length===2&&(r=(e.touches[0].clientX+e.touches[1].clientX)/2,a=(e.touches[0].clientY+e.touches[1].clientY)/2,o=V({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY})),K(G),w.isPressing&&e.touches.length===1){if(p&&(performance.now()-W<m&&G==``&&(G=bn),G==``&&(G=`pan`)),K(G),G==``&&f==1||G==bn){K(`require-two-finger`,`notice`);return}let t=e.touches[0];r=t.clientX,a=t.clientY,s=!0}if(r!==null&&a!==null){let d=i.getRendererScreenPosition();if(d){let{x:f,y:p}=i.viewerToWorld(r-d.x,a-d.y),m=o&&oe?o/oe:1,h=l(n(i.target),t(u(w.pointerStart.x-f,w.pointerStart.y-p),c(1/m,f,p)),w.mousemoveBuffer);if(s){let e=T[T.length-1];e&&(e.x!==h[1]||e.y!==h[2])&&(w.hasMovedSincePress=!0),M(h[1],h[2])}e.touches.length===2&&(ee=n(h),D={x:f,y:p}),F(h)}oe=o}G==`pan`&&e.preventDefault()}function le(e){if(w.isPressing){let t=i.getRendererScreenPosition();if(t){let{x:r,y:a}=i.viewerToWorld(e.clientX-t.x,e.clientY-t.y),o=l(n(i.target),u(w.pointerStart.x-r,w.pointerStart.y-a),w.mousemoveBuffer),s=T[T.length-1];s&&(s.x!==o[1]||s.y!==o[2])&&(w.hasMovedSincePress=!0),M(o[1],o[2]),F(o)}}}function ue(e){i.mode===`explore`&&i.world.zoomIn(e.atlas)}function de(e){if(_&&i.mode!==`explore`)return;N();let t=1+(0,cn.default)(e).spinY/a;i.world.zoomTo(t,e.atlas,!0)}function q(e){return g&&e.metaKey==0?(K(`meta-required`,`notice`),e.stopPropagation(),!1):!0}i.world.addEventListener(`mouseup`,z),i.world.addEventListener(`touchend`,B),i.world.addEventListener(`touchcancel`,H),i.world.addEventListener(`touchstart`,se),i.world.addEventListener(`mousedown`,ae),window.addEventListener(`touchend`,U),window.addEventListener(`mouseup`,U),window.addEventListener(`mousemove`,le),h&&h.addEventListener(`touchmove`,ce),s&&(i.world.activatedEvents.push(`onClick`),i.world.addEventListener(`click`,ue)),o&&(i.world.activatedEvents.push(`onWheel`),g&&h?.addEventListener(`wheel`,q,{passive:!0,capture:!0}),i.world.addEventListener(`wheel`,de));let fe=i.world.addLayoutSubscriber((t,n)=>{if(t===`zone-changed`&&(N(),i.transitionManager.hasPending()||i.transitionManager.constrainBounds()),t===`zoom-to`&&n&&(N(),i.transitionManager.zoomTo(n.factor,{origin:n.point,stream:n.stream})),t===`go-home`){N();let e=n.immediate?{duration:0}:void 0,t=n?.paddingPx,r=i.getHomeTarget({paddingPx:t});i.transitionManager.goToRegion(r,{transition:e})}if(t===`goto-region`&&n){N();let t=n.immediate?{duration:0}:{};if(n.paddingPx!==void 0){let r=i.getHomeTarget({position:e.singleBox(n.width,n.height,n.x,n.y),paddingPx:n.paddingPx});i.transitionManager.goToRegion(r,{transition:t})}else i.transitionManager.goToRegion(n,{transition:t})}t===`constrain-bounds`&&(N(),i.transitionManager.constrainBounds({panPadding:C,transition:n?.immediate?{duration:0}:void 0}))}),pe=i.registerHook(`useFrame`,e=>{if(!E.active)return;let t=Math.exp(-e/Math.max(1,S)),r=i.target[3]-i.target[1],a=i.target[4]-i.target[2],o=l(n(i.target),u(E.vx*e,E.vy*e),w.mousemoveBuffer),[,s]=i.constrainBounds(o,{panPadding:C}),c=o[1]!==s[1],d=o[2]!==s[2],f=c?E.vx:E.vx*t,p=d?E.vy:E.vy*t,m=n(o);if(c){let t=ne(i.target[1],E.vx,e,s[1]);m[1]=t.position,m[3]=t.position+r,f=t.velocity}else m[1]=i.target[1]+f*e,m[3]=m[1]+r;if(d){let t=ne(i.target[2],E.vy,e,s[2]);m[2]=t.position,m[4]=t.position+a,p=t.velocity}else m[2]=i.target[2]+p*e,m[4]=m[2]+a;E.vx=f,E.vy=p;let[,h]=i.constrainBounds(m,{panPadding:C}),g=Math.hypot(m[1]-h[1],m[2]-h[2])*i.getScaleFactor(),_=Math.hypot(E.vx,E.vy)*i.getScaleFactor();if(g<=.5&&_<=.02){N(),F(h);return}F(m),i.updateNextFrame()});return()=>{N(),i.world.removeEventListener(`mouseup`,z),i.world.removeEventListener(`touchend`,B),i.world.removeEventListener(`touchcancel`,H),i.world.removeEventListener(`touchstart`,se),i.world.removeEventListener(`mousedown`,ae),window.removeEventListener(`touchend`,U),window.removeEventListener(`mouseup`,U),window.removeEventListener(`mousemove`,le),h&&(h.removeEventListener(`touchmove`,ce),h.removeEventListener(`wheel`,q,{passive:!0,capture:!0})),s&&i.world.removeEventListener(`click`,ue),o&&i.world.removeEventListener(`wheel`,de),pe(),fe()}},updatePosition(){}});var wn=ie(sn(),1);const Tn={scrollWheelFactor:1,scrollLoadAheadFactor:1,clickDragThresholdPx:6,touchScrollMomentumStrength:1.4,touchScrollMomentumMinStartPxPerMs:.04},En=.8,Dn=.08;let On=1;const kn=new WeakMap;function An(e){return{x:e.x,y:e.y,width:e.width,height:e.height}}function jn(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 Mn=(e={})=>({start(t){let n=On++;kn.set(t,n);let r=()=>kn.get(t)===n,{scrollWheelFactor:i,scrollLoadAheadFactor:a,clickDragThresholdPx:o,touchScrollMomentumStrength:s,touchScrollMomentumMinStartPxPerMs:c,enablePanMomentum:l=!0,panMomentumStrength:u=1,panTimeConstant:d=325}={...Tn,...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,O=null,k=!1,A=null,j=!1,M=!1,N=0,te,P=!0,ne=-1,F=-1,re=-1,ie=-1,I=-1,L=[],R={active:!1,vy:0},z=Cn({...e,enableWheel:!0,enableClickToZoom:!1,wheelInExploreModeOnly:!0}),B=e=>{t.world.activatedEvents.indexOf(e)===-1&&t.world.activatedEvents.push(e)},V=e=>{h=e,t.mode=e===`zone-active`?`explore`:`sketch`},H=()=>{L.length=0},ae=e=>{let t=performance.now(),n=L[L.length-1];if(n&&n.y===e){n.t=t;return}for(L.push({y:e,t});L.length>1&&t-L[0].t>140;)L.shift()},U=()=>{R.active=!1,R.vy=0},oe=()=>{if(L.length<2)return null;let e=L[L.length-1],t=L[0];for(let n=L.length-2;n>=0&&(t=L[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},W=({strengthMultiplier:e=1,minStartPxPerMs:n=Dn}={})=>{if(!l||L.length<2)return!1;let r=oe();if(r===null)return!1;let i=r*Math.max(0,u)*Math.max(0,e);return Math.abs(i)*t.getScaleFactor()<n?!1:(R.active=!0,R.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(`:`)}},q=()=>{if(!r()||x||h!==`scroll-mode`||g||M||_||t.world.hasActiveZone())return;let e=de();if(!e){performance.now()<C&&t.updateNextFrame();return}e!==S&&(S=e,N=ue(),he(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(!P&&te&&ne===e&&F===n&&re===i&&ie===a&&I===o)return te;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 te=c,P=!1,ne=e,F=n,re=i,ie=a,I=o,te},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}},me=e=>{if(e.recalculateBounds(),e.points[0]!==0)return pe(e.points[2])},he=e=>{let n=pe(e);if(!n)return;N=n.y;let r=t.getViewport();!t.transitionManager.hasPending()&&!K(r,n)||(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame())},ge=e=>{let n=pe(e);return n?(N=n.y,t.transitionManager.goToRegion(n),t.updateNextFrame(),!0):!1},_e=()=>{if(h!==`scroll-mode`||g||_||t.world.hasActiveZone())return;let e=t.getViewport(),n=pe(e.y);n&&(N=n.y,K(e,n)&&(t.transitionManager.hasPending()&&t.transitionManager.stopTransition(),t.setViewport(n),t.updateNextFrame()))},ve=(e,n)=>{for(let r of t.world.zones)if(r.recalculateBounds(),jn(r,e,n))return r},ye=e=>{r()&&(U(),H(),x=!0,b||(b=An({...t.getViewport(),y:N})),v=!0,t.goToZone(e)?V(`zone-active`):v=!1)},be=()=>{if(!r())return;let e=ge(b?b.y:N);b=void 0,_=e,e||(_=!1,g=!1,he(N)),t.updateNextFrame()},xe=()=>{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<En&&s<En},Se=()=>{r()&&h===`zone-active`&&(U(),H(),V(`scroll-mode`),g=!0,t.deselectZone(),be())},Ce=(e,t)=>{U(),H(),x=!0,M=!0,j=!1,ee=e,D=t,T=t,E=N,ae(N)},we=(e,n)=>{if(!M)return!1;Math.hypot(e-ee,n-D)>o&&(j=!0);let r=(n-T)/Math.max(1e-4,t.getScaleFactor());return he(E-r),ae(N),!0},Te=({allowMomentum:e=!0,momentumStrengthMultiplier:t=1,momentumMinStartPxPerMs:n=Dn}={})=>{let r=M,i=j;return M=!1,j=!1,r?(e&&h===`scroll-mode`&&!_?W({strengthMultiplier:t,minStartPxPerMs:n}):U(),H(),{releasedDrag:!0,tapSuppressed:i}):(H(),{releasedDrag:!1,tapSuppressed:i})},Ee=()=>{M=!1,j=!1,H(),U()},De=()=>{O=null,k=!1,A=null,j=!1},J=e=>{if(!r()||(G(),j||_))return;if(h===`scroll-mode`){let t=ve(e.x,e.y);t&&ye(t.id);return}let n=t.world.getActiveZone();(!n||!jn(n,e.x,e.y))&&Se()},Oe=e=>{r()&&e.atlas&&J(e.atlas)},ke=e=>{if(!r())return;if(G(),_){e.stopPropagation();return}if(h!==`scroll-mode`)return;U(),x=!0,e.stopPropagation();let n=((0,wn.default)(e).pixelY||e.deltaY||0)/Math.max(1e-4,t.getScaleFactor())*i;he(N+n)},Ae=e=>{r()&&(G(),!(h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),Ce(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},je=e=>{r()&&(G(),!(!M||h!==`scroll-mode`||_||!e.atlas)&&(e.stopPropagation(),we(typeof e.clientX==`number`?e.clientX:0,e.clientY)))},Y=()=>{r()&&Te()},Me=e=>{if(!r())return;if(G(),h===`zone-active`){if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){De();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,j=!1,ee=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){De(),Ee();return}let t=e.touches[0],n=e.atlasTouches[0];O=n.id,k=!0,A={x:n.x,y:n.y},Ce(t.clientX,t.clientY)},X=e=>{if(!r())return;if(G(),h===`zone-active`){if(!k)return;if(!e.atlasTouches||e.atlasTouches.length!==1||e.touches.length!==1){De();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-ee,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){De(),Ee();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},we(n.clientX,n.clientY)},Ne=e=>{if(!r())return;if(G(),h===`zone-active`){let t=A,n=k&&!j&&e.touches.length===0;De(),t&&n&&J(t);return}if(h!==`scroll-mode`)return;if(e.preventDefault(),e.stopPropagation?.(),e.touches.length>0){De(),Ee();return}let t=A,n=Te({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c});De(),t&&!n.tapSuppressed&&J(t)},Pe=e=>{if(r()){if(G(),h===`zone-active`){De();return}h===`scroll-mode`&&(e.preventDefault(),e.stopPropagation?.(),De(),Ee())}},Z=()=>{if(r()){if(h===`zone-active`){De();return}Te({momentumStrengthMultiplier:s,momentumMinStartPxPerMs:c}),De()}},Q=e=>{r()&&e.key===`Escape`&&Se()};B(`onClick`),B(`onWheel`),B(`onMouseDown`),B(`onMouseMove`),B(`onMouseUp`),B(`onTouchStart`),B(`onTouchMove`),B(`onTouchEnd`),B(`onTouchCancel`),t.world.addEventListener(`click`,Oe),t.world.addEventListener(`wheel`,ke),t.world.addEventListener(`mousedown`,Ae),t.world.addEventListener(`mousemove`,je),t.world.addEventListener(`mouseup`,Y),t.world.addEventListener(`touchstart`,Me),t.world.addEventListener(`touchmove`,X),t.world.addEventListener(`touchend`,Ne),t.world.addEventListener(`touchcancel`,Pe),window.addEventListener(`mouseup`,Y),window.addEventListener(`touchend`,Z),window.addEventListener(`touchcancel`,Pe),window.addEventListener(`keydown`,Q),t.manualHomePosition=!0,V(`scroll-mode`),N=ue(),q();let Fe=z.start(t),Ie=t.registerHook(`useFrame`,e=>{if(!R.active)return;if(!r()||h!==`scroll-mode`||g||_||M||t.world.hasActiveZone()){U();return}let n=Math.exp(-e/Math.max(1,d));if(R.vy*=n,Math.abs(R.vy)*t.getScaleFactor()<=.02){U();return}let i=N;if(he(N+R.vy*e),Math.abs(N-i)<=.01){U();return}t.updateNextFrame()}),Le=t.registerHook(`useAfterFrame`,()=>{if(r()){if(G(),_e(),q(),_&&!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=An(t),N=t.y)}y=void 0}g||xe()&&Se()}}),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:N;t.world.zones.length&&e===0&&(N=ue()),he(N),f()}if(e===`zone-changed`){if(t.world.hasActiveZone()){U(),H(),x=!0;let e=t.world.getActiveZone();!v&&e?y=e.id:b||(b=An({...t.getViewport(),y:N})),v=!1,V(`zone-active`);return}let e=h===`zone-active`;if(y=void 0,V(`scroll-mode`),_)return;e?(g=!0,be()):g||he(N)}}});return()=>{U(),H(),Fe(),Ie(),Le(),Re(),t.world.removeEventListener(`click`,Oe),t.world.removeEventListener(`wheel`,ke),t.world.removeEventListener(`mousedown`,Ae),t.world.removeEventListener(`mousemove`,je),t.world.removeEventListener(`mouseup`,Y),t.world.removeEventListener(`touchstart`,Me),t.world.removeEventListener(`touchmove`,X),t.world.removeEventListener(`touchend`,Ne),t.world.removeEventListener(`touchcancel`,Pe),window.removeEventListener(`mouseup`,Y),window.removeEventListener(`touchend`,Z),window.removeEventListener(`touchcancel`,Pe),window.removeEventListener(`keydown`,Q),r()&&(kn.delete(t),t.manualHomePosition=m,t.mode=p)}},updatePosition(){}}),Nn=m.createContext(null);Nn.displayName=`Atlas`;const Pn=m.createContext(null);Pn.displayName=`Bounds`;const Fn=m.createContext(`explore`);Fn.displayName=`Mode`;const In=()=>v(Fn);function Ln(e){return O(Fn.Provider,{value:e.mode,children:e.children})}var Rn=class{constructor(e){W(this,`runtime`,void 0),W(this,`pendingTransition`,void 0),W(this,`lastZoomTo`,null),W(this,`isConstraining`,!1),W(this,`lastGoToRegion`,null),this.runtime=e,this.pendingTransition={from:n(5),to:n(5),elapsed_time:0,done:!0,total_time:0,timingFunction:yn.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=n(this.runtime.target),this.pendingTransition.to=n(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:yn.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:yn.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:yn.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:yn.easeOutQuart,constrain:!1,callback:()=>{this.isConstraining=!1}}),this.runtime.updateNextFrame();return}this.isConstraining=!1}applyTransition(e,t,r,{stream:i}={}){this.pendingTransition.from=n(this.runtime.target),this.pendingTransition.to=e,i||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=t?.duration===void 0?r?.duration===void 0?1e3:r.duration:t.duration,this.pendingTransition.constrain=t?.constrain===void 0?r?.constrain===void 0?!1:r.constrain:t.constrain,this.pendingTransition.timingFunction=t?.easing||r?.easing||yn.easeInOutSine}goToRegion(t,{transition:n}={}){this.lastGoToRegion={target:t,options:{transition:n}};let r=this.runtime.clampRegion(t);this.applyTransition(e.singleBox(r.width,r.height,r.x,r.y),n,{duration:1e3,easing:yn.easeOutExpo,constrain:!0,callback:()=>{this.lastGoToRegion=null}}),this.runtime.updateNextFrame()}};Number.MIN_VALUE+1;var zn=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(t,r,i,a=[],o){W(this,`id`,Ce()),W(this,`ready`,!1),W(this,`readyCycle`,0),W(this,`readyReason`,`initial`),W(this,`readyTimestamp`,void 0),W(this,`renderer`,void 0),W(this,`world`,void 0),W(this,`target`,void 0),W(this,`homePosition`,void 0),W(this,`manualHomePosition`,void 0),W(this,`manualFocalPosition`,void 0),W(this,`focalPosition`,void 0),W(this,`homePaddingPx`,void 0),W(this,`transitionManager`,void 0),W(this,`aggregate`,void 0),W(this,`transformBuffer`,n(500)),W(this,`lastTarget`,n(5)),W(this,`zoomBuffer`,n(5)),W(this,`logNextRender`,!1),W(this,`pendingUpdate`,!0),W(this,`isCommitting`,!1),W(this,`firstRender`,!0),W(this,`lastTime`,void 0),W(this,`stopId`,void 0),W(this,`mode`,`explore`),W(this,`controllers`,[]),W(this,`controllersRunning`,!1),W(this,`controllerStopFunctions`,[]),W(this,`maxScaleFactor`,1),W(this,`_viewerToWorld`,{x:0,y:0}),W(this,`_lastGoodScale`,1),W(this,`debugFrame`,0),W(this,`debugSubscribers`,new Set),W(this,`hooks`,{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]}),W(this,`fpsLimit`,void 0),W(this,`options`,void 0),W(this,`hookOptions`,{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}}),W(this,`_viewport`,{x:0,y:0,width:0,height:0}),W(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}),W(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?l(r,i,this.transformBuffer):r;this.renderer.prepareLayer(n,n.__parent&&i?l(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=t,this.world=r,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1,...o||{}},this.target=e.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=e.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new Rn(this),this.aggregate=s(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=a,this.render(this.lastTime),this.startControllers(),this.homePaddingPx=void 0}setHomePosition(t){this.homePosition.set(e.projection(t||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(t,n){if(!this.manualFocalPosition){let t=this.width,n=this.height,r=Math.min(t,n),i=this.x+0,a=this.y+0;if(t<n){let t=this.height-this.width;this.focalPosition=e.projection({x:i,y:a+t/2,width:r-0,height:r-0}),this.pendingUpdate=!0}else{let t=this.width-this.height;this.focalPosition=e.projection({x:i+t/2,y:a,width:r-0,height:r-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:r=!1}={}){let{minX:i,maxX:a,minY:o,maxY:s}=this.getBounds({target:e,padding:t}),c=!1,l=r?e:n(e),u=Math.round(e[3]-e[1]),d=Math.round(e[4]-e[2]);return i>e[1]&&(c=!0,l[1]=i,l[3]=i+u),o>e[2]&&(c=!0,l[2]=o,l[4]=o+d),a<e[1]&&(c=!0,l[1]=a,l[3]=a+u),s<e[2]&&(c=!0,l[2]=s,l[4]=s+d),[c,l]}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=Ne(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:r=0,ref:i=!1}={}){let a=!1,o=i?e:n(e),{scaleFactor:s,minScale:u,maxScale:d}=this.getZoomConstraintState(o),f=Math.max(u,Math.min(d,s));if(Math.abs(f-s)>1e-6){let e=t||{x:o[1]+(o[3]-o[1])/2,y:o[2]+(o[4]-o[2])/2},n=l(o,c(s/f,e.x,e.y),this.zoomBuffer);this.copyStrandValues(o,n),a=!0}let[p]=this.constrainBounds(o,{ref:!0,panPadding:r});return[a||p,o]}getZoomedPosition(e,{origin:t,fromPos:n}){let r=n||this.target,{scaleFactor:i,minScale:a,maxScale:o}=this.getZoomConstraintState(r),s=1/e,u=i*s;s<1?u<a&&(e=i/a):u>o&&(e=i/o);let d=l(r,c(e,t?t.x:r[1]+(r[3]-r[1])/2,t?t.y:r[2]+(r[4]-r[2])/2),this.zoomBuffer),f=this.world.hasActiveZone()?0:100;return this.constrainBounds(d,{ref:!0,panPadding:f}),d}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(n,r,i,a){let c=e.singleBox(i,a,n,r);return o(c,t(s(this.getScaleFactor()),u(-this.target[1],-this.target[2]))),{x:c[1],y:c[2],width:c[3]-c[1],height:c[4]-c[2],strand:c}}setScale(e,t){o(this.target,c(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(t,n={}){let r=this.world.getZoneById(t);if(!r||(r.recalculateBounds(),r.points[0]===0))return!1;this.world.selectZone(t);let i=this.getHomeTarget({position:r.points,paddingPx:n.paddingPx});return n.immediate?(this.transitionManager.stopTransition(),this.setViewport(i),this.constrainBounds(this.target,{ref:!0}),this.updateControllerPosition(),this.pendingUpdate=!0,!0):(this.transitionManager.applyTransition(e.singleBox(i.width,i.height,i.x,i.y),void 0,{duration:1e3,easing:yn.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 Bn={margin:0};var Vn=class{constructor(e,t={}){W(this,`id`,void 0),W(this,`config`,void 0),W(this,`points`,void 0),W(this,`objects`,void 0),Array.isArray(e)?(this.id=e.map(e=>e.id).join(`$$`),this.config={...Bn,...t},this.objects=[...e]):(this.id=e.id,this.config={...Bn,margin:typeof e.margin==`number`?e.margin:Bn.margin,x:e.x,y:e.y,width:e.width,height:e.height},this.objects=[...e.objects||[]]),this.points=n(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 Hn;if(typeof performance==`object`&&typeof performance.now==`function`){let e=performance;Hn=()=>e.now()}else{let e=Date,t=e.now();Hn=()=>e.now()-t}const Un=typeof A==`function`?A:typeof A?.default==`function`?A.default:null;var Wn=class{constructor(e){W(this,`world`,void 0),W(this,`zone`,void 0),W(this,`isRegistered`,!1),W(this,`directWorldObjects`,[]),this.world=e,this.zone=new Vn({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 Tt&&(this.registerDirectWorldObject(e),this.world.appendChild(e))}removeChild(e){e instanceof Tt&&(this.unregisterDirectWorldObject(e),this.world.removeChild(e))}insertBefore(e,t){if(e instanceof Tt){if(this.registerDirectWorldObject(e),t instanceof Tt){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 Gn(e,t){if(e instanceof Et&&t instanceof Wn){t.attachToWorld(e);return}if(e instanceof Wn){e.appendChild(t);return}e&&e.appendChild&&t&&e.appendChild(t)}function Kn(e,t){if(e instanceof Et&&t instanceof Wn){t.unmount();return}if(e instanceof Wn){e.removeChild(t);return}e&&e.removeChild&&t&&e.removeChild(t)}function qn(e,t){if(t instanceof Wn){t.unmount();return}return Kn(e.world,t)}function Jn(e,t,n){if(t instanceof Wn){t.attachToWorld(e.world);return}return Yn(e.world,t,n)}function Yn(e,t,n){if(e&&e instanceof zn&&(e=e.world),!(e instanceof Et&&t instanceof Wn)){if(e instanceof Wn){e.insertBefore(t,n);return}e&&e.insertBefore&&e.insertBefore(t,n)}}function Xn(e,t,n){if(n&&(e.applyProps&&e.applyProps(n),e instanceof we))for(let r of I){let i=r.slice(2).toLowerCase();n[r]!==t[r]&&(t[r]&&e.removeEventListener(i,t[r]),e.addEventListener(i,n[r]))}}function Zn(e,t){let n=Object.keys(t),r=!1;for(let t of n)if(I.indexOf(t)!==-1){let n=R[t];if(n){if(e.activatedEvents.indexOf(n)!==-1)continue;r=!0,e.activatedEvents.push(n)}}r&&e.triggerEventActivation()}const Qn=new Map,$n={};function er(e,{args:t=[],...n},r,i,a){if(!(r instanceof zn)&&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=Et.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 J;break;case`shape`:o=new je;break;case`worldObject`:case`world-object`:o=new Tt;break;case`zone`:o=new Wn(s);break;case`worldImage`:case`world-image`:o=new Y;break;case`texture`:o=new et;break;case`compositeImage`:case`composite-image`:o=new $e({id:n.id,width:n.width,height:n.height,images:[],renderOptions:n.renderOptions});break;case`tiledImage`:case`tiled-image`:o=X.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 St({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 Qt,o.text=n.children;break;default:return}return Zn(s,n),Xn(o,{},n),o}function tr(e,t){if(t instanceof Et)e.world=t;else if(t instanceof Wn)t.attachToWorld(e.world);else if(t instanceof Tt)e.world.appendChild(t);else if(t)throw Error(`Invalid root`)}let nr=0;const rr=Un?Un({unstable_now:Hn,now:Hn,createInstance:er,removeChild:Kn,appendChild:Gn,appendInitialChild:Gn,insertBefore:Yn,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:tr,removeChildFromContainer:qn,createTextInstance(){},insertInContainerBefore:Jn,prepareUpdate(e,t,n,r,i){return Zn(i.world,r),r},commitUpdate(e,t,n,r,i){let a=r,o=n;typeof a==`string`&&(a=n),e.applyProps&&a&&Xn(e,o,a)},finalizeInitialChildren(e){return e?.__handlers},getChildHostContext(){return $n},getRootHostContext(){return $n},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:E,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,setCurrentUpdatePriority(e){nr=e},getCurrentUpdatePriority(){return nr},resolveUpdatePriority(){if(nr!==0)return nr;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;rr&&rr.injectIntoDevTools();function ir(e,t){let n=Qn.get(e);if(n){if(!rr)return;rr.updateContainer(null,n,null,()=>{Qn.delete(e),t&&t(e)})}}const ar={render(e,t){let n=Qn.get(t);if(rr)if(n)rr.updateContainer(e,n,null);else{let n=rr.createContainer(t,0,null,!1,null,``,()=>{},null);rr.updateContainer(e,n,null),Qn.set(t,n)}},unmountComponentAtNode(e,t){ir(e,t)}},or=typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)?p.useLayoutEffect:p.useEffect,sr=m.memo(({children:e,setIsReady:t,onCreated:n,bounds:r,preset:i,mode:a=`explore`,interactionMode:o=`popmotion`})=>{let s=C(new WeakSet);return y(()=>{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]),or(()=>{if(i){let t=i.runtime;a!==t.mode&&(t.mode=a),ar.render(O(m.StrictMode,{children:O(Pn.Provider,{value:r,children:O(Fn.Provider,{value:a,children:O(Nn.Provider,{value:i,children:e})})})}),t)}},[i,a,r,e]),or(()=>{if(i){let e=i.runtime;return()=>{ar.unmountComponentAtNode(e)}}return()=>{}},[i]),null}),cr=m.forwardRef((e,t)=>O(`div`,{...e,ref:t,part:e.className})),lr=()=>v(Nn),ur=()=>{let e=lr();return e?e.runtime:void 0},dr=new Set,fr=new Map,pr=new Map,mr=[];let hr,gr,_r={activeCandidateId:void 0,selectedRuntimeId:void 0,candidates:[],runtimes:[]};function vr(){let e=Array.from(fr.entries()).map(([e,t],n)=>({id:e,runtime:t.runtime,preset:t.preset,label:`Atlas ${n+1} (${e.slice(0,6)})`}));_r={activeCandidateId:hr,selectedRuntimeId:gr,candidates:[...mr],runtimes:e}}function yr(){vr();for(let e of dr)e()}function br(){if(gr&&fr.has(gr))return;let e=fr.keys().next();gr=e.done?void 0:e.value}function xr(){hr&&pr.has(hr)||(hr=mr[0])}function Sr(e){return dr.add(e),()=>{dr.delete(e)}}function Cr(){return _r}function wr(e){let t=e.runtime.id;return fr.set(t,{runtime:e.runtime,preset:e}),br(),yr(),()=>{Tr(t)}}function Tr(e){fr.delete(e),br(),yr()}function Er(e){return pr.get(e.id)||mr.push(e.id),pr.set(e.id,e),xr(),!gr&&e.runtimeId&&fr.has(e.runtimeId)&&(gr=e.runtimeId),br(),yr(),()=>{Or(e.id)}}function Dr(e,t){let n=pr.get(e);n&&(n.runtimeId=t,!gr&&t&&fr.has(t)&&(gr=t),br(),yr())}function Or(e){pr.delete(e);let t=mr.indexOf(e);t!==-1&&mr.splice(t,1),xr(),yr()}function kr(e){if(!e){gr=void 0,br(),yr();return}fr.has(e)&&(gr=e,yr())}function Ar(e){if(e)return fr.get(e)}vr();function jr(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)jr(n,t);return t}return t.push(e),t}function Mr(e,t,n,r){if(e){if(e instanceof Tt){if(Array.isArray(e.layers))for(let n of e.layers)Mr(n,t,e.id,r);return}if(e instanceof $e){let r=e.id,i=new Set([...e.allImages,...e.images]);for(let e of i)Mr(e,t,n,r);return}if(e instanceof Y||e instanceof X){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 Nr(e){let t=[],n=e.getObjects();for(let e of n)e&&Mr(e,t,e.id,void 0);return t}function Pr(e){let t=jr(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 Fr(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 Ir(e,t=[]){if(!e)return t;if(Array.isArray(e.renderers)){for(let n of e.renderers)Ir(n,t);return t}return t.push(e),t}function Lr(e,t){if(e){if(e instanceof Y||e instanceof X){t.push(e);return}if(e instanceof $e){let n=new Set([...e.allImages,...e.images]);for(let e of n)Lr(e,t);return}if(e instanceof Tt&&Array.isArray(e.layers))for(let n of e.layers)Lr(n,t)}}function Rr(e){let t=[],n=e.getObjects();for(let e of n)e&&Lr(e,t);return t}function zr(e){let t=Rr(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=Ir(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 Br(e,t,n){if(E.startsWith(`18.`)||E.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=Vr(e,r,i,n.current),n.current.render(t)}else{let r=await import(`react-dom`);n.current=Vr(e,r.default?r.default.render:r.render,r.default?r.default.unmountComponentAtNode:r.unmountComponentAtNode,n.current),n.current.render(t)}}function Vr(e,t,n,r){return r||{unmounted:!1,render(n){this.unmounted||t(n,e)},unmount(){this.unmounted||(this.unmounted=!0,n(e))}}}const Hr=[`Overview`,`World`,`Inspector`,`Events`,`Images`,`Actions`];let Ur=0;const Wr=e=>{let t=ur(),n=e.runtimeId||t?.id,r=C(null),i=C(null);return y(()=>{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}},[]),y(()=>{let t=r.current;t&&Br(t,O(Xr,{...e,runtimeId:n}),i)}),null};function Gr(e,t,n){e.push(t),e.length>n&&e.splice(0,e.length-n)}function Kr(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 qr(e){return e?.constructor?.name||e?.type||`Unknown`}function Jr(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:`${qr(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 Yr(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 Xr=({initialOpen:t=!1,bottom:n=16,right:r=16,zIndex:i=1e3,maxEvents:a=500,maxRuntimeEvents:o=1e3,runtimeId:s,className:c,style:l})=>{let u=C(`devtools-${++Ur}`),[d,f]=w(t),[p,m]=w(`Overview`),[h,g]=w(!1),[_,v]=w(!1),[b,x]=w(null),[S,E]=w(`explore`),[ee,A]=w(``),[j,M]=w(!1),[N,te]=w(``),[P,ne]=w(`all`),[,F]=w(0),re=C([]),ie=C([]),I=C(null),L=C(!1),R=()=>{L.current||(L.current=!0,requestAnimationFrame(()=>{L.current=!1,F(e=>e+1)}))},z=s;y(()=>Er({id:u.current,runtimeId:z}),[]),y(()=>{Dr(u.current,z)},[z]);let B=T(Sr,Cr,Cr),V=B.activeCandidateId===u.current,H=B.selectedRuntimeId||z||B.runtimes[0]?.id,ae=Ar(H),U=ae?.runtime,oe=ae?.preset;if(y(()=>{H&&H!==B.selectedRuntimeId&&kr(H)},[H,B.selectedRuntimeId]),y(()=>{U&&E(U.mode)},[U?.id]),y(()=>{if(!V||!d||!U)return;let e=U.addDebugSubscriber(e=>{h||(Gr(re.current,e,o),R())}),t=U.world.addDebugSubscriber(e=>{h||(Gr(ie.current,e,a),R())});return()=>{e(),t()}},[V,d,U?.id,h,a,o]),y(()=>{if(!V||!d)return;let e=setInterval(()=>{F(e=>e+1)},250);return()=>{clearInterval(e)}},[V,d]),y(()=>{if(!_||!U||!oe?.em?.element)return;let t=oe.em.element,n=n=>{let r=t.getBoundingClientRect(),{x:i,y:a}=U.viewerToWorld(n.clientX-r.left,n.clientY-r.top),o=e.singleBox(1,1,i,a),s=U.world.getObjectsAt(o,!0),c=s[s.length-1];if(c){let e=c[1];x(e.length?e[e.length-1]:c[0])}m(`Inspector`),v(!1),R(),n.preventDefault(),n.stopPropagation()};return t.addEventListener(`pointerdown`,n,!0),()=>{t.removeEventListener(`pointerdown`,n,!0)}},[_,U?.id,oe?.em?.element]),y(()=>()=>{let e=I.current;e&&(I.current=null,e())},[]),typeof window>`u`||typeof document>`u`||!V)return null;let W=U?Jr(U):[],G=b||W[0]?.ref,se=U?Pr(U):{rendererTypes:[],canvas:[],webgl:[]},K=U?Nr(U.world):[],ce=Fr(re.current,15),le=ie.current.filter(e=>P===`all`||e.type===P),ue=(()=>{if(!U)return{width:220,height:220,rects:[],viewport:null};let e=U.world.getPoints(),t=Math.max(1,U.world.width),n=Math.max(1,U.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:U.target[1]*r,y:U.target[2]*i,width:Math.max(1,(U.target[3]-U.target[1])*r),height:Math.max(1,(U.target[4]-U.target[2])*i)}}})(),de={position:`fixed`,right:r,bottom:n,zIndex:i,color:`#eef1ff`,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace`,pointerEvents:`auto`,...l||{}},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)`},fe={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`},pe={padding:10,overflow:`auto`,fontSize:12,lineHeight:1.4,display:`grid`,gap:8},me=()=>{!U||I.current||(I.current=U.stop(),M(!0))},he=()=>{let e=I.current;I.current=null,e&&e(),M(!1)},ge=()=>{if(U){if(I.current){let e=I.current;I.current=null,e(),requestAnimationFrame(()=>{U&&(I.current=U.stop(),M(!0))});return}U.updateNextFrame()}},_e=()=>{re.current=[],ie.current=[],te(`Logs cleared`),R()};return k(`div`,{className:c,style:de,children:[d?k(`div`,{style:fe,children:[k(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:10,borderBottom:`1px solid #1f2937`},children:[O(`strong`,{style:{fontSize:12,letterSpacing:.4},children:`Atlas DevTools`}),O(`select`,{style:{marginLeft:`auto`,fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},value:H||``,onChange:e=>kr(e.target.value),children:B.runtimes.map(e=>O(`option`,{value:e.id,children:e.label},e.id))}),O(`button`,{style:q,onClick:()=>f(!1),children:`Close`})]}),O(`div`,{style:{display:`flex`,gap:6,padding:8,borderBottom:`1px solid #1f2937`,flexWrap:`wrap`},children:Hr.map(e=>O(`button`,{style:{...q,padding:`4px 8px`,borderRadius:6,background:p===e?`#334155`:`#111827`},onClick:()=>m(e),children:e},e))}),k(`div`,{style:pe,children:[U?null:O(`div`,{children:`No Atlas runtime available.`}),U&&p===`Overview`?k(D,{children:[k(`div`,{children:[`Runtime id: `,U.id]}),k(`div`,{children:[`Mode: `,U.mode]}),k(`div`,{children:[`Scale factor: `,U.getScaleFactor().toFixed(4)]}),k(`div`,{children:[`World: `,U.world.width,` x `,U.world.height]}),k(`div`,{children:[`Target: `,JSON.stringify(Kr(U.target))]}),k(`div`,{children:[`Pending update: `,String(U.pendingUpdate)]}),k(`div`,{children:[`Renderer chain: `,se.rendererTypes.join(` -> `)||`None`]}),k(`div`,{children:[`Runtime log entries: `,re.current.length]}),k(`div`,{children:[`World log entries: `,ie.current.length]})]}):null,U&&p===`World`?k(D,{children:[k(`div`,{children:[`World dimensions: `,U.world.width,` x `,U.world.height]}),k(`div`,{children:[`Viewport target: `,JSON.stringify(Kr(U.target))]}),k(`svg`,{width:ue.width,height:ue.height,style:{background:`#020617`,border:`1px solid #334155`},children:[ue.rects.map((e,t)=>O(`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}`)),ue.viewport?O(`rect`,{x:ue.viewport.x,y:ue.viewport.y,width:ue.viewport.width,height:ue.viewport.height,fill:`rgba(251, 191, 36, 0.1)`,stroke:`rgba(251, 191, 36, 1)`}):null]})]}):null,U&&p===`Inspector`?k(D,{children:[O(`div`,{style:{display:`flex`,gap:8},children:O(`button`,{style:q,onClick:()=>v(e=>!e),children:_?`Cancel Pick`:`Pick in Viewport`})}),O(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6},children:W.map(e=>O(`button`,{onClick:()=>x(e.ref),style:{width:`100%`,display:`block`,textAlign:`left`,padding:`2px 6px 2px ${6+e.depth*14}px`,background:G===e.ref?`#1e293b`:`transparent`,color:`#e2e8f0`,border:0,cursor:`pointer`,fontSize:12},children:e.label},e.key))}),G?k(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[k(`div`,{children:[`Type: `,qr(G)]}),k(`div`,{children:[`ID: `,G.id||`(none)`]}),k(`div`,{children:[`Points: `,JSON.stringify(Kr(G.points))]}),k(`div`,{children:[`Display scale: `,G.display?.scale??`(n/a)`]}),k(`div`,{children:[`Crop: `,G.cropData?JSON.stringify(G.cropData):`(none)`]}),k(`div`,{children:[`Host: `,Yr(G)]})]}):null]}):null,U&&p===`Events`?k(D,{children:[k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:()=>g(e=>!e),children:h?`Resume Log`:`Pause Log`}),O(`button`,{style:q,onClick:_e,children:`Clear`}),k(`select`,{value:P,onChange:e=>ne(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[O(`option`,{value:`all`,children:`All`}),O(`option`,{value:`trigger`,children:`Trigger`}),O(`option`,{value:`pointer`,children:`Pointer`}),O(`option`,{value:`touch`,children:`Touch`})]})]}),O(`div`,{style:{maxHeight:240,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:le.slice().reverse().map((e,t)=>k(`div`,{style:{marginBottom:4},children:[`[`,e.type,`] `,JSON.stringify(e)]},`event-${t}`))})]}):null,U&&p===`Images`?k(D,{children:[O(`div`,{children:`Renderer health`}),se.canvas.map((e,t)=>k(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:[O(`div`,{children:e.type}),k(`div`,{children:[`loadingQueue: `,e.loadingQueue]}),k(`div`,{children:[`imagesPending: `,e.imagesPending]}),k(`div`,{children:[`imagesLoaded: `,e.imagesLoaded]}),k(`div`,{children:[`tasksRunning: `,e.tasksRunning]}),k(`div`,{children:[`firstMeaningfulPaint: `,String(e.firstMeaningfulPaint)]})]},`canvas-${t}`)),se.webgl.map((e,t)=>O(`div`,{style:{border:`1px solid #1f2937`,borderRadius:6,padding:8},children:O(`div`,{children:e.type})},`webgl-${t}`)),k(`div`,{children:[`Image hosts (`,K.length,`)`]}),O(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:K.map(e=>k(`div`,{style:{marginBottom:6},children:[k(`div`,{children:[e.type,` #`,e.id]}),k(`div`,{children:[`owner: `,e.ownerId||`(none)`,` composite: `,e.compositeId||`(none)`]}),k(`div`,{children:[`canvas: `,e.canvas?JSON.stringify(e.canvas):`(none)`]}),k(`div`,{children:[`webgl: `,e.webgl?JSON.stringify(e.webgl):`(none)`]}),e.anomalies.length?k(`div`,{children:[`anomalies: `,e.anomalies.join(` | `)]}):null]},`${e.type}-${e.id}-${e.ownerId||`none`}`))}),O(`div`,{children:`Chosen composite layers by frame`}),O(`div`,{style:{maxHeight:180,overflow:`auto`,border:`1px solid #1f2937`,borderRadius:6,padding:6},children:ce.map(e=>k(`div`,{style:{marginBottom:8},children:[k(`div`,{children:[`frame `,e.frame]}),e.composites.map(t=>k(`div`,{style:{paddingLeft:8},children:[k(`div`,{children:[`composite `,t.compositeId]}),t.layers.map((e,n)=>k(`div`,{style:{paddingLeft:10},children:[e.paintType,` #`,e.paintId,` tile=`,e.tileIndex]},`${t.compositeId}-${n}`))]},`${e.frame}-${t.compositeId}`))]},`frame-${e.frame}`))})]}):null,U&&p===`Actions`?k(D,{children:[k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:j?he:me,children:j?`Resume Loop`:`Pause Loop`}),O(`button`,{style:q,onClick:ge,children:`Step Frame`}),O(`button`,{style:q,onClick:()=>U.updateNextFrame(),children:`Repaint`}),O(`button`,{style:q,onClick:()=>U.triggerResize(),children:`Trigger Resize`})]}),k(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[k(`select`,{value:S,onChange:e=>E(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[O(`option`,{value:`explore`,children:`explore`}),O(`option`,{value:`sketch`,children:`sketch`}),O(`option`,{value:`static`,children:`static`})]}),O(`button`,{style:q,onClick:()=>{U.mode=S,U.updateNextFrame()},children:`Apply Mode`})]}),k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:()=>U.world.goHome(),children:`goHome`}),O(`button`,{style:q,onClick:()=>U.world.zoomIn(),children:`zoomIn`}),O(`button`,{style:q,onClick:()=>U.world.zoomOut(),children:`zoomOut`}),O(`button`,{style:q,onClick:()=>U.world.constraintBounds(!0),children:`constrain-bounds`})]}),k(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[k(`select`,{value:ee,onChange:e=>A(e.target.value),style:{fontSize:12,background:`#111827`,color:`#e2e8f0`,border:`1px solid #334155`},children:[O(`option`,{value:``,children:`Select zone`}),U.world.zones.map((e,t)=>O(`option`,{value:String(e.id||t),children:e.id||`zone-${t}`},`${e.id}-${t}`))]}),O(`button`,{style:q,onClick:()=>{ee&&U.selectZone(ee)},children:`Select Zone`}),O(`button`,{style:q,onClick:()=>U.deselectZone(),children:`Deselect Zone`})]}),k(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[O(`button`,{style:q,onClick:()=>{let e=zr(U);te(`Reset image hosts=${e.imageHostsReset}, renderers=${e.renderersReset}`),R()},children:`Recover Images`}),O(`button`,{style:q,onClick:_e,children:`Clear Logs`})]}),N?O(`div`,{children:N}):null]}):null]})]}):null,O(`button`,{style:q,onClick:()=>f(e=>!e),children:d?`Hide DevTools`:`Open DevTools`})]})};function Zr(e){return S(()=>$t(e),e)}function Qr(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 $r(e,t=``,n=!1){let r=C(e);r.current&&n&&(console.log(`Diff:`,t,Qr(r.current,e)),r.current=e)}function ei(e,t){return!(!(e instanceof Y||e instanceof X)||e.crop||e.cropData||e.display.rotation||e.style&&e.style.opacity!==void 0&&e.style.opacity!==1||e.__owner?.value?.rotation)}const ti=new Map;var ni=class{constructor(e,t){W(this,`canvas`,void 0),W(this,`gl`,void 0),W(this,`options`,void 0),W(this,`fatalImageError`,void 0),W(this,`program`,void 0),W(this,`fragmentShader`,void 0),W(this,`vertexShader`,void 0),W(this,`rectBuffer`,void 0),W(this,`fragmentShaderSource`,`
22
22
  precision mediump float;
23
23
 
24
24
  uniform sampler2D u_image;
@@ -53,9 +53,9 @@ 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
- `),W(this,`attributes`,void 0),W(this,`uniforms`,void 0),W(this,`buffers`,void 0),W(this,`rendererPosition`,void 0),W(this,`dpi`,void 0),W(this,`maxConcurrentTasks`,6),W(this,`maxPrefetchPerFrame`,8),W(this,`imageLoadingConfig`,void 0),W(this,`imageRequestPool`,void 0),W(this,`framePrefetchCount`,0),W(this,`loadingCount`,0),W(this,`hasTilesFading`,!1),W(this,`firstMeaningfulPaint`,!1),W(this,`frameSawFastPathCandidate`,!1),W(this,`requiresRepaint`,!0),W(this,`tileRequestQueue`,[]),W(this,`queuedTileRequestKeys`,new Set),W(this,`inFlightImageLoads`,new Map),W(this,`requiredTileKeys`,new Set),W(this,`requiredPrefetchTileKeys`,new Set),W(this,`requestGeneration`,0),W(this,`frameCounter`,0),W(this,`pendingTileReveals`,new Map),W(this,`activeLayerScissorRect`,void 0),W(this,`onContextLost`,e=>{e.preventDefault(),this.emitFatalImageError({reason:`webgl-context-lost`,error:e})}),W(this,`lastResize`,0),W(this,`lastKnownScale`,1),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.options=t||{},this.imageLoadingConfig=Le(this.options.imageLoading),this.maxConcurrentTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Ge({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.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=Pe(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 Y||e instanceof X?!!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 Y||e instanceof X)&&$r(e,0)&&this.createImageHost(e),e instanceof et&&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 et){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}),Be(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()+Re(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 Y||e instanceof X;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 X&&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 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`?Mn:Cn)({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 Xe(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g})}else S=new Xe(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g});let w=S instanceof ti;w&&i&&(C=new Xe(i,{dpi:l,debug:u,box:d,polygon:f,paintImages:!0,shouldPaintImage:(e,t)=>!$r(e,t),readiness:`immediate`,imageLoading:_,onImageError:g}));let T=w&&!C?!0:!d,E={},ee=b?.onRequestRender,D=p?new Zt(p,{...b||{},sharedCanvasRenderer:S instanceof Xe?S:void 0,onRequestRender:()=>{ee&&ee(),E.current&&E.current.updateNextFrame()}}):void 0,O=new Ze([S,C,a?new tn(a,{box:T,text:!0,triggerResize:n}):void 0,D]),k=new zn(O,new Et(1024,1024),t,x?[x]:[],m);E.current=k;let A=new G(r,k);return{name:`default-preset`,em:A,runtime:k,renderer:O,controller:x,canvas:r,parityCanvas:C?i:void 0,navigator:p,unmount(){ir(k),k.stopControllers(),k.stop(),k.reset(),A&&A.stop()}}}const ri=1+Number.MIN_VALUE;var ii=class{constructor(e,t){W(this,`container`,void 0),W(this,`width`,void 0),W(this,`height`,void 0),W(this,`pending`,!0),W(this,`options`,void 0),W(this,`stylesheet`,void 0),W(this,`zIndex`,0),W(this,`lastKnownScale`,1),W(this,`rendererPosition`,void 0),W(this,`currentlyVisible`,[]),W(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 en({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
56
+ `),W(this,`attributes`,void 0),W(this,`uniforms`,void 0),W(this,`buffers`,void 0),W(this,`rendererPosition`,void 0),W(this,`dpi`,void 0),W(this,`maxConcurrentTasks`,6),W(this,`maxPrefetchPerFrame`,8),W(this,`imageLoadingConfig`,void 0),W(this,`imageRequestPool`,void 0),W(this,`framePrefetchCount`,0),W(this,`loadingCount`,0),W(this,`hasTilesFading`,!1),W(this,`firstMeaningfulPaint`,!1),W(this,`frameSawFastPathCandidate`,!1),W(this,`requiresRepaint`,!0),W(this,`tileRequestQueue`,[]),W(this,`queuedTileRequestKeys`,new Set),W(this,`inFlightImageLoads`,new Map),W(this,`requiredTileKeys`,new Set),W(this,`requiredPrefetchTileKeys`,new Set),W(this,`requestGeneration`,0),W(this,`frameCounter`,0),W(this,`pendingTileReveals`,new Map),W(this,`activeLayerScissorRect`,void 0),W(this,`onContextLost`,e=>{e.preventDefault(),this.emitFatalImageError({reason:`webgl-context-lost`,error:e})}),W(this,`lastResize`,0),W(this,`lastKnownScale`,1),this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.options=t||{},this.imageLoadingConfig=Le(this.options.imageLoading),this.maxConcurrentTasks=this.imageLoadingConfig.maxConcurrentRequests,this.maxPrefetchPerFrame=this.imageLoadingConfig.maxPrefetchPerFrame,this.imageRequestPool=new Ge({timeoutMs:this.imageLoadingConfig.timeoutMs,crossOrigin:`anonymous`,useFetch:!0,cache:ti});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=Pe(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 Y||e instanceof X?!!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 Y||e instanceof X)&&ei(e,0)&&this.createImageHost(e),e instanceof et&&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 et){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=Math.min(r.fadeInMs,1e3),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))))}}let s=e.__host?.webgl?.loadedAt?.[t];return s&&(n||r.fadeFallbackTiles)&&(o=Math.min(o,Math.max(0,Math.min(1,(a-s)/i)))),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}),Be(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()+Re(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 Y||e instanceof X;if(o&&!ei(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 X&&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 ri({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`?Mn:Cn)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...o||{}}):void 0,S,C;if(c)try{S=new ni(r,{dpi:l,onFatalImageError:h,onImageError:g,imageLoading:_,fallbackOnImageLoadError:v,readiness:y})}catch{S=new Xe(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g})}else S=new Xe(r,{dpi:l,debug:u,box:d,polygon:f,imageLoading:_,onImageError:g});let w=S instanceof ni;w&&i&&(C=new Xe(i,{dpi:l,debug:u,box:d,polygon:f,paintImages:!0,shouldPaintImage:(e,t)=>!ei(e,t),readiness:`immediate`,imageLoading:_,onImageError:g}));let T=w&&!C?!0:!d,E={},ee=b?.onRequestRender,D=p?new Zt(p,{...b||{},sharedCanvasRenderer:S instanceof Xe?S:void 0,onRequestRender:()=>{ee&&ee(),E.current&&E.current.updateNextFrame()}}):void 0,O=new Ze([S,C,a?new tn(a,{box:T,text:!0,triggerResize:n}):void 0,D]),k=new zn(O,new Et(1024,1024),t,x?[x]:[],m);E.current=k;let A=new G(r,k);return{name:`default-preset`,em:A,runtime:k,renderer:O,controller:x,canvas:r,parityCanvas:C?i:void 0,navigator:p,unmount(){ir(k),k.stopControllers(),k.stop(),k.reset(),A&&A.stop()}}}const ii=1+Number.MIN_VALUE;var ai=class{constructor(e,t){W(this,`container`,void 0),W(this,`width`,void 0),W(this,`height`,void 0),W(this,`pending`,!0),W(this,`options`,void 0),W(this,`stylesheet`,void 0),W(this,`zIndex`,0),W(this,`lastKnownScale`,1),W(this,`rendererPosition`,void 0),W(this,`currentlyVisible`,[]),W(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 en({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 Y){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 X){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`?Mn:Cn)({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 Ze([c,new tn(i,{box:!0,text:!0,triggerResize:n})]):c,u=new zn(l,new Et(1024,1024),t,s?[s]:[]),d=new G(r,u);return{name:`static-preset`,em:d,runtime:u,renderer:l,controller:s,container:r,overlay:i,unmount(){ir(u),u.stopControllers(),u.stop(),d&&d.stop()}}}const oi={"default-preset":ni,"static-preset":ai},si={};function ci(e,t){let n=C(),r=C(),i=C(),a=C(),o=C(),s=C({x:0,y:0,width:t.width,height:t.height,scale:1,didUpdate:!0}),c=C({onWebGLFallback:t.onWebGLFallback,onImageError:t.onImageError}),[l=`default-preset`,u=si]=Array.isArray(e)?e||[]:[e],[d,f]=w(null);return x(()=>{c.current.onWebGLFallback=t.onWebGLFallback,c.current.onImageError=t.onImageError},[t.onImageError,t.onWebGLFallback]),x(()=>{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,S(()=>({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=[`brightness`,`contrast`,`grayscale`,`hueRotate`,`invert`,`saturate`,`sepia`,`blur`],di=g(function(t){let{htmlChildren:n,renderPreset:r,onCreated:i,mode:a=`explore`,resetWorldOnChange:o=!0,unstable_webglRenderer:s=!1,onWebGLFallback:c,onReady:l,onImageError:u,readyResetKey:d,webglFallbackOnImageLoadError:f=!1,webglReadiness:p,imageLoading:m,unstable_noReconciler:h=!1,hideInlineStyle:g=!1,controllerConfig:v,interactionMode:b=`popmotion`,children:x,overlayStyle:T,containerStyle:E,enableNavigator:A,className:j,containerProps:M={},homePosition:N,homeOnResize:te,homeCover:P,background:ne,navigatorOptions:F,runtimeOptions:re,debug:ie,filters:I,homePaddingPx:L,devTools:R,...z}=t;Qr(t,`Atlas.tsx`,t.debug);let[B,V]=w(a),[H,ae]=w(s),U=C(!1),oe=C(null),W=C(null),G=C(void 0),se=C(void 0),[K,ce]=w(!1),le=C(void 0),[ue,de]=w(!1),[q,fe]=w(!1),[pe,me]=w(!1),he=C(!1),ge=F?.style?.background,_e=F?.style?.objectFill,ve=F?.style?.objectStroke,ye=F?.style?.viewportFill,be=F?.style?.viewportStroke,xe=F?.style?.viewportLineWidth,Se=F?.pdfScrollZoneZoneWindow?.total,Ce=F?.pdfScrollZoneZoneWindow?.before,we=F?.pdfScrollZoneZoneWindow?.after,Te=S(()=>{if(!(ge===void 0&&_e===void 0&&ve===void 0&&ye===void 0&&be===void 0&&xe===void 0))return{background:ge,objectFill:_e,objectStroke:ve,viewportFill:ye,viewportStroke:be,viewportLineWidth:xe}},[ge,_e,ve,ye,be,xe]),Ee=S(()=>{if(b===`pdf-scroll-zone`)return{total:Se??9,before:Ce,after:we}},[b,we,Ce,Se]),De=_(e=>{ie&&console.debug(`[Atlas navigator]`,e)},[ie]),J=S(()=>({width:F?.width??120,idleFade:F?.idleFade??!0,idleMs:F?.idleMs??800,fadeDurationMs:F?.fadeDurationMs??250,opacityActive:F?.opacityActive??.94,opacityIdle:F?.opacityIdle??0,style:Te,zoneWindow:Ee}),[F?.fadeDurationMs,F?.idleFade,F?.idleMs,F?.opacityActive,F?.opacityIdle,F?.width,Te,Ee]),Oe=S(()=>{let e=`default-preset`,t={},n=!1;if(Array.isArray(r)?(e=r[0],t={...r[1]||{}},n=!0):typeof r==`string`&&(e=r),ie&&(t.debug=ie,n=!0),e===`default-preset`){let e={};J.style&&(e.style=J.style),J.zoneWindow&&(e.zoneWindow=J.zoneWindow),ie&&(e.onDebugEvent=De),Object.keys(e).length>0&&(t.navigatorRendererOptions={...t.navigatorRendererOptions||{},...e},n=!0)}return n?[e,t]:r||`default-preset`},[r,ie,De,J.style,J.zoneWindow]),[ke,Ae,je]=ee({scroll:!0}),Y=C(),Me=e=>{Y.current=e,ke(e)},X=_(e=>{U.current||(U.current=!0,W.current&&(oe.current=W.current.getViewport()),ae(!1),c&&c(e))},[c]),Ne=_(e=>{if(oe.current&&(e.runtime.setViewport(oe.current),e.runtime.updateNextFrame(),oe.current=null),i)return i(e)},[i]),[Pe,Z,Q,Fe]=ci(Oe,{width:z.width,height:z.height,forceRefresh:je,controllerConfig:v,interactionMode:b,unstable_webglRenderer:H,onWebGLFallback:X,onImageError:u,webglFallbackOnImageLoadError:f,webglReadiness:p,imageLoading:m,runtimeOptions:re});y(()=>{if(Z)return wr(Z)},[Z]);let[Ie,Le]=w(``);y(()=>{V(a)},[a]),y(()=>{ce(!1),W.current=Z?Z.runtime:null,G.current=void 0,se.current=void 0},[Z]),y(()=>{if(!s){ae(!1);return}U.current||ae(!0)},[s]),y(()=>{if(!Z||!l)return;let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t!==`ready`)return;let n=e.getReadyState();se.current!==n.cycle&&(se.current=n.cycle,n.timestamp&&l({runtimeId:e.id,cycle:n.cycle,reason:n.reason,renderer:li(e.renderer),timestamp:n.timestamp}))})},[Z,l]),y(()=>{if(Z){if(d===void 0){G.current=void 0;return}if(G.current===void 0){G.current=d;return}G.current!==d&&(G.current=d,se.current=void 0,Z.runtime.resetReadyState(`ready-reset-key-change`))}},[Z,d]),y(()=>{Z&&Z.em&&Z.em.updateBounds()},[Z,Ae]),y(()=>{Z&&Z.runtime.setOptions(re||{})},[Z,re]),y(()=>{Z&&Z.runtime&&(Z.runtime.mode=B),K&&Z&&(Z.ready=!0)},[Z,K,B]),y(()=>{Z&&(P||(Z.runtime.manualHomePosition=b===`pdf-scroll-zone`||!!N,Z.runtime.setHomePosition(N)))},[Z,P,N,b]),y(()=>{Z&&Z.runtime.setHomePaddingPx(L)},[Z,L]),y(()=>{if(Z){let e=Z.runtime;(Q.current.width!==z.width||Q.current.height!==z.height)&&(e.resize(Q.current.width,z.width,Q.current.height,z.height),Q.current.width=z.width,Q.current.height=z.height,Q.current.didUpdate=!0,e.updateNextFrame())}},[Z,z.width,z.height,Q]),y(()=>{if(I&&Z){let e=Z.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of ui)I[n]?I[n]!==Z.runtime.hookOptions.filters[n]&&(e.hookOptions.filters[n]=I[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 ui)e.hookOptions.filters[t]=0;e.hookOptions.enableFilters=!1,e.updateNextFrame()}},[Z,I]);function Re(){if(Z&&(Z.overlay&&(Z.overlay.style.width=`${Ae.width}px`,Z.overlay.style.height=`${Ae.height}px`),Z.container&&(Z.container.style.width=`${Ae.width}px`,Z.container.style.height=`${Ae.height}px`),P)){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;P===`start`&&(n=0),P===`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;P===`start`&&(n=0),P===`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({})}}or(()=>{Re()},[Z,t.runtimeOptions?.maxOverZoom,Ae.height,Ae.width,P]),or(()=>{let e=()=>{if(Z){let e=Z.runtime;(Q.current.width!==z.width||Q.current.height!==z.height)&&(e.resize(Q.current.width,z.width,Q.current.height,z.height),Q.current.width=z.width,Q.current.height=z.height,e.updateNextFrame(),Q.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[Z,z.height,z.width]);let ze=()=>{if(!Z)return;let e=Z.renderer;if(Array.isArray(e.renderers))return e.renderers.find(e=>typeof e.invalidateWorldLayer==`function`)},Be=_(()=>{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]),Ve=_(e=>Jt(e.world,{target:e.getViewport(),zoneWindow:J.zoneWindow}),[J.zoneWindow]),He=_(e=>e.isViewportAtHome({cover:!!P,tolerance:1}),[P,L]),Ue=()=>{if(Z&&Z.navigator){let e=Ve(Z.runtime),t=e.height,n=e.width,r=Be(),i=Math.max(1,n),a=Math.max(1,t),o=Math.max(1,J.width),s=Math.max(1,z.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=ze();u&&u.invalidateWorldLayer&&u.invalidateWorldLayer()}};or(()=>{if(Z){Ue();let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t===`repaint`){let e=ze();e&&e.invalidateWorldLayer&&e.invalidateWorldLayer()}(t===`recalculate-world-size`||t===`zone-changed`)&&(Ue(),Re(),t===`recalculate-world-size`&&(Q.current.width!==z.width||Q.current.height!==z.height)&&e.resize(Q.current.width,z.width,Q.current.height,z.height))})}return()=>{}},[Z,z.width,z.height,J.width,Ve,Be]),y(()=>{if(!Z||!A){me(!1);return}let e=Z.runtime,t=()=>{let t=He(e);me(e=>e===t?e:t)};return t(),e.world.addLayoutSubscriber(()=>{t()})},[Z,A,He]);let We=_(function(e){let t=()=>{ce(!0)};return y(()=>{if(!Z)return;b!==`pdf-scroll-zone`&&Z.runtime.goHome();let e=Ne&&Ne(Z);e&&e.then?e.then(t):t()},[]),e.children},[Z,Ne,b]);y(()=>{if(Z){let e=Z.runtime;if(o)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&b!==`pdf-scroll-zone`&&e.goHome()})}return()=>{}},[Z,o,b]),y(()=>Z?Z.runtime.registerHook(`useBeforeFrame`,()=>{if(Q.current.didUpdate&&Z.canvas){let e=Be(),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,o,Be]),y(()=>{let e=()=>{Z&&(V(`sketch`),Le(`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(),V(`explore`),Le(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[Z]);let Ge=_(()=>{!A||!J.idleFade||(de(!1),le.current!==void 0&&window.clearTimeout(le.current),le.current=window.setTimeout(()=>{he.current||de(!0)},J.idleMs))},[A,J.idleFade,J.idleMs]);y(()=>()=>{le.current!==void 0&&(window.clearTimeout(le.current),le.current=void 0)},[]),y(()=>{if(!Z?.canvas||!A||!J.idleFade)return;let e=Z.canvas,t=()=>Ge(),n=[`pointerdown`,`pointermove`,`pointerup`,`touchstart`,`touchmove`,`touchend`,`wheel`];for(let r of n)e.addEventListener(r,t,{passive:!0});return Ge(),()=>{for(let r of n)e.removeEventListener(r,t)}},[Z,A,J.idleFade,Ge]),y(()=>{if(!Z?.navigator||!A)return;let t=Z.navigator,n=Z.runtime,r={active:!1,pointerId:-1,offsetX:0,offsetY:0,startClientX:0,startClientY:0,startWorldX:0,startWorldY:0},i=e=>{he.current=e,fe(e)},a=e=>{let r=t.getBoundingClientRect();if(r.width<=0||r.height<=0)return{x:0,y:0};let i=e.clientX-r.left,a=e.clientY-r.top,o=Ve(n);return Xt(qt(o.width,o.height,r.width,r.height,o.x,o.y),i,a)},o=(t,i,{preserveOffset:a=!0,constrainAfterMove:o=!1}={})=>{let s=n.getViewport(),c=a?t-r.offsetX:t-s.width/2,l=a?i-r.offsetY:i-s.height/2,u=e.singleBox(s.width,s.height,c,l),[,d]=n.constrainBounds(u,{ref:!0});n.setViewport({x:d[1],y:d[2],width:d[3]-d[1],height:d[4]-d[2]}),n.updateControllerPosition(),n.updateNextFrame(),o&&n.world.constraintBounds(!0)},s=(e,t)=>{let r=Yt(n.world,{target:n.getViewport(),zoneWindow:J.zoneWindow});for(let i of n.world.zones)if(!(r&&!r.has(i.id))&&(i.recalculateBounds(),i.points[0]!==0&&e>=i.points[1]&&e<=i.points[3]&&t>=i.points[2]&&t<=i.points[4]))return i},c=e=>{if(e.button!==0)return;Ge();let s=a(e),c=n.getViewport(),l=s.x>=c.x&&s.y>=c.y&&s.x<=c.x+c.width&&s.y<=c.y+c.height;r.active=!0,r.pointerId=e.pointerId,r.startClientX=e.clientX,r.startClientY=e.clientY,r.startWorldX=s.x,r.startWorldY=s.y,l?(r.offsetX=s.x-c.x,r.offsetY=s.y-c.y):(r.offsetX=c.width/2,r.offsetY=c.height/2,o(s.x,s.y,{preserveOffset:!0,constrainAfterMove:!0})),i(!0),t.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation()},l=e=>{if(!r.active||e.pointerId!==r.pointerId)return;let t=a(e);o(t.x,t.y,{preserveOffset:!0}),Ge(),e.preventDefault(),e.stopPropagation()},u=e=>{if(!r.active||e.pointerId!==r.pointerId)return;a(e);let o=Math.hypot(e.clientX-r.startClientX,e.clientY-r.startClientY),c=!1;if(o<4){let e=s(r.startWorldX,r.startWorldY);e&&(c=n.goToZone(e.id),c&&n.updateNextFrame())}r.active=!1,r.pointerId=-1,i(!1),c||n.world.constraintBounds(!0),t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),Ge(),e.preventDefault(),e.stopPropagation()},d=e=>{!r.active||e.pointerId!==r.pointerId||(r.active=!1,r.pointerId=-1,i(!1),t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),Ge())};return t.addEventListener(`pointerdown`,c),t.addEventListener(`pointermove`,l),t.addEventListener(`pointerup`,u),t.addEventListener(`pointercancel`,d),()=>{i(!1),t.removeEventListener(`pointerdown`,c),t.removeEventListener(`pointermove`,l),t.removeEventListener(`pointerup`,u),t.removeEventListener(`pointercancel`,d)}},[Z,A,Ge,Ve]);let{height:Ke,width:qe,...Je}=z,Ye=Xr([z.width,z.height]),Xe=!0;Oe&&Array.isArray(Oe)&&Oe.length>1&&Oe[1].interactive===!1&&(Xe=!1),ne=ne??`#000`,Y.current&&(ne=getComputedStyle(Y.current).getPropertyValue(`--atlas-background`)||ne);let Ze=typeof R==`object`?R:void 0,Qe=S(()=>({"--atlas-navigator-fade-duration":`${J.fadeDurationMs}ms`,"--atlas-navigator-opacity-active":`${J.opacityActive}`,"--atlas-navigator-opacity-idle":`${J.opacityIdle}`}),[J.fadeDurationMs,J.opacityActive,J.opacityIdle]);return k(cr,{ref:Me,className:[`atlas`,`atlas-interaction-${b}`,g?``:`atlas-width-${Ye}`,Ie,j,`atlas-${Pe}`].filter(Boolean).join(` `).trim(),style:{...E,...g?{}:{width:z.width,height:z.height}},children:[Pe===`static-preset`?O(cr,{className:`atlas-static-container`,ref:Fe.container,tabIndex:0,...M}):k(D,{children:[O(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...Je,...M,ref:Fe.canvas,"data-background":ne}),H?O(`canvas`,{className:`atlas-parity-canvas`,part:`atlas-parity-canvas`,"aria-hidden":`true`,"data-background":`transparent`,ref:Fe.parityCanvas}):null]}),O(cr,{className:[`atlas-overlay`,Xe?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...T||{}},ref:Fe.overlay,children:h?O(We,{children:O(Pn.Provider,{value:Ae,children:O(Fn.Provider,{value:B,children:O(Nn.Provider,{value:Z,children:x})})})}):O(sr,{bounds:Ae,preset:Z,mode:B,interactionMode:b,setIsReady:ce,onCreated:Ne,children:x})}),A?O(cr,{className:[`atlas-navigator`,pe?`atlas-navigator--hidden-at-home`:``,J.idleFade&&ue?`atlas-navigator--idle`:``,q?`atlas-navigator--dragging`:``].filter(Boolean).join(` `).trim(),style:Qe,children:O(`canvas`,{className:`atlas-navigator-canvas`,part:`atlas-navigator-canvas`,ref:Fe.navigator})}):null,R?O(Ur,{...Ze,runtimeId:Ze?.runtimeId||Z?.runtime.id}):null,g?O(`style`,{children:`.atlas-width-${Ye} { width: ${z.width}px; height: ${z.height}px; }`}):O(`style`,{children:`
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 Y){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+ii).toFixed(2)}px;height:${(a+ii).toFixed(2)}px;`):(t.style.width=`${i+ii}px`,t.style.height=`${a+ii}px`),t.style.transform=`translate(${n}px, ${r}px)`}if(e instanceof X){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+ii).toFixed(2)}px;height:${(a+ii).toFixed(2)}px;`):(o.style.width=`${i+ii}px`,o.style.height=`${a+ii}px`),o.style.transform=`translate(${n}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){this.pending=!0}};function oi({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`?Mn:Cn)({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:r,...a||{}}):void 0,c=new ai(r,{addPart:!1,setDraggableFalse:!1,imageClass:`atlas-static-image`}),l=i?new Ze([c,new tn(i,{box:!0,text:!0,triggerResize:n})]):c,u=new zn(l,new Et(1024,1024),t,s?[s]:[]),d=new G(r,u);return{name:`static-preset`,em:d,runtime:u,renderer:l,controller:s,container:r,overlay:i,unmount(){ir(u),u.stopControllers(),u.stop(),d&&d.stop()}}}const si={"default-preset":ri,"static-preset":oi},ci={};function li(e,t){let n=C(),r=C(),i=C(),a=C(),o=C(),s=C({x:0,y:0,width:t.width,height:t.height,scale:1,didUpdate:!0}),c=C({onWebGLFallback:t.onWebGLFallback,onImageError:t.onImageError}),[l=`default-preset`,u=ci]=Array.isArray(e)?e||[]:[e],[d,f]=w(null);return x(()=>{c.current.onWebGLFallback=t.onWebGLFallback,c.current.onImageError=t.onImageError},[t.onImageError,t.onWebGLFallback]),x(()=>{let e=r.current,d=o.current,p=n.current,m=a.current,h=(si[l]||ri)({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,S(()=>({canvas:r,parityCanvas:i,overlay:n,container:o,navigator:a}),[])]}function ui(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 di=[`brightness`,`contrast`,`grayscale`,`hueRotate`,`invert`,`saturate`,`sepia`,`blur`],fi=g(function(t){let{htmlChildren:n,renderPreset:r,onCreated:i,mode:a=`explore`,resetWorldOnChange:o=!0,unstable_webglRenderer:s=!1,onWebGLFallback:c,onReady:l,onImageError:u,readyResetKey:d,webglFallbackOnImageLoadError:f=!1,webglReadiness:p,imageLoading:m,unstable_noReconciler:h=!1,hideInlineStyle:g=!1,controllerConfig:v,interactionMode:b=`popmotion`,children:x,overlayStyle:T,containerStyle:E,enableNavigator:A,className:j,containerProps:M={},homePosition:N,homeOnResize:te,homeCover:P,background:ne,navigatorOptions:F,runtimeOptions:re,debug:ie,filters:I,homePaddingPx:L,devTools:R,...z}=t;$r(t,`Atlas.tsx`,t.debug);let[B,V]=w(a),[H,ae]=w(s),U=C(!1),oe=C(null),W=C(null),G=C(void 0),se=C(void 0),[K,ce]=w(!1),le=C(void 0),[ue,de]=w(!1),[q,fe]=w(!1),[pe,me]=w(!1),he=C(!1),ge=F?.style?.background,_e=F?.style?.objectFill,ve=F?.style?.objectStroke,ye=F?.style?.viewportFill,be=F?.style?.viewportStroke,xe=F?.style?.viewportLineWidth,Se=F?.pdfScrollZoneZoneWindow?.total,Ce=F?.pdfScrollZoneZoneWindow?.before,we=F?.pdfScrollZoneZoneWindow?.after,Te=S(()=>{if(!(ge===void 0&&_e===void 0&&ve===void 0&&ye===void 0&&be===void 0&&xe===void 0))return{background:ge,objectFill:_e,objectStroke:ve,viewportFill:ye,viewportStroke:be,viewportLineWidth:xe}},[ge,_e,ve,ye,be,xe]),Ee=S(()=>{if(b===`pdf-scroll-zone`)return{total:Se??9,before:Ce,after:we}},[b,we,Ce,Se]),De=_(e=>{ie&&console.debug(`[Atlas navigator]`,e)},[ie]),J=S(()=>({width:F?.width??120,idleFade:F?.idleFade??!0,idleMs:F?.idleMs??800,fadeDurationMs:F?.fadeDurationMs??250,opacityActive:F?.opacityActive??.94,opacityIdle:F?.opacityIdle??0,style:Te,zoneWindow:Ee}),[F?.fadeDurationMs,F?.idleFade,F?.idleMs,F?.opacityActive,F?.opacityIdle,F?.width,Te,Ee]),Oe=S(()=>{let e=`default-preset`,t={},n=!1;if(Array.isArray(r)?(e=r[0],t={...r[1]||{}},n=!0):typeof r==`string`&&(e=r),ie&&(t.debug=ie,n=!0),e===`default-preset`){let e={};J.style&&(e.style=J.style),J.zoneWindow&&(e.zoneWindow=J.zoneWindow),ie&&(e.onDebugEvent=De),Object.keys(e).length>0&&(t.navigatorRendererOptions={...t.navigatorRendererOptions||{},...e},n=!0)}return n?[e,t]:r||`default-preset`},[r,ie,De,J.style,J.zoneWindow]),[ke,Ae,je]=ee({scroll:!0}),Y=C(),Me=e=>{Y.current=e,ke(e)},X=_(e=>{U.current||(U.current=!0,W.current&&(oe.current=W.current.getViewport()),ae(!1),c&&c(e))},[c]),Ne=_(e=>{if(oe.current&&(e.runtime.setViewport(oe.current),e.runtime.updateNextFrame(),oe.current=null),i)return i(e)},[i]),[Pe,Z,Q,Fe]=li(Oe,{width:z.width,height:z.height,forceRefresh:je,controllerConfig:v,interactionMode:b,unstable_webglRenderer:H,onWebGLFallback:X,onImageError:u,webglFallbackOnImageLoadError:f,webglReadiness:p,imageLoading:m,runtimeOptions:re});y(()=>{if(Z)return wr(Z)},[Z]);let[Ie,Le]=w(``);y(()=>{V(a)},[a]),y(()=>{ce(!1),W.current=Z?Z.runtime:null,G.current=void 0,se.current=void 0},[Z]),y(()=>{if(!s){ae(!1);return}U.current||ae(!0)},[s]),y(()=>{if(!Z||!l)return;let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t!==`ready`)return;let n=e.getReadyState();se.current!==n.cycle&&(se.current=n.cycle,n.timestamp&&l({runtimeId:e.id,cycle:n.cycle,reason:n.reason,renderer:ui(e.renderer),timestamp:n.timestamp}))})},[Z,l]),y(()=>{if(Z){if(d===void 0){G.current=void 0;return}if(G.current===void 0){G.current=d;return}G.current!==d&&(G.current=d,se.current=void 0,Z.runtime.resetReadyState(`ready-reset-key-change`))}},[Z,d]),y(()=>{Z&&Z.em&&Z.em.updateBounds()},[Z,Ae]),y(()=>{Z&&Z.runtime.setOptions(re||{})},[Z,re]),y(()=>{Z&&Z.runtime&&(Z.runtime.mode=B),K&&Z&&(Z.ready=!0)},[Z,K,B]),y(()=>{Z&&(P||(Z.runtime.manualHomePosition=b===`pdf-scroll-zone`||!!N,Z.runtime.setHomePosition(N)))},[Z,P,N,b]),y(()=>{Z&&Z.runtime.setHomePaddingPx(L)},[Z,L]),y(()=>{if(Z){let e=Z.runtime;(Q.current.width!==z.width||Q.current.height!==z.height)&&(e.resize(Q.current.width,z.width,Q.current.height,z.height),Q.current.width=z.width,Q.current.height=z.height,Q.current.didUpdate=!0,e.updateNextFrame())}},[Z,z.width,z.height,Q]),y(()=>{if(I&&Z){let e=Z.runtime,t=!1;e.hookOptions.enableFilters=!0;for(let n of di)I[n]?I[n]!==Z.runtime.hookOptions.filters[n]&&(e.hookOptions.filters[n]=I[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,I]);function Re(){if(Z&&(Z.overlay&&(Z.overlay.style.width=`${Ae.width}px`,Z.overlay.style.height=`${Ae.height}px`),Z.container&&(Z.container.style.width=`${Ae.width}px`,Z.container.style.height=`${Ae.height}px`),P)){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;P===`start`&&(n=0),P===`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;P===`start`&&(n=0),P===`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({})}}or(()=>{Re()},[Z,t.runtimeOptions?.maxOverZoom,Ae.height,Ae.width,P]),or(()=>{let e=()=>{if(Z){let e=Z.runtime;(Q.current.width!==z.width||Q.current.height!==z.height)&&(e.resize(Q.current.width,z.width,Q.current.height,z.height),Q.current.width=z.width,Q.current.height=z.height,e.updateNextFrame(),Q.current.didUpdate=!0)}};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[Z,z.height,z.width]);let ze=()=>{if(!Z)return;let e=Z.renderer;if(Array.isArray(e.renderers))return e.renderers.find(e=>typeof e.invalidateWorldLayer==`function`)},Be=_(()=>{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]),Ve=_(e=>Jt(e.world,{target:e.getViewport(),zoneWindow:J.zoneWindow}),[J.zoneWindow]),He=_(e=>e.isViewportAtHome({cover:!!P,tolerance:1}),[P,L]),Ue=()=>{if(Z&&Z.navigator){let e=Ve(Z.runtime),t=e.height,n=e.width,r=Be(),i=Math.max(1,n),a=Math.max(1,t),o=Math.max(1,J.width),s=Math.max(1,z.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=ze();u&&u.invalidateWorldLayer&&u.invalidateWorldLayer()}};or(()=>{if(Z){Ue();let e=Z.runtime;return e.world.addLayoutSubscriber(t=>{if(t===`repaint`){let e=ze();e&&e.invalidateWorldLayer&&e.invalidateWorldLayer()}(t===`recalculate-world-size`||t===`zone-changed`)&&(Ue(),Re(),t===`recalculate-world-size`&&(Q.current.width!==z.width||Q.current.height!==z.height)&&e.resize(Q.current.width,z.width,Q.current.height,z.height))})}return()=>{}},[Z,z.width,z.height,J.width,Ve,Be]),y(()=>{if(!Z||!A){me(!1);return}let e=Z.runtime,t=()=>{let t=He(e);me(e=>e===t?e:t)};return t(),e.world.addLayoutSubscriber(()=>{t()})},[Z,A,He]);let We=_(function(e){let t=()=>{ce(!0)};return y(()=>{if(!Z)return;b!==`pdf-scroll-zone`&&Z.runtime.goHome();let e=Ne&&Ne(Z);e&&e.then?e.then(t):t()},[]),e.children},[Z,Ne,b]);y(()=>{if(Z){let e=Z.runtime;if(o)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&b!==`pdf-scroll-zone`&&e.goHome()})}return()=>{}},[Z,o,b]),y(()=>Z?Z.runtime.registerHook(`useBeforeFrame`,()=>{if(Q.current.didUpdate&&Z.canvas){let e=Be(),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,o,Be]),y(()=>{let e=()=>{Z&&(V(`sketch`),Le(`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(),V(`explore`),Le(`mode-explore`),window.addEventListener(`keyup`,e)}};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,e)}},[Z]);let Ge=_(()=>{!A||!J.idleFade||(de(!1),le.current!==void 0&&window.clearTimeout(le.current),le.current=window.setTimeout(()=>{he.current||de(!0)},J.idleMs))},[A,J.idleFade,J.idleMs]);y(()=>()=>{le.current!==void 0&&(window.clearTimeout(le.current),le.current=void 0)},[]),y(()=>{if(!Z?.canvas||!A||!J.idleFade)return;let e=Z.canvas,t=()=>Ge(),n=[`pointerdown`,`pointermove`,`pointerup`,`touchstart`,`touchmove`,`touchend`,`wheel`];for(let r of n)e.addEventListener(r,t,{passive:!0});return Ge(),()=>{for(let r of n)e.removeEventListener(r,t)}},[Z,A,J.idleFade,Ge]),y(()=>{if(!Z?.navigator||!A)return;let t=Z.navigator,n=Z.runtime,r={active:!1,pointerId:-1,offsetX:0,offsetY:0,startClientX:0,startClientY:0,startWorldX:0,startWorldY:0},i=e=>{he.current=e,fe(e)},a=e=>{let r=t.getBoundingClientRect();if(r.width<=0||r.height<=0)return{x:0,y:0};let i=e.clientX-r.left,a=e.clientY-r.top,o=Ve(n);return Xt(qt(o.width,o.height,r.width,r.height,o.x,o.y),i,a)},o=(t,i,{preserveOffset:a=!0,constrainAfterMove:o=!1}={})=>{let s=n.getViewport(),c=a?t-r.offsetX:t-s.width/2,l=a?i-r.offsetY:i-s.height/2,u=e.singleBox(s.width,s.height,c,l),[,d]=n.constrainBounds(u,{ref:!0});n.setViewport({x:d[1],y:d[2],width:d[3]-d[1],height:d[4]-d[2]}),n.updateControllerPosition(),n.updateNextFrame(),o&&n.world.constraintBounds(!0)},s=(e,t)=>{let r=Yt(n.world,{target:n.getViewport(),zoneWindow:J.zoneWindow});for(let i of n.world.zones)if(!(r&&!r.has(i.id))&&(i.recalculateBounds(),i.points[0]!==0&&e>=i.points[1]&&e<=i.points[3]&&t>=i.points[2]&&t<=i.points[4]))return i},c=e=>{if(e.button!==0)return;Ge();let s=a(e),c=n.getViewport(),l=s.x>=c.x&&s.y>=c.y&&s.x<=c.x+c.width&&s.y<=c.y+c.height;r.active=!0,r.pointerId=e.pointerId,r.startClientX=e.clientX,r.startClientY=e.clientY,r.startWorldX=s.x,r.startWorldY=s.y,l?(r.offsetX=s.x-c.x,r.offsetY=s.y-c.y):(r.offsetX=c.width/2,r.offsetY=c.height/2,o(s.x,s.y,{preserveOffset:!0,constrainAfterMove:!0})),i(!0),t.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation()},l=e=>{if(!r.active||e.pointerId!==r.pointerId)return;let t=a(e);o(t.x,t.y,{preserveOffset:!0}),Ge(),e.preventDefault(),e.stopPropagation()},u=e=>{if(!r.active||e.pointerId!==r.pointerId)return;a(e);let o=Math.hypot(e.clientX-r.startClientX,e.clientY-r.startClientY),c=!1;if(o<4){let e=s(r.startWorldX,r.startWorldY);e&&(c=n.goToZone(e.id),c&&n.updateNextFrame())}r.active=!1,r.pointerId=-1,i(!1),c||n.world.constraintBounds(!0),t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),Ge(),e.preventDefault(),e.stopPropagation()},d=e=>{!r.active||e.pointerId!==r.pointerId||(r.active=!1,r.pointerId=-1,i(!1),t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),Ge())};return t.addEventListener(`pointerdown`,c),t.addEventListener(`pointermove`,l),t.addEventListener(`pointerup`,u),t.addEventListener(`pointercancel`,d),()=>{i(!1),t.removeEventListener(`pointerdown`,c),t.removeEventListener(`pointermove`,l),t.removeEventListener(`pointerup`,u),t.removeEventListener(`pointercancel`,d)}},[Z,A,Ge,Ve]);let{height:Ke,width:qe,...Je}=z,Ye=Zr([z.width,z.height]),Xe=!0;Oe&&Array.isArray(Oe)&&Oe.length>1&&Oe[1].interactive===!1&&(Xe=!1),ne=ne??`#000`,Y.current&&(ne=getComputedStyle(Y.current).getPropertyValue(`--atlas-background`)||ne);let Ze=typeof R==`object`?R:void 0,Qe=S(()=>({"--atlas-navigator-fade-duration":`${J.fadeDurationMs}ms`,"--atlas-navigator-opacity-active":`${J.opacityActive}`,"--atlas-navigator-opacity-idle":`${J.opacityIdle}`}),[J.fadeDurationMs,J.opacityActive,J.opacityIdle]);return k(cr,{ref:Me,className:[`atlas`,`atlas-interaction-${b}`,g?``:`atlas-width-${Ye}`,Ie,j,`atlas-${Pe}`].filter(Boolean).join(` `).trim(),style:{...E,...g?{}:{width:z.width,height:z.height}},children:[Pe===`static-preset`?O(cr,{className:`atlas-static-container`,ref:Fe.container,tabIndex:0,...M}):k(D,{children:[O(`canvas`,{className:`atlas-canvas`,part:`atlas-canvas`,tabIndex:0,...Je,...M,ref:Fe.canvas,"data-background":ne}),H?O(`canvas`,{className:`atlas-parity-canvas`,part:`atlas-parity-canvas`,"aria-hidden":`true`,"data-background":`transparent`,ref:Fe.parityCanvas}):null]}),O(cr,{className:[`atlas-overlay`,Xe?`atlas-overlay--interactive`:``].filter(Boolean).join(` `).trim(),style:{...T||{}},ref:Fe.overlay,children:h?O(We,{children:O(Pn.Provider,{value:Ae,children:O(Fn.Provider,{value:B,children:O(Nn.Provider,{value:Z,children:x})})})}):O(sr,{bounds:Ae,preset:Z,mode:B,interactionMode:b,setIsReady:ce,onCreated:Ne,children:x})}),A?O(cr,{className:[`atlas-navigator`,pe?`atlas-navigator--hidden-at-home`:``,J.idleFade&&ue?`atlas-navigator--idle`:``,q?`atlas-navigator--dragging`:``].filter(Boolean).join(` `).trim(),style:Qe,children:O(`canvas`,{className:`atlas-navigator-canvas`,part:`atlas-navigator-canvas`,ref:Fe.navigator})}):null,R?O(Wr,{...Ze,runtimeId:Ze?.runtimeId||Z?.runtime.id}):null,g?O(`style`,{children:`.atlas-width-${Ye} { width: ${z.width}px; height: ${z.height}px; }`}):O(`style`,{children:`
59
59
  .atlas { position: relative; display: flex; background: ${ne}; 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
60
  .atlas-width-${Ye} { width: ${z.width}px; height: ${z.height}px; }
61
61
  .atlas-canvas { flex: 1 1 0px; }
@@ -75,10 +75,10 @@ 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
- `}),n]})});function fi(e){return Number(e)==e?`${e}px`:e}const pi=g(function({resizeHash:e,aspectRatio:t,containerProps:n={},htmlChildren:r,...i}){let[a,o,s]=ee(),c=b(),{height:l,width:u,...d}=i;y(()=>{s()},[u,l,e,s]);let f=S(()=>t?{width:o.width,height:o.width*(1/t)}:o,[o,t]),p=S(()=>`atlas-auto-${c.replace(/[^a-zA-Z0-9_-]/g,``)}`,[c]),m=S(()=>[`atlas-container`,p,n.className].filter(Boolean).join(` `).trim(),[p,n.className]),h=S(()=>`.${p} {
78
+ `}),n]})});function pi(e){return Number(e)==e?`${e}px`:e}const mi=g(function({resizeHash:e,aspectRatio:t,containerProps:n={},htmlChildren:r,...i}){let[a,o,s]=ee(),c=b(),{height:l,width:u,...d}=i;y(()=>{s()},[u,l,e,s]);let f=S(()=>t?{width:o.width,height:o.width*(1/t)}:o,[o,t]),p=S(()=>`atlas-auto-${c.replace(/[^a-zA-Z0-9_-]/g,``)}`,[c]),m=S(()=>[`atlas-container`,p,n.className].filter(Boolean).join(` `).trim(),[p,n.className]),h=S(()=>`.${p} {
79
79
  display: var(--atlas-container-display, block);
80
80
  flex: var(--atlas-container-flex, none);
81
- width: var(--atlas-container-width, ${fi(u??`100%`)});
82
- height: var(--atlas-container-height, ${fi(l||(t?f.height:512))})
83
- }`,[t,p,f.height,l,u]);return k(cr,{ref:a,className:m,...n,children:[f.width?O(di,{width:f.width||100,height:f.height||100,...d,children:i.children}):null,i.hideInlineStyle?null:O(`style`,{children:h}),r]})}),mi=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useAfterFrame`,e):()=>{},t)},hi=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useFrame`,e):()=>{},t)},gi=()=>{let e=lr();return e&&e.canvas?e.canvas:void 0};function _i(){return v(Pn)}const vi=({onCreate:e})=>{let t=C({x:0,y:0}),n=gi(),r=_i(),i=ur(),[a,o]=w(),[s,c]=w(),l=In();return hi(()=>{i&&a&&!s&&(i.pendingUpdate=!0)},[a,s]),mi(()=>{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]),y(()=>{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]),y(()=>{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]),y(()=>{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]),y(()=>{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},yi=m.forwardRef(({children:e,...t},n)=>{let r=C(),i=ur(),a=C(0),o=C(),s=C();return hi(()=>{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]),x(()=>{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?O(`div`,{ref:r,children:e}):e;await Br(i.__host.element,n,s)}}i&&i.__host?a():i&&(i.__onCreate=a)},[n,e,o,t.relative]),x(()=>()=>{s.current&&setTimeout(()=>{s.current.unmount()},0)},[]),O(`box`,{html:!0,...t,ref:o})});yi.displayName=`HTMLPortal`;const bi=e=>{let t=e.width/(e.crop?.width||e.tiles.width),n=e.tiles.imageService.sizes||[],r=e.enableThumbnail,i=e.enableSizes,a=S(()=>{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=S(()=>{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=S(()=>{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 O(`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:k(`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?O(`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)=>O(`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=>O(`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)},xi=e=>{let[t,n]=w();return y(()=>{Nt(e.id,e.width,e.height).then(e=>{n(e)})},[e.height,e.id,e.width]),O(`world-object`,{x:e.x||0,y:e.y||0,width:e.width,height:e.height,scale:e.scale,children:t?O(bi,{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})},Si=h(null);Si.displayName=`MapProjection`;function Ci(){let e=v(Si);if(!e)throw Error(`useMapProjection must be used within <MapObject />`);return e}function wi(){return Ci().projection}function Ti(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 Ei(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(...Ti(i.geometry,t.projectRing,t.lngLatToWorld,`feature-${i.id||e}`,i))}return r}if(e.type===`Feature`){let n=e;return n.geometry?Ti(n.geometry,t.projectRing,t.lngLatToWorld,`feature-${n.id||0}`,n):[]}return Ti(e,t.projectRing,t.lngLatToWorld,`geometry`)}function Di(){let e=wi();return S(()=>({project:t=>Ei(t,e)}),[e])}const Oi=({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=Ci(),s=Di().project(e);return m.createElement(m.Fragment,null,s.map(e=>e.kind===`point`?m.createElement(`box`,{key:e.key,interactive:a,target:{x:e.x-t/2,y:e.y-t/2,width:t,height:t},style:n}):m.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})))},ki=({bounds:e,width:t,height:n,preserveAspectRatio:r=!0,children:i,...a})=>{at(e);let o=S(()=>{if(!r)return{x:0,y:0,width:t,height:n};let i=(ot(e.east)-ot(e.west))/(st(e.south)-st(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=S(()=>{let t=mt({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=S(()=>({bounds:e,width:t,height:n,mapRect:o,projection:s}),[e,n,o,s,t]);return m.createElement(Si.Provider,{value:c},m.createElement(`world-object`,{width:t,height:n,...a},i))},Ai=({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=Ci(),p=Math.max(0,Math.floor(a)),h=Math.max(p,Math.floor(o)),g=n||t||ht,_=S(()=>{let e=[],t=0;for(let n=p;n<=h;n++){let r=bt({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=p;for(;t>0&&!(bt({bounds:f.bounds,zoom:t}).count<=c);)--t;e.push({zoom:t,coverage:bt({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,p]),v=S(()=>({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 m.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})}),C=m.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?C:m.createElement(`world-object`,{id:`${b}-frame`,x:f.mapRect.x,y:f.mapRect.y,width:f.mapRect.width,height:f.mapRect.height},C)},ji=(e,t,n=[])=>{let r=ur();y(()=>{if(r){let n=t,i=R[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 Mi(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 Ni(){let e=C({ctrl:!1,shift:!1,alt:!1});return x(()=>{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 Pi=(e,t)=>{let n=In(),r=ur(),i=_i(),a=C(),o=C(null),s=C(),[c,l]=w(!1),u=C(!1),d=C({north:0,south:0,east:0,west:0}),f=Ni(),p=_(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]),m=S(()=>e.width/e.height,[e.width,e.height]),h=_(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>=m){let e=i-a*m,[n,r]=Mi(t.east,t.west);t.west+=e*r,t.east-=e*n}else{let e=a-i/m,[n,r]=Mi(t.north,t.south);t.north+=e*n,t.south-=e*r}},[e.width,e.height,m]);hi(()=>{s&&r&&r.updateNextFrame()}),y(()=>{r&&r.updateNextFrame()},[r,c]);let g=_(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)&&h(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]);ji(`mousemove`,g,[e.width,e.height,i]),ji(`pointermove`,g,[e.width,e.height,i]);let v=C();return y(()=>{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]),y(()=>{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:p,onPointerMoveCallback:g,isEditing:c}};function Fi({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}=Pi({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:i},n),f=S(()=>u(`translate`),[u]),p=S(()=>u(`east`),[u]),m=S(()=>u(`west`),[u]),h=S(()=>u(`south`),[u]),g=S(()=>u(`north`),[u]),_=S(()=>u(`south-east`),[u]),v=S(()=>u(`south-west`),[u]),y=S(()=>u(`north-east`),[u]),b=S(()=>u(`north-west`),[u]),x=l===`sketch`,C={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`:x?`initial`:`none`};return O(D,{children:k(`world-object`,{...o,children:[r,x&&t?O(yi,{ref:c,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:x&&t?k(D,{children:[O(`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`:x?`initial`:`none`}}),i?null:k(D,{children:[O(`div`,{title:`east`,onTouchStart:p,onMouseDown:p,style:{...C,cursor:`e-resize`,height:s*2,width:s,right:0,top:`50%`,opacity:a?0:1,transform:`translate(${s/2}px, -${s}px)`}}),O(`div`,{title:`west`,onMouseDown:m,style:{...C,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)`}}),O(`div`,{title:`north`,onMouseDown:g,style:{...C,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)`}}),O(`div`,{title:`south`,onMouseDown:h,style:{...C,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)`}})]}),O(`div`,{title:`north-east`,onMouseDown:y,style:{...C,cursor:`ne-resize`,position:`absolute`,height:s,width:s,right:0,top:0,transform:`translate(${s/2}px, -${s/2}px)`}}),O(`div`,{title:`south-east`,onMouseDown:_,style:{...C,cursor:`se-resize`,position:`absolute`,height:s,width:s,bottom:0,right:0,transform:`translate(${s/2}px, ${s/2}px)`}}),O(`div`,{title:`south-west`,onMouseDown:v,style:{...C,cursor:`sw-resize`,position:`absolute`,height:s,width:s,bottom:0,left:0,transform:`translate(-${s/2}px, ${s/2}px)`}}),O(`div`,{title:`north-west`,onMouseDown:b,style:{...C,cursor:`nw-resize`,position:`absolute`,height:s,width:s,top:0,left:0,transform:`translate(-${s/2}px, -${s/2}px)`}})]}):null}):null]})})}function Ii({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=_(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 O(Fi,{x:t.x,y:t.y,rotation:s,width:t.width,height:t.height,resizable:o,onSave:l,maintainAspectRatio:i,disableCardinalControls:a,children:O(`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 Li=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useAfterPaint`,e):()=>{},t)},Ri=(e,{onCreated:t,resetWorldOnChange:n=!0,mode:r=`explore`,cover:i,containerRef:a,...o})=>{let[s,c]=w(!1),[l,u]=w(void 0),[d,f]=w(void 0),p=C(),m=C(),h=S(()=>({width:o.width,height:o.height}),[o.width,o.height]),[g,v,b,x]=ci(void 0,{width:o.width,height:o.height});or(()=>{let e=document.createElement(`canvas`);e.height=h.height,e.width=h.width,p.current=e},[]),or(()=>{let e=p.current;e&&(e.height=h.height,e.width=h.width)},[h.width,h.height]),y(()=>v?v.runtime.registerHook(`useAfterFrame`,()=>{if(p.current)try{u(p.current.toDataURL())}catch(e){e instanceof Error&&f(e.message)}}):()=>{},[]),y(()=>v?v.runtime.world.addLayoutSubscriber(e=>{e===`ready`&&c(!0)}):()=>{},[]),y(()=>{v&&v.em&&v.em.updateBounds()},[h]),y(()=>{v&&(v.runtime.mode=r)},[r]),y(()=>{if(v){let e=v.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]),or(()=>{let e=m.current;e&&(e.style.width=`${h.width}px`,e.style.height=`${h.height}px`,e.style.pointerEvents=`none`,e.style.overflow=`hidden`)},[h.height,h.width]),or(()=>{let e=()=>{if(v&&v.runtime){let e=v.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)},[v,o.height,o.width]);let T=_(function(e){let n=()=>{v&&(v.ready=!0)};return y(()=>{if(v){let e=t&&t(v);e&&e.then?e.then(n):n();return}return()=>{}},[]),e.children},[v]);return y(()=>{if(v&&v.runtime){let e=v.runtime;if(n)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome({cover:i})})}return()=>{}},[v,i,n]),or(()=>{v&&ar.render(O(T,{children:O(Fn.Provider,{value:r,children:O(Nn.Provider,{value:v,children:e})})}),v.runtime)},[v,r,e]),{loading:!l&&s,uri:l,imageError:d}},zi=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useBeforeFrame`,e):()=>{},t)},Bi=(e=[])=>{let[t,n]=w(e),[r,i]=w(!1),[a,o]=w(),s=_(()=>{i(!0),o(void 0)},[]),c=_(e=>{i(!0),o(e)},[]),l=e=>{n(t=>t.map(t=>t.id===e.id?e:t))},u=_(e=>{let t=Ce();n(n=>[...n,{id:t,...e}]),i(!1),o(void 0)},[]);return{isEditing:r,onDeselect:_(()=>{i(!1),o(void 0)},[]),selectedAnnotation:a,onCreateNewAnnotation:u,annotations:t,onUpdateAnnotation:l,setIsEditing:i,setSelectedAnnotation:o,editAnnotation:c,addNewAnnotation:s}};function Vi(e){return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1}}const Hi=e=>{let t=ur(),[n,r]=w(()=>Vi(e)),i=_(()=>{let n=t?t.getZoneRuntimeState(e):Vi(e);r(e=>e.zoneId===n.zoneId&&e.exists===n.exists&&e.active===n.active&&e.visibleInViewport===n.visibleInViewport?e:n)},[t,e]);return mi(i,[t,i]),y(()=>(i(),t?t.world.addLayoutSubscriber(e=>{(e===`zone-changed`||e===`goto-region`||e===`recalculate-world-size`)&&i()}):()=>{}),[t,i]),n};function Ui(e){return e.current===`sketch`}function Wi(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 Gi(e){let{src:t,target:n}=e,r=n?n.width:e.width,i=n?n.height:e.height;return new Tt({id:t,height:i,width:r,layers:[Y.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}export{di as Atlas,pi as AtlasAuto,Nn as AtlasContext,Pn as BoundsContext,J as Box,G as BrowserEventManager,Xe as CanvasRenderer,Ze as CompositeRenderer,$e as CompositeResource,ht as DEFAULT_OSM_TILE_TEMPLATE,Ct as DebugRenderer,Ur as DevTools,vi as DrawBox,je as Geometry,Dt as GridBuilder,yi as HTMLPortal,xi as ImageService,et as ImageTexture,tt as MAX_MERCATOR_LATITUDE,Oi as MapGeoJSON,ki as MapObject,Si as MapProjectionContext,Ai as MapTileLayer,St as MapTiledImage,Fn as ModeContext,Ln as ModeProvider,Zt as NavigatorRenderer,tn as OverlayRenderer,ar as ReactAtlas,Ii as RegionHighlight,Fi as ResizeWorldItem,zn as Runtime,Y as SingleImage,ii as StaticRenderer,Qt as Text,bi as TileSet,X as TiledImage,Lt as WarpAdapterController,ti as WebGLRenderer,Et as World,Tt as WorldObject,Vn as Zone,Zn as activateEvents,Xn as applyProps,vn as bounceOut,Ui as canDrag,it as clampMercatorLatitude,L as createDefaultEventMap,xt as createFiniteTileGrid,mt as createMapProjection,Rt as createWarpAdapterController,Sn as defaultConfig,ni as defaultPreset,yn as easingFunctions,bt as estimateFiniteTileGridCoverage,Gi as fromImage,Ot as getId,Yt as getNavigatorVisibleZoneIdSet,Jt as getNavigatorWorldRegion,qt as getNavigatorWorldTransform,Re as getRetryDelayMs,gt as getSubdomainForTile,Pt as getTileFromCanvas,Nt as getTileFromImageService,It as getTiles,Ft as getTilesFromManifest,dt as latToTileY,st as latitudeToMercatorY,ut as lngToTileX,ot as longitudeToMercatorX,ct as mercatorXToLongitude,lt as mercatorYToLatitude,Wi as mergeStyles,Xt as navigatorToWorldPoint,Mn as pdfScrollZoneController,Cn as popmotionController,oi as presets,Ei as projectMapGeoJSON,Le as resolveImageLoadingConfig,_t as resolveTileTemplate,vt as resolveTileUrl,ai as staticPreset,I as supportedEventAttributes,R as supportedEventMap,ft as tileXToLng,pt as tileYToLat,ir as unmountComponentAtNode,mi as useAfterFrame,Li as useAfterPaint,lr as useAtlas,Ri as useAtlasImage,zi as useBeforeFrame,gi as useCanvas,Bi as useControlledAnnotationList,hi as useFrame,Di as useMapGeoJSON,wi as useMapProjection,Ci as useMapProjectionContext,In as useMode,Pi as useResizeWorldItem,ur as useRuntime,ji as useWorldEvent,Hi as useZoneRuntimeState,at as validateMapBounds};
81
+ width: var(--atlas-container-width, ${pi(u??`100%`)});
82
+ height: var(--atlas-container-height, ${pi(l||(t?f.height:512))})
83
+ }`,[t,p,f.height,l,u]);return k(cr,{ref:a,className:m,...n,children:[f.width?O(fi,{width:f.width||100,height:f.height||100,...d,children:i.children}):null,i.hideInlineStyle?null:O(`style`,{children:h}),r]})}),hi=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useAfterFrame`,e):()=>{},t)},gi=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useFrame`,e):()=>{},t)},_i=()=>{let e=lr();return e&&e.canvas?e.canvas:void 0};function vi(){return v(Pn)}const yi=({onCreate:e})=>{let t=C({x:0,y:0}),n=_i(),r=vi(),i=ur(),[a,o]=w(),[s,c]=w(),l=In();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]),y(()=>{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]),y(()=>{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]),y(()=>{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]),y(()=>{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=m.forwardRef(({children:e,...t},n)=>{let r=C(),i=ur(),a=C(0),o=C(),s=C(),c=C(!1),l=C(void 0),u=C(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]),x(()=>{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?O(`div`,{ref:r,children:e}):e;if(await Br(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]),x(()=>()=>{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))},[]),O(`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=S(()=>{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=S(()=>{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=S(()=>{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 O(`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:k(`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?O(`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)=>O(`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=>O(`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]=w();return y(()=>{Nt(e.id,e.width,e.height).then(e=>{n(e)})},[e.height,e.id,e.width]),O(`world-object`,{x:e.x||0,y:e.y||0,width:e.width,height:e.height,scale:e.scale,children:t?O(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=h(null);Ci.displayName=`MapProjection`;function wi(){let e=v(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 S(()=>({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 m.createElement(m.Fragment,null,s.map(e=>e.kind===`point`?m.createElement(`box`,{key:e.key,interactive:a,target:{x:e.x-t/2,y:e.y-t/2,width:t,height:t},style:n}):m.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})=>{at(e);let o=S(()=>{if(!r)return{x:0,y:0,width:t,height:n};let i=(ot(e.east)-ot(e.west))/(st(e.south)-st(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=S(()=>{let t=mt({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=S(()=>({bounds:e,width:t,height:n,mapRect:o,projection:s}),[e,n,o,s,t]);return m.createElement(Ci.Provider,{value:c},m.createElement(`world-object`,{width:t,height:n,...a},i))},ji=({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(),p=Math.max(0,Math.floor(a)),h=Math.max(p,Math.floor(o)),g=n||t||ht,_=S(()=>{let e=[],t=0;for(let n=p;n<=h;n++){let r=bt({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=p;for(;t>0&&!(bt({bounds:f.bounds,zoom:t}).count<=c);)--t;e.push({zoom:t,coverage:bt({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,p]),v=S(()=>({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 m.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})}),C=m.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?C:m.createElement(`world-object`,{id:`${b}-frame`,x:f.mapRect.x,y:f.mapRect.y,width:f.mapRect.width,height:f.mapRect.height},C)},Mi=(e,t,n=[])=>{let r=ur();y(()=>{if(r){let n=t,i=R[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 Ni(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 Pi(){let e=C({ctrl:!1,shift:!1,alt:!1});return x(()=>{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 Fi=(e,t)=>{let n=In(),r=ur(),i=vi(),a=C(),o=C(null),s=C(),[c,l]=w(!1),u=C(!1),d=C({north:0,south:0,east:0,west:0}),f=Pi(),p=_(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]),m=S(()=>e.width/e.height,[e.width,e.height]),h=_(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>=m){let e=i-a*m,[n,r]=Ni(t.east,t.west);t.west+=e*r,t.east-=e*n}else{let e=a-i/m,[n,r]=Ni(t.north,t.south);t.north+=e*n,t.south-=e*r}},[e.width,e.height,m]);gi(()=>{s&&r&&r.updateNextFrame()}),y(()=>{r&&r.updateNextFrame()},[r,c]);let g=_(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)&&h(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]);Mi(`mousemove`,g,[e.width,e.height,i]),Mi(`pointermove`,g,[e.width,e.height,i]);let v=C();return y(()=>{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]),y(()=>{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:p,onPointerMoveCallback:g,isEditing:c}};function Ii({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}=Fi({x:o.x||0,y:o.y||0,width:o.width,height:o.height,maintainAspectRatio:i},n),f=S(()=>u(`translate`),[u]),p=S(()=>u(`east`),[u]),m=S(()=>u(`west`),[u]),h=S(()=>u(`south`),[u]),g=S(()=>u(`north`),[u]),_=S(()=>u(`south-east`),[u]),v=S(()=>u(`south-west`),[u]),y=S(()=>u(`north-east`),[u]),b=S(()=>u(`north-west`),[u]),x=l===`sketch`,C={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`:x?`initial`:`none`};return O(D,{children:k(`world-object`,{...o,children:[r,x&&t?O(bi,{ref:c,target:{x:0,y:0,height:o.height,width:o.width},relative:!0,interactive:!1,children:x&&t?k(D,{children:[O(`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`:x?`initial`:`none`}}),i?null:k(D,{children:[O(`div`,{title:`east`,onTouchStart:p,onMouseDown:p,style:{...C,cursor:`e-resize`,height:s*2,width:s,right:0,top:`50%`,opacity:a?0:1,transform:`translate(${s/2}px, -${s}px)`}}),O(`div`,{title:`west`,onMouseDown:m,style:{...C,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)`}}),O(`div`,{title:`north`,onMouseDown:g,style:{...C,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)`}}),O(`div`,{title:`south`,onMouseDown:h,style:{...C,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)`}})]}),O(`div`,{title:`north-east`,onMouseDown:y,style:{...C,cursor:`ne-resize`,position:`absolute`,height:s,width:s,right:0,top:0,transform:`translate(${s/2}px, -${s/2}px)`}}),O(`div`,{title:`south-east`,onMouseDown:_,style:{...C,cursor:`se-resize`,position:`absolute`,height:s,width:s,bottom:0,right:0,transform:`translate(${s/2}px, ${s/2}px)`}}),O(`div`,{title:`south-west`,onMouseDown:v,style:{...C,cursor:`sw-resize`,position:`absolute`,height:s,width:s,bottom:0,left:0,transform:`translate(-${s/2}px, ${s/2}px)`}}),O(`div`,{title:`north-west`,onMouseDown:b,style:{...C,cursor:`nw-resize`,position:`absolute`,height:s,width:s,top:0,left:0,transform:`translate(-${s/2}px, -${s/2}px)`}})]}):null}):null]})})}function Li({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=_(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 O(Ii,{x:t.x,y:t.y,rotation:s,width:t.width,height:t.height,resizable:o,onSave:l,maintainAspectRatio:i,disableCardinalControls:a,children:O(`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 Ri=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useAfterPaint`,e):()=>{},t)},zi=(e,{onCreated:t,resetWorldOnChange:n=!0,mode:r=`explore`,cover:i,containerRef:a,...o})=>{let[s,c]=w(!1),[l,u]=w(void 0),[d,f]=w(void 0),p=C(),m=C(),h=S(()=>({width:o.width,height:o.height}),[o.width,o.height]),[g,v,b,x]=li(void 0,{width:o.width,height:o.height});or(()=>{let e=document.createElement(`canvas`);e.height=h.height,e.width=h.width,p.current=e},[]),or(()=>{let e=p.current;e&&(e.height=h.height,e.width=h.width)},[h.width,h.height]),y(()=>v?v.runtime.registerHook(`useAfterFrame`,()=>{if(p.current)try{u(p.current.toDataURL())}catch(e){e instanceof Error&&f(e.message)}}):()=>{},[]),y(()=>v?v.runtime.world.addLayoutSubscriber(e=>{e===`ready`&&c(!0)}):()=>{},[]),y(()=>{v&&v.em&&v.em.updateBounds()},[h]),y(()=>{v&&(v.runtime.mode=r)},[r]),y(()=>{if(v){let e=v.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]),or(()=>{let e=m.current;e&&(e.style.width=`${h.width}px`,e.style.height=`${h.height}px`,e.style.pointerEvents=`none`,e.style.overflow=`hidden`)},[h.height,h.width]),or(()=>{let e=()=>{if(v&&v.runtime){let e=v.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)},[v,o.height,o.width]);let T=_(function(e){let n=()=>{v&&(v.ready=!0)};return y(()=>{if(v){let e=t&&t(v);e&&e.then?e.then(n):n();return}return()=>{}},[]),e.children},[v]);return y(()=>{if(v&&v.runtime){let e=v.runtime;if(n)return e.world.addLayoutSubscriber(t=>{t===`recalculate-world-size`&&e.goHome({cover:i})})}return()=>{}},[v,i,n]),or(()=>{v&&ar.render(O(T,{children:O(Fn.Provider,{value:r,children:O(Nn.Provider,{value:v,children:e})})}),v.runtime)},[v,r,e]),{loading:!l&&s,uri:l,imageError:d}},Bi=(e,t=[])=>{let n=ur();y(()=>n?n.registerHook(`useBeforeFrame`,e):()=>{},t)},Vi=(e=[])=>{let[t,n]=w(e),[r,i]=w(!1),[a,o]=w(),s=_(()=>{i(!0),o(void 0)},[]),c=_(e=>{i(!0),o(e)},[]),l=e=>{n(t=>t.map(t=>t.id===e.id?e:t))},u=_(e=>{let t=Ce();n(n=>[...n,{id:t,...e}]),i(!1),o(void 0)},[]);return{isEditing:r,onDeselect:_(()=>{i(!1),o(void 0)},[]),selectedAnnotation:a,onCreateNewAnnotation:u,annotations:t,onUpdateAnnotation:l,setIsEditing:i,setSelectedAnnotation:o,editAnnotation:c,addNewAnnotation:s}};function Hi(e){return{zoneId:e,exists:!1,active:!1,visibleInViewport:!1}}const Ui=e=>{let t=ur(),[n,r]=w(()=>Hi(e)),i=_(()=>{let n=t?t.getZoneRuntimeState(e):Hi(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]),y(()=>(i(),t?t.world.addLayoutSubscriber(e=>{(e===`zone-changed`||e===`goto-region`||e===`recalculate-world-size`)&&i()}):()=>{}),[t,i]),n};function Wi(e){return e.current===`sketch`}function Gi(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 Ki(e){let{src:t,target:n}=e,r=n?n.width:e.width,i=n?n.height:e.height;return new Tt({id:t,height:i,width:r,layers:[Y.fromImage(t,{height:i,width:r},{width:e.width,height:e.height})]})}export{fi as Atlas,mi as AtlasAuto,Nn as AtlasContext,Pn as BoundsContext,J as Box,G as BrowserEventManager,Xe as CanvasRenderer,Ze as CompositeRenderer,$e as CompositeResource,ht as DEFAULT_OSM_TILE_TEMPLATE,Ct as DebugRenderer,Wr as DevTools,yi as DrawBox,je as Geometry,Dt as GridBuilder,bi as HTMLPortal,Si as ImageService,et as ImageTexture,tt as MAX_MERCATOR_LATITUDE,ki as MapGeoJSON,Ai as MapObject,Ci as MapProjectionContext,ji as MapTileLayer,St as MapTiledImage,Fn as ModeContext,Ln as ModeProvider,Zt as NavigatorRenderer,tn as OverlayRenderer,ar as ReactAtlas,Li as RegionHighlight,Ii as ResizeWorldItem,zn as Runtime,Y as SingleImage,ai as StaticRenderer,Qt as Text,xi as TileSet,X as TiledImage,Lt as WarpAdapterController,ni as WebGLRenderer,Et as World,Tt as WorldObject,Vn as Zone,Zn as activateEvents,Xn as applyProps,vn as bounceOut,Wi as canDrag,it as clampMercatorLatitude,L as createDefaultEventMap,xt as createFiniteTileGrid,mt as createMapProjection,Rt as createWarpAdapterController,Sn as defaultConfig,ri as defaultPreset,yn as easingFunctions,bt as estimateFiniteTileGridCoverage,Ki as fromImage,Ot as getId,Yt as getNavigatorVisibleZoneIdSet,Jt as getNavigatorWorldRegion,qt as getNavigatorWorldTransform,Re as getRetryDelayMs,gt as getSubdomainForTile,Pt as getTileFromCanvas,Nt as getTileFromImageService,It as getTiles,Ft as getTilesFromManifest,dt as latToTileY,st as latitudeToMercatorY,ut as lngToTileX,ot as longitudeToMercatorX,ct as mercatorXToLongitude,lt as mercatorYToLatitude,Gi as mergeStyles,Xt as navigatorToWorldPoint,Mn as pdfScrollZoneController,Cn as popmotionController,si as presets,Di as projectMapGeoJSON,Le as resolveImageLoadingConfig,_t as resolveTileTemplate,vt as resolveTileUrl,oi as staticPreset,I as supportedEventAttributes,R as supportedEventMap,ft as tileXToLng,pt as tileYToLat,ir as unmountComponentAtNode,hi as useAfterFrame,Ri as useAfterPaint,lr as useAtlas,zi as useAtlasImage,Bi as useBeforeFrame,_i as useCanvas,Vi as useControlledAnnotationList,gi as useFrame,Oi as useMapGeoJSON,Ti as useMapProjection,wi as useMapProjectionContext,In as useMode,Fi as useResizeWorldItem,ur as useRuntime,Mi as useWorldEvent,Ui as useZoneRuntimeState,at as validateMapBounds};
84
84
  //# sourceMappingURL=index.js.map