PageSourceSearch

https://patron.theateralliance.org/_next/static/chunks/50791.e624862249f5cda0.js

js theateralliance.org collected 2026-10-10 00:36:24 UTC 749,688 bytes, 3,357 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[50791],{1609:(e,t,i)=>{i.d(t,{LB:()=>f,aY:()=>m,ow:()=>g});var r=i(85402),n=i(69173),s=i(59465),a=i(90994);let o=[0,0,0,0],l=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],u=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],c=[0,0,0],h=[0,0,0],d={default:-1,cartesian:0,lnglat:1,"meter-offsets":2,"lnglat-offsets":3};function f(e){let t=d[e];if(void 0===t)throw Error(`Invalid coordinateSystem: ${e}`);return t}let p=(0,a.A)(function({viewport:e,devicePixelRatio:t,coordinateSystem:i,coordinateOrigin:a}){let{projectionCenter:h,viewProjectionMatrix:d,originCommon:p,cameraPosCommon:m,shaderCoordinateOrigin:b,geospatialOrigin:v}=function(e,t,i){let{viewMatrixUncentered:s,projectionMatrix:a}=e,{viewMatrix:u,viewProjectionMatrix:c}=e,h=o,d=o,f=e.cameraPosition,{geospatialOrigin:p,shaderCoordinateOrigin:m,offsetMode:b}=g(e,t,i);return b&&(d=e.projectPosition(p||m),f=[f[0]-d[0],f[1]-d[1],f[2]-d[2]],d[3]=1,h=r.Z0([],d,c),u=s||u,c=n.lw([],a,u),c=n.lw([],c,l)),{viewMatrix:u,viewProjectionMatrix:c,projectionCenter:h,originCommon:d,cameraPosCommon:f,shaderCoordinateOrigin:m,geospatialOrigin:p}}(e,i,a),y=e.getDistanceScales(),_=[e.width*t,e.height*t],w=r.Z0([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,x={coordinateSystem:f(i),projectionMode:e.projectionMode,coordinateOrigin:b,commonOrigin:p.slice(0,3),center:h,pseudoMeters:!!e._pseudoMeters,viewportSize:_,devicePixelRatio:t,focalDistance:w,commonUnitsPerMeter:y.unitsPerMeter,commonUnitsPerWorldUnit:y.unitsPerMeter,commonUnitsPerWorldUnit2:c,scale:e.scale,wrapLongitude:!1,viewProjectionMatrix:d,modelMatrix:u,cameraPosition:m};if(v){let t=e.getDistanceScales(v);switch(i){case"meter-offsets":x.commonUnitsPerWorldUnit=t.unitsPerMeter,x.commonUnitsPerWorldUnit2=t.unitsPerMeter2;break;case"lnglat":case"lnglat-offsets":e._pseudoMeters||(x.commonUnitsPerMeter=t.unitsPerMeter),x.commonUnitsPerWorldUnit=t.unitsPerDegree,x.commonUnitsPerWorldUnit2=t.unitsPerDegree2;break;case"cartesian":x.commonUnitsPerWorldUnit=[1,1,t.unitsPerMeter[2]],x.commonUnitsPerWorldUnit2=[0,0,t.unitsPerMeter2[2]]}}if(e.projectionMode===s.Kx.GLOBE&&"meter-offsets"===i){let e=a[0]*Math.PI/180,t=a[1]*Math.PI/180,i=Math.cos(t),r=((a[2]||0)/6370972+1)*256;x.commonOrigin=[Math.sin(e)*i*r,-Math.cos(e)*i*r,Math.sin(t)*r]}return x});function g(e,t,i=h){let r;i.length<3&&(i=[i[0],i[1],0]);let n=i,a=!0;switch(r="lnglat-offsets"===t||"meter-offsets"===t?i:e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case s.Kx.WEB_MERCATOR:("lnglat"===t||"cartesian"===t)&&(r=[0,0,0],a=!1);break;case s.Kx.WEB_MERCATOR_AUTO_OFFSET:"lnglat"===t?n=r:"cartesian"===t&&(n=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],r=e.unprojectPosition(n),n[0]-=i[0],n[1]-=i[1],n[2]-=i[2]);break;case s.Kx.IDENTITY:(n=e.position.map(Math.fround))[2]=n[2]||0;break;case s.Kx.GLOBE:a=!1,r=null;break;default:a=!1}return{geospatialOrigin:r,shaderCoordinateOrigin:n,offsetMode:a}}function m({viewport:e,devicePixelRatio:t=1,modelMatrix:i=null,coordinateSystem:r="default",coordinateOrigin:n=h,autoWrapLongitude:s=!1}){"default"===r&&(r=e.isGeospatial?"lnglat":"cartesian");let a=p({viewport:e,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:n});return a.wrapLongitude=s,a.modelMatrix=i||u,a}},1806:(e,t,i)=>{var r,n,s;i.d(t,{Cp:()=>B,EU:()=>en,uq:()=>z,h1:()=>j,Cx:()=>D}),!function(e){e[e.Start=1]="Start",e[e.Move=2]="Move",e[e.End=4]="End",e[e.Cancel=8]="Cancel"}(r||(r={})),function(e){e[e.None=0]="None",e[e.Left=1]="Left",e[e.Right=2]="Right",e[e.Up=4]="Up",e[e.Down=8]="Down",e[e.Horizontal=3]="Horizontal",e[e.Vertical=12]="Vertical",e[e.All=15]="All"}(n||(n={})),function(e){e[e.Possible=1]="Possible",e[e.Began=2]="Began",e[e.Changed=4]="Changed",e[e.Ended=8]="Ended",e[e.Recognized=8]="Recognized",e[e.Cancelled=16]="Cancelled",e[e.Failed=32]="Failed"}(s||(s={}));let a="manipulation",o="none",l="pan-x",u="pan-y";class c{constructor(e,t){this.actions="",this.manager=e,this.set(t)}set(e){"compute"===e&&(e=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=e,this.actions=e)}update(){this.set(this.manager.options.touchAction)}compute(){let e=[];for(let t of this.manager.recognizers)t.options.enable&&(e=e.concat(t.getTouchAction()));var t=e.join(" ");if(t.includes(o))return o;let i=t.includes(l),r=t.includes(u);return i&&r?o:i||r?i?l:u:t.includes(a)?a:"auto"}}function h(e){return e.trim().split(/\s+/g)}
1function d(e,t,i){if(e)for(let r of h(t))e.addEventListener(r,i,!1)}function f(e,t,i){if(e)for(let r of h(t))e.removeEventListener(r,i,!1)}function p(e){return(e.ownerDocument||e).defaultView}function g(e){let t=e.length;if(1===t)return{x:Math.round(e[0].clientX),y:Math.round(e[0].clientY)};let i=0,r=0,n=0;for(;n<t;)i+=e[n].clientX,r+=e[n].clientY,n++;return{x:Math.round(i/t),y:Math.round(r/t)}}function m(e){let t=[],i=0;for(;i<e.pointers.length;)t[i]={clientX:Math.round(e.pointers[i].clientX),clientY:Math.round(e.pointers[i].clientY)},i++;return{timeStamp:Date.now(),pointers:t,center:g(t),deltaX:e.deltaX,deltaY:e.deltaY}}function b(e,t){let i=t.x-e.x,r=t.y-e.y;return Math.sqrt(i*i+r*r)}function v(e,t){let i=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.sqrt(i*i+r*r)}function y(e,t){let i=t.clientX-e.clientX;return 180*Math.atan2(t.clientY-e.clientY,i)/Math.PI}function _(e,t){return e===t?n.None:Math.abs(e)>=Math.abs(t)?e<0?n.Left:n.Right:t<0?n.Up:n.Down}function w(e,t,i){return{x:t/e||0,y:i/e||0}}function x(e,t){return"pointerId"in e?e.pointerId:t}function E(e,t){e.movementOrigin=new Map(t.map((e,t)=>[x(e,t),{clientX:e.clientX,clientY:e.clientY}])),e.firstMovementTime=void 0}class S{constructor(e){this.evEl="",this.evWin="",this.evTarget="",this.domHandler=e=>{this.manager.options.enable&&this.handler(e)},this.manager=e,this.element=e.element,this.target=e.options.inputTarget||e.element}callback(e,t){!function(e,t,i){let n=i.pointers.length,s=i.changedPointers.length,a=t&r.Start&&n-s==0,o=t&(r.End|r.Cancel)&&n-s==0;i.isFirst=!!a,i.isFinal=!!o,a&&(e.session={}),i.eventType=t;let l=function(e,t){var i,n;let{session:s}=e,{pointers:a}=t,{length:o}=a;s.firstInput||(s.firstInput=m(t)),o>1&&!s.firstMultiple?s.firstMultiple=m(t):1===o&&(s.firstMultiple=!1);let{firstInput:l,firstMultiple:u}=s,c=u?u.center:l.center,h=t.center=g(a);t.timeStamp=Date.now(),t.deltaTime=t.timeStamp-l.timeStamp;let d=t.pointers.map(x);if(s.movementOrigin?.size===d.length&&d.every(e=>s.movementOrigin.has(e))||E(s,t.pointers),t.distancePerPointer=t.pointers.map((e,t)=>v(s.movementOrigin.get(d[t]),e)),t.eventType&r.Move&&t.distancePerPointer.some(e=>e>0)&&(s.firstMovementTime??(s.firstMovementTime=t.timeStamp)),t.movementDeltaTime=void 0===s.firstMovementTime?0:t.timeStamp-s.firstMovementTime,t.eventType&(r.End|r.Cancel)){let e=t.changedPointers.map(e=>x(e,t.pointers.indexOf(e)));E(s,t.pointers.filter((t,i)=>!e.includes(d[i])))}t.angle=function(e,t){let i=t.x-e.x;return 180*Math.atan2(t.y-e.y,i)/Math.PI}(c,h),t.distance=b(c,h);let{deltaX:f,deltaY:p}=function(e,t){let i=t.center,n=e.offsetDelta,s=e.prevDelta,a=e.prevInput;return(t.eventType===r.Start||a?.eventType===r.End)&&(s=e.prevDelta={x:a?.deltaX||0,y:a?.deltaY||0},n=e.offsetDelta={x:i.x,y:i.y}),{deltaX:s.x+(i.x-n.x),deltaY:s.y+(i.y-n.y)}}(s,t);t.deltaX=f,t.deltaY=p,t.offsetDirection=_(t.deltaX,t.deltaY);let S=w(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=S.x,t.overallVelocityY=S.y,t.overallVelocity=Math.abs(S.x)>Math.abs(S.y)?S.x:S.y,t.scale=u?(i=u.pointers,v(a[0],a[1])/v(i[0],i[1])):1,t.rotation=u?(n=u.pointers,y(a[1],a[0])-y(n[1],n[0])):0,t.maxPointers=s.prevInput?t.pointers.length>s.prevInput.maxPointers?t.pointers.length:s.prevInput.maxPointers:t.pointers.length;let P=e.element;return function(e,t){let i=e;for(;i;){if(i===t)return!0;i=i.parentNode}return!1}(t.srcEvent.target,P)&&(P=t.srcEvent.target),t.target=P,!function(e,t){let i,n,s,a,o=e.lastInterval||t,l=t.timeStamp-o.timeStamp;if(t.eventType!==r.Cancel&&(l>25||void 0===o.velocity)){let r=t.deltaX-o.deltaX,u=t.deltaY-o.deltaY,c=w(l,r,u);n=c.x,s=c.y,i=Math.abs(c.x)>Math.abs(c.y)?c.x:c.y,a=_(r,u),e.lastInterval=t}else i=o.velocity,n=o.velocityX,s=o.velocityY,a=o.direction;t.velocity=i,t.velocityX=n,t.velocityY=s,t.direction=a}(s,t),t}(e,i);e.emit("hammer.input",l),e.recognize(l),e.session.prevInput=l}(this.manager,e,t)}init(){d(this.element,this.evEl,this.domHandler),d(this.target,this.evTarget,this.domHandler),d(p(this.element),this.evWin,this.domHandler)}destroy(){f(this.element,this.evEl,this.domHandler),f(this.target,this.evTarget,this.domHandler),f(p(this.element),this.evWin,this.domHandler)}}let P={pointerdown:r.Start,pointermove:r.Move,pointerup:r.End,pointercancel:r.Cancel,pointerout:r.Cancel};class C extends S{constructor(e){super(e),this.evEl="pointerdown",this.evWin="pointermove pointerup pointercancel",this.store=this.manager.session.pointerEvents=[],this.init()}handler(e){let{store:t}=this,i=!1,n=P[e.type],s=e.pointerType,a="touch"===s,o=t.findIndex(t=>t.pointerId===e.pointerId);n&r.Start&&(e.buttons||a)?o<0&&(t.push(e),o=t.length-1):n&(r.End|r.Cancel)&&(i=!0),!(o<0)&&(t[o]=e,this.callback(n,{pointers:t,changedPointers:[e],eventType:n,pointerType:s,srcEvent:e}),i&&t.splice(o,1))}}let T=["","webkit","Moz","MS","ms","o"],A={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}};class M{constructor(e,t){this.options={...A,...t,cssProps:{...A.cssProps,...t.cssProps},inputTarget:t.inputTarget||e},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=new C(this),this.touchAction=new c(this,this.options.touchAction),this.toggleCssProps(!0)}set(e){return Object.assign(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this}stop(e){this.session.stopped=e?2:1}recognize(e){let t,{session:i}=this;if(i.stopped)return;this.session.prevented&&e.srcEvent.preventDefault();let{recognizers:r}=this,{curRecognizer:n}=i;(!n||n&&n.state&s.Recognized)&&(n=i.curRecognizer=null);let a=0;for(;a<r.length;)t=r[a],2!==i.stopped&&(!n||t===n||t.canRecognizeWith(n))?t.recognize(e):t.reset(),!n&&t.state&(s.Began|s.Changed|s.Ended)&&(n=i.curRecognizer=t),a++}get(e){let{recognizers:t}=this;for(let i=0;i<t.length;i++)if(t[i].options.event===e)return t[i];return null}add(e){if(Array.isArray(e)){for(let t of e)this.add(t);return this}let t=this.get(e.options.event);return t&&this.remove(t),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e}remove(e){if(Array.isArray(e)){for(let t of e)this.remove(t);return this}let t="string"==typeof e?this.get(e):e;if(t){let{recognizers:e}=this,i=e.indexOf(t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this}on(e,t){if(!e||!t)return;let{handlers:i}=this;for(let r of h(e))i[r]=i[r]||[],i[r].push(t)}off(e,t){if(!e)return;let{handlers:i}=this;for(let r of h(e))t?i[r]&&i[r].splice(i[r].indexOf(t),1):delete i[r]}emit(e,t){let i=this.handlers[e]&&this.handlers[e].slice();if(!i||!i.length)return;t.type=e,t.preventDefault=function(){t.srcEvent.preventDefault()};let r=0;for(;r<i.length;)i[r](t),r++}destroy(){this.toggleCssProps(!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}toggleCssProps(e){let{element:t}=this;if(t){for(let[i,r]of Object.entries(this.options.cssProps)){let n=function(e,t){let i=t[0].toUpperCase()+t.slice(1);for(let r of T){let n=r?r+i:t;if(n in e)return n}}(t.style,i);e?(this.oldCssProps[n]=t.style[n],t.style[n]=r):t.style[n]=this.oldCssProps[n]||""}e||(this.oldCssProps={})}}}let L=1;
1function k(e){return e&s.Cancelled?"cancel":e&s.Ended?"end":e&s.Changed?"move":e&s.Began?"start":""}class I{constructor(e){this.options=e,this.id=L++,this.state=s.Possible,this.simultaneous={},this.requireFail=[]}set(e){return Object.assign(this.options,e),this.manager.touchAction.update(),this}recognizeWith(e){let t;if(Array.isArray(e)){for(let t of e)this.recognizeWith(t);return this}if("string"==typeof e){if(!(t=this.manager.get(e)))throw Error(`Cannot find recognizer ${e}`)}else t=e;let{simultaneous:i}=this;return i[t.id]||(i[t.id]=t,t.recognizeWith(this)),this}dropRecognizeWith(e){let t;if(Array.isArray(e)){for(let t of e)this.dropRecognizeWith(t);return this}return(t="string"==typeof e?this.manager.get(e):e)&&delete this.simultaneous[t.id],this}requireFailure(e){let t;if(Array.isArray(e)){for(let t of e)this.requireFailure(t);return this}if("string"==typeof e){if(!(t=this.manager.get(e)))throw Error(`Cannot find recognizer ${e}`)}else t=e;let{requireFail:i}=this;return -1===i.indexOf(t)&&(i.push(t),t.requireFailure(this)),this}dropRequireFailure(e){let t;if(Array.isArray(e)){for(let t of e)this.dropRequireFailure(t);return this}if(t="string"==typeof e?this.manager.get(e):e){let e=this.requireFail.indexOf(t);e>-1&&this.requireFail.splice(e,1)}return this}hasRequireFailures(){return!!this.requireFail.find(e=>e.options.enable)}canRecognizeWith(e){return!!this.simultaneous[e.id]}emit(e){if(!e)return;let{state:t}=this;t<s.Ended&&this.manager.emit(this.options.event+k(t),e),this.manager.emit(this.options.event,e),e.additionalEvent&&this.manager.emit(e.additionalEvent,e),t>=s.Ended&&this.manager.emit(this.options.event+k(t),e)}tryEmit(e){this.canEmit()?this.emit(e):this.state=s.Failed}canEmit(){let e=0;for(;e<this.requireFail.length;){if(!(this.requireFail[e].state&(s.Failed|s.Possible)))return!1;e++}return!0}recognize(e){let t={...e};if(!this.options.enable){this.reset(),this.state=s.Failed;return}this.state&(s.Recognized|s.Cancelled|s.Failed)&&(this.state=s.Possible),this.state=this.process(t),this.state&(s.Began|s.Changed|s.Ended|s.Cancelled)&&this.tryEmit(t)}getEventNames(){return[this.options.event]}reset(){}}class O extends I{attrTest(e){let t=this.options.pointers;return 0===t||e.pointers.length===t}coherentTest(e){let t=this.options.coherent;return!t?.length||t.some(t=>{var i,r;return i=e,(void 0===(r=t).distance||i.distance>=r.distance)&&(void 0===r.distancePerPointer||i.distancePerPointer.length>0&&i.distancePerPointer.every(e=>e>=r.distancePerPointer))&&(void 0===r.movementDeltaTime||i.movementDeltaTime>=r.movementDeltaTime)&&(void 0===r.rotation||Math.abs(((i.rotation+180)%360+360)%360-180)>=r.rotation)&&(void 0===r.scale||Math.abs(i.scale-1)>=r.scale)})}process(e){let{state:t}=this,{eventType:i}=e,n=t&(s.Began|s.Changed),a=this.attrTest(e);return n&&(i&r.Cancel||!a)?t|s.Cancelled:n||a?i&r.End?t|s.Ended:t&s.Began?t|s.Changed:s.Began:s.Failed}}let R=["","start","move","end","cancel"];class B extends I{constructor(e={}){super({enable:!0,event:"doubleclickdrag",pointers:1,interval:500,time:350,threshold:28,dragThreshold:1,pixelsPerScale:120,...e}),this._tapStart=null,this._lastTap=null,this._drag=null,this._emittedStart=!1}getTouchAction(){return[a]}getEventNames(){return R.map(e=>this.options.event+e)}process(e){let{options:t}=this;return e.pointers.length!==t.pointers?(this.reset(),s.Failed):e.eventType&r.Start?this._handleStart(e):e.eventType&r.Move?this._handleMove(e):e.eventType&r.Cancel?this._handleEnd(e,!0):e.eventType&r.End?this._handleEnd(e,!1):s.Failed}reset(){this._tapStart=null,this._lastTap=null,this._drag=null,this._emittedStart=!1}emit(e){if(e){if(this.state===s.Began){if(!this._drag?.active||this._emittedStart)return;this._emittedStart=!0,this.manager.emit(`${this.options.event}start`,e),this.manager.emit(this.options.event,e);return}if(this.state===s.Changed){if(!this._emittedStart)return;this.manager.emit(`${this.options.event}move`,e),this.manager.emit(this.options.event,e);return}if(this.state===s.Ended){if(!this._emittedStart)return;this.manager.emit(this.options.event,e),this.manager.emit(`${this.options.event}end`,e),this._emittedStart=!1;return}if(this.state===s.Cancelled){if(!this._emittedStart)return;this.manager.emit(this.options.event,e),this.manager.emit(`${this.options.event}cancel`,e),this._emittedStart=!1}}}_handleStart(e){let t=this._getPointerId(e);
1return this._lastTap&&this._isTapMatch(e,this._lastTap)?(this._tapStart=null,this._lastTap=null,this._drag={startCenter:e.center,pointerId:t,active:!1},this._emittedStart=!1,s.Began):(this._tapStart={center:e.center,timeStamp:e.timeStamp,pointerId:t},this._lastTap=null,this._drag=null,this._emittedStart=!1,s.Failed)}_handleMove(e){if(!this._drag||!this._isSamePointer(e,this._drag.pointerId))return s.Failed;let t=this._drag.startCenter.y-e.center.y;return!this._drag.active&&Math.abs(t)<this.options.dragThreshold?s.Began:(this._drag.active=!0,e.scale=Math.pow(2,t/this.options.pixelsPerScale),this._emittedStart?s.Changed:s.Began)}_handleEnd(e,t){if(this._drag&&this._isSamePointer(e,this._drag.pointerId)){let{active:i,startCenter:r}=this._drag;if(this._drag=null,this._tapStart=null,this._lastTap=null,!i)return this._emittedStart=!1,s.Failed;let n=r.y-e.center.y;return e.scale=Math.pow(2,n/this.options.pixelsPerScale),t?s.Cancelled:s.Ended}return this._tapStart&&this._isSamePointer(e,this._tapStart.pointerId)?(this._isValidTap(e)?this._lastTap={center:e.center,timeStamp:e.timeStamp,pointerId:this._tapStart.pointerId}:this._lastTap=null,this._tapStart=null):t&&this.reset(),s.Failed}_isTapMatch(e,t){return e.timeStamp-t.timeStamp<=this.options.interval&&b(e.center,t.center)<=this.options.threshold}_isValidTap(e){return e.deltaTime<=this.options.time&&e.distance<=this.options.threshold}_getPointerId(e){return"pointerId"in e.srcEvent?e.srcEvent.pointerId:null}_isSamePointer(e,t){return null===t||this._getPointerId(e)===t}}class D extends I{constructor(e={}){super({enable:!0,event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10,...e}),this.pTime=null,this.pCenter=null,this._timer=null,this._input=null,this.count=0}getTouchAction(){return[a]}process(e){let{options:t}=this,i=e.pointers.length===t.pointers,n=e.distance<t.threshold,a=e.deltaTime<t.time;if(this.reset(),e.eventType&r.Start&&0===this.count)return this.failTimeout();if(n&&a&&i){if(e.eventType!==r.End)return this.failTimeout();let i=!this.pTime||e.timeStamp-this.pTime<t.interval,n=!this.pCenter||b(this.pCenter,e.center)<t.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,n&&i?this.count+=1:this.count=1,this._input=e,0==this.count%t.taps)return this.hasRequireFailures()?(this._timer=setTimeout(()=>{this.state=s.Recognized,this.tryEmit(this._input)},t.interval),s.Began):s.Recognized}return s.Failed}failTimeout(){return this._timer=setTimeout(()=>{this.state=s.Failed},this.options.interval),s.Failed}reset(){clearTimeout(this._timer)}emit(e){this.state===s.Recognized&&(e.tapCount=this.count,this.manager.emit(this.options.event,e))}}class F extends O{constructor(){super(...arguments),this.wheelSession=null,this.wheelSessionUnsubscribe=null,this.handleWheelSessionEvent=e=>{"trackpad"===e.device&&this.handleTrackpadEvent(e)}}set(e){let{wheelSession:t,...i}=e;return t&&t!==this.wheelSession&&(this.wheelSessionUnsubscribe?.(),this.wheelSessionUnsubscribe=null,this.wheelSession=t),super.set(i),this.updateWheelSessionSubscription(),this}getTrackpadInput(e,t={}){let{srcEvent:i}=e,r=t.deltaX??e.deltaX,n=t.deltaY??e.deltaY,s=_(r,n),a=Math.sqrt(e.deltaX*e.deltaX+e.deltaY*e.deltaY);return{pointers:[i,i],changedPointers:[i,i],pointerType:"trackpad",srcEvent:i,eventType:e.eventType,timeStamp:e.timeStamp,deltaTime:e.deltaTime,center:e.center,deltaX:r,deltaY:n,angle:180*Math.atan2(n,r)/Math.PI,distance:Math.sqrt(r*r+n*n),distancePerPointer:[a,a],movementDeltaTime:e.deltaTime,scale:1,rotation:0,direction:s,offsetDirection:s,velocity:e.velocity,velocityX:e.velocityX,velocityY:e.velocityY,overallVelocity:e.overallVelocity,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,maxPointers:2,target:i.target||this.manager.element,additionalEvent:"",...t}}updateWheelSessionSubscription(){let e=!!(this.wheelSession&&this.options.enable&&this.options.trackpad&&2===this.options.pointers);e&&!this.wheelSessionUnsubscribe?this.wheelSessionUnsubscribe=this.wheelSession.on(this.handleWheelSessionEvent):!e&&this.wheelSessionUnsubscribe&&(this.wheelSessionUnsubscribe(),this.wheelSessionUnsubscribe=null)}}let $=["","start","move","end","cancel","up","down","left","right"];class z extends F{constructor(e={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:n.All,trackpad:!1,coherent:[],...e}),this.trackpadGesture=!1,this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:e}}=this,t=[];return e&n.Horizontal&&t.push(u),e&n.Vertical&&t.push(l),t}getEventNames(){return $.map(e=>this.options.event+e)}directionTest(e){let{options:t}=this,i=!0,{distance:r}=e,{direction:s}=e,a=e.deltaX,o=e.deltaY;return s&t.direction||(t.direction&n.Horizontal?(s=0===a?n.None:a<0?n.Left:n.Right,i=a!==this.pX,r=Math.abs(e.deltaX)):(s=0===o?n.None:o<0?n.Up:n.Down,i=o!==this.pY,r=Math.abs(e.deltaY))),e.direction=s,i&&r>t.threshold&&!!(s&t.direction)}attrTest(e){let t=!!(this.state&s.Began),i=!(this.options.coherent?.length&&e.eventType&(r.End|r.Cancel));return super.attrTest(e)&&(t||i&&this.coherentTest(e)&&this.directionTest(e))}emit(e){this.pX=e.deltaX,this.pY=e.deltaY;let t=n[e.direction].toLowerCase();t&&(e.additionalEvent=this.options.event+t),super.emit(e)}handleTrackpadEvent(e){e.isFirst&&(this.trackpadGesture=!e.srcEvent.ctrlKey,!this.trackpadGesture&&this.state&(s.Recognized|s.Cancelled|s.Failed)&&(this.state=s.Possible)),this.trackpadGesture&&(this.recognize(this.getTrackpadInput(e,{deltaX:-e.deltaX,deltaY:-e.deltaY,velocity:-e.velocity,velocityX:-e.velocityX,velocityY:-e.velocityY,overallVelocity:-e.overallVelocity,overallVelocityX:-e.overallVelocityX,overallVelocityY:-e.overallVelocityY})),e.isFinal&&(this.trackpadGesture=!1))}}let N=["","start","move","end","cancel","in","out"];class j extends F{constructor(e={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,trackpad:!1,coherent:[],...e}),this.trackpadGesture=!1}getTouchAction(){return[o]}getEventNames(){return N.map(e=>this.options.event+e)}attrTest(e){let t=!!this.options.coherent?.length,i=!!(this.state&s.Began),n=!(t&&e.eventType&(r.End|r.Cancel));return super.attrTest(e)&&(i||n&&(t?this.coherentTest(e):Math.abs(e.scale-1)>this.options.threshold))}emit(e){if(1!==e.scale){let t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}super.emit(e)}handleTrackpadEvent(e){e.isFirst&&(this.trackpadGesture=e.srcEvent.ctrlKey,!this.trackpadGesture&&this.state&(s.Recognized|s.Cancelled|s.Failed)&&(this.state=s.Possible)),this.trackpadGesture&&(this.recognize(this.getTrackpadInput(e,{deltaX:0,deltaY:0,velocity:0,velocityX:0,velocityY:0,overallVelocity:0,overallVelocityX:0,overallVelocityY:0,scale:Math.exp(-e.deltaY/100)})),e.isFinal&&(this.trackpadGesture=!1))}}class U{constructor(e,t,i){this.element=e,this.callback=t,this.options=i}listen(e,t){t?this.element.addEventListener(e,this.handleEvent,{passive:!1}):this.element.removeEventListener(e,this.handleEvent)}}let V="undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent.toLowerCase():"";"undefined"!=typeof window&&window;let W=-1!==V.indexOf("firefox");class G extends U{constructor(e,t,i){i.enable=i.enable??!1,super(e,t,i),this.handleEvent=e=>{if(!this.options.enable)return;let t=e.deltaY;globalThis.WheelEvent&&(W&&e.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(t/=globalThis.devicePixelRatio),e.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(t*=40)),e.shiftKey&&t&&(t*=.25),this.callback({type:"wheel",center:{x:e.clientX,y:e.clientY},delta:-t,device:this.options.wheelSession?.device??"unknown",srcEvent:e,pointerType:"mouse",target:e.target})},i.enable&&(this.wheelSessionUnsubscribe=this.options.wheelSession?.on(()=>{}),this.listen("wheel",!0))}destroy(){this.listen("wheel",!1),this.wheelSessionUnsubscribe?.(),this.wheelSessionUnsubscribe=void 0}enableEventType(e,t){"wheel"===e&&this.options.enable!==t&&(this.options.enable=t,t&&!this.wheelSessionUnsubscribe&&(this.wheelSessionUnsubscribe=this.options.wheelSession?.on(()=>{})),this.listen("wheel",t),t||(this.wheelSessionUnsubscribe?.(),this.wheelSessionUnsubscribe=void 0))}}let H={classificationDelay:32,endDelay:80};class q{constructor(e,t={}){this.subscriptions=new Map,this.session=null,this.classificationTimer=null,this.endTimer=null,this.pressedControlKeys=new Set,this.listeningForControlKeys=!1,this.handleEvent=e=>{if(!this.hasSubscribers)return"unknown";let t=function(e,t){let i=e.deltaX,r=e.deltaY;return 1===e.deltaMode&&(i*=40,r*=40),{event:e,timeStamp:e.timeStamp,deltaX:i,deltaY:r,isControlKeyDown:t}}(e,this.pressedControlKeys.size>0),i=this.session;if(i&&t.timeStamp-i.lastTimeStamp>=this.options.endDelay){if(this.end(),!this.hasSubscribers)return"unknown";i=null}i?(this.scheduleEnd(),this.addSample(i,t)):(i=this.startPendingSession(t),this.scheduleEnd());let{device:r}=i;return"unknown"===r&&"unknown"!==(r=Y(i.samples,!1))&&this.begin(i,r),r},this.finishClassification=()=>
1{if(this.classificationTimer=null,!this.session||"unknown"!==this.session.device)return;let e=this.session,t=Y(e.samples,!0);this.begin(e,"unknown"===t?"mouse":t)},this.end=()=>{if(!this.session)return;if("unknown"===this.session.device){let e=this.session,t=Y(e.samples,!0);this.begin(e,"unknown"===t?"mouse":t)}if(!this.session)return;let e=this.session;this.emit(r.End,e.lastEvent),this.reset()},this.handleKeyDown=e=>{"Control"===e.key&&this.pressedControlKeys.add(e.code||e.key)},this.handleKeyUp=e=>{"Control"===e.key&&(e.code?this.pressedControlKeys.delete(e.code):this.pressedControlKeys.clear())},this.handleWindowBlur=()=>{this.pressedControlKeys.clear()},this.element=e,this.options={...H,...t},this.element?.addEventListener("wheel",this.handleEvent,{passive:!0})}get hasSubscribers(){return this.subscriptions.size>0}get device(){return this.session?.device??"unknown"}on(e){let t={listener:e};return this.subscriptions.set(e,t),this.updateControlKeyEventListeners(),()=>{this.subscriptions.get(e)===t&&this.off(e)}}off(e){this.subscriptions.delete(e),this.updateControlKeyEventListeners(),this.hasSubscribers||this.reset()}cancel(){let e=this.session;e&&"unknown"!==e.device&&this.emit(r.Cancel,e.lastEvent),this.reset()}destroy(){this.cancel(),this.subscriptions.clear(),this.updateControlKeyEventListeners(),this.element?.removeEventListener("wheel",this.handleEvent)}startPendingSession(e){let t={samples:[e],device:"unknown",firstTimeStamp:e.timeStamp,lastTimeStamp:e.timeStamp,totalDeltaX:e.deltaX,totalDeltaY:e.deltaY,velocityX:0,velocityY:0,lastEvent:e.event};return this.session=t,this.classificationTimer=globalThis.setTimeout(this.finishClassification,this.options.classificationDelay),t}addSample(e,t){if(e.samples.push(t),e.lastTimeStamp=t.timeStamp,e.lastEvent=t.event,e.totalDeltaX+=t.deltaX,e.totalDeltaY+=t.deltaY,"unknown"!==e.device){let i=e.samples[e.samples.length-2],n=t.timeStamp-i.timeStamp;e.velocityX=n>
10?t.deltaX/n:0,e.velocityY=n>0?t.deltaY/n:0,this.emit(r.Move,t.event,{velocityX:e.velocityX,velocityY:e.velocityY})}}begin(e,t){e.device=t,this.clearClassificationTimer(),this.emit(r.Start,e.samples[0].event);let i=e.lastTimeStamp-e.firstTimeStamp;e.velocityX=i>0?e.totalDeltaX/i:0,e.velocityY=i>0?e.totalDeltaY/i:0,this.emit(r.Move,e.lastEvent,{velocityX:e.velocityX,velocityY:e.velocityY})}scheduleEnd(){this.clearEndTimer(),this.endTimer=globalThis.setTimeout(this.end,this.options.endDelay)}emit(e,t,i){let n=this.session;if(!n||"unknown"===n.device)return;let s=e===r.Start,a=e===r.End||e===r.Cancel,o=s?n.firstTimeStamp:n.lastTimeStamp,l=s?0:Math.max(0,o-n.firstTimeStamp),u=s?0:n.totalDeltaX,c=s?0:n.totalDeltaY,h=l>0?u/l:0,d=l>0?c/l:0,f=s?0:i?.velocityX??n.velocityX,p=s?0:i?.velocityY??n.velocityY,g={eventType:e,device:n.device,srcEvent:t,timeStamp:o,center:{x:t.clientX,y:t.clientY},deltaX:u,deltaY:c,deltaTime:l,velocity:Math.abs(f)>Math.abs(p)?f:p,velocityX:f,velocityY:p,overallVelocity:Math.abs(h)>Math.abs(d)?h:d,overallVelocityX:h,overallVelocityY:d,isFirst:s,isFinal:a};for(let{listener:e}of[...this.subscriptions.values()])e(g)}reset(){this.clearClassificationTimer(),this.clearEndTimer(),this.session=null}clearClassificationTimer(){null!==this.classificationTimer&&(globalThis.clearTimeout(this.classificationTimer),this.classificationTimer=null)}clearEndTimer(){null!==this.endTimer&&(globalThis.clearTimeout(this.endTimer),this.endTimer=null)}updateControlKeyEventListeners(){let e=this.hasSubscribers,t="undefined"!=typeof window?window:globalThis.document?.defaultView;t&&e!==this.listeningForControlKeys&&(this.listeningForControlKeys=e,e?(t.addEventListener("keydown",this.handleKeyDown,!0),t.addEventListener("keyup",this.handleKeyUp,!0),t.addEventListener("blur",this.handleWindowBlur)):(t.removeEventListener("keydown",this.handleKeyDown,!0),t.removeEventListener("keyup",this.handleKeyUp,!0),t.removeEventListener("blur",this.handleWindowBlur),this.pressedControlKeys.clear()))}}function Y(e,t){return e.some(({event:e,isControlKeyDown:t})=>e.ctrlKey&&!t)?"trackpad":e.some(({event:e})=>0!==e.deltaMode)||e.some(Z)||e.every(({event:e})=>{let t=e.wheelDelta;return void 0!==t&&Math.abs(t)%40==0})?"mouse":e.some(({deltaX:e})=>0!==e)||e.length>1&&function(e){for(let t=0;t<e.length;t++){let i=e[t];if(Math.abs(i.deltaX)>40||Math.abs(i.deltaY)>40||t>0&&i.timeStamp-e[t-1].timeStamp>40)return!1}return!0}(e)?"trackpad":t?"mouse":"unknown"}function Z({event:e,deltaX:t,deltaY:i}){if(0!==t||0===i)return!1;if(Number.isInteger(Math.abs(i/4.000244140625)))return!0;let r=e.wheelDelta;return"number"==typeof r&&0!==r&&r%120==0}let K=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseenter","mouseleave"];class X extends U{constructor(e,t,i){super(e,t,{enable:!0,...i}),this.handleEvent=e=>{this.handleOverEvent(e),this.handleOutEvent(e),this.handleEnterEvent(e),this.handleLeaveEvent(e),this.handleMoveEvent(e)},this.pressed=!1;let{enable:r=!1}=this.options;this.enableMoveEvent=r,this.enableLeaveEvent=r,this.enableEnterEvent=r,this.enableOutEvent=r,this.enableOverEvent=r,r&&K.forEach(e=>this.listen(e,!0))}destroy(){K.forEach(e=>this.listen(e,!1))}enableEventType(e,t){switch(e){case"pointermove":this.enableMoveEvent!==t&&(this.enableMoveEvent=t,this.listen("mousedown",t),this.listen("mousemove",t),this.listen("mouseup",t));break;case"pointerover":this.enableOverEvent!==t&&(this.enableOverEvent=t,this.listen("mouseover",t));break;case"pointerout":this.enableOutEvent!==t&&(this.enableOutEvent=t,this.listen("mouseout",t));break;case"pointerenter":this.enableEnterEvent!==t&&(this.enableEnterEvent=t,this.listen("mouseenter",t));break;case"pointerleave":this.enableLeaveEvent!==t&&(this.enableLeaveEvent=t,this.listen("mouseleave",t))}}handleOverEvent(e){this.enableOverEvent&&"mouseover"===e.type&&this._emit("pointerover",e)}handleOutEvent(e){this.enableOutEvent&&"mouseout"===e.type&&this._emit("pointerout",e)}handleEnterEvent(e){this.enableEnterEvent&&"mouseenter"===e.type&&this._emit("pointerenter",e)}handleLeaveEvent(e){this.enableLeaveEvent&&"mouseleave"===e.type&&this._emit("pointerleave",e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":0===e.buttons&&(this.pressed=!1),this.pressed||this._emit("pointermove",e);break;case"mouseup":this.pressed=!1}}_emit(e,t){this.callback({type:e,center:{x:t.clientX,y:t.clientY},srcEvent:t,pointerType:"mouse",target:t.target})}}let Q=["keydown","keyup"];class J extends U{constructor(e,t,i){super(e,t,{enable:!0,tabIndex:0,...i}),this.handleEvent=e=>{let t=e.target||e.srcElement;("INPUT"!==t.tagName||"text"!==t.type)&&"TEXTAREA"!==t.tagName&&(this.enableDownEvent&&"keydown"===e.type&&this.callback({type:"keydown",srcEvent:e,key:e.key,target:e.target}),this.enableUpEvent&&"keyup"===e.type&&this.callback({type:"keyup",srcEvent:e,key:e.key,target:e.target}))};let{enable:r=!1}=this.options;this.enableDownEvent=r,this.enableUpEvent=r,e.tabIndex=this.options.tabIndex,e.style.outline="none",r&&Q.forEach(e
1=>this.listen(e,!0))}destroy(){Q.forEach(e=>this.listen(e,!1))}enableEventType(e,t){"keydown"===e&&this.enableDownEvent!==t&&(this.enableDownEvent=t,this.listen(e,t)),"keyup"===e&&this.enableUpEvent!==t&&(this.enableUpEvent=t,this.listen(e,t))}}class ee extends U{constructor(e,t,i){i.enable=i.enable??!1,super(e,t,i),this.handleEvent=e=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:e.clientX,y:e.clientY},srcEvent:e,pointerType:"mouse",target:e.target})},i.enable&&this.listen("contextmenu",!0)}destroy(){this.listen("contextmenu",!1)}enableEventType(e,t){"contextmenu"===e&&this.options.enable!==t&&(this.options.enable=t,this.listen("contextmenu",t))}}let et={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},ei={srcElement:"root",priority:0};class er{constructor(e,t){this.handleEvent=e=>{if(this.isEmpty())return;let t=this._normalizeEvent(e),i=e.srcEvent.target;for(;i&&i!==t.rootElement;){if(this._emit(t,i),t.handled)return;i=i.parentNode}this._emit(t,"root")},this.eventManager=e,this.recognizerName=t,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(e,t,i,r=!1,n=!1){let{handlers:s,handlersByElement:a}=this,o={...ei,...i},l=a.get(o.srcElement);l||(l=[],a.set(o.srcElement,l));let u={type:e,handler:t,srcElement:o.srcElement,priority:o.priority};r&&(u.once=!0),n&&(u.passive=!0),s.push(u),this._active=this._active||!u.passive;let c=l.length-1;for(;c>=0&&!(l[c].priority>=u.priority);)c--;l.splice(c+1,0,u)}remove(e,t){let{handlers:i,handlersByElement:r}=this;for(let n=i.length-1;n>=0;n--){let s=i[n];if(s.type===e&&s.handler===t){i.splice(n,1);let e=r.get(s.srcElement);e.splice(e.indexOf(s),1),0===e.length&&r.delete(s.srcElement)}}this._active=i.some(e=>!e.passive)}_emit(e,t){let i=this.handlersByElement.get(t);if(i){let t=!1,r=()=>{e.handled=!0},n=()=>{e.handled=!0,t=!0},s=[];for(let a=0;a<i.length;a++){let{type:o,handler:l,once:u}=i[a];if(l({...e,type:o,stopPropagation:r,stopImmediatePropagation:n}),u&&s.push(i[a]),t)break}for(let e=0;e<s.length;e++){let{type:t,handler:i}=s[e];this.remove(t,i)}}}_normalizeEvent(e){let t=this.eventManager.getElement();return{...e,...function(e){let t=et[e.srcEvent.type];if(!t)return null;let{buttons:i,button:r}=e.srcEvent,n=!1,s=!1,a=!1;return 2===t?(n=!!(1&i),s=!!(4&i),a=!!(2&i)):(n=0===r,s=1===r,a=2===r),{leftButton:n,middleButton:s,rightButton:a}}(e),...function(e,t){let i=e.center;if(!i)return null;let r=t.getBoundingClientRect(),n=r.width/t.offsetWidth||1,s=r.height/t.offsetHeight||1,a={x:(i.x-r.left-t.clientLeft)/n,y:(i.y-r.top-t.clientTop)/s};return{center:i,offsetCenter:a}}(e,t),preventDefault:()=>{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:t}}}class en{constructor(e=null,t={}){if(this._onBasicInput=e=>{this.manager.emit(e.srcEvent.type,e)},this._onOtherEvent=e=>{this.manager.emit(e.type,e)},this.options={recognizers:[],events:{},touchAction:"compute",tabIndex:0,cssProps:{},...t},this.events=new Map,this.element=e,this.wheelSession=new q(e),!e)return;for(let t of(this.manager=new M(e,this.options),this.options.recognizers)){let{recognizer:e,recognizeWith:i,requireFailure:r}=function(e){let t;if("recognizer"in e)return e;let i=Array.isArray(e)?[...e]:[e];return{recognizer:t="function"==typeof i[0]?new(i.shift())(i.shift()||{}):i.shift(),recognizeWith:"string"==typeof i[0]?[i[0]]:i[0],requireFailure:"string"==typeof i[1]?[i[1]]:i[1]}}(t);this.manager.add(e),i&&e.recognizeWith(i),r&&e.requireFailure(r)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new G(e,this._onOtherEvent,{enable:!1,wheelSession:this.wheelSession}),this.moveInput=new X(e,this._onOtherEvent,{enable:!1}),this.keyInput=new J(e,this._onOtherEvent,{enable:!1,tabIndex:t.tabIndex}),this.contextmenuInput=new ee(e,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}getElement(){return this.element}destroy(){if(!this.element)return void this.wheelSession.destroy();this.wheelInput.destroy(),this.wheelSession.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy()}on(e,t,i){this._addEventHandler(e,t,i,!1)}once(e,t,i){this._addEventHandler(e,t,i,!0)}watch(e,t,i){this._addEventHandler(e,t,i,!1,!0)}off(e,t){this._removeEventHandler(e,t)}emit(e){this.manager?.emit(e.type,e)}_toggleRecognizer(e,t){let{manager:i}=this;if(!i)return;let r=i.get(e);r&&(r.set({enable:t,wheelSession:this.wheelSession}),i.touchAction.update()),this.wheelInput?.enableEventType(e,t),this.moveInput?.enableEventType(e,t),this.keyInput?.enableEventType(e,t),this.contextmenuInput?.enableEventType(e,t)}_addEventHandler(e,t,i,r,n){if("string"!=typeof e){for(let[s,a]of(i=t,Object.entries(e)))this._addEventHandler(s,a,i,r,n
1);return}let{manager:s,events:a}=this;if(!s)return;let o=a.get(e);!o&&(o=new er(this,this._getRecognizerName(e)||e),a.set(e,o),s&&s.on(e,o.handleEvent)),o.add(e,t,i,r,n),o.isEmpty()||this._toggleRecognizer(o.recognizerName,!0)}_removeEventHandler(e,t){if("string"!=typeof e){for(let[t,i]of Object.entries(e))this._removeEventHandler(t,i);return}let{events:i}=this,r=i.get(e);if(r&&(r.remove(e,t),r.isEmpty())){let{recognizerName:e}=r,t=!1;for(let r of i.values())if(r.recognizerName===e&&!r.isEmpty()){t=!0;break}t||this._toggleRecognizer(e,!1)}}_getRecognizerName(e){return this.manager.recognizers.find(t=>t.getEventNames().includes(e))?.options.event}}},2897:(e,t,i)=>{i.d(t,{P:()=>l});var r=i(38705),n=i(71011),s=i(81870),a=i(45044);let o=new n.Ry;function l({module:e,elementWise:t=!1,expression:i,inputs:n,output:l,operationType:u=l.type,outputBuffer:c}){var h;if(!e.source)throw Error(`WebGPU computation ${e.name} requires WGSL source`);let d=Array.isArray(h=n)?h.map((e,t)=>[`x${t}`,e]):Object.entries(h),f=d.map(([e,t])=>({name:e,input:t})),p=f.filter(({input:e})=>!e.isConstant).map((e,t)=>({...e,index:t})),g=(0,a.iP)(u),m=(0,a.iP)(l.type),b={TYPE:g,RESULT_LEN:l.size.toString()},v=(0,s.BB)(Math.ceil(l.length/64),c.device.limits.maxComputeWorkgroupsPerDimension);for(let[e,t]of d)b[`${e.toUpperCase()}_LEN`]=t.size.toString();let y=`
2${function(e,t){for(let i in t)e=e.replaceAll(`{${i}}`,t[i]);return e}(e.source,b)}
3${p.map(({name:e,input:t,index:i})=>(function(e,t,i){if(t.isConstant)return"";let r=(0,a.iP)(t.type);return`@group(0) @binding(${i}) var<storage, read> ${e}: array<${r}>;`})(e,t,i)).join("\n")}
4${f.map(({name:e,input:t})=>(function(e,t,i){let r=(0,a.iP)(i),n=t.type===i?"":r,s=t.stride/t.ValueType.BYTES_PER_ELEMENT,o=t.offset/t.ValueType.BYTES_PER_ELEMENT;return t.isConstant?`fn read_${e}(_rowIndex: u32) -> array<${r}, ${t.size}> {
5  return array<${r}, ${t.size}>(${function(e,t){let i=e.value;if(!i)throw Error(`Constant input ${e} is missing CPU values`);return Array.from({length:e.size},(e,r)=>(0,a.Lm)(t,i[r]??0)).join(", ")}(t,n)});
6}`:`fn read_${e}(rowIndex: u32) -> array<${r}, ${t.size}> {
7  var value: array<${r}, ${t.size}>;
8  let rowOffset = ${o}u + rowIndex * ${s}u;
9${Array.from({length:t.size},(t,i)=>n?`  value[${i}] = ${n}(${e}[rowOffset + ${i}u]);`:`  value[${i}] = ${e}[rowOffset + ${i}u];`).join("\n")}
10  return value;
11}`})(e,t,u)).join("\n")}
12${function(e,t){let i=(0,a.iP)(e.type);return`@group(0) @binding(${t}) var<storage, read_write> result: array<${i}>;`}(l,p.length)}
13${function(e){let t=e.stride/e.ValueType.BYTES_PER_ELEMENT,i=e.offset/e.ValueType.BYTES_PER_ELEMENT,r=(0,a.iP)(e.type);return`fn write_result(rowIndex: u32, value: array<${r}, ${e.size}>) {
14  let rowOffset = ${i}u + rowIndex * ${t}u;
15${Array.from({length:e.size},(e,t)=>`  result[rowOffset + ${t}u] = value[${t}];`).join("\n")}
16}`}(l)}
17
18@compute @workgroup_size(64) fn main(
19  @builtin(workgroup_id) workgroupId: vec3<u32>,
20  @builtin(local_invocation_id) localId: vec3<u32>
21) {
22  let rowIndex = ${(0,s.vL)(v,64)};
23  if (rowIndex >= ${l.length}u) {
24    return;
25  }
26
27${f.map(({name:e})=>`  let ${e} = read_${e}(rowIndex);`).join("\n")}
28  var result: array<${m}, ${l.size}>;
29${function(e,t,i,r,n){let s="";if(n)for(let e=0;e<i.size;e++)s+=`  result[${e}] = ${n(e)};
30`;else if(r){let r=(0,a._1)(i.type),n=(0,a.iP)(i.type);for(let o=0;o<i.size;o++){let i=t.map(([e,t])=>o<t.size?(0,a.iP)(t.type)===n?`${e}[${o}]`:`${n}(${e}[${o}])`:r);s+=`  result[${o}] = ${e}(${i.join(", ")});
31`}}else s+=`result = ${e}(${t.map(([e])=>e).join(", ")});`;return s.trimEnd()}(e.name,d,l,t,i)}
32  write_result(rowIndex, result);
33}
34`,_=new r.C(c.device,{source:y,modules:e.dependencies,shaderAssembler:o,shaderLayout:{bindings:[...p.map(({name:e},t)=>({name:e,type:"storage",group:0,location:t})),{name:"result",type:"storage",group:0,location:p.length}]}}),w=Object.fromEntries(p.map(({name:e,input:t})=>[e,t.buffer]));w.result=c,_.setBindings(w);let x=c.device.beginComputePass({});c.device.statsManager.getStats("GPGPU Operation Counts").get("Computation Runs").incrementCount(),_.dispatch(x,v.x,v.y,v.z),x.end(),c.device.submit(),_.destroy()}},3617:(e,t,i)=>{i.d(t,{v:()=>r});function r(e,t){if(!e){let e=Error(t||"shadertools: assertion failed.");throw Error.captureStackTrace?.(e,r),e}}},3802:(e,t,i)=>{i.d(t,{Jc:()=>n,gO:()=>s,h0:()=>a});var r=i(72868);function n(e,t,i){let n=e.bindings.find(e=>e.name===t||`${e.name.toLocaleLowerCase()}uniforms`===t.toLocaleLowerCase());return n||i?.ignoreWarnings||r.R.warn(`Binding ${t} not set: Not found in shader layout.`)(),n||null}function s(e,t){if(!t)return{};if(function(e){let t=Object.keys(e);return t.length>0&&t.every(e=>/^\d+$/.test(e))}(t))return Object.fromEntries(Object.entries(t).map(([e,t])=>[Number(e),{...t}]));let i={};for(let[r,s]of Object.entries(t)){let t=n(e,r),a=t?.group??0;i[a]||={},i[a][r]=s}return i}function a(e){let t={};for(let i of Object.values(e))Object.assign(t,i);return t}},5346:(e,t,i)=>{i.d(t,{Ft:()=>l,Tm:()=>a,u4:()=>o});var r=i(47097);let n=/^vertex-list<([^<>]+)>$/,s=/^value-list<([^<>]+)>$/;function a(e){return n.test(e)}function o(e){return s.test(e)}function l(e){let t=function(e){let t=n.exec(e),i=s.exec(e),a=t?.[1]??i?.[1]??e;try{r.E.getVertexFormatInfo(a)}catch{throw Error(`Unsupported GPUVector format ${e}`)}return a}(e),i=a(e),l=o(e),u=r.E.getVertexFormatInfo(t),c=u.type,h=u.normalized,d=function(e,t){if(t)return"f32";switch(e){case"float32":return"f32";case"float16":return"f16";case"uint8":case"uint16":case"uint32":return"u32";case"sint8":case"sint16":case"sint32":return"i32";default:throw Error(`Unsupported GPUVector component type ${e}`)}}(c,h);return{format:e,elementFormat:t,vertexList:i,valueList:l,type:c,signedDataType:function(e,t){if("unorm10-10-10-2"===e)return"uint32";switch(t){case"unorm8":return"uint8";case"snorm8":return"sint8";case"unorm16":return"uint16";case"snorm16":return"sint16";default:return t}}(t,c),primitiveType:d,components:u.components,byteLength:u.byteLength,integer:u.integer,signed:u.signed,normalized:h,...u.webglOnly?{webglOnly:!0}:{}}}},9551:(e,t,i)=>{i.d(t,{PU:()=>v,qG:()=>b});let r="texture-compression-bc",n="texture-compression-astc",s="texture-compression-etc2",a="texture-compression-pvrtc-webgl",o="texture-compression-atc-webgl",l="float32-renderable-webgl",u="float16-renderable-webgl",c="snorm8-renderable-webgl",h="norm16-webgl",d="norm16-renderable-webgl",f="snorm16-renderable-webgl",p="float32-filterable",g="float16-filterable-webgl",m=992;function b(e){let t=y[e];if(!t)throw Error(`Unsupported texture format ${e}`);return t}function v(){return y}let y={r8unorm:{webgpu:527},rg8unorm:{webgpu:527},"rgb8unorm-webgl":{},rgba8unorm:{webgpu:31},"rgba8unorm-srgb":{webgpu:15},r8snorm:{render:c,webgpu:837},rg8snorm:{render:c,webgpu:837},"rgb8snorm-webgl":{},rgba8snorm:{render:c,webgpu:341},r8uint:{webgpu:515},rg8uint:{webgpu:515},rgba8uint:{webgpu:19},r8sint:{webgpu:515},rg8sint:{webgpu:515},rgba8sint:{webgpu:19},bgra8unorm:{webgpu:15},"bgra8unorm-srgb":{webgpu:15360},r16unorm:{f:h,render:d,webgpu:992},rg16unorm:{f:h,render:d,webgpu:992},"rgb16unorm-webgl":{f:h,render:!1},rgba16unorm:{f:h,render:d,webgpu:992}
34,r16snorm:{f:h,render:f,webgpu:992},rg16snorm:{f:h,render:f,webgpu:992},"rgb16snorm-webgl":{f:h,render:!1},rgba16snorm:{f:h,render:f,webgpu:992},r16uint:{webgpu:515},rg16uint:{webgpu:515},rgba16uint:{webgpu:19},r16sint:{webgpu:515},rg16sint:{webgpu:515},rgba16sint:{webgpu:19},r16float:{render:u,filter:"float16-filterable-webgl",webgpu:527},rg16float:{render:u,filter:g,webgpu:527},rgba16float:{render:u,filter:g,webgpu:31},r32uint:{webgpu:19},rg32uint:{webgpu:16387},rgba32uint:{webgpu:19},r32sint:{webgpu:19},rg32sint:{webgpu:16387},rgba32sint:{webgpu:19},r32float:{render:l,filter:p,webgpu:19},rg32float:{render:!1,filter:p,webgpu:16387},"rgb32float-webgl":{render:l,filter:p},rgba32float:{render:l,filter:p,webgpu:19},"rgba4unorm-webgl":{channels:"rgba",bitsPerChannel:[4,4,4,4],packed:!0},"rgb565unorm-webgl":{channels:"rgb",bitsPerChannel:[5,6,5,0],packed:!0},"rgb5a1unorm-webgl":{channels:"rgba",bitsPerChannel:[5,5,5,1],packed:!0},rgb9e5ufloat:{channels:"rgb",packed:!0,render:"rgb9e5ufloat-renderable-webgl",webgpu:5},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:l,webgpu:517},rgb10a2unorm:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1,webgpu:527},rgb10a2uint:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1,webgpu:515},stencil8:{attachment:"stencil",bitsPerChannel:[8,0,0,0],dataType:"uint8",webgpu:3},depth16unorm:{attachment:"depth",bitsPerChannel:[16,0,0,0],dataType:"uint16",webgpu:3},depth24plus:{attachment:"depth",bitsPerChannel:[24,0,0,0],dataType:"uint32",webgpu:3},depth32float:{attachment:"depth",bitsPerChannel:[32,0,0,0],dataType:"float32",webgpu:3},"depth24plus-stencil8":{attachment:"depth-stencil",bitsPerChannel:[24,8,0,0],packed:!0,webgpu:3},"depth32float-stencil8":{attachment:"depth-stencil",bitsPerChannel:[32,8,0,0],packed:!0,f:"depth32float-stencil8",webgpu:3},"bc1-rgb-unorm-webgl":{f:r},"bc1-rgb-unorm-srgb-webgl":{f:r},"bc1-rgba-unorm":{f:r},"bc1-rgba-unorm-srgb":{f:r},"bc2-rgba-unorm":{f:r},"bc2-rgba-unorm-srgb":{f:r},"bc3-rgba-unorm":{f:r},"bc3-rgba-unorm-srgb":{f:r},"bc4-r-unorm":{f:r},"bc4-r-snorm":{f:r},"bc5-rg-unorm":{f:r},"bc5-rg-snorm":{f:r},"bc6h-rgb-ufloat":{f:r},"bc6h-rgb-float":{f:r},"bc7-rgba-unorm":{f:r},"bc7-rgba-unorm-srgb":{f:r},"etc2-rgb8unorm":{f:s},"etc2-rgb8unorm-srgb":{f:s},"etc2-rgb8a1unorm":{f:s},"etc2-rgb8a1unorm-srgb":{f:s},"etc2-rgba8unorm":{f:s},"etc2-rgba8unorm-srgb":{f:s},"eac-r11unorm":{f:s},"eac-r11snorm":{f:s},"eac-rg11unorm":{f:s},"eac-rg11snorm":{f:s},"astc-4x4-unorm":{f:n},"astc-4x4-unorm-srgb":{f:n},"astc-5x4-unorm":{f:n},"astc-5x4-unorm-srgb":{f:n},"astc-5x5-unorm":{f:n},"astc-5x5-unorm-srgb":{f:n},"astc-6x5-unorm":{f:n},"astc-6x5-unorm-srgb":{f:n},"astc-6x6-unorm":{f:n},"astc-6x6-unorm-srgb":{f:n},"astc-8x5-unorm":{f:n},"astc-8x5-unorm-srgb":{f:n},"astc-8x6-unorm":{f:n},"astc-8x6-unorm-srgb":{f:n},"astc-8x8-unorm":{f:n},"astc-8x8-unorm-srgb":{f:n},"astc-10x5-unorm":{f:n},"astc-10x5-unorm-srgb":{f:n},"astc-10x6-unorm":{f:n},"astc-10x6-unorm-srgb":{f:n},"astc-10x8-unorm":{f:n},"astc-10x8-unorm-srgb":{f:n},"astc-10x10-unorm":{f:n},"astc-10x10-unorm-srgb":{f:n},"astc-12x10-unorm":{f:n},"astc-12x10-unorm-srgb":{f:n},"astc-12x12-unorm":{f:n},"astc-12x12-unorm-srgb":{f:n},"pvrtc-rgb4unorm-webgl":{f:a},"pvrtc-rgba4unorm-webgl":{f:a},"pvrtc-rgb2unorm-webgl":{f:a},"pvrtc-rgba2unorm-webgl":{f:a},"etc1-rbg-unorm-webgl":{f:"texture-compression-etc1-webgl"},"atc-rgb-unorm-webgl":{f:o},"atc-rgba-unorm-webgl":{f:o},"atc-rgbai-unorm-webgl":{f:o}}},9664:(e,t,i)=>{i.d(t,{E1:()=>a,S3:()=>s,by:()=>n});let r=/\?.*/;function n(e){let t=e.match(r);return t&&t[0]}function s(e){return e.replace(r,"")}function a(e){if(e.length<50)return e;let t=e.slice(e.length-15),i=e.substr(0,32);return`${i}...${t}`}},10398:(e,t,i)=>{i.d(t,{D:()=>s,l:()=>n});var r=i(95675);function n(e){return!!e&&(Array.isArray(e)&&(e=e[0]),Array.isArray(e?.extensions))}function s(e){let t;return(0,r.v)(e,"null loader"),(0,r.v)(n(e),"invalid loader"),Array.isArray(e)&&(t=e[1],e={...e=e[0],options:{...e.options,...t}}),(e?.parseTextSync||e?.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}},10620:(e,t,i)=>{i.d(t,{pp:()=>p,K2:()=>f,Rf:()=>m,a5:()=>g});var r=i(53866),n=i(56028);let s=new(i(45518)).hW({id:"loaders.gl"});class a{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}class o{console;constructor(){this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}}var l=i(11911);let u={core:{baseUrl:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new o,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:l.Bd,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]}},c={baseUri:"core.baseUrl",fetch:"core.fetch",mimeType:"core.mimeType",fallbackMimeType:"core.fallbackMimeType",ignoreRegisteredLoaders:"core.ignoreRegisteredLoaders",nothrow:"core.nothrow",log:"core.log",useLocalLibraries:"core.useLocalLibraries",CDN:"core.CDN",worker:"core.worker",maxConcurrency:"core.maxConcurrency",max
34MobileConcurrency:"core.maxMobileConcurrency",reuseWorkers:"core.reuseWorkers",_nodeWorkers:"core.nodeWorkers",_workerType:"core._workerType",_worker:"core._workerType",limit:"core.limit",_limitMB:"core._limitMB",batchSize:"core.batchSize",batchDebounceMs:"core.batchDebounceMs",metadata:"core.metadata",transforms:"core.transforms",throws:"nothrow",dataType:"(no longer used)",uri:"core.baseUrl",method:"core.fetch.method",headers:"core.fetch.headers",body:"core.fetch.body",mode:"core.fetch.mode",credentials:"core.fetch.credentials",cache:"core.fetch.cache",redirect:"core.fetch.redirect",referrer:"core.fetch.referrer",referrerPolicy:"core.fetch.referrerPolicy",integrity:"core.fetch.integrity",keepalive:"core.fetch.keepalive",signal:"core.fetch.signal"};var h=i(9664);let d=["baseUrl","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function f(){globalThis.loaders=globalThis.loaders||{};let{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function p(){let e=f();return e.globalOptions=e.globalOptions||{...u,core:{...u.core}},m(e.globalOptions)}function g(e,t,i,r){return function(e,t){for(let i of(b(e,null,u,c,t),t)){let r=e&&e[i.id]||{},n=i.options&&i.options[i.id]||{},s=i.deprecatedOptions&&i.deprecatedOptions[i.id]||{};b(r,i.id,n,s,t)}}(e,i=Array.isArray(i=i||[])?i:[i]),m(function(e,t,i){var r,s;let o=e.options||{},l={...o};return o.core&&(l.core={...o.core}),y(l),l.core?.log===null&&(l.core={...l.core,log:new a}),v(l,m(p())),v(l,m(t)),r=l,(s=i)&&r.core?.baseUrl===void 0&&(r.core||={},r.core.baseUrl=n.pD((0,h.S3)(s))),function(e){let t=e.core;if(t)for(let i of d)void 0!==t[i]&&(e[i]=t[i])}(l),l}(t,e,r))}function m(e){let t=function(e){let t={...e};return e.core&&(t.core={...e.core}),t}(e);for(let e of(y(t),d))t.core&&void 0!==t.core[e]&&delete t[e];return t.core&&void 0!==t.core._workerType&&delete t._worker,t}function b(e,t,i,n,a){let o=t||"Top level",l=t?`${t}.`:"";for(let u in e){let c=!t&&(0,r.Gv)(e[u]),h="baseUri"===u&&!t,d="workerUrl"===u&&t;if(!(u in i)&&!h&&!d){if(u in n)s.level>0&&s.warn(`${o} loader option '${l}${u}' no longer supported, use '${n[u]}'`)();else if(!c&&s.level>0){let e=function(e,t){let i=e.toLowerCase(),r="";for(let n of t)for(let t in n.options){if(e===t)return`Did you mean '${n.id}.${t}'?`;let s=t.toLowerCase();(i.startsWith(s)||s.startsWith(i))&&(r=r||`Did you mean '${n.id}.${t}'?`)}return r}(u,a);s.warn(`${o} loader option '${l}${u}' not recognized. ${e}`)()}}}}function v(e,t){for(let i in t)if(i in t){let n=t[i];(0,r.aC)(n)&&(0,r.aC)(e[i])?e[i]={...e[i],...t[i]}:e[i]=t[i]}}function y(e){for(let t of(void 0!==e.baseUri&&(e.core||={},void 0===e.core.baseUrl&&(e.core.baseUrl=e.baseUri)),d))if(void 0!==e[t]){let i=e.core=e.core||{};void 0===i[t]&&(i[t]=e[t])}let t=e._worker;void 0!==t&&(e.core||={},void 0===e.core._workerType&&(e.core._workerType=t))}},10991:(e,t,i)=>{i.d(t,{vz:()=>c});var r=i(93614),n=i(9551);let s=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/,a=["rgb","rgba","bgra"],o=["depth","stencil"],l=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"];class u{isColor(e){return a.some(t=>e.startsWith(t))}isDepthStencil(e){return o.some(t=>e.startsWith(t))}isCompressed(e){return l.some(t=>e.startsWith(t))}getInfo(e){return h(e)}getCapabilities(e){return function(e){let t=(0,n.qG)(e),i={format:e,create:t.f??!0,render:t.render??!0,filter:t.filter??!0,blend:t.blend??!0,store:t.store??!0},r=h(e),s=e.startsWith("depth")||e.startsWith("stencil"),a=r?.signed,o=r?.integer,l=r?.webgl,u=!!r?.compressed;return i.render&&=!s&&!u,i.filter&&=!s&&!a&&!o&&!l,i}(e)}getWebGPUCapabilities(e){let t=(0,n.qG)(e);return void 0!==t.webgpu?t.webgpu:this.isCompressed(e)&&!e.endsWith("-webgl")?5:0}computeMemoryLayout(e){return function({format:e,width:t,height:i,depth:r,byteAlignment:n}){let{bytesPerPixel:s,bytesPerBlock:a=s,blockWidth:o=1,blockHeight:l=1,compressed:u=!1}=c.getInfo(e),h=u?Math.ceil(t/o):t,d=u?Math.ceil(i/l):i,f=Math.ceil(h*a/n)*n;return{bytesPerPixel:s,bytesPerRow:f,rowsPerImage:d,depthOrArrayLayers:r,bytesPerImage:f*d,byteLength:f*d*r}}(e)}}let c=new u;function h(e){let t=function(e){let t={...(0,n.qG)(e)},i=t.bytesPerPixel||1,r=t.bitsPerChannel||[8,8,8,8];return delete t.bitsPerChannel,delete t.bytesPerPixel,delete t.f,delete t.render,delete t.filter,delete t.blend,delete t.store,delete t.webgpu,{...t,format:e,attachment:t.attachment||"color",channels:t.channels||"r",components:t.components||t.channels?.length||1,bytesPerPixel:i,bitsPerChannel:r,dataType:t.dataType||"uint8",srgb:t.srgb??!1,packed:t.packed??!1,webgl:t.webgl??!1,integer:t.integer??!1,signed:t.signed??!1,normalized:t.normalized??!1,compressed:t.compressed??!1}}(e);if(c.isCompressed(e)){var i;t.channels="rgb",t.components=3,t.bytesPerPixel=1,t.srgb=!1,t.compressed=!0,t.bytesPerBlock=(i=e).startsWith("bc1")||i.startsWith("bc4")||i.startsWith("etc1")||i.startsWith("etc2-rgb8")||i.startsWith("etc2-rgb8a1")||i.startsWith("eac-r11")||"atc-rgb-unorm-webgl"===i?8:i.startsWith("bc2")||i.startsWith("bc3")||i.startsWith("bc5")||i.startsWith("bc6h")||i.startsWith("bc7")||i.startsWith("etc2-rgba8")||i.startsWith("eac-rg11")||i.startsWith("astc")||"atc-rgba-unorm-webgl"===i||"atc-rgbai-unorm-webgl"===i?16:i.startsWith("pvrtc")?8:16;let r=function(e){let t=/.*-(\d+)x(\d+)-.*/.exec(e);if(t){let[,e,i]=t;return{blockWidth:Number(e),blockHeight:Number(i)}}return e.startsWith("bc")||e.startsWith("etc1")||e.startsWith("etc2")||e.startsWith("eac")||e.startsWith("atc")||e.startsWith("pvrtc-rgb4")||e.startsWith("pvrtc-rgba4")?{blockWidth:4,blockHeight:4}:e.startsWith("pvrtc-rgb2")||e.startsWith("pvrtc-rgba2")?{blockWidth:8,blockHeight:4}:null}(e);r&&(t.blockWidth=r.blockWidth,t.blockHeight=r.blockHeight)}let a=t.packed?null:s.exec(e);if(a){let[,i,n,s,o,l]=a,u=`${s}${n}`,c=r.r.getDataTypeInfo(u),h=8*c.byteLength,d=i?.length??1;t={format:e,attachment:t.attachment,dataType:c.signedType,components:d,channels:i,integer:c.integer,signed:c.signed,normalized:c.normalized,bitsPerChannel:[h,d>=2?h:0,d>=3?h:0,d>=4?h:0],bytesPerPixel:c.byteLength*d,packed:t.packed,srgb:t.srgb},"-webgl"===l&&(t.webgl=!0),"-srgb"===o&&(t.srgb=!0)}return e.endsWith("-webgl")&&(t.webgl=!0),e.endsWith("-srgb")&&(t.srgb=!0),t}},11911:(e,t,i)=>{i.d(t,{Bd:()=>s});var r=i(87358);let n={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document};n.self||n.window||n.global,n.window||n.self||n.global,n.global||n.self||n.window,n.document;let s=("object"!=typeof r||"[object process]"!==String(r),!0),a=void 0!==r&&r.version&&/v([0-9]*)/.exec(r.version);a&&parseFloat(a[1])},11940:(e,t,i)=>{function r(e,t){if(!e){let e=Error(t??"luma.gl assertion failed.");throw Error.captureStackTrace?.(e,r),e}}function n(e,t){return r(e,t),e}i.d(t,{i:()=>n,v:()=>r})},12253:(e,t,i)=>{i.d(t,{I:()=>n});var r=i(47097);
34class n{buffer;format;length;byteOffset;byteStride;constructor(e){let t=r.E.getVertexFormatInfo(e.format).byteLength,i=e.byteOffset??0,n=e.byteStride??t;if(s(e.length,"GPUDataView length"),s(i,"GPUDataView byteOffset"),s(n,"GPUDataView byteStride"),n<t)throw Error(`GPUDataView byteStride ${n} is smaller than ${e.format} byte length ${t}`);let a=0===e.length?0:(e.length-1)*n+t,o=i+a;if(!Number.isSafeInteger(a)||!Number.isSafeInteger(o))throw Error("GPUDataView byte range must use safe integers");if(o>e.buffer.byteLength)throw Error("GPUDataView exceeds its backing buffer byte length");this.buffer=e.buffer,this.format=e.format,this.length=e.length,this.byteOffset=i,this.byteStride=n}get elementByteLength(){return r.E.getVertexFormatInfo(this.format).byteLength}get byteLength(){return 0===this.length?0:(this.length-1)*this.byteStride+this.elementByteLength}}function s(e,t){if(!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`)}},14071:(e,t,i)=>{i.d(t,{C:()=>n});var r=i(2897);let n=({inputs:e,output:t,target:i})=>{let n=e.map((e,t)=>[`x${t}`,e]);!function(e,t){let i=t.filter(([,e])=>!e.isConstant).length+1;if(i>e.maxStorageBuffersPerShaderStage)throw Error(`interleave() requires ${i} storage buffers, exceeding device limit ${e.maxStorageBuffersPerShaderStage}`);if(i>e.maxBindingsPerBindGroup)throw Error(`interleave() requires ${i} bindings, exceeding bind group limit ${e.maxBindingsPerBindGroup}`)}(i.device.limits,n);let s=n.map(([e,t])=>`${e}: array<{TYPE}, ${t.size}>`).join(", "),a=0,o=n.map(([e,t])=>{let i=Array.from({length:t.size},(t,i)=>`  out[${a+i}] = ${e}[${i}];`).join("\n");return a+=t.size,i}).join("\n"),l=`\
35fn interleave(${s}) -> array<{TYPE}, {RESULT_LEN}> {
36  var out: array<{TYPE}, {RESULT_LEN}>;
37${o}
38  return out;
39}
40`;return(0,r.P)({module:{name:"interleave",source:l},inputs:e,output:t,outputBuffer:i}),{success:!0}}},16452:(e,t,i)=>{i.d(t,{A:()=>b});var r=i(79265),n=i(92386),s=i(1609),a=i(59465);let o=["default","lnglat","meter-offsets","lnglat-offsets","cartesian"].map(e=>`const COORDINATE_SYSTEM_${e.toUpperCase().replaceAll("-","_")}: i32 = ${(0,s.LB)(e)};`).join(""),l=Object.keys(a.Kx).map(e=>`const PROJECTION_MODE_${e}: i32 = ${a.Kx[e]};`).join(""),u=Object.keys(a.p5).map(e=>`const UNIT_${e.toUpperCase()}: i32 = ${a.p5[e]};`).join(""),c=`\
41${o}
42${l}
43${u}
44
45const TILE_SIZE: f32 = 512.0;
46const PI: f32 = 3.1415926536;
47const WORLD_SCALE: f32 = TILE_SIZE / (PI * 2.0);
48const ZERO_64_LOW: vec3<f32> = vec3<f32>(0.0, 0.0, 0.0);
49const EARTH_RADIUS: f32 = 6370972.0; // meters
50const GLOBE_RADIUS: f32 = 256.0;
51
52// -----------------------------------------------------------------------------
53// Uniform block (converted from GLSL uniform block)
54// -----------------------------------------------------------------------------
55struct ProjectUniforms {
56  wrapLongitude: i32,
57  coordinateSystem: i32,
58  commonUnitsPerMeter: vec3<f32>,
59  projectionMode: i32,
60  scale: f32,
61  commonUnitsPerWorldUnit: vec3<f32>,
62  commonUnitsPerWorldUnit2: vec3<f32>,
63  center: vec4<f32>,
64  modelMatrix: mat4x4<f32>,
65  viewProjectionMatrix: mat4x4<f32>,
66  viewportSize: vec2<f32>,
67  devicePixelRatio: f32,
68  focalDistance: f32,
69  cameraPosition: vec3<f32>,
70  coordinateOrigin: vec3<f32>,
71  commonOrigin: vec3<f32>,
72  pseudoMeters: i32,
73};
74
75@group(0) @binding(auto)
76var<uniform> project: ProjectUniforms;
77
78// -----------------------------------------------------------------------------
79// Geometry data shared across the project helpers.
80// The active layer shader is responsible for populating this private module
81// state before calling the project functions below.
82// -----------------------------------------------------------------------------
83
84// Structure to carry additional geometry data used by deck.gl filters.
85struct Geometry {
86  worldPosition: vec3<f32>,
87  worldPositionAlt: vec3<f32>,
88  position: vec4<f32>,
89  normal: vec3<f32>,
90  uv: vec2<f32>,
91  pickingColor: vec3<f32>,
92};
93
94var<private> geometry: Geometry;
95`,h=`\
96${c}
97
98// -----------------------------------------------------------------------------
99// Functions
100// -----------------------------------------------------------------------------
101
102// Returns an adjustment factor for commonUnitsPerMeter
103fn _project_size_at_latitude(lat: f32) -> f32 {
104  let y = clamp(lat, -89.9, 89.9);
105  return 1.0 / cos(radians(y));
106}
107
108// Overloaded version: scales a value in meters at a given latitude.
109fn _project_size_at_latitude_m(meters: f32, lat: f32) -> f32 {
110  return meters * project.commonUnitsPerMeter.z * _project_size_at_latitude(lat);
111}
112
113// Computes a non-linear scale factor based on geometry.
114// (Note: This function relies on "geometry" being provided.)
115fn project_size() -> f32 {
116  if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR &&
117      project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT &&
118      project.pseudoMeters == 0) {
119    if (geometry.position.w == 0.0) {
120      return _project_size_at_latitude(geometry.worldPosition.y);
121    }
122    let y: f32 = geometry.position.y / TILE_SIZE * 2.0 - 1.0;
123    let y2 = y * y;
124    let y4 = y2 * y2;
125    let y6 = y4 * y2;
126    return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;
127  }
128  return 1.0;
129}
130
131// Overloads to scale offsets (meters to world units)
132fn project_size_float(meters: f32) -> f32 {
133  return meters * project.commonUnitsPerMeter.z * project_size();
134}
135
136fn project_size_vec2(meters: vec2<f32>) -> vec2<f32> {
137  return meters * project.commonUnitsPerMeter.xy * project_size();
138}
139
140fn project_size_vec3(meters: vec3<f32>) -> vec3<f32> {
141  return meters * project.commonUnitsPerMeter * project_size();
142}
143
144fn project_size_vec4(meters: vec4<f32>) -> vec4<f32> {
145  return vec4<f32>(meters.xyz * project.commonUnitsPerMeter, meters.w);
146}
147
148// Returns a rotation matrix aligning the z‑axis with the given up vector.
149fn project_get_orientation_matrix(up: vec3<f32>) -> mat3x3<f32> {
150  let uz = normalize(up);
151  let ux = select(
152    vec3<f32>(1.0, 0.0, 0.0),
153    normalize(vec3<f32>(uz.y, -uz.x, 0.0)),
154    abs(uz.z) == 1.0
155  );
156  let uy = cross(uz, ux);
157  return mat3x3<f32>(ux, uy, uz);
158}
159
160// Since WGSL does not support "out" parameters, we return a struct.
161struct RotationResult {
162  needsRotation: bool,
163  transform: mat3x3<f32>,
164};
165
166fn project_needs_rotation(commonPosition: vec3<f32>) -> RotationResult {
167  if (project.projectionMode == PROJECTION_MODE_GLOBE) {
168    return RotationResult(true, project_get_orientation_matrix(commonPosition));
169  } else {
170    return RotationResult(false, mat3x3<f32>());  // identity alternative if needed
171  };
172}
173
174// Projects a normal vector from the current coordinate system to world space.
175fn project_normal(vector: vec3<f32>) -> vec3<f32> {
176  let normal_modelspace = project.modelMatrix * vec4<f32>(vector, 0.0);
177  var n = normalize(normal_modelspace.xyz * project.commonUnitsPerMeter);
178  let rotResult = project_needs_rotation(geometry.position.xyz);
179  if (rotResult.needsRotation) {
180    n = rotResult.transform * n;
181  }
182  return n;
183}
184
185// Applies a scale offset based on y-offset (dy)
186fn project_offset_(offset: vec4<f32>) -> vec4<f32> {
187  let dy: f32 = offset.y;
188  let commonUnitsPerWorldUnit = project.commonUnitsPerWorldUnit + project.commonUnitsPerWorldUnit2 * dy;
189  return vec4<f32>(offset.xyz * commonUnitsPerWorldUnit, offset.w);
190}
191
192// Projects lng/lat coordinates to a unit tile [0,1]
193fn project_mercator_(lnglat: vec2<f32>) -> vec2<f32> {
194  var x = lnglat.x;
195  if (project.wrapLongitude != 0) {
196    x = ((x + 180.0) % 360.0) - 180.0;
197  }
198  let y = clamp(lnglat.y, -89.9, 89.9);
199  return vec2<f32>(
200    radians(x) + PI,
201    PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))
202  ) * WORLD_SCALE;
203}
204
205// Projects lng/lat/z coordinates for a globe projection.
206fn project_globe_(lnglatz: vec3<f32>) -> vec3<f32> {
207  let lambda = radians(lnglatz.x);
208  let phi = radians(lnglatz.y);
209  let cosPhi = cos(phi);
210  let D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;
211  return vec3<f32>(
212    sin(lambda) * cosPhi,
213    -cos(lambda) * cosPhi,
214    sin(phi)
215  ) * D;
216}
217
218// Projects positions (with an optional 64-bit low part) from the input
219// coordinate system to the common space.
220fn project_position_vec4_f64(position: vec4<f32>, position64Low: vec3<f32>) -> vec4<f32> {
221  var position_world = project.modelMatrix * position;
222
223  // Work around for a Mac+NVIDIA bug:
224  if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR) {
225    if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
226      return vec4<f32>(
227        project_mercator_(position_world.xy),
228        _project_size_at_latitude_m(position_world.z, position_world.y),
229        position_world.w
230      );
231    }
232    if (project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {
233      position_world = vec4f(position_world.xyz + project.coordinateOrigin, position_world.w);
234    }
235  }
236  if (project.projectionMode == PROJECTION_MODE_GLOBE) {
237    if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
238      return vec4<f32>(
239        project_globe_(position_world.xyz),
240        position_world.w
241      );
242    }
243    if (project.coordinateSystem == COORDINATE_SYSTEM_METER_OFFSETS) {
244      let enuMatrix = project_get_orientation_matrix(project.commonOrigin);
245      let metersToCommon = GLOBE_RADIUS / EARTH_RADIUS;
246      let offsetCommon = (enuMatrix * vec3<f32>(-position_world.x, -position_world.y, position_world.z)) * metersToCommon;
247      return vec4<f32>(project.commonOrigin + offsetCommon, position_world.w);
248    }
249  }
250  if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
251    if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
252      if (abs(position_world.y - project.coordinateOrigin.y) > 0.25) {
253        return vec4<f32>(
254          project_mercator_(position_world.xy) - project.commonOrigin.xy,
255          project_size_float(position_world.z),
256          position_world.w
257        );
258      }
259    }
260  }
261  if (project.projectionMode == PROJECTION_MODE_IDENTITY ||
262      (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&
263       (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT ||
264        project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {
265    position_world = vec4f(position_world.xyz - project.coordinateOrigin, position_world.w);
266  }
267
268  return project_offset_(position_world) +
269         project_offset_(project.modelMatrix * vec4<f32>(position64Low, 0.0));
270}
271
272// Overloaded versions for different input types.
273fn project_position_vec4_f32(position: vec4<f32>) -> vec4<f32> {
274  return project_position_vec4_f64(position, ZERO_64_LOW);
275}
276
277fn project_position_vec3_f64(position: vec3<f32>, position64Low: vec3<f32>) -> vec3<f32> {
278  let projected_position = project_position_vec4_f64(vec4<f32>(position, 1.0), position64Low);
279  return projected_position.xyz;
280}
281
282fn project_position_vec3_f32(position: vec3<f32>) -> vec3<f32> {
283  let projected_position = project_position_vec4_f64(vec4<f32>(position, 1.0), ZERO_64_LOW);
284  return projected_position.xyz;
285}
286
287fn project_position_vec2_f32(position: vec2<f32>) -> vec2<f32> {
288  let projected_position = project_position_vec4_f64(vec4<f32>(position, 0.0, 1.0), ZERO_64_LOW);
289  return projected_position.xy;
290}
291
292// Transforms a common space position to clip space.
293fn project_common_position_to_clipspace_with_projection(position: vec4<f32>, viewProjectionMatrix: mat4x4<f32>, center: vec4<f32>) -> vec4<f32> {
294  var clipPosition = viewProjectionMatrix * position + center;
295  // deck.gl projection matrices use WebGL's [-w, w] depth range; WebGPU clips z to [0, w].
296  clipPosition.z = (clipPosition.z + clipPosition.w) * 0.5;
297  return clipPosition;
298}
299
300// Uses the project viewProjectionMatrix and center.
301fn project_common_position_to_clipspace(position: vec4<f32>) -> vec4<f32> {
302  return project_common_position_to_clipspace_with_projection(position, project.viewProjectionMatrix, project.center);
303}
304
305// Returns a clip space offset corresponding to a given number of screen pixels.
306fn project_pixel_size_to_clipspace(pixels: vec2<f32>) -> vec2<f32> {
307  let offset = pixels / project.viewportSize * project.devicePixelRatio * 2.0;
308  return offset * project.focalDistance;
309}
310
311fn project_meter_size_to_pixel(meters: f32) -> f32 {
312  return project_size_float(meters) * project.scale;
313}
314
315fn project_unit_size_to_pixel(size: f32, unit: i32) -> f32 {
316  if (unit == UNIT_METERS) {
317    return project_meter_size_to_pixel(size);
318  } else if (unit == UNIT_COMMON) {
319    return size * project.scale;
320  }
321  // UNIT_PIXELS: no scaling applied.
322  return size;
323}
324
325fn project_pixel_size_float(pixels: f32) -> f32 {
326  return pixels / project.scale;
327}
328
329fn project_pixel_size_vec2(pixels: vec2<f32>) -> vec2<f32> {
330  return pixels / project.scale;
331}
332`,d=["default","lnglat","meter-offsets","lnglat-offsets","cartesian"].map(e=>`const int COORDINATE_SYSTEM_${e.toUpperCase().replaceAll("-","_")} = ${(0,s.LB)(e)};`).join(""),f=Object.keys(a.Kx).map(e=>`const int PROJECTION_MODE_${e} = ${a.Kx[e]};`).join(""),p=Object.keys(a.p5).map(e=>`const int UNIT_${e.toUpperCase()} = ${a.p5[e]};`).join(""),g=`\
333${d}
334${f}
335${p}
336layout(std140) uniform projectUniforms {
337bool wrapLongitude;
338int coordinateSystem;
339vec3 commonUnitsPerMeter;
340int projectionMode;
341float scale;
342vec3 commonUnitsPerWorldUnit;
343vec3 commonUnitsPerWorldUnit2;
344vec4 center;
345mat4 modelMatrix;
346mat4 viewProjectionMatrix;
347vec2 viewportSize;
348float devicePixelRatio;
349float focalDistance;
350vec3 cameraPosition;
351vec3 coordinateOrigin;
352vec3 commonOrigin;
353bool pseudoMeters;
354} project;
355const float TILE_SIZE = 512.0;
356const float PI = 3.1415926536;
357const float WORLD_SCALE = TILE_SIZE / (PI * 2.0);
358const vec3 ZERO_64_LOW = vec3(0.0);
359const float EARTH_RADIUS = 6370972.0;
360const float GLOBE_RADIUS = 256.0;
361float project_size_at_latitude(float lat) {
362float y = clamp(lat, -89.9, 89.9);
363return 1.0 / cos(radians(y));
364}
365float project_size() {
366if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR &&
367project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT &&
368project.pseudoMeters == false) {
369if (geometry.position.w == 0.0) {
370return project_size_at_latitude(geometry.worldPosition.y);
371}
372float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;
373float y2 = y * y;
374float y4 = y2 * y2;
375float y6 = y4 * y2;
376return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;
377}
378return 1.0;
379}
380float project_size_at_latitude(float meters, float lat) {
381return meters * project.commonUnitsPerMeter.z * project_size_at_latitude(lat);
382}
383float project_size(float meters) {
384return meters * project.commonUnitsPerMeter.z * project_size();
385}
386vec2 project_size(vec2 meters) {
387return meters * project.commonUnitsPerMeter.xy * project_size();
388}
389vec3 project_size(vec3 meters) {
390return meters * project.commonUnitsPerMeter * project_size();
391}
392vec4 project_size(vec4 meters) {
393return vec4(meters.xyz * project.commonUnitsPerMeter, meters.w);
394}
395mat3 project_get_orientation_matrix(vec3 up) {
396vec3 uz = normalize(up);
397vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));
398vec3 uy = cross(uz, ux);
399return mat3(ux, uy, uz);
400}
401bool project_needs_rotation(vec3 commonPosition, out mat3 transform) {
402if (project.projectionMode == PROJECTION_MODE_GLOBE) {
403transform = project_get_orientation_matrix(commonPosition);
404return true;
405}
406return false;
407}
408vec3 project_normal(vec3 vector) {
409vec4 normal_modelspace = project.modelMatrix * vec4(vector, 0.0);
410vec3 n = normalize(normal_modelspace.xyz * project.commonUnitsPerMeter);
411mat3 rotation;
412if (project_needs_rotation(geometry.position.xyz, rotation)) {
413n = rotation * n;
414}
415return n;
416}
417vec4 project_offset_(vec4 offset) {
418float dy = offset.y;
419vec3 commonUnitsPerWorldUnit = project.commonUnitsPerWorldUnit + project.commonUnitsPerWorldUnit2 * dy;
420return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);
421}
422vec2 project_mercator_(vec2 lnglat) {
423float x = lnglat.x;
424if (project.wrapLongitude) {
425x = mod(x + 180., 360.0) - 180.;
426}
427float y = clamp(lnglat.y, -89.9, 89.9);
428return vec2(
429radians(x) + PI,
430PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))
431) * WORLD_SCALE;
432}
433vec3 project_globe_(vec3 lnglatz) {
434float lambda = radians(lnglatz.x);
435float phi = radians(lnglatz.y);
436float cosPhi = cos(phi);
437float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;
438return vec3(
439sin(lambda) * cosPhi,
440-cos(lambda) * cosPhi,
441sin(phi)
442) * D;
443}
444vec4 project_position(vec4 position, vec3 position64Low) {
445vec4 position_world = project.modelMatrix * position;
446if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR) {
447if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
448return vec4(
449project_mercator_(position_world.xy),
450project_size_at_latitude(position_world.z, position_world.y),
451position_world.w
452);
453}
454if (project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {
455position_world.xyz += project.coordinateOrigin;
456}
457}
458if (project.projectionMode == PROJECTION_MODE_GLOBE) {
459if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
460return vec4(
461project_globe_(position_world.xyz),
462position_world.w
463);
464}
465if (project.coordinateSystem == COORDINATE_SYSTEM_METER_OFFSETS) {
466mat3 enuMatrix = project_get_orientation_matrix(project.commonOrigin);
467float metersToCommon = GLOBE_RADIUS / EARTH_RADIUS;
468vec3 offsetCommon = (enuMatrix * vec3(-position_world.xy, position_world.z)) * metersToCommon;
469return vec4(project.commonOrigin + offsetCommon, position_world.w);
470}
471}
472if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
473if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
474if (abs(position_world.y - project.coordinateOrigin.y) > 0.25) {
475return vec4(
476project_mercator_(position_world.xy) - project.commonOrigin.xy,
477project_size(position_world.z),
478position_world.w
479);
480}
481}
482}
483if (project.projectionMode == PROJECTION_MODE_IDENTITY ||
484(project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&
485(project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT ||
486project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {
487position_world.xyz -= project.coordinateOrigin;
488}
489return project_offset_(position_world) + project_offset_(project.modelMatrix * vec4(position64Low, 0.0));
490}
491vec4 project_position(vec4 position) {
492return project_position(position, ZERO_64_LOW);
493}
494vec3 project_position(vec3 position, vec3 position64Low) {
495vec4 projected_position = project_position(vec4(position, 1.0), position64Low);
496return projected_position.xyz;
497}
498vec3 project_position(vec3 position) {
499vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);
500return projected_position.xyz;
501}
502vec2 project_position(vec2 position) {
503vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);
504return projected_position.xy;
505}
506vec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {
507return viewProjectionMatrix * position + center;
508}
509vec4 project_common_position_to_clipspace(vec4 position) {
510return project_common_position_to_clipspace(position, project.viewProjectionMatrix, project.center);
511}
512vec2 project_pixel_size_to_clipspace(vec2 pixels) {
513vec2 offset = pixels / project.viewportSize * project.devicePixelRatio * 2.0;
514return offset * project.focalDistance;
515}
516float project_size_to_pixel(float meters) {
517return project_size(meters) * project.scale;
518}
519vec2 project_size_to_pixel(vec2 meters) {
520return project_size(meters) * project.scale;
521}
522float project_size_to_pixel(float size, int unit) {
523if (unit == UNIT_METERS) return project_size_to_pixel(size);
524if (unit == UNIT_COMMON) return size * project.scale;
525return size;
526}
527float project_pixel_size(float pixels) {
528return pixels / project.scale;
529}
530vec2 project_pixel_size(vec2 pixels) {
531return pixels / project.scale;
532}
533`,m={},b={name:"project",dependencies:[r.i,n.A],source:h,vs:g,getUniforms:function(e=m){return"viewport"in e?(0,s.aY)(e):{}},uniformTypes:{wrapLongitude:"f32",coordinateSystem:"i32",commonUnitsPerMeter:"vec3<f32>",projectionMode:"i32",scale:"f32",commonUnitsPerWorldUnit:"vec3<f32>",commonUnitsPerWorldUnit2:"vec3<f32>",center:"vec4<f32>",modelMatrix:"mat4x4<f32>",viewProjectionMatrix:"mat4x4<f32>",viewportSize:"vec2<f32>",devicePixelRatio:"f32",focalDistance:"f32",cameraPosition:"vec3<f32>",coordinateOrigin:"vec3<f32>",commonOrigin:"vec3<f32>",pseudoMeters:"f32"}}},18151:(e,t,i)=>{let r,n;i.d(t,{k:()=>b});var s,a=i(56210),o=i(47696),l=i(85066);class u extends a.a{toString(){let e="[";if(l.$W.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let i=0;i<this.RANK;++i)e+=` ${this[i*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+"]"}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,i){return this[t*this.RANK+e]=(0,o.ws)(i),this}getColumn(e,t=Array(this.RANK).fill(-0)){let i=e*this.RANK;for(let e=0;e<this.RANK;++e)t[e]=this[i+e];return t}setColumn(e,t){let i=e*this.RANK;for(let e=0;e<this.RANK;++e)this[i+e]=t[e];return this}}var c=i(26966),h=i(69173),d=i(67267),f=i(68416),p=i(85402);!function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"}(s||(s={}));let g=45*Math.PI/180,m=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);class b extends u{static get IDENTITY(){return n||Object.freeze(n=new b),n}
533static get ZERO(){return r||Object.freeze(r=new b([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])),r}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return s}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),1==arguments.length&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}set(e,t,i,r,n,s,a,o,l,u,c,h,d,f,p,g){return this[0]=e,this[1]=t,this[2]=i,this[3]=r,this[4]=n,this[5]=s,this[6]=a,this[7]=o,this[8]=l,this[9]=u,this[10]=c,this[11]=h,this[12]=d,this[13]=f,this[14]=p,this[15]=g,this.check()}setRowMajor(e,t,i,r,n,s,a,o,l,u,c,h,d,f,p,g){return this[0]=e,this[1]=n,this[2]=l,this[3]=d,this[4]=t,this[5]=s,this[6]=u,this[7]=f,this[8]=i,this[9]=a,this[10]=c,this[11]=p,this[12]=r,this[13]=o,this[14]=h,this[15]=g,this.check()}toRowMajor(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}identity(){return this.copy(m)}fromObject(e){return this.check()}fromQuaternion(e){return(0,h.I0)(this,e),this.check()}frustum(e){var t,i,r,n,s,a;let{left:o,right:l,bottom:u,top:c,near:d=.1,far:f=500}=e;return f===1/0?(t=this,i=o,r=l,n=u,s=c,a=d,t[0]=2*a/(r-i),t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a/(s-n),t[6]=0,t[7]=0,t[8]=(r+i)/(r-i),t[9]=(s+n)/(s-n),t[10]=-1,t[11]=-1,t[12]=0,t[13]=0,t[14]=-2*a,t[15]=0):(0,h.$h)(this,o,l,u,c,d,f),this.check()}lookAt(e){let{eye:t,center:i=[0,0,0],up:r=[0,1,0]}=e;return(0,h.t5)(this,t,i,r),this.check()}ortho(e){let{left:t,right:i,bottom:r,top:n,near:s=.1,far:a=500}=e;return(0,h.v3)(this,t,i,r,n,s,a),this.check()}orthographic(e){let{fovy:t=g,aspect:i=1,focalDistance:r=1,near:n=.1,far:s=500}=e;v(t);let a=r*Math.tan(t/2),o=a*i;return this.ortho({left:-o,right:o,bottom:-a,top:a,near:n,far:s})}perspective(e){let{fovy:t=45*Math.PI/180,aspect:i=1,near:r=.1,far:n=500}=e;return v(t),(0,h.fN)(this,t,i,r,n),this.check()}determinant(){return(0,h.a4)(this)}getScale(e=[-0,-0,-0]){return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}getTranslation(e=[-0,-0,-0]){return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}getRotation(e,t){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],t=t||[-0,-0,-0];let i=this.getScale(t),r=1/i[0],n=1/i[1],s=1/i[2];return e[0]=this[0]*r,e[1]=this[1]*n,e[2]=this[2]*s,e[3]=0,e[4]=this[4]*r,e[5]=this[5]*n,e[6]=this[6]*s,e[7]=0,e[8]=this[8]*r,e[9]=this[9]*n,e[10]=this[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}getRotationMatrix3(e,t){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0],t=t||[-0,-0,-0];let i=this.getScale(t),r=1/i[0],n=1/i[1],s=1/i[2];return e[0]=this[0]*r,e[1]=this[1]*n,e[2]=this[2]*s,e[3]=this[4]*r,e[4]=this[5]*n,e[5]=this[6]*s,e[6]=this[8]*r,e[7]=this[9]*n,e[8]=this[10]*s,e}transpose(){return(0,h.mg)(this,this),this.check()}invert(){return(0,h.B8)(this,this),this.check()}multiplyLeft(e){return(0,h.lw)(this,e,this),this.check()}multiplyRight(e){return(0,h.lw)(this,this,e),this.check()}rotateX(e){return(0,h.eL)(this,this,e),this.check()}rotateY(e){return(0,h.Z8)(this,this,e),this.check()}rotateZ(e){return(0,h.Qr)(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,t){return(0,h.e$)(this,this,e,t),this.check()}scale(e){return(0,h.hs)(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return(0,h.Tl)(this,this,e),this.check()}transform(e,t){return 4===e.length?(t=(0,p.Z0)(t||[-0,-0,-0,-0],e,this),(0,o.qk)(t,4),t):this.transformAsPoint(e,t)}transformAsPoint(e,t){let i,{length:r}=e;switch(r){case 2:i=(0,d.Z0)(t||[-0,-0],e,this);break;case 3:i=(0,f.Z0)(t||[-0,-0,-0],e,this);break;default:throw Error("Illegal vector")}return(0,o.qk)(i,e.length),i}transformAsVector(e,t){let i;switch(e.length){case 2:i=(0,c.B$)(t||[-0,-0],e,this);break;case 3:i=(0,c.cL)(t||[-0,-0,-0],e,this);break;default:throw Error("Illegal vector")}
533return(0,o.qk)(i,e.length),i}transformPoint(e,t){return this.transformAsPoint(e,t)}transformVector(e,t){return this.transformAsPoint(e,t)}transformDirection(e,t){return this.transformAsVector(e,t)}makeRotationX(e){return this.identity().rotateX(e)}makeTranslation(e,t,i){return this.identity().translate([e,t,i])}}function v(e){if(e>2*Math.PI)throw Error("expected radians")}},18976:(e,t,i)=>{i.d(t,{ZG:()=>a,$g:()=>function e(t){t.map(t=>(function(t){var i;if(t.instance)return;e(t.dependencies||[]);let{propTypes:a={},deprecations:o=[],inject:l={}}=t,u={normalizedInjections:(0,s.Uu)(l),parsedDeprecations:((i=o).forEach(e=>{"function"===e.type?e.regex=RegExp(`\\b${e.old}\\(`):e.regex=RegExp(`${e.type} ${e.old};`)}),i)};a&&(u.propValidators=function(e){let t={};for(let[i,s]of Object.entries(e))t[i]=function(e){let t=n(e);if("object"!==t)return{value:e,...r[t],type:t};if("object"==typeof e)return e?void 0!==e.type?{...e,...r[e.type],type:e.type}:void 0===e.value?{type:"object",value:e}:(t=n(e.value),{...e,...r[t],type:t}):{type:"object",value:null};throw Error("props")}(s);return t}(a)),t.instance=u;let c={};a&&(c=Object.entries(a).reduce((e,[t,i])=>{let r=i?.value;return r&&(e[t]=r),e},{})),t.defaultUniforms={...t.defaultUniforms,...c}})(t))}});let r={number:{type:"number",validate:(e,t)=>Number.isFinite(e)&&"object"==typeof t&&(void 0===t.max||e<=t.max)&&(void 0===t.min||e>=t.min)},array:{type:"array",validate:(e,t)=>Array.isArray(e)||ArrayBuffer.isView(e)}};function n(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}var s=i(48766);function a(e,t,i){e.deprecations?.forEach(e=>{e.regex?.test(t)&&(e.deprecated?i.deprecated(e.old,e.new)():i.removed(e.old,e.new)())})}},20296:(e,t,i)=>{i.d(t,{h:()=>n});var r=i(24486);class n extends r.F{static INDEX=16;static VERTEX=32;static UNIFORM=64;static STORAGE=128;static INDIRECT=256;static QUERY_RESOLVE=512;static MAP_READ=1;static MAP_WRITE=2;static COPY_SRC=4;static COPY_DST=8;get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,t){let i={...t};(t.usage||0)&n.INDEX&&!t.indexType&&(t.data instanceof Uint32Array?i.indexType="uint32":t.data instanceof Uint16Array?i.indexType="uint16":t.data instanceof Uint8Array&&(i.indexType="uint8")),delete i.data,super(e,i,n.defaultProps),this.usage=i.usage||0,this.indexType=i.indexType,this.updateTimestamp=e.incrementTimestamp()}clone(e){return this.device.createBuffer({...this.props,...e})}static DEBUG_DATA_MAX_LENGTH=32;debugData=new ArrayBuffer(0);_setDebugData(e,t,i){let r;if(!this.device.props.debug)return;let s=null;ArrayBuffer.isView(e)?(s=e,r=e.buffer):r=e;let a=Math.min(e?e.byteLength:i,n.DEBUG_DATA_MAX_LENGTH);if(null===r)this.debugData=new ArrayBuffer(a);else{let e=Math.min(s?.byteOffset||0,r.byteLength),t=Math.min(a,Math.max(0,r.byteLength-e));this.debugData=new Uint8Array(r,e,t).slice().buffer}}static defaultProps={...r.F.defaultProps,handle:void 0,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",onMapped:void 0}}},22045:(e,t,i)=>{i.d(t,{He:()=>s,Y$:()=>n,_R:()=>o,fX:()=>a,jY:()=>l});var r=i(95042);function n(e,t){if(!e||!t.some(e=>e.bindingLayout?.length))return e;let i={...e,bindings:e.bindings.map(e=>({...e}))};for(let r of("attributes"in(e||{})&&(i.attributes=e?.attributes||[]),t))for(let e of r.bindingLayout||[])for(let t of function(e){let t=new Set([e,`${e}Uniforms`]);return e.endsWith("Uniforms")||t.add(`${e}Sampler`),[...t]}(e.name)){let r=i.bindings.find(e=>e.name===t);r?.group===0&&(r.group=e.group),r&&void 0!==e.visibility&&(r.visibility=e.visibility)}return i}function s(e,t,i=[]){return e?t?{...e,attributes:e.attributes.length?function(e,t){let i=e.map(e=>({...e})),r=new Map(e.map(e=>[e.name,e])),n=new Map(e.map(e=>[e.location,e]));for(let e of t){let t=r.get(e.name);if(t){if(t.type!==e.type||t.location!==e.location)throw Error(`Shader attribute "${e.name}" conflicts with its inferred type or location`);continue}let s=n.get(e.location);if(s)throw Error(`Shader attributes "${s.name}" and "${e.name}" both use location ${e.location}`);i.push({...e})}return i}(e.attributes,t.attributes.filter(e=>i.includes(e.name))):t.attributes,bindings:function(e,t){let i=e.map(e=>({...e})),r=new Set(e.map(e=>e.name)),n=new Set(e.map(e=>`${e.group}:${e.location}`));for(let e of t){let t=`${e.group}:${e.location}`;r.has(e.name)||n.has(t)||i.push({...e})}return i}(e.bindings,t.bindings)}:e:t}function a(e){return!!(e.uniformTypes&&!function(e){for(let t in e)return!1;return!0}(e.uniformTypes))}function o(e){let t=[];for(let i of e){let e=(0,r.Uj)(i),n=new Set([i.vs,i.fs].flatMap(e=>e?(0,r.V$)(e).filter(e=>e.isStd140).map(e=>e.blockName):[])),s=n.has(e)?e:1===n.size?n.values().next().value:void 0;a(i)&&s&&t.push({name:s,uniformTypes:i.uniformTypes})}return t}function l(e,t){let i=[],r=new Set;for(let n of[...e||[],...t||[]])r.has(n.name)||(r.add(n.name),i.push(n));return i}},22158:(e,t,i)=>{i.d(t,{Uz:()=>a});var r=i(87358);function n(){let e;if("undefined"!=typeof window&&window.performance)e=window.performance.now();else if(void 0!==r&&r.hrtime){let t=r.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}class s{constructor(e,t){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=t,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=n(),this._timerPending=!0,this}timeEnd(){return this._timerPending&&(this.addTime(n()-this._startTime),this._timerPending=!1,this._checkSampling()),this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}class a{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,t="count"){return this._getOrCreate({name:e,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(let e of Object.values(this.stats))e.reset();return this}forEach(e){for(let t of Object.values(this.stats))e(t)}getTable(){let e={};return this.forEach(t=>{e[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),e}
533_initializeStats(e=[]){e.forEach(e=>this._getOrCreate(e))}_getOrCreate(e){let{name:t,type:i}=e,r=this.stats[t];return r||(r=e instanceof s?e:new s(t,i),this.stats[t]=r),r}}},22192:(e,t,i)=>{i.d(t,{M:()=>l});var r=i(24486),n=i(72868),s=i(59396);function a(e,t,i,r){if(r?.inlineSource){let r=function(e,t,i){let r="";for(let i=t-2;i<=t;i++){let n=e[i-1];void 0!==n&&(r+=o(n,t,void 0))}return r}(t,i),n=e.linePos>0?`${" ".repeat(e.linePos+5)}^^^
534`:"";return`
535${r}${n}${e.type.toUpperCase()}: ${e.message}
536
537`}let n="error"===e.type?"red":"orange";return r?.html?`<div class='luma-compiler-log-${e.type}' style="color:${n};"><b> ${e.type.toUpperCase()}: ${e.message}</b></div>`:`${e.type.toUpperCase()}: ${e.message}`}function o(e,t,i){let r=i?.html?e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#039;"):e;return`${function(e,t){let i="";for(let t=e.length;t<4;++t)i+=" ";return i+e}(String(t),4)}: ${r}${i?.html?"<br/>":"\n"}`}class l extends r.F{get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,t){t={...t,debugShaders:t.debugShaders||e.props.debugShaders||"errors"},super(e,{id:function(e){return function(e,t="unnamed"){let i=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(e);return i?.[1]??t}(e.source)||e.id||(0,s.L)(`unnamed ${e.stage}-shader`)}(t),...t},l.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(){let e=this.props.debugShaders;switch(e){case"never":return;case"errors":if("success"===this.compilationStatus)return}try{let t=await this.getCompilationInfo();if("warnings"===e&&t?.length===0)return;this._displayShaderLog(t,this.id)}catch(e){n.R.warn(`Shader ${this.id}: failed to fetch compilation info during debug logging`,e)()}}_displayShaderLog(e,t){if("undefined"==typeof document||!document?.createElement)return;let i=`${this.stage} shader "${t}"`,r=function(e,t,i){let r="",n=t.split(/\r?\n/),s=e.slice().sort((e,t)=>e.lineNum-t.lineNum);switch(i?.showSourceCode||"no"){case"all":let l=0;for(let e=1;e<=n.length;e++){let t=n[e-1],u=s[l];for(t&&u&&(r+=o(t,e,i));s.length>l&&u.lineNum===e;){let e=s[l++];e&&(r+=a(e,n,e.lineNum,{...i,inlineSource:!1}))}}for(;s.length>l;){let e=s[l++];e&&(r+=a(e,[],0,{...i,inlineSource:!1}))}return r;case"issues":case"no":for(let t of e)r+=a(t,n,t.lineNum,{inlineSource:i?.showSourceCode!=="no"});return r}}(e,this.source,{showSourceCode:"all",html:!0}),n=this.getTranslatedSource(),s=document.createElement("div");s.innerHTML=`\
538<h1>Compilation error in ${i}</h1>
539<div style="display:flex;position:fixed;top:10px;right:20px;gap:2px;">
540<button id="copy">Copy source</button><br/>
541<button id="close">Close</button>
542</div>
543<code><pre>${r}</pre></code>`,n&&(s.innerHTML+=`<br /><h1>Translated Source</h1><br /><br /><code><pre>${n}</pre></code>`),s.style.top="0",s.style.left="0",s.style.background="white",s.style.position="fixed",s.style.zIndex="9999",s.style.maxWidth="100vw",s.style.maxHeight="100vh",s.style.overflowY="auto",document.body.appendChild(s);let l=s.querySelector(".luma-compiler-log-error");l?.scrollIntoView(),s.querySelector("button#close").onclick=()=>{s.remove()},s.querySelector("button#copy").onclick=()=>{navigator.clipboard.writeText(this.source)}}static defaultProps={...r.F.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0}}},23024:(e,t,i)=>{i.d(t,{pF:()=>g,I7:()=>f,PI:()=>h,zc:()=>p});var r=i(82139),n=i(72868),s=i(59396),a=i(20296),o=i(47097),l=i(10991),u=i(9551),c=i(25927);class h{}function d(e){if(void 0!==e){if(null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e)return e;if(e instanceof Error)return e.message;if(Array.isArray(e))return e.map(d);if("object"==typeof e){var t,i;if("toString"in(t=e)&&"function"==typeof t.toString&&t.toString!==Object.prototype.toString){let t=String(e);if("[object Object]"!==t)return t}return"message"in(i=e)&&"type"in i?function(e){let t="string"==typeof e.type?e.type:"message",i="string"==typeof e.message?e.message:"",r="number"==typeof e.lineNum?e.lineNum:null,n="number"==typeof e.linePos?e.linePos:null,s=null!==r&&null!==n?` @ ${r}:${n}`:null!==r?` @ ${r}`:"";return`${t}${s}: ${i}`.trim()}(e):e.constructor?.name||"Object"}return String(e)}}class f{features;disabledFeatures;constructor(e=[],t){this.features=new Set(e),this.disabledFeatures=t||{}}*[Symbol.iterator](){yield*this.features}has(e){return!this.disabledFeatures?.[e]&&this.features.has(e)}}function p(){if("undefined"==typeof HTMLCanvasElement)return!1;let e=HTMLCanvasElement.prototype;return"layoutSubtree"in e&&"function"==typeof e.requestPaint}class g{static defaultProps={...c.M};get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}toJSON(){return this.toString()}id;props;userData={};statsManager=r.d;_factories={};timestamp=0;_reused=!1;_moduleData={};wgslLanguageFeatures=new Set;_textureCaps={};_debugGPUTimeQuery=null;constructor(e){this.props={...g.defaultProps,...e},this.id=this.props.id||(0,s.L)(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(e){return o.E.getVertexFormatInfo(e)}isVertexFormatSupported(e){return!0}getTextureFormatInfo(e){return l.vz.getInfo(e)}getTextureFormatCapabilities(e){let t=this._textureCaps[e];if(!t){let i=this._getDeviceTextureFormatCapabilities(e);t=this._getDeviceSpecificTextureFormatCapabilities(i),this._textureCaps[e]=t}return t}getMipLevelCount(e,t,i=1){return 1+Math.floor(Math.log2(Math.max(e,t,i)))}isExternalImage(e){return"undefined"!=typeof ImageData&&e instanceof ImageData||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement||"undefined"!=typeof VideoFrame&&e instanceof VideoFrame||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas}getExternalImageSize(e){if("undefined"!=typeof ImageData&&e instanceof ImageData||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)return{width:e.width,height:e.height};if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement)return{width:e.naturalWi
543dth,height:e.naturalHeight};if("undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement)return{width:e.videoWidth,height:e.videoHeight};if("undefined"!=typeof VideoFrame&&e instanceof VideoFrame)return{width:e.displayWidth,height:e.displayHeight};throw Error("Unknown image type")}isTextureFormatSupported(e){return this.getTextureFormatCapabilities(e).create}isTextureFormatFilterable(e){return this.getTextureFormatCapabilities(e).filter}isTextureFormatRenderable(e){return this.getTextureFormatCapabilities(e).render}isTextureFormatCompressed(e){return l.vz.isCompressed(e)}getSupportedCompressedTextureFormats(){let e=[];for(let t of Object.keys((0,u.PU)()))this.isTextureFormatCompressed(t)&&this.isTextureFormatSupported(t)&&e.push(t);return e}pushDebugGroup(e){this.commandEncoder.pushDebugGroup(e)}popDebugGroup(){this.commandEncoder?.popDebugGroup()}insertDebugMarker(e){this.commandEncoder?.insertDebugMarker(e)}loseDevice(){return!1}incrementTimestamp(){return this.timestamp++}reportError(e,t,...i){if(!this.props.onError(e,t)){var r,s;let a=(r=t,s=i,[d(r),...s.map(d).filter(e=>void 0!==e)].filter(e=>void 0!==e));return n.R.error("webgl"===this.type?"%cWebGL":"%cWebGPU","color: white; background: red; padding: 2px 6px; border-radius: 3px;",e.message,...a)}return()=>{}}debug(){if(this.props.debug);else{let e=`\
544'Type luma.log.set({debug: true}) in console to enable debug breakpoints',
545or create a device with the 'debug: true' prop.`;n.R.once(0,e)()}}getDefaultCanvasContext(){if(!this.canvasContext)throw Error("Device has no default CanvasContext. See props.createCanvasContext");return this.canvasContext}createFence(){throw Error("createFence() not implemented")}beginRenderPass(e){return this.commandEncoder.beginRenderPass(e)}beginComputePass(e){return this.commandEncoder.beginComputePass(e)}writeBufferViaCommandEncoder(e,t,i,r=0){throw Error("writeBufferViaCommandEncoder() not implemented")}generateMipmapsWebGPU(e){throw Error("not implemented")}_createSharedRenderPipelineWebGL(e){throw Error("_createSharedRenderPipelineWebGL() not implemented")}_createBindGroupLayoutWebGPU(e,t){throw Error("_createBindGroupLayoutWebGPU() not implemented")}_createBindGroupWebGPU(e,t,i,r,n){throw Error("_createBindGroupWebGPU() not implemented")}_supportsDebugGPUTime(){return this.features.has("timestamp-query")&&!!(this.props.debug||this.props.debugGPUTime)}_enableDebugGPUTime(e=256){if(!this._supportsDebugGPUTime())return null;if(this._debugGPUTimeQuery)return this._debugGPUTimeQuery;try{this._debugGPUTimeQuery=this.createQuerySet({type:"timestamp",count:e}),this.commandEncoder=this.createCommandEncoder({id:this.commandEncoder.props.id,timeProfilingQuerySet:this._debugGPUTimeQuery})}catch{this._debugGPUTimeQuery=null}return this._debugGPUTimeQuery}_disableDebugGPUTime(){this._debugGPUTimeQuery&&(this.commandEncoder.getTimeProfilingQuerySet()===this._debugGPUTimeQuery&&(this.commandEncoder=this.createCommandEncoder({id:this.commandEncoder.props.id})),this._debugGPUTimeQuery.destroy(),this._debugGPUTimeQuery=null)}_isDebugGPUTimeEnabled(){return null!==this._debugGPUTimeQuery}getCanvasContext(){return this.getDefaultCanvasContext()}readPixelsToArrayWebGL(e,t){throw Error("not implemented")}readPixelsToBufferWebGL(e,t){throw Error("not implemented")}setParametersWebGL(e){throw Error("not implemented")}getParametersWebGL(e){throw Error("not implemented")}withParametersWebGL(e,t){throw Error("not implemented")}clearWebGL(e){throw Error("not implemented")}resetWebGL(){throw Error("not implemented")}getModuleData(e){return this._moduleData[e]||={},this._moduleData[e]}static _getCanvasContextProps(e){return!0===e.createCanvasContext?{}:e.createCanvasContext}_getDeviceTextureFormatCapabilities(e){let t=l.vz.getCapabilities(e),i=e=>("string"==typeof e?this.features.has(e):e)??!0,r=i(t.create);return{format:e,create:r,render:r&&i(t.render),filter:r&&i(t.filter),blend:r&&i(t.blend),store:r&&i(t.store)}}_normalizeBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let t={...e};if((e.usage||0)&a.h.INDEX&&(!e.indexType&&(e.data instanceof Uint32Array?t.indexType="uint32":e.data instanceof Uint16Array?t.indexType="uint16":e.data instanceof Uint8Array&&(t.data=new Uint16Array(e.data),t.indexType="uint16")),!t.indexType))throw Error("indices buffer content must be of type uint16 or uint32");return t}}},23323:(e,t,i)=>{i.d(t,{Pr:()=>s,WC:()=>o,jV:()=>a});var r=i(81075),n=i(37148);function s(e,t={}){let i={...e},n=t.layout??"std140",u={},h=0;for(let[e,t]of Object.entries(i))h=function e(t,i,n,s,u){if("string"==typeof n){let e=a(n,u),o=(0,r.JP)(s,e.alignment);return t[i]={offset:o,...e},o+e.size}if(Array.isArray(n)){if(Array.isArray(n[0]))throw Error(`Nested arrays are not supported for ${i}`);let o=n[0],h=n[1],d=function e(t,i){var n,s,o;
545return n=function t(i,n){if("string"==typeof i)return a(i,n).size;if(Array.isArray(i)){let t=i[0],r=i[1];if(Array.isArray(t))throw Error("Nested arrays are not supported");return e(t,n)*r}let s=0;for(let e of Object.values(i))s=(0,r.JP)(s,l(e,n))+t(e,n);return(0,r.JP)(s,l(i,n))}(t,i),s=l(t,i),o=i,(0,r.JP)(n,c(o)?4:s)}(o,u),f=(0,r.JP)(s,l(n,u));for(let r=0;r<h;r++)e(t,`${i}[${r}]`,o,f+r*d,u);return f+d*h}if(o(n)){let a=l(n,u),o=(0,r.JP)(s,a);for(let[r,s]of Object.entries(n))o=e(t,`${i}.${r}`,s,o,u);return(0,r.JP)(o,a)}throw Error(`Unsupported CompositeShaderType for ${i}`)}(u,e,t,h,n);return h=(0,r.JP)(h,l(i,n)),{layout:n,byteLength:4*h,uniformTypes:i,fields:u}}function a(e,t){let i=(0,n.si)(e),s=(0,n.k0)(i),a=/^mat(\d)x(\d)<.+>$/.exec(i);if(a){var o,l;let e=Number(a[1]),n=Number(a[2]),c=u(n,i,s.type,t),h=(o=c.size,l=c.alignment,"std140"===t?4:(0,r.JP)(o,l));return{alignment:c.alignment,size:e*h,components:e*n,columns:e,rows:n,columnStride:h,shaderType:i,type:s.type}}let c=/^vec(\d)<.+>$/.exec(i);return c?u(Number(c[1]),i,s.type,t):{alignment:1,size:1,components:1,columns:1,rows:1,columnStride:1,shaderType:i,type:s.type}}function o(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function l(e,t){var i;if("string"==typeof e)return a(e,t).alignment;if(Array.isArray(e)){let i=l(e[0],t);return c(t)?Math.max(i,4):i}let r=1;for(let i of Object.values(e))r=Math.max(r,l(i,t));return"std140"===(i=t)||"wgsl-uniform"===i?Math.max(r,4):r}function u(e,t,i,r){return{alignment:2===e?2:4,size:3===e?3:e,components:e,columns:1,rows:e,columnStride:3===e?3:e,shaderType:t,type:i}}function c(e){return"std140"===e||"wgsl-uniform"===e}},24486:(e,t,i)=>{i.d(t,{F:()=>h});var r=i(59396);let n="GPU Resource Counts",s="Resource Counts",a="GPU Time and Memory",o=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","RenderBundleEncoders","RenderBundles","ComputePasss","CommandEncoders","CommandBuffers"].flatMap(e=>[`${e} Created`,`${e} Active`]),l=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","SharedRenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","RenderBundleEncoders","RenderBundles","ComputePasss","CommandEncoders","CommandBuffers"].flatMap(e=>[`${e} Created`,`${e} Active`]),u=new WeakMap,c=new WeakMap;class h{static defaultProps={id:"undefined",handle:void 0,_isHandleBorrowed:!1,userData:void 0};toString(){return`${this[Symbol.toStringTag]||this.constructor.name}:"${this.id}"`}toJSON(){return this.toString()}id;props;userData={};_device;destroyed=!1;allocatedBytes=0;allocatedBytesName=null;_attachedResources=new Set;get ownsHandle(){return(void 0===this.props.handle||null===this.props.handle)&&!this.isHandleBorrowed}get isHandleBorrowed(){return!!this.props._isHandleBorrowed}constructor(e,t,i){if(!e)throw Error("no device");this._device=e,this.props=function(e,t){let i={...t};for(let t in e)void 0!==e[t]&&(i[t]=e[t]);return i}(t,i);let n="undefined"!==this.props.id?this.props.id:(0,r.L)(this[Symbol.toStringTag]);this.props.id=n,this.id=n,this.userData=this.props.userData||{},this.addStats()}destroy(){this.destroyed||this.destroyResource()}delete(){return this.destroy(),this}getProps(){return this.props}attachResource(e){this._attachedResources.add(e)}detachResource(e){this._attachedResources.delete(e)}destroyAttachedResource(e){this._attachedResources.delete(e)&&e.destroy()}destroyAttachedResources(){for(let e of this._attachedResources)e.destroy();this._attachedResources=new Set}destroyResource(){this.destroyed||(this.destroyAttachedResources(),this.removeStats(),this.destroyed=!0)}removeStats(){let e=p(this._device),t=e?g():0,i=[this._device.statsManager.getStats(n),this._device.statsManager.getStats(s)],r=f(this._device);for(let e of i)d(e,r);let a=this.getStatsName();for(let e of i)e.get("Resources Active").decrementCount(),e.get(`${a}s Active`).decrementCount();e&&(e.statsBookkeepingCalls=(e.statsBookkeepingCalls||0)+1,e.statsBookkeepingTimeMs=(e.statsBookkeepingTimeMs||0)+(g()-t))}trackAllocatedMemory(e,t=this.getStatsName()){let i=p(this._device),r=i?g():0,n=this._device.statsManager.getStats(a);this.allocatedBytes>0&&this.allocatedBytesName&&(n.get("GPU Memory").subtractCount(this.allocatedBytes),n.get(`${this.allocatedBytesName} Memory`).subtractCount(this.allocatedBytes)),n.get("GPU Memory").addCount(e),n.get(`${t} Memory`).addCount(e),i&&(i.statsBookkeepingCalls=(i.statsBookkeepingCalls||0)+1,i.statsBookkeepingTimeMs=(i.statsBookkeepingTimeMs||0)+(g()-r)),this.allocatedBytes=e,this.allocatedBytesName=t}trackReferencedMemory(e,t=this.getStatsName()){this.trackAllocatedMemory(e,`External ${t}`)}trackDeallocatedMemory(e=this.getStatsName()){if(0===this.allocatedBytes){this.allocatedBytesName=null;return}let t=p(this._device),i=t?g():0,r=this._device.statsManager.getStats(a);r.get("GPU Memory").subtractCount(this.allocatedBytes),r.get(`${this.allocatedBytesName||e} Memory`).subtractCount(this.allocatedBytes),t&&(t.statsBookkeepingCalls=(t.statsBookkeepingCalls||0)+1,t.statsBookkeepingTimeMs=(t.statsBookkeepingTimeMs||0)+(g()-i)),this.allocatedBytes=0,this.allocatedBytesName=null}trackDeallocatedReferencedMemory(e=this.getStatsName()){this.trackDeallocatedMemory(`Referenced ${e}`)}addStats(){let e=this.getStatsName(),t=p(this._device),i=t?g():0,r=[this._device.statsManager.getStats(n),this._device.statsManager.getStats(s)],a=f(this._device);for(let e of r)d(e,a);for(let t of r)t.get("Resources Created").incrementCount(),t.get("Resources Active").incrementCount(),t.get(`${e}s Created`).incrementCount(),t.get(`${e}s Active`).incrementCount();t&&(t.statsBookkeepingCalls=(t.statsBookkeepingCalls||0)+1,t.statsBookkeepingTimeMs=(t.statsBookkeepingTimeMs||0)+(g()-i)),function(e,t){let i=p(e);if(i&&i.activeDefaultFramebufferAcquireDepth)switch(i.transientCanvasResourceCreates=(i.transientCanvasResourceCreates||0)+1,t){case"Texture":i.transientCanvasTextureCreates=(i.transientCanvasTextureCreates||0)+1;break;case"TextureView":i.transientCanvasTextureViewCreates=(i.transientCanvasTextureViewCreates||0)+1;break;case"Sampler":i.transientCanvasSamplerCreates=(i.transientCanvasSamplerCreates||0)+1;break;case"Framebuffer":i.transientCanvasFramebufferCreates=(i.transientCanvasFramebufferCreates||0)+1}}(this._device,e)}getStatsName(){var e=this;let t=Object.getPrototypeOf(e);for(;t;){let i=Object.getPrototypeOf(t);if(!i||i===h.prototype)return function(e){let t=Object.getOwnPropertyDescriptor(e,Symbol.toStringTag);
545return"function"==typeof t?.get?t.get.call(e):"string"==typeof t?.value?t.value:null}(t)||e[Symbol.toStringTag]||e.constructor.name;t=i}return e[Symbol.toStringTag]||e.constructor.name}}function d(e,t){let i=e.stats,r=!1;for(let n of t)i[n]||(e.get(n),r=!0);let n=Object.keys(i).length,s=u.get(e);if(!r&&s?.orderedStatNames===t&&s.statCount===n)return;let a={},o=c.get(t);for(let e of(o||(o=new Set(t),c.set(t,o)),t))i[e]&&(a[e]=i[e]);for(let[e,t]of Object.entries(i))o.has(e)||(a[e]=t);for(let e of Object.keys(i))delete i[e];Object.assign(i,a),u.set(e,{orderedStatNames:t,statCount:n})}function f(e){return"webgl"===e.type?l:o}function p(e){let t=e.userData["cpu-hotspot-profiler"];return t?.enabled?t:null}function g(){return globalThis.performance?.now?.()??Date.now()}},24706:(e,t,i)=>{i.d(t,{E:()=>r});let r={add:{arity:2,symbol:"arithmetic_add"},subtract:{arity:2,symbol:"arithmetic_subtract"},multiply:{arity:2,symbol:"arithmetic_multiply"},divide:{arity:2,symbol:"arithmetic_divide"},pow:{arity:2,symbol:"pow"},sqrt:{arity:1,symbol:"sqrt"},abs:{arity:1,symbol:"abs"},sin:{arity:1,symbol:"sin"},cos:{arity:1,symbol:"cos"},tan:{arity:1,symbol:"arithmetic_tan"},exp:{arity:1,symbol:"exp"},log:{arity:1,symbol:"log"}}},24972:(e,t,i)=>{i.d(t,{A:()=>r});function r(e,t){if(!e)throw Error(t||"deck.gl: assertion failed.")}},25927:(e,t,i)=>{i.d(t,{M:()=>n});var r=i(72868);let n={id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,featureLevel:void 0,optionalFeatures:[],xrCompatible:!1,createCanvasContext:void 0,webgl:{},onError:(e,t)=>{},onResize:(e,t)=>
545{let[i,n]=e.getDevicePixelSize();r.R.log(1,`${e} resized => ${i}x${n}px`)()},onPositionChange:(e,t)=>{let[i,n]=e.getPosition();r.R.log(1,`${e} repositioned => ${i},${n}`)()},onVisibilityChange:e=>r.R.log(1,`${e} Visibility changed ${e.isVisible}`)(),onDevicePixelRatioChange:(e,t)=>r.R.log(1,`${e} DPR changed ${t.oldRatio} => ${e.devicePixelRatio}`)(),debug:function(){var e,t;return e=r.R.get("debug"),t=function(){let e=globalThis.process;if(e?.env)return e.env.NODE_ENV}(),null!=e?!!e:void 0!==t&&"production"!==t}(),debugGPUTime:!1,debugShaders:r.R.get("debug-shaders")||void 0,debugFramebuffers:!!r.R.get("debug-framebuffers"),debugFactories:!!r.R.get("debug-factories"),debugWebGL:!!r.R.get("debug-webgl"),debugSpectorJS:void 0,debugSpectorJSUrl:void 0,_reuseDevices:!1,_cacheShaders:!0,_destroyShaders:!1,_cachePipelines:!0,_sharePipelines:!0,_destroyPipelines:!1,_initializeFeatures:!0,_disabledFeatures:{"compilation-status-async-webgl":!0},_handle:void 0}},26966:(e,t,i)=>{function r(e,t,i){let r=t[0],n=t[1],s=i[3]*r+i[7]*n||1;return e[0]=(i[0]*r+i[4]*n)/s,e[1]=(i[1]*r+i[5]*n)/s,e}function n(e,t,i){let r=t[0],n=t[1],s=t[2],a=i[3]*r+i[7]*n+i[11]*s||1;return e[0]=(i[0]*r+i[4]*n+i[8]*s)/a,e[1]=(i[1]*r+i[5]*n+i[9]*s)/a,e[2]=(i[2]*r+i[6]*n+i[10]*s)/a,e}function s(e,t,i){let r=t[0],n=t[1];return e[0]=i[0]*r+i[2]*n,e[1]=i[1]*r+i[3]*n,e[2]=t[2],e}i.d(t,{B$:()=>r,J4:()=>s,cL:()=>n})},28284:(e,t,i)=>{i.d(t,{WebGLDevice:()=>tl});var r=i(23024),n=i(72868);let s={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,35725:null,36006:null,36007:null,34229:null,34964:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32926:!1,32928:!1,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:0xffffffff,36005:0xffffffff,2962:519,2967:0,2963:0xffffffff,34816:519,36003:0,36004:0xffffffff,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],36389:null,36662:null,36663:null,35053:null,35055:null,35723:4352,36010:null,35977:!1,3333:4,3317:4,37440:!1,37441:!1,37443:37444,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},a=(e,t,i)=>t?e.enable(i):e.disable(i),o=(e,t,i)=>e.hint(i,t),l=(e,t,i)=>e.pixelStorei(i,t),u=(e,t,i)=>e.bindFramebuffer(36006===i?36009:36008,t),c=(e,t,i)=>{e.bindBuffer({34964:34962,36662:36662,36663:36663,35053:35051,35055:35052}[i],t)};function h(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}let d={3042:a,32773:(e,t)=>e.blendColor(...t),32777:"blendEquation",34877:"blendEquation",32969:"blendFunc",32968:"blendFunc",32971:"blendFunc",32970:"blendFunc",3106:(e,t)=>e.clearColor(...t),3107:(e,t)=>e.colorMask(...t),2884:a,2885:(e,t)=>e.cullFace(t),2929:a,2931:(e,t)=>e.clearDepth(t),2932:(e,t)=>e.depthFunc(t),2928:(e,t)=>e.depthRange(...t),2930:(e,t)=>
vendor: 1,739 bytes, line 545
545e.depthMask(t),3024:a,35723:o,35725:(e,t)=>e.useProgram(t),36007:(e,t)=>e.bindRenderbuffer(36161,t),36389:(e,t)=>e.bindTransformFeedback?.(36386,t),34229:(e,t)=>e.bindVertexArray(t),36006:u,36010:u,34964:c,36662:c,36663:c,35053:c,35055:c,2886:(e,t)=>e.frontFace(t),33170:o,2849:(e,t)=>e.lineWidth(t),32823:a,32824:"polygonOffset",10752:"polygonOffset",35977:a,32926:a,32928:a,32938:"sampleCoverage",32939:"sampleCoverage",3089:a,3088:(e,t)=>e.scissor(...t),2960:a,2961:(e,t)=>e.clearStencil(t),2968:(e,t)=>e.stencilMaskSeparate(1028,t),36005:(e,t)=>e.stencilMaskSeparate(1029,t),2962:"stencilFuncFront",2967:"stencilFuncFront",2963:"stencilFuncFront",34816:"stencilFuncBack",36003:"stencilFuncBack",36004:"stencilFuncBack",2964:"stencilOpFront",2965:"stencilOpFront",2966:"stencilOpFront",34817:"stencilOpBack",34818:"stencilOpBack",34819:"stencilOpBack",2978:(e,t)=>e.viewport(...t),34383:a,10754:a,12288:a,12289:a,12290:a,12291:a,12292:a,12293:a,12294:a,12295:a,3333:l,3317:l,37440:l,37441:l,37443:l,3330:l,3332:l,3331:l,3314:l,32878:l,3316:l,3315:l,32877:l,framebuffer:(e,t)=>{let i=t&&"handle"in t?t.handle:t;return e.bindFramebuffer(36160,i)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{e.blendEquationSeparate(..."number"==typeof t?[t,t]:t)},blendFunc:(e,t)=>{let i=t?.length===2?[...t,...t]:t;e.blendFuncSeparate(...i)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>
545e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(t[0],t[1]||!1),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{let[i,r]=t=h(t)?t:[t,t];e.stencilMaskSeparate(1028,i),e.stencilMaskSeparate(1029,r)},stencilFunc:(e,t)=>{let[i,r,n,s,a,o]=t=h(t)&&3===t.length?[...t,...t]:t;e.stencilFuncSeparate(1028,i,r,n),e.stencilFuncSeparate(1029,s,a,o)},stencilOp:(e,t)=>{let[i,r,n,s,a,o]=t=h(t)&&3===t.length?[...t,...t]:t;e.stencilOpSeparate(1028,i,r,n),e.stencilOpSeparate(1029,s,a,o)},viewport:(e,t)=>e.viewport(...t)};function f(e,t,i){return void 0!==t[e]?t[e]:i[e]}let p={blendEquation:(e,t,i)=>e.blendEquationSeparate(f(32777,t,i),f(34877,t,i)),blendFunc:(e,t,i)=>e.blendFuncSeparate(f(32969,t,i),f(32968,t,i),f(32971,t,i),f(32970,t,i)),polygonOffset:(e,t,i)=>e.polygonOffset(f(32824,t,i),f(10752,t,i)),sampleCoverage:(e,t,i)=>e.sampleCoverage(f(32938,t,i),f(32939,t,i)),stencilFuncFront:(e,t,i)=>e.stencilFuncSeparate(1028,f(2962,t,i),f(2967,t,i),f(2963,t,i)),stencilFuncBack:(e,t,i)=>e.stencilFuncSeparate(1029,f(34816,t,i),f(36003,t,i),f(36004,t,i)),stencilOpFront:(e,t,i)=>e.stencilOpSeparate(1028,f(2964,t,i),f(2965,t,i),f(2966,t,i)),stencilOpBack:(e,t,i)=>e.stencilOpSeparate(1029,f(34817,t,i),f(34818,t,i),f(34819,t,i))},g={enable:(e,t)=>
545e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,i)=>e({[t]:i}),hint:(e,t,i)=>e({[t]:i}),useProgram:(e,t)=>e({35725:t}),bindRenderbuffer:(e,t,i)=>e({36007:i}),bindTransformFeedback:(e,t,i)=>e({36389:i}),bindVertexArray:(e,t)=>e({34229:t}),bindFramebuffer:(e,t,i)=>{switch(t){case 36160:return e({36006:i,36010:i});case 36009:return e({36006:i});case 36008:return e({36010:i});default:return null}},bindBuffer:(e,t,i)=>{let r={34962:[34964],36662:[36662],36663:[36663],35051:[35053],35052:[35055]}[t];return r?e({[r]:i}):{valueChanged:!0}},blendColor:(e,t,i,r,n)=>e({32773:new Float32Array([t,i,r,n])}),blendEquation:(e,t)=>e({32777:t,34877:t}),blendEquationSeparate:(e,t,i)=>e({32777:t,34877:i}),blendFunc:(e,t,i)=>e({32969:t,32968:i,32971:t,32970:i}),blendFuncSeparate:(e,t,i,r,n)=>e({32969:t,32968:i,32971:r,32970:n}),clearColor:(e,t,i,r,n)=>e({3106:new Float32Array([t,i,r,n])}),clearDepth:(e,t)=>e({2931:t}),clearStencil:(e,t)=>e({2961:t}),colorMask:(e,t,i,r,n)=>e({3107:[t,i,r,n]}),cullFace:(e,t)=>e({2885:t}),depthFunc:(e,t)=>e({2932:t}),depthRange:(e,t,i)=>e({2928:new Float32Array([t,i])}),depthMask:(e,t)=>e({2930:t}),frontFace:(e,t)=>e({2886:t}),lineWidth:(e,t)=>e({2849:t}),polygonOffset:(e,t,i)=>e({32824:t,10752:i}),sampleCoverage:(e,t,i)=>e({32938:t,32939:i}),scissor:(e,t,i,r,n)=>e({3088:new Int32Array([t,i,r,n])}),stencilMask:(e,t)=>e({2968:t,36005:t}),stencilMaskSeparate:(e,t,i)=>e({[1028===t?2968:36005]:i}),stencilFunc:(e,t,i,r)=>e({2962:t,2967:i,2963:r,34816:t,36003:i,36004:r}),stencilFuncSeparate:(e,t,i,r,n)=>e({[1028===t?2962:34816]:i,[1028===t?2967:36003]:r,[1028===t?2963:36004]:n}),stencilOp:(e,t,i,r)=>e({2964:t,2965:i,2966:r,34817:t,34818:i,34819:r}),stencilOpSeparate:(e,t,i,r,n)=>e({[1028===t?2964:34817]:i,[1028===t?2965:34818]:r,[1028===t?2966:34819]:n}),viewport:(e,t,i,r,n)=>e({2978:[t,i,r,n]})},m=(e,t)=>e.isEnabled(t),b={3042:m,2884:m,2929:m,3024:m,32823:m,32926:m,32928:m,3089:m,2960:m,35977:m},v=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068]);function y(e,t){if(function(e){for(let t in e)return!1;return!0}(t))return;let i={};for(let r in t){let n=Number(r),s=d[r];s&&("string"==typeof s?i[s]=!0:s(e,t[r],n))}let r=e.lumaState?.cache;if(r)for(let n in i)(0,p[n])(e,t,r)}function _(e,t=s){if("number"==typeof t){let i=b[t];return i?i(e,t):e.getParameter(t)}let i=Array.isArray(t)?t:Object.keys(t),r={};for(let t of i){let i=b[t];r[t]=i?i(e,Number(t)):e.getParameter(Number(t))}return r}function w(e){return Array.isArray(e)||ArrayBuffer.isView(e)}class x{static get(e){return e.lumaState}gl;program=null;stateStack=[];enable=!0;cache=null;log;initialized=!1;constructor(e,t){this.gl=e,this.log=t?.log||(()=>{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(e={}){this.stateStack.push({})}pop(){let e=this.stateStack[this.stateStack.length-1];y(this.gl,e),this.stateStack.pop()}trackState(e,t){if(this.cache=t?.copyState?_(e):Object.assign({},s),this.initialized)throw Error("WebGLStateTracker");for(let t in this.initialized=!0,this.gl.lumaState=this,function(e){let t=e.useProgram.bind(e);e.useProgram=function(i){let r=x.get(e);r.program!==i&&(t(i),r.program=i)}}(e),g){let i=g[t];!function(e,t,i){if(!e[t])return;let r=e[t].bind(e);e[t]=function(...t){let{valueChanged:n,oldValue:s}=i(x.get(e)._updateCache,...t);return n&&r(...t),s}
545,Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}(e,t,i)}E(e,"getParameter"),E(e,"isEnabled")}_updateCache(e){let t,i=!1,r=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let n in e){let s=e[n],a=this.cache[n];!function(e,t){if(e===t)return!0;if(w(e)&&w(t)&&e.length===t.length){for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}return!1}(s,a)&&(i=!0,t=a,!r||n in r||(r[n]=a),this.cache[n]=s)}return{valueChanged:i,oldValue:t}}}function E(e,t){let i=e[t].bind(e);e[t]=function(t){if(void 0===t||v.has(t))return i(t);let r=x.get(e);return t in r.cache||(r.cache[t]=i(t)),r.enable?r.cache[t]:i(t)},Object.defineProperty(e[t],"name",{value:`${t}-from-cache`,configurable:!1})}function S(e){let t=e.luma||{_polyfilled:!1,extensions:{},softwareRenderer:!1};return t._polyfilled??=!1,t.extensions||={},e.luma=t,t}function P(e,t,i){return void 0===i[t]&&(i[t]=e.getExtension(t)||null),i[t]}function C(e,t){return/NVIDIA/i.exec(e)||/NVIDIA/i.exec(t)?"nvidia":/INTEL/i.exec(e)||/INTEL/i.exec(t)?"intel":/Apple/i.exec(e)||/Apple/i.exec(t)?"apple":/AMD/i.exec(e)||/AMD/i.exec(t)||/ATI/i.exec(e)||/ATI/i.exec(t)?"amd":/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t)?"software":"unknown"}var T=i(10991);function A(e){switch(e){case"uint8":case"unorm8":return 5121;case"sint8":case"snorm8":return 5120;case"uint16":case"unorm16":return 5123;case"sint16":case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw Error(String(e))}let M="WEBGL_compressed_texture_s3tc",L="WEBGL_compressed_texture_s3tc_srgb",k="EXT_texture_compression_rgtc",I="EXT_texture_compression_bptc",O="EXT_render_snorm",R="EXT_color_buffer_float",B="snorm8-renderable-webgl",D="norm16-renderable-webgl",F="snorm16-renderable-webgl",$="float16-renderable-webgl",z="float32-renderable-webgl",N={"float32-renderable-webgl":{extensions:[R]},"float16-renderable-webgl":{extensions:["EXT_color_buffer_half_float"]},"rgb9e5ufloat-renderable-webgl":{extensions:["WEBGL_render_shared_exponent"]},"snorm8-renderable-webgl":{extensions:[O]},"norm16-webgl":{extensions:["EXT_texture_norm16"]},"norm16-renderable-webgl":{features:["norm16-webgl"]},"snorm16-renderable-webgl":{features:["norm16-webgl"],extensions:[O]},"float32-filterable":{extensions:["OES_texture_float_linear"]},"float16-filterable-webgl":{extensions:["OES_texture_half_float_linear"]},"texture-filterable-anisotropic-webgl":{extensions:["EXT_texture_filter_anisotropic"]},"texture-blend-float-webgl":{extensions:["EXT_float_blend"]},"texture-compression-bc":{extensions:[M,L,k,I]},"texture-compression-bc5-webgl":{extensions:[k]},"texture-compression-bc7-webgl":{extensions:[I]},"texture-compression-etc2":{extensions:["WEBGL_compressed_texture_etc"]},"texture-compression-astc":{extensions:["WEBGL_compressed_texture_astc"]},"texture-compression-etc1-webgl":{extensions:["WEBGL_compressed_texture_etc1"]},"texture-compression-pvrtc-webgl":{extensions:["WEBGL_compressed_texture_pvrtc"]},"texture-compression-atc-webgl":{extensions:["WEBGL_compressed_texture_atc"]}};function j(e,t,i){return function e(t,i,r,n){let s=N[i];if(!s||n.has(i))return!1;n.add(i);let a=(s.features||[]).every(i=>e(t,i,r,n));return n.delete(i),!!a&&(s.extensions||[]).every(e=>!!P(t,e,r))}(e,t,i,new Set)}let U={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756,r:B},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757,r:B},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0,r:$},r16unorm:{gl:33322,rb:!0,r:D},r16snorm:{gl:36760,r:F},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759,r:B},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0,r:$},rg16unorm:{gl:33324,r:D},rg16snorm:{gl:36761,r:F},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:z},rgb9e5ufloat:{gl:35901,r:"rgb9e5ufloat-renderable-webgl"},rg11b10ufloat:{gl:35898,rb:!0}
545,rgb10a2unorm:{gl:32857,rb:!0},rgb10a2uint:{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852,r:!1},"rgb16snorm-webgl":{gl:36762,r:!1},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0,r:z},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842,r:$},rgba16unorm:{gl:32859,rb:!0,r:D},rgba16snorm:{gl:36763,r:F},"rgb32float-webgl":{gl:34837,x:R,r:z,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0,r:z},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:M},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:L},"bc1-rgba-unorm":{gl:33777,x:M},"bc1-rgba-unorm-srgb":{gl:35916,x:L},"bc2-rgba-unorm":{gl:33778,x:M},"bc2-rgba-unorm-srgb":{gl:35918,x:L},"bc3-rgba-unorm":{gl:33779,x:M},"bc3-rgba-unorm-srgb":{gl:35919,x:L},"bc4-r-unorm":{gl:36283,x:k},"bc4-r-snorm":{gl:36284,x:k},"bc5-rg-unorm":{gl:36285,x:k},"bc5-rg-snorm":{gl:36286,x:k},"bc6h-rgb-ufloat":{gl:36495,x:I},"bc6h-rgb-float":{gl:36494,x:I},"bc7-rgba-unorm":{gl:36492,x:I},"bc7-rgba-unorm-srgb":{gl:36493,x:I},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37816},"astc-10x5-unorm-srgb":{gl:37848},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rgb2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}};function V(e){let t=U[e],i=function(e){let t=U[e],i=t?.gl;if(void 0===i)throw Error(`Unsupported texture format ${e}`);return i}(e),r=T.vz.getInfo(e);return r.compressed&&(t.dataFormat=i),{internalFormat:i,format:t?.dataFormat||function(e,t,i,r){if(6408===r||6407===r)return r;switch(e){case"r":return t&&!i?36244:6403;case"rg":return t&&!i?33320:33319;case"rgb":return t&&!i?36248:6407;case"rgba":return t&&!i?36249:6408;case"bgra":throw Error("bgra pixels not supported by WebGL");default:return 6408}}(r.channels,r.integer,r.normalized,i),type:r.dataType?A(r.dataType):t?.types?.[0]||5121,compressed:r.compressed||!1}}let W={"depth-clip-control":"EXT_depth_clamp","timestamp-query":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","html-in-canvas":e=>(0,r.zc)()&&"function"==typeof e.texElementImage2D,"polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"};class G extends r.I7{gl;extensions;testedFeatures=new Set;constructor(e,t,i){super([],i),this.gl=e,this.extensions=t,P(e,"EXT_color_buffer_float",t)}*[Symbol.iterator](){for(let e of this.getFeatures())this.has(e)&&(yield e);return[]}has(e){return!this.disabledFeatures?.[e]&&(!this.testedFeatures.has(e)&&(this.testedFeatures.add(e),e in N&&j(this.gl,e,this.extensions)&&this.features.add(e),this.getWebGLFeature(e)&&this.features.add(e)),this.features.has(e))}initializeFeatures(){for(let e of this.getFeatures().filter(e=>"polygon-mode-webgl"!==e))this.has(e)}getFeatures(){return[...Object.keys(W),...Object.keys(N)]}getWebGLFeature(e){let t=W[e];return"string"==typeof t?!!P(this.gl,t,this.extensions):"function"==typeof t?t(this.gl):!!t}}class H extends r.PI{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxBindGroupsPlusVertexBuffers(){return 0}get maxBindingsPerBindGroup(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageBuffersInVertexStage(){return 0}get maxStorageBuffersInFragmentStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxStorageTexturesInVertexStage(){return 0}get maxStorageTexturesInFragmentStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get maxBufferSize(){return Number.MAX_SAFE_INTEGER}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderVariables(){return this.getParameter(35659)}get maxColorAttachments(){return this.getParameter(36063)}get maxColorAttachmentBytesPerSample(){return 0}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(e){super(),this.gl=e}getParameter(e){return void 0===this.limits[e]&&(this.limits[e]=this.gl.getParameter(e)),this.limits[e]||0}}var q=i(76850);class Y{props;_resizeObserver;_intersectionObserver;_observeDevicePixelRatioTimeout=null;_observeDevicePixelRatioMediaQuery=null;_handleDevicePixelRatioChange=()=>this._refreshDevicePixelRatio();_trackPositionInterval=null;_started=!1;get started(){return this._started}constructor(e){this.props=e}
545start(){if(this._started||!this.props.canvas)return;this._started=!0,this._intersectionObserver||=new IntersectionObserver(e=>this.props.onIntersection(e)),this._resizeObserver||=new ResizeObserver(e=>this.props.onResize(e)),this._intersectionObserver.observe(this.props.canvas);let e=this.props.resizeObserverBox;try{this._resizeObserver.observe(this.props.canvas,{box:e})}catch{this._resizeObserver.observe(this.props.canvas,{box:"content-box"})}this._observeDevicePixelRatioTimeout=setTimeout(()=>this._refreshDevicePixelRatio(),0),this.props.trackPosition&&this._trackPosition()}stop(){this._started&&(this._started=!1,this._observeDevicePixelRatioTimeout&&(clearTimeout(this._observeDevicePixelRatioTimeout),this._observeDevicePixelRatioTimeout=null),this._observeDevicePixelRatioMediaQuery&&(this._observeDevicePixelRatioMediaQuery.removeEventListener("change",this._handleDevicePixelRatioChange),this._observeDevicePixelRatioMediaQuery=null),this._trackPositionInterval&&(clearInterval(this._trackPositionInterval),this._trackPositionInterval=null),this._resizeObserver?.disconnect(),this._intersectionObserver?.disconnect())}_refreshDevicePixelRatio(){this._started&&(this.props.onDevicePixelRatioChange(),this._observeDevicePixelRatioMediaQuery?.removeEventListener("change",this._handleDevicePixelRatioChange),this._observeDevicePixelRatioMediaQuery=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._observeDevicePixelRatioMediaQuery.addEventListener("change",this._handleDevicePixelRatioChange,{once:!0}))}_trackPosition(e=100){this._trackPositionInterval||(this._trackPositionInterval=setInterval(()=>{this._started?this.props.onPositionChange():this._trackPositionInterval&&(clearInterval(this._trackPositionInterval),this._trackPositionInterval=null)},e))}}var Z=i(59396),K=i(11940);class X{static isHTMLCanvas(e){return"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement}static isOffscreenCanvas(e){return"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas}static defaultProps={id:void 0,canvas:null,width:800,height:600,useDevicePixels:!0,pixelSizeSource:"exact",autoResize:!0,container:null,visible:!0,alphaMode:"opaque",colorSpace:"srgb",colorFormat:void 0,toneMapping:"standard",trackPosition:!1};id;props;canvas;htmlCanvas;offscreenCanvas;type;initialized;isInitialized=!1;isVisible=!0;cssWidth;cssHeight;devicePixelRatio;devicePixelWidth;devicePixelHeight;drawingBufferWidth;drawingBufferHeight;_initializedResolvers=(function(){let e,t;return{promise:new Promise((i,r)=>{e=i,t=r}),resolve:e,reject:t}})();_canvasObserver;_position=[0,0];destroyed=!1;_needsDrawingBufferResize=!0;_configuredDrawingBufferSize=[0,0];toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(e){this.props={...X.defaultProps,...e},e=this.props,this.initialized=this._initializedResolvers.promise,(0,q.B)()?e.canvas?"string"==typeof e.canvas?this.canvas=function(e){let t=document.getElementById(e);if(!X.isHTMLCanvas(t))throw Error("Object is not a canvas element");return t}(e.canvas):this.canvas=e.canvas:this.canvas=function(e){let{width:t,height:i}=e,r=document.createElement("canvas");r.id=(0,Z.L)("lumagl-auto-created-canvas"),r.width=t||1,r.height=i||1,r.style.width=Number.isFinite(t)?`${t}px`:"100%",r.style.height=Number.isFinite(i)?`${i}px`:"100%",e?.visible||(r.style.visibility="hidden");let n=function(e){if("string"==typeof e){let t=document.getElementById(e);if(!t)throw Error(`${e} is not an HTML element`);return t}return e||document.body}(e?.container||null);return n.insertBefore(r,n.firstChild),r}(e):this.canvas={width:e.width||1,height:e.height||1},X.isHTMLCanvas(this.canvas)?(this.id=e.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):X.isOffscreenCanvas(this.canvas)?(this.id=e.id||"offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas):(this.id=e.id||"node-canvas-context",this.type="node"),this.cssWidth=this.htmlCanvas?.clientWidth||this.canvas.width,this.cssHeight=this.htmlCanvas?.clientHeight||this.canvas.height,this.devicePixelWidth=this.canvas.width,this.devicePixelHeight=this.canvas.height,this.drawingBufferWidth=this.canvas.width,this.drawingBufferHeight=this.canvas.height,this._configuredDrawingBufferSize=[this.canvas.width,this.canvas.height],this.devicePixelRatio=globalThis.devicePixelRatio||1,this._position=[0,0],this._canvasObserver=new Y({canvas:this.htmlCanvas,trackPosition:this.props.trackPosition,resizeObserverBox:"css-dpr"===this.props.pixelSizeSource?"content-box":"device-pixel-content-box",onResize:e=>this._handleResize(e),onIntersection:e=>this._handleIntersection(e),onDevicePixelRatioChange:()=>this._observeDevicePixelRatio(),onPositionChange:()=>this.updatePosition()})}destroy(){this.destroyed||(this.destroyed=!0,this._stopObservers(),this.device=null)}setProps(e){return"useDevicePixels"in e&&(this.props.useDevicePixels=e.useDevicePixels||!1,this._updateDrawingBufferSize()),this}getCurrentFramebuffer(e){return this._resizeDrawingBufferIfNeeded(),this._getCurrentFramebuffer(e)}getCSSSize(){return[this.cssWidth,this.cssHeight]}getPosition(){return this._position}getDevicePixelSize(){return[this.devicePixelWidth,this.devicePixelHeight]}getDrawingBufferSize(){return[this.drawingBufferWidth,this.drawingBufferHeight]}getMaxDrawingBufferSize(){let e=this.device.limits.maxTextureDimension2D;return[e,e]}setDrawingBufferSize(e,t){e=Math.floor(e),t=Math.floor(t),(this.drawingBufferWidth!==e||this.drawingBufferHeight!==t)&&(this.drawingBufferWidth=e,this.drawingBufferHeight=t,this._needsDrawingBufferResize=!0)}getDevicePixelRatio(){return"undefined"!=typeof window&&window.devicePixelRatio||1}cssToDevicePixels(e,t=!0){let i=this.cssToDeviceRatio(),[r,n]=this.getDrawingBufferSize();return function(e,t,i,r,n){let s,a=Q(e[0],t,i),o=J(e[1],t,r,n),l=Q(e[0]+1,t,i
545),u=l===i-1?l:l-1;return l=J(e[1]+1,t,r,n),n?(l=0===l?l:l+1,s=o,o=l):s=l===r-1?l:l-1,{x:a,y:o,width:Math.max(u-a+1,1),height:Math.max(s-o+1,1)}}(e,i,r,n,t)}getPixelSize(){return this.getDevicePixelSize()}getAspect(){let[e,t]=this.getDrawingBufferSize();return e>0&&t>0?e/t:1}cssToDeviceRatio(){try{let[e]=this.getDrawingBufferSize(),[t]=this.getCSSSize();return t?e/t:1}catch{return 1}}resize(e){this.setDrawingBufferSize(e.width,e.height)}_setAutoCreatedCanvasId(e){this.htmlCanvas?.id==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=e)}_startObservers(){this.destroyed||this._canvasObserver.start()}_stopObservers(){this._canvasObserver.stop()}_handleIntersection(e){if(this.destroyed)return;let t=e.find(e=>e.target===this.canvas);if(!t)return;let i=t.isIntersecting;this.isVisible!==i&&(this.isVisible=i,this.device.props.onVisibilityChange(this))}_handleResize(e){if(this.destroyed)return;let t=e.find(e=>e.target===this.canvas);if(!t)return;let i=(0,K.i)(t.contentBoxSize?.[0]);this.cssWidth=i.inlineSize,this.cssHeight=i.blockSize;let r=this.getDevicePixelSize();this._setDevicePixelSize(this._getDevicePixelSizeFromResizeEntry(t)),this._updateDrawingBufferSize(),this.device.props.onResize(this,{oldPixelSize:r})}_updateDrawingBufferSize(){if(this.props.autoResize)if("number"==typeof this.props.useDevicePixels){let e=this.props.useDevicePixels;this.setDrawingBufferSize(this.cssWidth*e,this.cssHeight*e)}else this.props.useDevicePixels?this.setDrawingBufferSize(this.devicePixelWidth,this.devicePixelHeight):this.setDrawingBufferSize(this.cssWidth,this.cssHeight);this._initializedResolvers.resolve(),this.isInitialized=!0,this.updatePosition()}_getDevicePixelSizeFromResizeEntry(e){let t=(0,K.i)(e.contentBoxSize?.[0]);return"css-dpr"===this.props.pixelSizeSource?this._getDevicePixelSizeFromCSSSize(t.inlineSize,t.blockSize):{devicePixelWidth:e.devicePixelContentBoxSize?.[0]?.inlineSize||t.inlineSize*devicePixelRatio,devicePixelHeight:e.devicePixelContentBoxSize?.[0]?.blockSize||t.blockSize*devicePixelRatio}}_getDevicePixelSizeFromCSSSize(e,t){let i=this.getDevicePixelRatio();return{devicePixelWidth:Math.floor(e*i),devicePixelHeight:Math.floor(t*i)}}_setDevicePixelSize({devicePixelWidth:e,devicePixelHeight:t}){let[i,r]=this.getMaxDrawingBufferSize();this.devicePixelWidth=Math.max(1,Math.min(e,i)),this.devicePixelHeight=Math.max(1,Math.min(t,r))}_resizeDrawingBufferIfNeeded(){if(this._needsDrawingBufferResize){this._needsDrawingBufferResize=!1,(this.drawingBufferWidth!==this.canvas.width||this.drawingBufferHeight!==this.canvas.height)&&(this.canvas.width=this.drawingBufferWidth,this.canvas.height=this.drawingBufferHeight);let[e,t]=this._configuredDrawingBufferSize;(this.drawingBufferWidth!==e||this.drawingBufferHeight!==t)&&(this._configureDevice(),this._configuredDrawingBufferSize=[this.drawingBufferWidth,this.drawingBufferHeight])}}_observeDevicePixelRatio(){if(this.destroyed||!this._canvasObserver.started)return;let e=this.devicePixelRatio;if(this.devicePixelRatio=window.devicePixelRatio,"css-dpr"===this.props.pixelSizeSource){let e=this.getDevicePixelSize();this._setDevicePixelSize(this._getDevicePixelSizeFromCSSSize(this.cssWidth,this.cssHeight)),this._updateDrawingBufferSize(),this.device.props.onResize(this,{oldPixelSize:e})}this.updatePosition(),this.device.props.onDevicePixelRatioChange?.(this,{oldRatio:e})}updatePosition(){if(this.destroyed)return;let e=this.htmlCanvas?.getBoundingClientRect();if(e){let t=[e.left,e.top];if(this._position??=t,t[0]!==this._position[0]||t[1]!==this._position[1]){let e=this._position;this._position=t,this.device.props.onPositionChange?.(this,{oldPosition:e})}}}}function Q(e,t,i){return Math.min(Math.round(e*t),i-1)}function J(e,t,i,r){return r?Math.max(0,i-1-Math.round(e*t)):Math.min(Math.round(e*t),i-1)}class ee extends X{static defaultProps=X.defaultProps}var et=i(24486),ei=i(82493);class er extends et.F{get[Symbol.toStringTag](){return"Framebuffer"}width;height;constructor(e,t={}){super(e,t,er.defaultProps),this.width=this.props.width,this.height=this.props.height}clone(e){let t=this.colorAttachments.map(t=>t.texture.clone(e)),i=this.depthStencilAttachment&&this.depthStencilAttachment.texture.clone(e);return this.device.createFramebuffer({...this.props,...e,colorAttachments:t,depthStencilAttachment:i})}resize(e){let t=!e;if(e){let[i,r]=Array.isArray(e)?e:[e.width,e.height];t=t||r!==this.height||i!==this.width,this.width=i,this.height=r}t&&(n.R.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(0===this.props.colorAttachments.length&&!this.props.depthStencilAttachment)throw Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map((e,t)=>{if("string"==typeof e){let i=this.createColorTexture(e,t);return this.attachResource(i),i.view}return e instanceof ei.g?e.view:e});let e=this.props.depthStencilAttachment;if(e)if("string"==typeof e){let t=this.createDepthStencilTexture(e);this.attachResource(t),this.depthStencilAttachment=t.view}else e instanceof ei.g?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e,t){return this.device.createTexture({id:`${this.id}-color-attachment-${t}`,usage:ei.g.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height,sampler:{magFilter:"linear",minFilter:"linear"}})}createDepthStencilTexture(e){return this.device.createTexture({id:`${this.id}-depth-stencil-attachment`,usage:ei.g.RENDER_ATTACHMENT|ei.g.SAMPLE,format:e,width:this.width,height:this.height})}
545resizeAttachments(e,t){if(this.colorAttachments.forEach((i,r)=>{let n=i.texture.clone({width:e,height:t});this.destroyAttachedResource(i),this.colorAttachments[r]=n.view,this.attachResource(n.view)}),this.depthStencilAttachment){let i=this.depthStencilAttachment.texture.clone({width:e,height:t});this.destroyAttachedResource(this.depthStencilAttachment),this.depthStencilAttachment=i.view,this.attachResource(i)}this.updateAttachments()}static defaultProps={...et.F.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null}}class en extends er{device;gl;handle;colorAttachments=[];depthStencilAttachment=null;constructor(e,t){super(e,t);let i=t.handle,r=null===i;this.device=e,this.gl=e.gl,this.handle=i||r?i:this.gl.createFramebuffer(),!r&&(e._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),t.handle||(this.autoCreateAttachmentTextures(),this.updateAttachments()))}destroy(){super.destroy(),this.destroyed||null===this.handle||this.props.handle||this.gl.deleteFramebuffer(this.handle)}updateAttachments(){let e=this.gl.bindFramebuffer(36160,this.handle);for(let e=0;e<this.colorAttachments.length;++e){let t=this.colorAttachments[e];if(t){let i=36064+e;this._attachTextureView(i,t)}}if(this.depthStencilAttachment){let e=function(e){switch(T.vz.getInfo(e).attachment){case"depth":return 36096;case"stencil":return 36128;case"depth-stencil":return 33306;default:throw Error(`Not a depth stencil format: ${e}`)}}(this.depthStencilAttachment.props.format);this._attachTextureView(e,this.depthStencilAttachment)}if(this.device.props.debug){let e=this.gl.checkFramebufferStatus(36160);if(36053!==e)throw Error(`Framebuffer ${function(e){switch(e){case 36053:return"success";case 36054:return"Mismatched attachments";case 36055:return"No attachments";case 36057:return"Height/width mismatch";case 36061:return"Unsupported or split attachments";case 36182:return"Samples mismatch";default:return`${e}`}}(e)}`)}this.gl.bindFramebuffer(36160,e)}_attachTextureView(e,t){let{gl:i}=this.device,{texture:r}=t,n=t.props.baseMipLevel,s=t.props.baseArrayLayer;switch(i.bindTexture(r.glTarget,r.handle),r.glTarget){case 35866:case 32879:i.framebufferTextureLayer(36160,e,r.handle,n,s);break;case 34067:var a;let o=(a=s)<34069?a+34069:a;i.framebufferTexture2D(36160,e,o,r.handle,n);break;case 3553:i.framebufferTexture2D(36160,e,3553,r.handle,n);break;default:throw Error("Illegal texture type")}i.bindTexture(r.glTarget,null)}resizeAttachments(e,t){if(null===this.handle){this.width=e,this.height=t;return}super.resizeAttachments(e,t)}}class es extends ee{device;handle=null;_framebuffer=null;get[Symbol.toStringTag](){return"WebGLCanvasContext"}constructor(e,t){super(t),this.device=e,this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this._configureDevice()}_configureDevice(){(this.drawingBufferWidth!==this._framebuffer?.width||this.drawingBufferHeight!==this._framebuffer?.height)&&this._framebuffer?.resize([this.drawingBufferWidth,this.drawingBufferHeight])}_getCurrentFramebuffer(){return this._framebuffer||=new en(this.device,{id:"canvas-context-framebuffer",handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}}class ea extends X{}class eo extends ea{device;handle=null;context2d;get[Symbol.toStringTag](){return"WebGLPresentationContext"}constructor(e,t={}){super(t),this.device=e;let i=`${this[Symbol.toStringTag]}(${this.id})`;if(!this.device.getDefaultCanvasContext().offscreenCanvas)throw Error(`${i}: WebGL PresentationContext requires the default CanvasContext canvas to be an OffscreenCanvas`);let r=this.canvas.getContext("2d");if(!r)throw Error(`${i}: Failed to create 2d presentation context`);this.context2d=r,this._setAutoCreatedCanvasId(`${this.device.id}-presentation-canvas`),this._configureDevice(),this._startObservers()}present(){this._resizeDrawingBufferIfNeeded(),this.device.submit();let e=this.device.getDefaultCanvasContext(),[t,i]=e.getDrawingBufferSize();if(0!==this.drawingBufferWidth&&0!==this.drawingBufferHeight&&0!==t&&0!==i&&0!==e.canvas.width&&0!==e.canvas.height){if(t!==this.drawingBufferWidth||i!==this.drawingBufferHeight||e.canvas.width!==this.drawingBufferWidth||e.canvas.height!==this.drawingBufferHeight)throw Error(`${this[Symbol.toStringTag]}(${this.id}): Default canvas context size ${t}x${i} does not match presentation size ${this.drawingBufferWidth}x${this.drawingBufferHeight}`);this.context2d.clearRect(0,0,this.drawingBufferWidth,this.drawingBufferHeight),this.context2d.drawImage(e.canvas,0,0)}}_configureDevice(){}_getCurrentFramebuffer(e){let t=this.device.getDefaultCanvasContext();return t.setDrawingBufferSize(this.drawingBufferWidth,this.drawingBufferHeight),t.getCurrentFramebuffer(e)}}var el=i(81258);let eu={};var ec=i(20296);class eh extends ec.h{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength=0;bytesUsed=0;constructor(e,t={}){super(e,t),this.device=e,this.gl=this.device.gl;let i="object"==typeof t?t.handle:void 0;this.handle=i||this.gl.createBuffer(),e._setWebGLDebugMetadata(this.handle,this,{spector:{...this.props,data:typeof this.props.data}}),this.glTarget=function(e){return e&ec.h.INDEX?34963:e&ec.h.VERTEX?34962:e&ec.h.UNIFORM?35345:34962}(this.props.usage),this.glUsage=function(e){return e&ec.h.INDEX||e&ec.h.VERTEX?35044:e&ec.h.UNIFORM?35048:35044}(this.props.usage),this.glIndexType="uint32"===this.props.indexType?5125:5123,t.data?this._initWithData(t.data,t.byteOffset,t.byteLength):this._initWithByteLength(t.byteLength||0)}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory("Buffer"):(this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle)),this.destroyed=!0,this.handle=null)}_initWithData(e,t=0,i=e.byteLength+t){let r=this.glTarget;this.gl.bindBuffer(r,this.handle),this.gl.bufferData(r,i,this.glUsage),this.gl.bufferSubData(r,t,e),this.gl.bindBuffer(r,null),this.bytesUsed=i,this.byteLength=i,this._setDebugData(e,t,i),this.props.handle?this.trackReferencedMemory(i,"Buffer"):this.trackAllocatedMemory(i)}_initWithByteLength(e){let t=e;0===e&&(t=new Float32Array(0));let i=this.glTarget;return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,t,this.glUsage),this.gl.bindBuffer(i,null),this.bytesUsed=e,this.byteLength=e,this._setDebugData(null,0,e),this.props.handle?this.trackReferencedMemory(e,"Buffer"):this.trackAllocatedMemory(e),this}write(e,t=0){let i=ArrayBuffer.isView(e)?e:new Uint8Array(e),r=void 0;this.gl.bindBuffer(36663,this.handle),void 0!==r?this.gl.bufferSubData(36663,t,i,0,r):this.gl.bufferSubData(36663,t,i),this.gl.bindBuffer(36663,null),this._setDebugData(e,t,e.byteLength)}async mapAndWriteAsync(e,t=0,i=this.byteLength-t){let r=new ArrayBuffer(i);await e(r,"copied"),this.write(r,t)}
545async readAsync(e=0,t){return this.readSyncWebGL(e,t)}async mapAndReadAsync(e,t=0,i){let r=await this.readAsync(t,i);return await e(r.buffer,"copied")}readSyncWebGL(e=0,t){let i=new Uint8Array(t=t??this.byteLength-e);return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,e,i,0,t),this.gl.bindBuffer(36662,null),this._setDebugData(i,e,t),i}}var ed=i(22192);function ef(e){let t=e.toLowerCase();return["warning","error","info"].includes(t)?t:"info"}class ep extends ed.M{device;handle;_compilationInfoLog="";constructor(e,t){super(e,t),this.device=e;let i=this.props.handle;switch(this.props.stage){case"vertex":this.handle=i||this.device.gl.createShader(35633);break;case"fragment":this.handle=i||this.device.gl.createShader(35632);break;default:throw Error(this.props.stage)}e._setWebGLDebugMetadata(this.handle,this,{spector:this.props});let r=this._compile(this.source);r&&"function"==typeof r.catch&&r.catch(()=>{this.compilationStatus="error"})}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0,this.handle.de
545stroyed=!0)}get asyncCompilationStatus(){return this._waitForCompilationComplete().then(()=>(this._getCompilationStatus(),this.compilationStatus))}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let e=this._getCompilationInfoLog();return e?function(e){let t=e.split(/\r?\n/),i=[];for(let e of t){if(e.length<=1)continue;let t=e.trim(),r=e.split(":"),n=r[0]?.trim();if(2===r.length){let[e,s]=r;if(!e||!s){i.push({message:t,type:ef(n||"info"),lineNum:0,linePos:0});continue}i.push({message:s.trim(),type:ef(e),lineNum:0,linePos:0});continue}let[s,a,o,...l]=r;if(!s||!a||!o){i.push({message:r.slice(1).join(":").trim()||t,type:ef(n||"info"),lineNum:0,linePos:0});continue}let u=parseInt(o,10);Number.isNaN(u)&&(u=0);let c=parseInt(a,10);Number.isNaN(c)&&(c=0),i.push({message:l.join(":").trim(),type:ef(s),lineNum:u,linePos:c})}return i}(e):[]}getTranslatedSource(){let e=this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders;return e?.getTranslatedShaderSource(this.handle)||null}_compile(e){e=e.startsWith("#version ")?e:`#version 300 es
546${e}`;let{gl:t}=this.device;if(t.shaderSource(this.handle,e),t.compileShader(this.handle),!this.device.props.debug){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),"error"===this.compilationStatus)throw Error(this._getCompilationErrorMessage(e));return}return n.R.once(1,"Shader compilation is asynchronous")(),this._waitForCompilationComplete().then(()=>{n.R.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()})}async _waitForCompilationComplete(){let e=async e=>await new Promise(t=>setTimeout(t,e));if(!this.device.features.has("compilation-status-async-webgl"))return void await e(10);let{gl:t}=this.device;for(;;){if(t.getShaderParameter(this.handle,37297))return;await e(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error","error"===this.compilationStatus&&this._getCompilationInfoLog()}_getCompilationErrorMessage(e){var t;let i=`${this.props.stage} shader ${this.props.id}`,r=(t=this._getCompilationInfoLog(),t.split(/\r?\n/).find(e=>e.trim())?.trim()),n=this.getCompilationInfoSync(),s=n.find(e=>"error"===e.type&&e.message.trim())||n.find(e=>e.message.trim())||n.find(e=>"error"===e.type)||n[0];if(!s)return r?`GLSL compilation errors in ${i}: ${r}`:`GLSL compilation errors in ${i}: WebGL did not provide a shader compiler log`;let a=s.lineNum?e.split(/\r?\n/)[s.lineNum-1]?.trim():void 0,o=s.lineNum?` line ${s.lineNum}`:"",l=a?`
547Source: ${a}`:"",u=s.message.trim()||r||"WebGL did not provide a shader compiler log";return`GLSL compilation errors in ${i}:${o}: ${u}${l}`}_getCompilationInfoLog(){let e=this.device.gl.getShaderInfoLog(this.handle)?.trim();return e&&(this._compilationInfoLog=e),this._compilationInfoLog}}var eg=i(94122);function em(e,t){return e_(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function eb(e,t){return e_(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function ev(e,t){return e_(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function ey(e,t,i="color"){return e_(e,t,{one:1,zero:0,src:768,"one-minus-src":769,dst:774,"one-minus-dst":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,constant:"color"===i?32769:32771,"one-minus-constant":"color"===i?32770:32772,src1:768,"one-minus-src1":769,"src1-alpha":770,"one-minus-src1-alpha":771})}function e_(e,t,i){if(!(t in i))throw Error(`Illegal parameter ${t} for ${e}`);return i[t]}function ew(e){let t={};return e.addressModeU&&(t[10242]=ex(e.addressModeU)),e.addressModeV&&(t[10243]=ex(e.addressModeV)),e.addressModeW&&(t[32882]=ex(e.addressModeW)),e.magFilter&&(t[10240]=eE(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=function(e,t="none"){if(!t)return eE(e);switch(t){case"none":return eE(e);case"nearest":switch(e){case"nearest":return 9984;case"linear":return 9985}break;case"linear":switch(e){case"nearest":return 9986;case"linear":return 9987}}}(e.minFilter||"linear",e.mipmapFilter)),void 0!==e.lodMinClamp&&(t[33082]=e.lodMinClamp),void 0!==e.lodMaxClamp&&(t[33083]=e.lodMaxClamp),"comparison-sampler"===e.type&&(t[34892]=34894),e.compare&&(t[34893]=em("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function ex(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function eE(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}class eS extends eg.L{device;handle;parameters;constructor(e,t){super(e,t),this.device=e,this.parameters=ew(t),this.handle=t.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(e){for(let[t,i]of Object.entries(e)){let e=Number(t);switch(e){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,e,i);break;default:this.device.gl.samplerParameteri(this.handle,e,i)}}}}var eP=i(81075);function eC(e,t,i){let r;if(function(e){for(let t in e)return!1;return!0}(t))return i(e);let{nocatch:n=!0}=t,s=x.get(e);if(s.push(),y(e,t),n)r=i(e),s.pop();else try{r=i(e)}finally{s.pop()}return r}var eT=i(31269);class eA extends eT.X{device;gl;handle;texture;constructor(e,t){super(e,{...ei.g.defaultProps,...t}),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=t.texture}}let eM={5124:"sint32",5125:"uint32",5122:"sint16",5123:"uint16",5120:"sint8",5121:"uint8",5126:"float32",5131:"float16",33635:"uint16",32819:"uint16",32820:"uint16",33640:"uint32",35899:"uint32",35902:"uint32",34042:"uint32",36269:"uint32"};class eL extends ei.g{device;gl;handle;sampler=void 0;view;glTarget;glFormat;glType;glInternalFormat;compressed;_textureUnit=0;_framebuffer=null;_framebufferAttachmentKey=null;constructor(e,t){super(e,t,{byteAlignment:1}),this.device=e,this.gl=this.device.gl;let i=V(this.props.format);if(this.glTarget=function(e){switch(e){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866}throw Error(e)}(this.props.dimension),this.glInternalFormat=i.internalFormat,this.glFormat=i.format,this.glType=i.type,this.compressed=i.compressed,this.isHandleBorrowed&&void 0===this.props.handle)throw Error("Borrowed WebGL textures require a texture handle");if(this.handle=this.props.handle||this.gl.createTexture(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),!this.isHandleBorrowed){this.gl.bindTexture(this.glTarget,this.handle);let{dimension:e,width:i,height:r,depth:n,mipLevels:s,glTarget:a,glInternalFormat:o}=this;if(!this.compressed)switch(e){case"2d":case"cube":this.gl.texStorage2D(a,s,o,i,r);break;
547case"2d-array":case"3d":this.gl.texStorage3D(a,s,o,i,r,n);break;default:throw Error(e)}this.gl.bindTexture(this.glTarget,null),this._initializeData(t.data)}this.ownsHandle?this.trackAllocatedMemory(this.getAllocatedByteLength(),"Texture"):this.trackReferencedMemory(this.getAllocatedByteLength(),"Texture"),this.isHandleBorrowed||this.setSampler(this.props.sampler),this.view=new eA(this.device,{...this.props,texture:this}),Object.seal(this)}destroy(){this.handle&&(this._framebuffer?.destroy(),this._framebuffer=null,this._framebufferAttachmentKey=null,this.removeStats(),this.ownsHandle?(this.gl.deleteTexture(this.handle),this.trackDeallocatedMemory("Texture")):this.trackDeallocatedReferencedMemory("Texture"),this.destroyed=!0)}createView(e){return new eA(this.device,{...e,texture:this})}clone(e){if(this.isHandleBorrowed&&e&&(e.width!==this.width||e.height!==this.height))throw Error(`Cannot resize borrowed read-only ${this}`);return super.clone(e)}setSampler(e={}){this._assertWritable("set sampler parameters on"),super.setSampler(e);let t=ew(this.sampler.props);this._setSamplerParameters(t)}copyExternalImage(e){this._assertWritable("copy external image data into");let t=this._normalizeCopyExternalImageOptions(e);if(t.sourceX||t.sourceY)throw Error("WebGL does not support sourceX/sourceY)");let{glFormat:i,glType:r}=this,{image:n,depth:s,mipLevel:a,x:o,y:l,z:u,width:c,height:h}=t,d=ek(this.glTarget,this.dimension,u),f=t.flipY?{37440:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),eC(this.gl,f,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(d,a,o,l,c,h,i,r,n);break;case"2d-array":case"3d":this.gl.texSubImage3D(d,a,o,l,u,c,h,s,i,r,n)}}),this.gl.bindTexture(this.glTarget,null),{width:t.width,height:t.height}}copyElementImage(e){this._assertWritable("copy element image data into");let t=this._normalizeCopyElementImageOptions(e),{glFormat:i}=this,{element:r,depth:n,mipLevel:s,sourceX:a,sourceY:o,sourceWidth:l,sourceHeight:u,x:c,y:h,z:d,width:f,height:p}=t,g=ek(this.glTarget,this.dimension,d),m=t.flipY?{37440:!0}:{},b=this.gl;if(1!==n||"2d"!==this.dimension&&"cube"!==this.dimension)throw Error(`${this} copyElementImage only supports 2d and cube textures on WebGL`);if(0!==s||0!==c||0!==h)throw Error(`${this} copyElementImage only supports full base-level uploads on WebGL`);if("function"!=typeof b.texElementImage2D)throw Error(`${this} copyElementImage is not supported by this WebGL implementation`);return this.gl.bindTexture(this.glTarget,this.handle),eC(this.gl,m,()=>{b.texElementImage2D?.(g,i,r,{sx:a,sy:o,swidth:l??f,sheight:u??p,width:f,height:p})}),this.gl.bindTexture(this.glTarget,null),{width:t.width,height:t.height}}copyImageData(e){super.copyImageData(e)}readBuffer(e={},t){if(!t)throw Error(`${this} readBuffer requires a destination buffer`);let i=this._getSupportedColorReadOptions(e),r=e.byteOffset??0,n=this.computeMemoryLayout(i);if(t.byteLength<r+n.byteLength)throw Error(`${this} readBuffer target is too small (${t.byteLength} < ${r+n.byteLength})`);this.gl.bindBuffer(35051,t.handle);try{this._readColorTextureLayers(i,n,e=>{this.gl.readPixels(i.x,i.y,i.width,i.height,this.glFormat,this.glType,r+e)})}finally{this.gl.bindBuffer(35051,null)}return t}async readDataAsync(e={}){throw Error(`${this} readDataAsync is deprecated; use readBuffer() with an explicit destination buffer or DynamicTexture.readAsync()`)}writeBuffer(e,t={}){this._assertWritable("write buffer data into");let i=this._normalizeTextureWriteOptions(t),{width:r,height:n,depthOrArrayLayers:s,mipLevel:a,byteOffset:o,x:l,y:u,z:c}=i,{glFormat:h,glType:d,compressed:f}=this,p=ek(this.glTarget,this.dimension,c);if(f)throw Error("writeBuffer for compressed textures is not implemented in WebGL");let{bytesPerPixel:g}=this.device.getTextureFormatInfo(this.format),m=g?i.bytesPerRow/g:void 0,b={3317:this.byteAlignment,...void 0!==m?{3314:m}:{},32878:i.rowsPerImage};this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,e.handle),eC(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(p,a,l,u,r,n,h,d,o);break;case"2d-array":case"3d":this.gl.texSubImage3D(p,a,l,u,c,r,n,s,h,d,o)}}),this.gl.bindBuffer(35052,null),this.gl.bindTexture(this.glTarget,null)}writeData(e,t={}){let i;this._assertWritable("write data into");let r=this._normalizeTextureWriteOptions(t),n=ArrayBuffer.isView(e)?e:new Uint8Array(e),{width:s,height:a,depthOrArrayLayers:o,mipLevel:l,x:u,y:c,z:h,byteOffset:d}=r,{glFormat:f,glType:p,compressed:g}=this,m=ek(this.glTarget,this.dimension,h);if(!g){let{bytesPerPixel:e}=this.device.getTextureFormatInfo(this.format);e&&(i=r.bytesPerRow/e)}let b=this.compressed?{}:{3317:this.byteAlignment,...void 0!==i?{3314:i}:{},32878:r.rowsPerImage},v=function(e,t){if(t%e.BYTES_PER_ELEMENT!=0)throw Error(`Texture byteOffset ${t} must align to typed array element size ${e.BYTES_PER_ELEMENT}`);return t/e.BYTES_PER_ELEMENT}(n,d),y=g?function(e,t=0){return t?new e.constructor(e.buffer,e.byteOffset+t,(e.byteLength-t)/e.BYTES_PER_ELEMENT):e}(n,d):n,_=this._getMipLevelSize(l),w=0===u&&0===c&&0===h&&s===_.width&&a===_.height&&o===_.depthOrArrayLayers;this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,null),eC(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":g?w?this.gl.compressedTexImage2D(m,l,f,s,a,0,y):this.gl.compressedTexSubImage2D(m,l,u,c,s,a,f,y):this.gl.texSubImage2D(m,l,u,c,s,a,f,p,n,v);break;case"2d-array":case"3d":g?w?this.gl.compressedTexImage3D(m,l,f,s,a,o,0,y):this.gl.compressedTexSubImage3D(m,l,u,c,h,s,a,o,f,y):this.gl.texSubImage3D(m,l,u,c,h,s,a,o,f,p,n,v)}}),this.gl.bindTexture(this.glTarget,null)}_getRowByteAlignment(e,t){return 1}_getFramebuffer(){return this._framebuffer||=this.device.createFramebuffer({
547id:`framebuffer-for-${this.id}`,width:this.width,height:this.height,colorAttachments:[this]}),this._framebuffer}readDataSyncWebGL(e={}){let t=this._getSupportedColorReadOptions(e),i=this.computeMemoryLayout(t),r=eM[this.glType],n=(0,eP.Ak)(r),s=new n(i.byteLength/n.BYTES_PER_ELEMENT);return this._readColorTextureLayers(t,i,e=>{let r=new n(s.buffer,s.byteOffset+e,i.bytesPerImage/n.BYTES_PER_ELEMENT);this.gl.readPixels(t.x,t.y,t.width,t.height,this.glFormat,this.glType,r)}),s.buffer}_readColorTextureLayers(e,t,i){let r=this._getFramebuffer(),n=t.bytesPerRow/t.bytesPerPixel,s={3333:this.byteAlignment,...n!==e.width?{3330:n}:{}},a=this.gl.getParameter(3074),o=this.gl.bindFramebuffer(36160,r.handle);try{this.gl.readBuffer(36064),eC(this.gl,s,()=>{for(let n=0;n<e.depthOrArrayLayers;n++)this._attachReadSubresource(r,e.mipLevel,e.z+n),i(n*t.bytesPerImage)})}finally{this.gl.bindFramebuffer(36160,o||null),this.gl.readBuffer(a)}}_attachReadSubresource(e,t,i){let r=`${t}:${i}`;if(this._framebufferAttachmentKey!==r){switch(this.dimension){case"2d":this.gl.framebufferTexture2D(36160,36064,3553,this.handle,t);break;case"cube":this.gl.framebufferTexture2D(36160,36064,ek(this.glTarget,this.dimension,i),this.handle,t);break;case"2d-array":case"3d":this.gl.framebufferTextureLayer(36160,36064,this.handle,t,i);break;default:throw Error(`${this} color readback does not support ${this.dimension} textures`)}if(this.device.props.debug){let t=Number(this.gl.checkFramebufferStatus(36160));if(t!==Number(36053))throw Error(`${e} incomplete for ${this} readback (${t})`)}this._framebufferAttachmentKey=r}}generateMipmapsWebGL(e){if(this._assertWritable("generate mipmaps for"),this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format)||(n.R.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),e?.force))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(e){n.R.warn(`Error generating mipmap for ${this}: ${e.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(e){for(let[t,i]of(n.R.level>=2&&n.R.log(2,`${this.id} sampler parameters`,this.device.getGLKeys(e))(),this.gl.bindTexture(this.glTarget,this.handle),Object.entries(e))){let e=Number(t);switch(e){case 33082:case 33083:this.gl.texParameterf(this.glTarget,e,i);break;case 10240:case 10241:case 10242:case 10243:case 32882:case 34892:case 34893:this.gl.texParameteri(this.glTarget,e,i);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,e,i)}}this.gl.bindTexture(this.glTarget,null)}_getActiveUnit(){return this.gl.getParameter(34016)-33984}_bind(e){let{gl:t}=this;return void 0!==e&&(this._textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.glTarget,this.handle),e}_unbind(e){let{gl:t}=this;return void 0!==e&&(this._textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.glTarget,null),e}_assertWritable(e){if(this.isHandleBorrowed)throw Error(`Cannot ${e} borrowed read-only ${this}`)}}function ek(e,t,i){return"cube"===t?34069+i:e}var eI=i(85303),eO=i(3802),eR=i(37148),eB=i(23323);let eD={5126:"f32",35664:"vec2<f32>",35665:"vec3<f32>",35666:"vec4<f32>",5124:"i32",35667:"vec2<i32>",35668:"vec3<i32>",35669:"vec4<i32>",5125:"u32",36294:"vec2<u32>",36295:"vec3<u32>",36296:"vec4<u32>",35670:"f32",35671:"vec2<f32>",35672:"vec3<f32>",35673:"vec4<f32>",35674:"mat2x2<f32>",35685:"mat2x3<f32>",35686:"mat2x4<f32>",35687:"mat3x2<f32>",35675:"mat3x3<f32>",35688:"mat3x4<f32>",35689:"mat4x2<f32>",35690:"mat4x3<f32>",35676:"mat4x4<f32>"},eF={35678:{viewDimension:"2d",sampleType:"float"},35680:{viewDimension:"cube",sampleType:"float"},35679:{viewDimension:"3d",sampleType:"float"},35682:{viewDimension:"3d",sampleType:"depth"},36289:{viewDimension:"2d-array",sampleType:"float"},36292:{viewDimension:"2d-array",sampleType:"depth"},36293:{viewDimension:"cube",sampleType:"float"},36298:{viewDimension:"2d",sampleType:"sint"},36299:{viewDimension:"3d",sampleType:"sint"},36300:{viewDimension:"cube",sampleType:"sint"},36303:{viewDimension:"2d-array",sampleType:"uint"},36306:{viewDimension:"2d",sampleType:"uint"},36307:{viewDimension:"3d",sampleType:"uint"},36308:{viewDimension:"cube",sampleType:"uint"},36311:{viewDimension:"2d-array",sampleType:"uint"}},e$={uint8:5121,sint8:5120,unorm8:5121,snorm8:5120,uint16:5123,sint16:5122,unorm16:5123,snorm16:5122,uint32:5125,sint32:5124,float16:5131,float32:5126};function ez(e,t,i,r){let s=r||e.getActiveUniformBlockName(t,i);if(!s)throw Error(`Failed to reflect WebGL uniform block at index ${i}: missing block name`);let a=(r,n)=>{let a=e.getActiveUniformBlockParameter(t,i,r);if(null==a)throw Error(`Failed to reflect WebGL uniform block "${s}": ${n} returned null`);return a},o=eU(a(35391,"UNIFORM_BLOCK_BINDING"),s,"UNIFORM_BLOCK_BINDING",0),l=eU(a(35392,"UNIFORM_BLOCK_DATA_SIZE"),s,"UNIFORM_BLOCK_DATA_SIZE",0),u=eU(a(35394,"UNIFORM_BLOCK_ACTIVE_UNIFORMS"),s,"UNIFORM_BLOCK_ACTIVE_UNIFORMS",0),c=ej(a(35395,"UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES"),s,"UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",u),h=eN(e,t,c,35383,"UNIFORM_TYPE",s,u),d=eN(e,t,c,35384,"UNIFORM_SIZE",s,u),f=eN(e,t,c,35386,"UNIFORM_BLOCK_INDEX",s,u),p=eN(e,t,c,35387,"UNIFORM_OFFSET",s,u),g=eN(e,t,c,35388,"UNIFORM_ARRAY_STRIDE",s,u),m=[];for(let r=0;r<u;r++){if(f[r]!==i)throw Error(`Failed to reflect WebGL uniform block "${s}": active uniform index ${c[r]} belongs to block ${f[r]}, expected ${i}`);let n=c[r],a=e.getActiveUniform(t,n);if(!a)throw Error(`Failed to reflect WebGL uniform block "${s}": getActiveUniform(${n}) returned null`);let o=eU(h[r],s,`UNIFORM_TYPE[${r}]`,1),l=eU(d[r],s,`UNIFORM_SIZE[${r}]`,1),u=eU(p[r],s,`UNIFORM_OFFSET[${r}]`,0),b=eU(g[r],s,`UNIFORM_ARRAY_STRIDE[${r}]`,0);if(a.type!==o||a.size!==l)throw Error(`Failed to reflect WebGL uniform block "${s}": getActiveUniform(${n}) disagrees with getActiveUniforms`);m.push({name:a.name,format:eD[o],arrayLength:l,byteOffset:u,byteStride:b})}let b={name:s,location:o,byteLength:l,vertex:!!a(35396,"UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER"),fragment:!!a(35398,"UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"),uniformCount:u,uniforms:m},v=new Set(b.uniforms.map(e=>e.name.split(".")[0]).filter(e=>!!e)),y=b.name.replace(/Uniforms$/,"");if(1===v.size&&!v.has(b.name)&&!v.has(y)){let[e]=v;n.R.warn(`Uniform block "${b.name}" uses GLSL instance "${e}". luma.gl binds uniform buffers by block name ("${b.name}") and alias ("${y}"). Prefer matching the instance name to one of those to avoid confusing silent mismatches.`)()}return b}function eN(e,t,i,r,n,s,a){let o=e.getActiveUniforms(t,i,r);if(null===o)throw Error(`Failed to reflect WebGL uniform block "${s}": ${n} returned null`);return ej(o,s,n,a)}function ej(e,t,i,r){if(!Array.isArray(e)&&!ArrayBuffer.isView(e))throw Error(`Failed to reflect WebGL uniform block "${t}": ${i} returned a non-array value`);let n=Array.from(e);if(n.length!==r||n.some(e=>!Number.isInteger(e)))throw Error(`Failed to reflect WebGL uniform block "${t}": ${i} returned ${n.length} invalid values, expected ${r}`);return n}function eU(e,t,i,r){if(!Number.isInteger(e)||e<r)throw Error(`Failed to reflect WebGL uniform block "${t}": ${i} returned ${String(e)}`);return e}class eV extends eI.r{device;handle;vs;fs;introspectedLayout;bindings={};uniforms={};varyings=null;_uniformCount=0;_uniformSetters={};get[Symbol.toStringTag](){return"WEBGLRenderPipeline"}constructor(e,t){super(e,t),this.device=e;let i=this.sharedRenderPipeline||this.device._createSharedRenderPipelineWebGL(t);this.sharedRenderPipeline=i,this.handle=i.handle,this.vs=i.vs,this.fs=i.fs,this.linkStatus=i.linkStatus,this.introspectedLayout=function(e,t,i={}){let r={attributes:[],bindings:[]};for(let s of(r.attributes=function(e,t){let i=[],r=e.getProgramParameter(t,35721);for(let n=0;n<r;n++){let r=e.getActiveAttrib(t,n);if(!r)throw Error("activeInfo");let{name:s,type:a}=r,o=e.getAttribLocation(t,s);if(o>=0){let e=eD[a],t=/instance/i.test(s)?"instance":"vertex";i.push({name:s,location:o,stepMode:t,type:e})}}return i.sort((e,t)=>
547e.location-t.location),i}(e,t),function(e,t,i){let r=[],s=function(e,t,i){let r=new Map;for(let e of i.uniformBlockLayouts||[])r.set(e.name,function(e){let t=(0,eB.Pr)(e.uniformTypes,{layout:"std140"}),i=function(e,t){let i=[],r=(e,s)=>{if("string"==typeof s){let r=t[e];if(!r)throw Error(`Missing std140 layout field ${e}`);i.push({name:e,format:r.shaderType,arrayLength:1,byteOffset:4*r.offset,byteStride:0});return}if(Array.isArray(s))return void n(e,s[0],s[1]);for(let[t,i]of Object.entries(s))r(`${e}.${t}`,i)},n=(e,r,n)=>{if("string"==typeof r){let r=t[`${e}[0]`],s=n>1?t[`${e}[1]`]:void 0;if(!r)throw Error(`Missing std140 array layout field ${e}[0]`);i.push({name:`${e}[0]`,format:r.shaderType,arrayLength:n,byteOffset:4*r.offset,byteStride:s?(s.offset-r.offset)*4:0});return}if(Array.isArray(r))throw Error(`Nested uniform arrays are not supported for ${e}`);for(let[s,a]of Object.entries(r)){if("string"!=typeof a)throw Error(`Composite uniform array members are not supported for ${e}`);let r=`${e}[0].${s}`,o=`${e}[1].${s}`,l=t[r],u=n>1?t[o]:void 0;if(!l)throw Error(`Missing std140 array layout field ${r}`);i.push({name:r,format:l.shaderType,arrayLength:n,byteOffset:4*l.offset,byteStride:u?(u.offset-l.offset)*4:0})}};for(let[t,i]of Object.entries(e))r(t,i);return i}(e.uniformTypes,t.fields);return{type:"uniform",name:e.name,group:0,location:0,minBindingSize:t.byteLength,uniforms:i}}(e));for(let e of i.shaderLayout?.bindings||[]){var n;"uniform"===(n=e).type&&Number.isInteger(n.minBindingSize)&&n.minBindingSize>=0&&Array.isArray(n.uniforms)&&n.uniforms.every(e=>"string"==typeof e.name&&"string"==typeof e.format&&Number.isInteger(e.arrayLength)&&e.arrayLength>0&&Number.isInteger(e.byteOffset)&&e.byteOffset>=0&&Number.isInteger(e.byteStride)&&e.byteStride>=0)&&r.set(e.name,e)}let s=new Map;for(let i of r.values()){let r=function(e,t,i){for(let r of i.endsWith("Uniforms")?[i,i.slice(0,-8)]:[i,`${i}Uniforms`]){let i=e.getUniformBlockIndex(t,r);if(0xffffffff!==i){if(!Number.isInteger(i)||i<0)throw Error(`Failed to resolve WebGL uniform block "${r}": getUniformBlockIndex returned ${String(i)}`);return{blockIndex:i,blockName:r}}}return null}(e,t,i.name);if(!r)continue;let{blockIndex:n,blockName:a}=r;if(s.has(n))throw Error(`Multiple supplied uniform block layouts resolve to active WebGL block "${a}"`);s.set(n,{name:a,location:n,byteLength:i.minBindingSize,vertex:!!(i.visibility&&1&i.visibility),fragment:!!(i.visibility&&2&i.visibility),uniformCount:i.uniforms.length,uniforms:i.uniforms.map(e=>({...e}))})}return s}(e,t,i);for(let[i,l]of s){r.push(l);try{var a=ez(e,t,i,l.name),o=l;for(let e of a.uniforms){let t=o.uniforms.find(t=>e.name===t.name||e.name.endsWith(`.${t.name}`));if(!t)throw Error(`Failed to validate WebGL uniform block "${o.name}": reflected unexpected member "${e.name}"`);if(e.format!==t.format||e.arrayLength!==t.arrayLength||e.byteOffset!==t.byteOffset||e.byteStride!==t.byteStride)throw Error(`Failed to validate WebGL uniform block "${o.name}": reflected layout for "${e.name}" does not match supplied std140 metadata`)}}catch(t){let e=t instanceof Error?t.message:String(t);n.R.once(0,`WebGL uniform block reflection failed for "${l.name}"; using supplied std140 metadata. ${e}`)()}}let l=e.getProgramParameter(t,35382);if(!Number.isInteger(l)||l<0)throw Error(`Failed to reflect WebGL uniform blocks: ACTIVE_UNIFORM_BLOCKS returned ${String(l)}`);for(let i=0;i<l;i++)s.has(i)||r.push(ez(e,t,i));return r.sort((e,t)=>e.location-t.location),r}(e,t,i))){let e=s.uniforms.map(e=>({name:e.name,format:e.format,byteOffset:e.byteOffset,byteStride:e.byteStride,arrayLength:e.arrayLength}));r.bindings.push({type:"uniform",name:s.name,group:0,location:s.location,visibility:!!s.vertex|2*!!s.fragment,minBindingSize:s.byteLength,uniforms:e})}let s=function(e,t){let i=[],r=e.getProgramParameter(t,35718);for(let n=0;n<r;n++){let r=e.getActiveUniform(t,n);if(!r)throw Error("activeInfo");let{name:s,size:a,type:o}=r,{name:l,isArray:u}=function(e){if("]"!==e[e.length-1])return{name:e,length:1,isArray:!1};let t=/([^[]*)(\[[0-9]+\])?/.exec(e);return{name:(0,K.i)(t?.[1],`Failed to parse GLSL uniform name ${e}`),length:+!!t?.[2],isArray:!!t?.[2]}}(s),c=e.getUniformLocation(t,l),h={location:c,name:l,size:a,type:o,isArray:u};
547if(i.push(h),h.size>1)for(let r=0;r<h.size;r++){let n=`${l}[${r}]`;c=e.getUniformLocation(t,n);let s={...h,name:n,location:c};i.push(s)}}return i}(e,t),a=0;for(let e of s)if(eF[e.type]){let{viewDimension:t,sampleType:i}=eF[e.type];r.bindings.push({type:"texture",name:e.name,group:0,location:a,viewDimension:t,sampleType:i}),e.textureUnit=a,a+=1}s.length&&(r.uniforms=s);let o=function(e,t){let i=[],r=e.getProgramParameter(t,35971);for(let n=0;n<r;n++){let r=e.getTransformFeedbackVarying(t,n);if(!r)throw Error("activeInfo");let{name:s,type:a,size:o}=r,l=eD[a],{type:u,components:c}=(0,eR.k0)(l);i.push({location:n,name:s,type:u,size:o*c})}return i.sort((e,t)=>e.location-t.location),i}(e,t);return o?.length&&(r.varyings=o),r}(this.device.gl,this.handle,{uniformBlockLayouts:t._uniformBlockLayouts,shaderLayout:t.shaderLayout}),this.device._setWebGLDebugMetadata(this.handle,this,{spector:{id:this.props.id}}),this.shaderLayout=t.shaderLayout?function(e,t){let i={...e,attributes:e.attributes.map(e=>({...e})),bindings:e.bindings.map(e=>({...e}))};for(let e of t?.attributes||[]){let t=i.attributes.find(t=>t.name===e.name);t?(t.type=e.type||t.type,t.stepMode=e.stepMode||t.stepMode):n.R.warn(`shader layout attribute ${e.name} not present in shader`)}for(let e of t?.bindings||[]){let t=eW(i,e.name);if(!t){n.R.warn(`shader layout binding ${e.name} not present in shader`);continue}Object.assign(t,e)}return i}(this.introspectedLayout,t.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(e,t){for(let[i,r]of Object.entries((0,eO.h0)((0,eO.gO)(this.shaderLayout,e)))){let e=eW(this.shaderLayout,i);if(e){switch(!r&&n.R.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),e.type){case"uniform":if(!(r instanceof eh)&&!(r.buffer instanceof eh))throw Error("buffer value");break;case"texture":if(!(r instanceof eA||r instanceof eL||r instanceof en))throw Error(`${this} Bad texture binding for ${i}`);break;case"sampler":n.R.warn(`Ignoring sampler ${i}`)();break;default:throw Error(e.type)}this.bindings[i]=r}else{let e=this.shaderLayout.bindings.map(e=>`"${e.name}"`).join(", ");t?.disableWarnings||n.R.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${e}`,r)()}}}draw(e){let t=e.renderPass,i=e.bindGroups?(0,eO.h0)(e.bindGroups):e.bindings||this.bindings;return t.setPipeline(this),t.setBindings(i),t.setVertexArray(e.vertexArray),t.draw({parameters:e.parameters,topology:e.topology,isInstanced:e.isInstanced,vertexCount:e.vertexCount,indexCount:e.indexCount,instanceCount:e.instanceCount,firstVertex:e.firstVertex,firstIndex:e.firstIndex,firstInstance:e.firstInstance,baseVertex:e.baseVertex,transformFeedback:e.transformFeedback,uniforms:e.uniforms})}_areTexturesRenderable(e){let t=!0;for(let i of this.shaderLayout.bindings)eG(e,i.name)||(n.R.warn(`Binding ${i.name} not found in ${this.id}`)(),t=!1);return t}_applyBindings(e,t){if(this._syncLinkStatus(),"success"!==this.linkStatus)return;let{gl:i}=this.device;i.useProgram(this.handle);let r=0,s=0;for(let t of this.shaderLayout.bindings){let a=eG(e,t.name);if(!a)throw Error(`No value for binding ${t.name} in ${this.id}`);switch(t.type){case"uniform":let{name:o}=t,l=i.getUniformBlockIndex(this.handle,o);if(0xffffffff===l)throw Error(`Invalid uniform block name ${o}`);i.uniformBlockBinding(this.handle,l,s),a instanceof eh?i.bindBufferBase(35345,s,a.handle):i.bindBufferRange(35345,s,a.buffer.handle,a.offset||0,a.size||a.buffer.byteLength-(a.offset||0)),s+=1;break;case"texture":let u;if(!(a instanceof eA||a instanceof eL||a instanceof en))throw Error("texture");if(a instanceof eA)u=a.texture;else if(a instanceof eL)u=a;else if(a instanceof en&&a.colorAttachments[0]instanceof eA)n.R.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),u=a.colorAttachments[0].texture;else throw Error("No texture");i.activeTexture(33984+r),i.bindTexture(u.glTarget,u.handle),r+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw Error(`binding type '${t.type}' not supported in WebGL`)}}}_applyUniforms(e){for(let t of this.shaderLayout.uniforms||[]){let{name:i,location:r,type:n,textureUnit:s}=t,a=e[i]??s;void 0!==a&&function(e,t,i,r){let n=r;!0===n&&(n=1),!1===n&&(n=0);let s="number"==typeof n?[n]:n;switch(i){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if("number"!=typeof r)throw Error("samplers must be set to integers");return e.uniform1i(t,r);case 5126:return e.uniform1fv(t,s);case 35664:return e.uniform2fv(t,s);case 35665:return e.uniform3fv(t,s);case 35666:return e.uniform4fv(t,s);case 5124:case 35670:return e.uniform1iv(t,s);case 35667:case 35671:return e.uniform2iv(t,s);case 35668:case 35672:return e.uniform3iv(t,s);case 35669:case 35673:return e.uniform4iv(t,s);case 5125:return e.uniform1uiv(t,s,1);case 36294:return e.uniform2uiv(t,s,2);case 36295:return e.uniform3uiv(t,s,3);case 36296:return e.uniform4uiv(t,s,4);case 35674:return e.uniformMatrix2fv(t,!1,s);case 35675:return e.uniformMatrix3fv(t,!1,s);case 35676:return e.uniformMatrix4fv(t,!1,s);
547case 35685:return e.uniformMatrix2x3fv(t,!1,s);case 35686:return e.uniformMatrix2x4fv(t,!1,s);case 35687:return e.uniformMatrix3x2fv(t,!1,s);case 35688:return e.uniformMatrix3x4fv(t,!1,s);case 35689:return e.uniformMatrix4x2fv(t,!1,s);case 35690:return e.uniformMatrix4x3fv(t,!1,s)}throw Error("Illegal uniform")}(this.device.gl,r,n,a)}}_syncLinkStatus(){this.linkStatus=this.sharedRenderPipeline.linkStatus}}function eW(e,t){return e.bindings.find(e=>e.name===t||e.name===`${t}Uniforms`||`${e.name}Uniforms`===t)}function eG(e,t){return e[t]||e[`${t}Uniforms`]||e[t.replace(/Uniforms$/,"")]}class eH extends et.F{get[Symbol.toStringTag](){return"SharedRenderPipeline"}constructor(e,t){super(e,t,{...et.F.defaultProps,handle:void 0,vs:void 0,fs:void 0,varyings:void 0,bufferMode:void 0})}}class eq extends eH{device;handle;vs;fs;linkStatus="pending";constructor(e,t){super(e,t),this.device=e,this.handle=t.handle||this.device.gl.createProgram(),this.vs=t.vs,this.fs=t.fs,t.varyings&&t.varyings.length>0&&this.device.gl.transformFeedbackVaryings(this.handle,t.varyings,t.bufferMode||35981),this._linkShaders()}destroy(){this.destroyed||(this.device.gl.useProgram(null),this.device.gl.deleteProgram(this.handle),this.handle.de
547stroyed=!0,this.destroyResource())}async _linkShaders(){let{gl:e}=this.device;if(e.attachShader(this.handle,this.vs.handle),e.attachShader(this.handle,this.fs.handle),n.R.time(4,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),n.R.timeEnd(4,`linkProgram for ${this.id}`)(),!this.device.features.has("compilation-status-async-webgl")){let e=this._getLinkStatus();this._reportLinkStatus(e);return}n.R.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),n.R.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let t=this._getLinkStatus();this._reportLinkStatus(t)}async _reportLinkStatus(e){if("success"!==e){let t="link-error"===e?"Link error":"Validation error";switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),Error(`${this} ${t} during compilation of ${this.vs}`);case"pending":await this.vs.asyncCompilationStatus,this.vs.debugShader()}switch(this.fs?.compilationStatus){case"error":throw this.fs.debugShader(),Error(`${this} ${t} during compilation of ${this.fs}`);case"pending":await this.fs.asyncCompilationStatus,this.fs.debugShader()}let i=this.device.gl.getProgramInfoLog(this.handle);this.device.reportError(Error(`${t} during ${e}: ${i}`),this)(),this.device.debug()}}_getLinkStatus(){let{gl:e}=this.device;return e.getProgramParameter(this.handle,35714)?(this._initializeSamplerUniforms(),e.validateProgram(this.handle),e.getProgramParameter(this.handle,35715))?(this.linkStatus="success","success"):(this.linkStatus="error","validation-error"):(this.linkStatus="error","link-error")}_initializeSamplerUniforms(){let{gl:e}=this.device;e.useProgram(this.handle);let t=0,i=e.getProgramParameter(this.handle,35718);for(let r=0;r<i;r++){let i=e.getActiveUniform(this.handle,r);if(i&&eF[i.type]){let r=i.name.endsWith("[0]"),n=r?i.name.slice(0,-3):i.name,s=e.getUniformLocation(this.handle,n);null!==s&&(t=this._assignSamplerUniform(s,i,r,t))}}}_assignSamplerUniform(e,t,i,r){let{gl:n}=this.device;if(i&&t.size>1){let i=Int32Array.from({length:t.size},(e,t)=>r+t);return n.uniform1iv(e,i),r+t.size}return n.uniform1i(e,r),r+1}async _waitForLinkComplete(){let e=async e=>await new Promise(t=>setTimeout(t,e));if(!this.device.features.has("compilation-status-async-webgl"))return void await e(10);let{gl:t}=this.device;for(;;){if(t.getProgramParameter(this.handle,37297))return;await e(10)}}}class eY extends et.F{get[Symbol.toStringTag](){return"CommandEncoder"}_timeProfilingQuerySet=null;_timeProfilingSlotCount=0;_gpuTimeMs;constructor(e,t){super(e,t,eY.defaultProps),this._timeProfilingQuerySet=t.timeProfilingQuerySet??null,this._timeProfilingSlotCount=0,this._gpuTimeMs=void 0}async resolveTimeProfilingQuerySet(){if(this._gpuTimeMs=void 0,!this._timeProfilingQuerySet)return;let e=Math.floor(this._timeProfilingSlotCount/2);if(e<=0)return;let t=2*e,i=await this._timeProfilingQuerySet.readResults({firstQuery:0,queryCount:t}),r=0n;for(let e=0;e<t;e+=2)r+=i[e+1]-i[e];this._gpuTimeMs=Number(r)/1e6}getTimeProfilingSlotCount(){return this._timeProfilingSlotCount}getTimeProfilingQuerySet(){return this._timeProfilingQuerySet}_applyTimeProfilingToPassProps(e){let t=e||{};if(!this._supportsTimestampQueries()||!this._timeProfilingQuerySet||void 0!==t.timestampQuerySet||void 0!==t.beginTimestampIndex||void 0!==t.endTimestampIndex)return t;let i=this._timeProfilingSlotCount;return i+1>=this._timeProfilingQuerySet.props.count?t:(this._timeProfilingSlotCount+=2,{...t,timestampQuerySet:this._timeProfilingQuerySet,beginTimestampIndex:i,endTimestampIndex:i+1})}_supportsTimestampQueries(){return this.device.features.has("timestamp-query")}static defaultProps={...et.F.defaultProps,measureExecutionTime:void 0,timeProfilingQuerySet:void 0}}class eZ extends et.F{get[Symbol.toStringTag](){return"CommandBuffer"}constructor(e,t){super(e,t,eZ.defaultProps)}static defaultProps={...et.F.defaultProps}}class eK extends eZ{device;handle=null;commands=[];constructor(e,t={}){super(e,t),this.device=e}_executeCommands(e=this.commands){for(let t of e)switch(t.name){case"copy-buffer-to-buffer":!function(e,t){let i=t.sourceBuffer,r=t.destinationBuffer;e.gl.bindBuffer(36662,i.handle),e.gl.bindBuffer(36663,r.handle),e.gl.copyBufferSubData(36662,36663,t.sourceOffset??0,t.destinationOffset??0,t.size),e.gl.bindBuffer(36662,null),e.gl.bindBuffer(36663,null)}(this.device,t.options);break;case"copy-buffer-to-texture":!function(e,t){let{sourceBuffer:i,byteOffset:r=0,destinationTexture:n,mipLevel:s=0,origin:a=[0,0,0],aspect:o="all",bytesPerRow:l,rowsPerImage:u,size:c}=t;if("all"!==o)throw Error("copyBufferToTexture aspect is not supported in WebGL");n.writeBuffer(i,{byteOffset:r,bytesPerRow:l,rowsPerImage:u,mipLevel:s,x:a[0]??0,y:a[1]??0,z:a[2]??0,width:c[0],height:c[1],depthOrArrayLayers:c[2]})}(this.device,t.options);break;case"copy-texture-to-buffer":!function(e,t){let i,{sourceTexture:r,mipLevel:n=0,aspect:s="all",width:a=t.sourceTexture.width,height:o=t.sourceTexture.height,depthOrArrayLayers:l,origin:u=[0,0,0],destinationBuffer:c,byteOffset:h=0,bytesPerRow:d,rowsPerImage:f}=t;if(r instanceof ei.g)return r.readBuffer({x:u[0]??0,y:u[1]??0,z:u[2]??0,width:a,height:o,depthOrArrayLayers:l,mipLevel:n,aspect:s,byteOffset:h},c);if("all"!==s)throw Error("aspect not supported in WebGL");if(0!==n||void 0!==l||d||f)throw Error("not implemented");let{framebuffer:p,destroyFramebuffer:g}=eX(r);try{let t=a||p.width,r=o||p.height,n=(0,K.i)(p.colorAttachments[0]),s=V(n.texture.props.format),l=s.format,d=s.t
547ype;e.gl.bindBuffer(35051,c.handle),i=e.gl.bindFramebuffer(36160,p.handle),e.gl.readPixels(u[0],u[1],t,r,l,d,h)}finally{e.gl.bindBuffer(35051,null),void 0!==i&&e.gl.bindFramebuffer(36160,i),g&&p.destroy()}}(this.device,t.options);break;case"copy-texture-to-texture":!function(e,t){let i,r,{sourceTexture:n,destinationMipLevel:s=0,origin:a=[0,0],destinationOrigin:o=[0,0,0],destinationTexture:l}=t,{width:u=t.destinationTexture.width,height:c=t.destinationTexture.height}=t,{framebuffer:h,destroyFramebuffer:d}=eX(n),[f=0,p=0]=a,[g,m,b]=o,v=e.gl.bindFramebuffer(36160,h.handle);if(l instanceof eL)i=l,u=Number.isFinite(u)?u:i.width,c=Number.isFinite(c)?c:i.height,i._bind(0),r=i.glTarget;else throw Error("invalid destination");switch(r){case 3553:case 34067:e.gl.copyTexSubImage2D(r,s,g,m,f,p,u,c);break;case 35866:case 32879:e.gl.copyTexSubImage3D(r,s,g,m,b,f,p,u,c)}i&&i._unbind(),e.gl.bindFramebuffer(36160,v),d&&h.destroy()}(this.device,t.options);break;default:throw Error(t.name)}}}function eX(e){if(e instanceof ei.g){let{width:t,height:i,id:r}=e;return{framebuffer:e.device.createFramebuffer({id:`framebuffer-for-${r}`,width:t,height:i,colorAttachments:[e]}),destroyFramebuffer:!0}}return{framebuffer:e,destroyFramebuffer:!1}}class eQ extends et.F{static defaultClearColor=[0,0,0,1];static defaultClearDepth=1;static defaultClearStencil=0;get[Symbol.toStringTag](){return"RenderPass"}constructor(e,t,i=eQ.defaultProps){super(e,t=eQ.normalizeProps(e,t),i)}static normalizeProps(e,t){return t}static defaultProps={...et.F.defaultProps,framebuffer:null,resolveTargets:void 0,parameters:void 0,clearColor:eQ.defaultClearColor,clearColors:void 0,clearDepth:eQ.defaultClearDepth,clearStencil:eQ.defaultClearStencil,depthReadOnly:!1,stencilReadOnly:!1,discard:!1,occlusionQuerySet:void 0,timestampQuerySet:void 0,beginTimestampIndex:void 0,endTimestampIndex:void 0}}let eJ=[1,2,4,8];class e0 extends eQ{device;handle=null;glParameters={};pipeline=null;bindings={};bindingsPipeline=null;vertexArray=null;constructor(e,t){let i;super(e,t),this.device=e;let r=this.props.framebuffer,n=!r||null===r.handle;if(n&&e.getDefaultCanvasContext()._resizeDrawingBufferIfNeeded(),!t?.parameters?.viewport)if(!n&&r){let{width:e,height:t}=r;i=[0,0,e,t]}else{let[t,r]=e.getDefaultCanvasContext().getDrawingBufferSize();i=[0,0,t,r]}if(this.device.pushState(),this.setParameters({viewport:i,...this.props.parameters}),!n&&r?.colorAttachments.length){let e=r.colorAttachments.map((e,t)=>36064+t);this.device.gl.drawBuffers(e)}else n&&this.device.gl.drawBuffers([1029]);this.clear(),this.props.timestampQuerySet&&void 0!==this.props.beginTimestampIndex&&this.props.timestampQuerySet.writeTimestamp(this.props.beginTimestampIndex)}end(){this.destroyed||(this.props.timestampQuerySet&&void 0!==this.props.endTimestampIndex&&this.props.timestampQuerySet.writeTimestamp(this.props.endTimestampIndex),this.device.popState(),this.destroy())}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}executeBundles(e){throw Error("Render bundles are only supported in WebGPU")}setParameters(e={}){let t={...this.glParameters};t.framebuffer=this.props.framebuffer||null,this.props.depthReadOnly&&(t.depthMask=!this.props.depthReadOnly),t.stencilMask=+!this.props.stencilReadOnly,t[35977]=this.props.discard,e.viewport&&(e.viewport.length>=6?(t.viewport=e.viewport.slice(0,4),t.depthRange=[e.viewport[4],e.viewport[5]]):t.viewport=e.viewport),e.scissorRect&&(t.scissorTest=!0,t.scissor=e.scissorRect),e.blendConstant&&(t.blendColor=e.blendConstant),void 0!==e.stencilReference&&(t[2967]=e.stencilReference,t[36003]=e.stencilReference),"colorMask"in e&&(t.colorMask=eJ.map(t=>!!(t&e.colorMask))),this.glParameters=t,y(this.device.gl,t)}setPipeline(e){this.pipeline=e}setBindings(e,t){if(!this.pipeline)throw Error("RenderPass.setPipeline() must be called before setBindings()");this.bindings=(0,eO.h0)((0,eO.gO)(this.pipeline.shaderLayout,e)),this.bindingsPipeline=this.pipeline}setVertexArray(e){this.vertexArray=e}draw(e){let t=this.pipeline,i=this.vertexArray;if(!t)throw Error("RenderPass.setPipeline() must be called before draw()");if(!i)throw Error("RenderPass.setVertexArray() must be called before draw()");if(t.shaderLayout.bindings.length>0&&this.bindingsPipeline!==t)throw Error("RenderPass.setBindings() must be called after setPipeline() before draw()");t._syncLinkStatus();let{parameters:r=t.props.parameters,topology:s=t.props.topology,vertexCount:a,indexCount:o,instanceCount:l,isInstanced:u=!1,first
547Vertex:c=0,transformFeedback:h,uniforms:d=t.uniforms}=e,f=function(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw Error(e)}}(s),p=!!i.indexBuffer,g=i.indexBuffer?.glIndexType,m=o??a??0;return"success"!==t.linkStatus?(n.R.info(2,`RenderPipeline:${t.id}.draw() aborted - waiting for shader linking`)(),!1):t._areTexturesRenderable(this.bindings)?(this.device.gl.useProgram(t.handle),i.bindBeforeRender(this),h&&h.begin(t.props.topology),t._applyBindings(this.bindings,{disableWarnings:t.props.disableWarnings}),t._applyUniforms(d),!function(e,t,i,r){if(function(e){let t=!0;for(let i in e){t=!1;break}return t}(t))return r(e);e.pushState();try{return function(e,t){let{gl:i}=e;if(t.cullMode)switch(t.cullMode){case"none":i.disable(2884);break;case"front":i.enable(2884),i.cullFace(1028);break;case"back":i.enable(2884),i.cullFace(1029)}if(t.frontFace&&i.frontFace(e_("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&i.enable(34383),void 0!==t.depthBias&&(i.enable(32823),i.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){let i=e.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,r=e_("provokingVertex",t.provokingVertex,{first:36429,last:36430});i?.provokingVertexWEBGL(r)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){let i=e.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,r=e_("polygonMode",t.polygonMode,{fill:6914,line:6913});i?.polygonModeWEBGL(1028,r),i?.polygonModeWEBGL(1029,r)}t.polygonOffsetLine&&i.enable(10754)}if(e.features.has("shader-clip-cull-distance-webgl")&&(t.clipDistance0&&i.enable(12288),t.clipDistance1&&i.enable(12289),t.clipDistance2&&i.enable(12290),t.clipDistance3&&i.enable(12291),t.clipDistance4&&i.enable(12292),t.clipDistance5&&i.enable(12293),t.clipDistance6&&i.enable(12294),t.clipDistance7&&i.enable(12295)),void 0!==t.depthWriteEnabled&&i.depthMask(t.depthWriteEnabled),t.depthCompare&&("always"!==t.depthCompare?i.enable(2929):i.disable(2929),i.depthFunc(em("depthCompare",t.depthCompare))),void 0!==t.clearDepth&&i.clearDepth(t.clearDepth),t.stencilWriteMask){let e=t.stencilWriteMask;i.stencilMaskSeparate(1028,e),i.stencilMaskSeparate(1029,e)}if(t.stencilReadMask&&n.R.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let e=t.stencilReadMask||0xffffffff,r=em("depthCompare",t.stencilCompare);"always"!==t.stencilCompare?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,r,0,e),i.stencilFuncSeparate(1029,r,0,e)}if(t.stencilPassOperation&&t.stencilFailOperation&&t.stencilDepthFailOperation){let e=eb("stencilPassOperation",t.stencilPassOperation),r=eb("stencilFailOperation",t.stencilFailOperation),n=eb("stencilDepthFailOperation",t.stencilDepthFailOperation);i.stencilOpSeparate(1028,r,n,e),i.stencilOpSeparate(1029,r,n,e)}switch(t.blend){case!0:i.enable(3042);break;case!1:i.disable(3042)}if(t.blendColorOperation||t.blendAlphaOperation){let e=ev("blendColorOperation",t.blendColorOperation||"add"),r=ev("blendAlphaOperation",t.blendAlphaOperation||"add");i.blendEquationSeparate(e,r);let n=ey("blendColorSrcFactor",t.blendColorSrcFactor||"one"),s=ey("blendColorDstFactor",t.blendColorDstFactor||"zero"),a=ey("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),o=ey("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");i.blendFuncSeparate(n,s,a,o)}}(e,t),y(e.gl,i),r(e)}finally{e.popState()}}(this.device,r,this.glParameters,()=>{p&&u?this.device.gl.drawElementsInstanced(f,m,g,c,l||0):p?this.device.gl.drawElements(f,m,g,c):u?this.device.gl.drawArraysInstanced(f,c,a||0,l||0):this.device.gl.drawArrays(f,c,a||0),h&&h.end()}),i.unbindAfterRender(this),!0):(n.R.info(2,`RenderPipeline:${t.id}.draw() aborted - textures not yet loaded`)(),!1)}drawIndirect(e,t=0){throw Error("Indirect drawing is only supported in WebGPU")}drawIndexedIndirect(e,t=0){throw Error("Indirect drawing is only supported in WebGPU")}beginOcclusionQuery(e){let t=this.props.occlusionQuerySet;
547t?.beginOcclusionQuery()}endOcclusionQuery(){let e=this.props.occlusionQuerySet;e?.endOcclusionQuery()}clear(){let e={...this.glParameters},t=0;this.props.clearColors&&this.props.clearColors.forEach((e,t)=>{e&&this.clearColorBuffer(t,e)}),!1!==this.props.clearColor&&void 0===this.props.clearColors&&(t|=16384,e.clearColor=this.props.clearColor),!1!==this.props.clearDepth&&(t|=256,e.clearDepth=this.props.clearDepth),!1!==this.props.clearStencil&&(t|=1024,e.clearStencil=this.props.clearStencil),0!==t&&eC(this.device.gl,e,()=>{this.device.gl.clear(t)})}clearColorBuffer(e=0,t=[0,0,0,0]){eC(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(t.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,e,t);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,e,t);break;case Float32Array:this.device.gl.clearBufferfv(6144,e,t);break;default:throw Error("clearColorBuffer: color must be typed array")}})}}class e1 extends eY{device;handle=null;commandBuffer;constructor(e,t){super(e,t),this.device=e,this.commandBuffer=new eK(e,{id:this.id,userData:this.userData})}destroy(){this.destroyResource()}finish(){return this.destroy(),this.commandBuffer}beginRenderPass(e={}){return new e0(this.device,this._applyTimeProfilingToPassProps(e))}beginComputePass(e={}){throw Error("ComputePass not supported in WebGL")}copyBufferToBuffer(e){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:e})}copyBufferToTexture(e){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:e})}copyTextureToBuffer(e){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:e})}copyTextureToTexture(e){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:e})}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}resolveQuerySet(e,t,i){throw Error("resolveQuerySet is not supported in WebGL")}writeTimestamp(e,t){e.writeTimestamp(t)}}class e2 extends et.F{static defaultProps={...et.F.defaultProps,shaderLayout:void 0,bufferLayout:[]};get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;indexBuffer=null;attributes;constructor(e,t){super(e,t,e2.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=Array(this.maxVertexAttributes).fill(null)}getBufferSlot(e){return null}getDrawValidationError(){return null}setConstantWebGL(e,t){this.device.reportError(Error("constant attributes not supported"),this)()}}var e3=i(44486),e6=i(28749),e4=i(85972),e5=i(67153);class e8 extends e2{get[Symbol.toStringTag](){return"VertexArray"}device;handle;attributeInfosByLocation;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){var t;return"Chrome"===((0,q.B)()?(0,e4.b)(t)?"Electron":(t||e5.gM.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown":"Node")}constructor(e,t){for(let i of(super(e,t),this.device=e,this.handle=this.device.gl.createVertexArray(),this.attributeInfosByLocation=Array(this.maxVertexAttributes).fill(null),Object.values((0,e3.P)(t.shaderLayout,t.bufferLayout))))this.attributeInfosByLocation[i.location]=i}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(e){if(e&&34963!==e.glTarget)throw Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,e?e.handle:null),this.indexBuffer=e,this.device.gl.bindVertexArray(null)}setBuffer(e,t){if(34963===t.glTarget)throw Error("Use .setIndexBuffer()");let{size:i,type:r,stride:n,offset:s,normalized:a,integer:o,divisor:l}=this._getAccessor(e);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,t.handle),o?this.device.gl.vertexAttribIPointer(e,i,r,n,s):this.device.gl.vertexAttribPointer(e,i,r,a,n,s),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(e),this.device.gl.vertexAttribDivisor(e,l||0),this.attributes[e]=t,this.device.gl.bindVertexArray(null)}setConstantWebGL(e,t){this._enable(e,!1),this.attributes[e]=t}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let e=0;e<this.maxVertexAttributes;++e){let t=this.attributes[e];ArrayBuffer.isView(t)&&this.device.setConstantAttributeWebGL(e,t)}}_getAccessor(e){let t=this.attributeInfosByLocation[e];if(!t)throw Error(`Unknown attribute location ${e}`);let i=A(t.bufferDataType);return{size:t.bufferComponents,type:i,stride:t.byteStride,offset:t.byteOffset,normalized:t.normalized,integer:t.integer,divisor:+("instance"===t.stepMode)}}_enable(e,t=!0){let i=e8.isConstantAttributeZeroSupported(this.device)||0!==e;(t||i)&&(e=Number(e),this.device.gl.bindVertexArray(this.handle),t?this.device.gl.enableVertexAttribArray(e):this.device.gl.disableVertexAttribArray(e),this.device.gl.bindVertexArray(null))}getConstantBuffer(e,t){var i;let r=Array.isArray(i=t)?new Float32Array(i):i,n=r.byteLength*e,s=r.length*e;if(this.buffer&&n!==this.buffer.byteLength)throw Error(`Buffer size is immutable, byte length ${n} !== ${this.buffer.byteLength}.`);let a=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:n}),a||=!function(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}(r,this.bufferValue)){let e=(0,e6.X)(t.constructor,s);!function(e){let{target:t,source:i,start:r=0,count:n=1}=e,s=i.length,a=n*s,o=0;for(let e=r;o<s;
547o++)t[e++]=i[o]??0;for(;o<a;)o<a-o?(t.copyWithin(r+o,r,r+o),o*=2):(t.copyWithin(r+o,r,r+a-o),o=a);e.target}({target:e,source:r,start:0,count:s}),this.buffer.write(e),this.bufferValue=t}return this.buffer}}class e9 extends et.F{static defaultProps={...et.F.defaultProps,layout:void 0,buffers:{}};get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,t){super(e,t,e9.defaultProps)}}class e7 extends e9{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(e,t){super(e,t),this.device=e,this.gl=e.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,t.buffers&&this.setBuffers(t.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(e="point-list"){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(function(e){switch(e){case"point-list":return 0;case"line-list":case"line-strip":return 1;case"triangle-list":case"triangle-strip":return 4;default:throw Error(e)}}(e))}end(){this.gl.endTransformFeedback(),this.bindOnUse&&this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(e){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let[t,i]of Object.entries(e))this.setBuffer(t,i)})}setBuffer(e,t){let i=this._getVaryingIndex(e),{buffer:r,byteLength:s,byteOffset:a}=this._getBufferRange(t);if(i<0){this.unusedBuffers[e]=r,n.R.warn(`${this.id} unusedBuffers varying buffer ${e}`)();return}this.buffers[i]={buffer:r,byteLength:s,byteOffset:a},this.bindOnUse||this._bindBuffer(i,r,a,s)}getBuffer(e){if(te(e))return this.buffers[e]||null;let t=this._getVaryingIndex(e);return this.buffers[t]??null}bind(e=this.handle){let t;return"function"!=typeof e?(this.gl.bindTransformFeedback(36386,e),this):(this._bound?t=e():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,t=e(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),t)}unbind(){this.bind(null)}_getBufferRange(e){if(e instanceof eh)return{buffer:e,byteOffset:0,byteLength:e.byteLength};let{buffer:t,byteOffset:i=0,byteLength:r=e.buffer.byteLength}=e;return{buffer:t,byteOffset:i,byteLength:r}}_getVaryingIndex(e){if(te(e))return Number(e);for(let t of this.layout.varyings||[])if(e===t.name)return t.location;return -1}_bindBuffers(){for(let[e,t]of Object.entries(this.buffers)){let{buffer:i,byteLength:r,byteOffset:n}=this._getBufferRange(t);this._bindBuffer(Number(e),i,n,r)}}_unbindBuffers(){for(let e in this.buffers)this.gl.bindBufferBase(35982,Number(e),null)}_bindBuffer(e,t,i=0,r){let n=t&&t.handle;n&&void 0!==r?this.gl.bindBufferRange(35982,e,n,i,r):this.gl.bindBufferBase(35982,e,n)}}function te(e){return"number"==typeof e?Number.isInteger(e):/^\d+$/.test(e)}class tt extends et.F{get[Symbol.toStringTag](){return"QuerySet"}constructor(e,t){super(e,t,tt.defaultProps)}static defaultProps={...et.F.defaultProps,type:void 0,count:void 0}}class ti extends tt{device;handle;_timestampPairs=[];_pendingReads=new Set;_occlusionQuery=null;_occlusionActive=!1;get[Symbol.toStringTag](){return"QuerySet"}constructor(e,t){if(super(e,t),this.device=e,"timestamp"===t.type){if(t.count<2)throw Error("Timestamp QuerySet requires at least two query slots");this._timestampPairs=Array(Math.ceil(t.count/2)).fill(null).map(()=>({activeQuery:null,completedQueries:[]})),this.handle=null}else{if(t.count>1)throw Error("WebGL occlusion QuerySet can only have one value");let e=this.device.gl.createQuery();if(!e)throw Error("WebGL query not supported");this.handle=e}
547Object.seal(this)}destroy(){if(!this.destroyed){for(let e of(this.handle&&this.device.gl.deleteQuery(this.handle),this._timestampPairs))for(let t of(e.activeQuery&&(this._cancelPendingQuery(e.activeQuery),this.device.gl.deleteQuery(e.activeQuery.handle)),e.completedQueries))this._cancelPendingQuery(t),this.device.gl.deleteQuery(t.handle);for(let e of(this._occlusionQuery&&(this._cancelPendingQuery(this._occlusionQuery),this.device.gl.deleteQuery(this._occlusionQuery.handle)),Array.from(this._pendingReads)))this._cancelPendingQuery(e);this.destroyResource()}}isResultAvailable(e){return"timestamp"===this.props.type?void 0===e?this._timestampPairs.some((e,t)=>this._isTimestampPairAvailable(t)):this._isTimestampPairAvailable(this._getTimestampPairIndex(e)):!!this._occlusionQuery&&this._pollQueryAvailability(this._occlusionQuery)}async readResults(e){let t=e?.firstQuery||0,i=e?.queryCount||this.props.count-t;if(this._validateRange(t,i),"timestamp"===this.props.type){let e=Array(i).fill(0n),r=Math.floor(t/2),n=Math.floor((t+i-1)/2);for(let s=r;s<=n;s++){let r=await this._consumeTimestampPairResult(s),n=2*s,a=n+1;n>=t&&n<t+i&&(e[n-t]=0n),a>=t&&a<t+i&&(e[a-t]=r)}return e}if(!this._occlusionQuery)throw Error("Occlusion query has not been started");return[await this._consumeQueryResult(this._occlusionQuery)]}async readTimestampDuration(e,t){if("timestamp"!==this.props.type)throw Error("Timestamp durations require a timestamp QuerySet");if(e<0||t>=this.props.count||t<=e)throw Error("Timestamp duration range is out of bounds");if(e%2!=0||t!==e+1)throw Error("WebGL timestamp durations require adjacent even/odd query indices");return Number(await this._consumeTimestampPairResult(this._getTimestampPairIndex(e)))/1e6}beginOcclusionQuery(){if("occlusion"!==this.props.type)throw Error("Occlusion queries require an occlusion QuerySet");if(!this.handle)throw Error("WebGL occlusion query is not available");if(this._occlusionActive)throw Error("Occlusion query is already active");this.device.gl.beginQuery(35887,this.handle),this._occlusionQuery={handle:this.handle,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null},this._occlusionActive=!0}endOcclusionQuery(){if(!this._occlusionActive)throw Error("Occlusion query is not active");this.device.gl.endQuery(35887),this._occlusionActive=!1}writeTimestamp(e){if("timestamp"!==this.props.type)throw Error("Timestamp writes require a timestamp QuerySet");let t=this._getTimestampPairIndex(e),i=this._timestampPairs[t];if(e%2==0){if(i.activeQuery)throw Error("Timestamp query pair is already active");let e=this.device.gl.createQuery();if(!e)throw Error("WebGL query not supported");this.device.gl.beginQuery(35007,e),i.activeQuery={handle:e,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null};return}if(!i.activeQuery)throw Error("Timestamp query pair was ended before it was started");this.device.gl.endQuery(35007),i.completedQueries.push(i.activeQuery),i.activeQuery=null}_validateRange(e,t){if(e<0||t<0||e+t>this.props.count)throw Error("Query read range is out of bounds")}_getTimestampPairIndex(e){if(e<0||e>=this.props.count)throw Error("Query index is out of bounds");return Math.floor(e/2)}_isTimestampPairAvailable(e){let t=this._timestampPairs[e];return!!t&&0!==t.completedQueries.length&&this._pollQueryAvailability(t.completedQueries[0])}_pollQueryAvailability(e){if(e.cancelled||this.destroyed)return e.result=0n,!0;if(null!==e.result||e.disjoint)return!0;if(!this.device.gl.getQueryParameter(e.handle,34919))return!1;let t=!!this.device.gl.getParameter(36795);return e.disjoint=t,e.result=t?0n:BigInt(this.device.gl.getQueryParameter(e.handle,34918)),!0}async _consumeTimestampPairResult(e){let t=this._timestampPairs[e];if(!t||0===t.completedQueries.length)throw Error("Timestamp query pair has no completed result");let i=t.completedQueries.shift();try{return await this._consumeQueryResult(i)}finally{this.device.gl.deleteQuery(i.handle)}}_consumeQueryResult(e){return e.promise||(this._pendingReads.add(e),e.promise=new Promise((t,i)=>{e.resolve=t,e.reject=i;let r=()=>{if(e.pollRequestId=null,e.cancelled||this.destroyed){this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,t(0n);return}if(!this._pollQueryAvailability(e)){e.pollRequestId=this._requestAnimationFrame(r);return}
547this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,e.disjoint?i(Error("GPU timestamp query was invalidated by a disjoint event")):t(e.result||0n)};r()})),e.promise}_cancelPendingQuery(e){if(this._pendingReads.delete(e),e.cancelled=!0,null!==e.pollRequestId&&(this._cancelAnimationFrame(e.pollRequestId),e.pollRequestId=null),e.resolve){let t=e.resolve;e.promise=null,e.resolve=null,e.reject=null,t(0n)}}_requestAnimationFrame(e){return requestAnimationFrame(e)}_cancelAnimationFrame(e){cancelAnimationFrame(e)}}class tr extends et.F{static defaultProps={...et.F.defaultProps};get[Symbol.toStringTag](){return"Fence"}constructor(e,t={}){super(e,t,tr.defaultProps)}}class tn extends tr{device;gl;handle;signaled;_signaled=!1;constructor(e,t={}){super(e,{}),this.device=e,this.gl=e.gl;let i=this.props.handle||this.gl.fenceSync(this.gl.SYNC_GPU_COMMANDS_COMPLETE,0);if(!i)throw Error("Failed to create WebGL fence");this.handle=i,this.signaled=new Promise(e=>{let t=()=>{let i=this.gl.clientWaitSync(this.handle,0,0);i===this.gl.ALREADY_SIGNALED||i===this.gl.CONDITION_SATISFIED?(this._signaled=!0,e()):setTimeout(t,1)};t()})}isSignaled(){if(this._signaled)return!0;let e=this.gl.getSyncParameter(this.handle,this.gl.SYNC_STATUS);return this._signaled=e===this.gl.SIGNALED,this._signaled}destroy(){this.destroyed||this.gl.deleteSync(this.handle)}}var ts=i(93614);function ta(e){switch(e){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function to(e){return e instanceof er?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:function(e,t){let{device:i,width:r,height:n,id:s}=e;return i.createFramebuffer({...void 0,id:`framebuffer-for-${s}`,width:r,height:n,colorAttachments:[e]})}(e),deleteFramebuffer:!0}}class tl extends r.pF{static getDeviceFromContext(e){return e?e.luma?.device??null:null}type="webgl";handle;features;limits;info;canvasContext;preferredColorFormat="rgba8unorm";
547preferredDepthFormat="depth24plus";commandEncoder;lost;_resolveContextLost;_isLost=!1;gl;_glKeyByValue=null;_constants;extensions;_polyfilled=!1;spectorJS;get[Symbol.toStringTag](){return"WebGLDevice"}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}isVertexFormatSupported(e){return"unorm8x4-bgra"!==e}constructor(e){super({...e,id:e.id||function(e="id"){eu[e]=eu[e]||1;let t=eu[e]++;return`${e}-${t}`}("webgl-device")});let t=r.pF._getCanvasContextProps(e);if(!t)throw Error("WebGLDevice requires props.createCanvasContext to be set");let i=t.canvas?.gl??null,s=tl.getDeviceFromContext(i);if(s)throw Error(`WebGL context already attached to device ${s.id}`);this.canvasContext=new es(this,t),this.lost=new Promise(e=>{this._resolveContextLost=e});let a={...e.webgl};"premultiplied"===t.alphaMode&&(a.premultipliedAlpha=!0),void 0!==e.powerPreference&&(a.powerPreference=e.powerPreference),void 0!==e.failIfMajorPerformanceCaveat&&(a.failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat);let o=this.props._handle||function(e,t,i){let r="",n=e=>{let t=e.statusMessage;t&&(r||=t)};e.addEventListener("webglcontextcreationerror",n,!1);let s=!0!==i.failIfMajorPerformanceCaveat,a={preserveDrawingBuffer:!0,...i,failIfMajorPerformanceCaveat:!0},o=null;try{(o||=e.getContext("webgl2",a))||!a.failIfMajorPerformanceCaveat||(r||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.");let i=!1;if(!o&&s&&(a.failIfMajorPerformanceCaveat=!1,o=e.getContext("webgl2",a),i=!0),!o&&(o=e.getContext("webgl",{}))&&(o=null,r||="Your browser only supports WebGL1"),!o)throw r||="Your browser does not support WebGL",Error(`Failed to create WebGL context: ${r}`);S(o).softwareRenderer=i;let{onContextLost:n,onContextRestored:l}=t;return e.addEventListener("webglcontextlost",e=>n(e),!1),e.addEventListener("webglcontextrestored",e=>l(e),!1),o}finally{e.removeEventListener("webglcontextcreationerror",n,!1)}}(this.canvasContext.canvas,{onContextLost:e=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."}),onContextRestored:e=>{console.log("WebGL context restored")}},a);if(!o)throw Error("WebGL context creation failed");if(s=tl.getDeviceFromContext(o)){if(e._reuseDevices)return n.R.log(1,`Not creating a new Device, instead returning a reference to Device ${s.id} already attached to WebGL context`,s)(),this.canvasContext.destroy(),s._reused=!0,s;throw Error(`WebGL context already attached to device ${s.id}`)}this.handle=o,this.gl=o,this.spectorJS=(0,el.c0)({...this.props,gl:this.handle});let l=S(this.handle);l.device=this,l.extensions||(l.extensions={}),this.extensions=l.extensions,this.info=function(e,t){var i,r;let n=e.getParameter(7936),s=e.getParameter(7937);P(e,"WEBGL_debug_renderer_info",t);let a=t.WEBGL_debug_renderer_info,o=e.getParameter(a?a.UNMASKED_VENDOR_WEBGL:7936),l=e.getParameter(a?a.UNMASKED_RENDERER_WEBGL:7937),u=o||n,c=l||s,h=e.getParameter(7938),d=C(u,c),f=(i=u,r=c,/Metal/i.exec(i)||/Metal/i.exec(r)?"metal":
547/ANGLE/i.exec(i)||/ANGLE/i.exec(r)?"opengl":"unknown");return{type:"webgl",gpu:d,gpuType:function(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(C(e,t)){case"apple":var i,r;return(i=e,r=t,/Apple (M\d|A\d|GPU)/i.test(`${i} ${r}`))?"integrated":"unknown";case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}(u,c),gpuBackend:f,vendor:u,renderer:c,version:h,shadingLanguage:"glsl",shadingLanguageVersion:300}}(this.gl,this.extensions),this.limits=new H(this.gl),this.features=new G(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new x(this.gl,{log:(...e)=>n.R.log(1,...e)()}).trackState(this.gl,{copyState:!1}),(e.debug||e.debugWebGL)&&(this.gl=(0,el.Pz)(this.gl,{debugWebGL:!0,traceWebGL:e.debugWebGL}),n.R.warn("WebGL debug mode activated. Performance reduced.")()),e.debugWebGL&&(n.R.level=Math.max(n.R.level,1)),this.commandEncoder=new e1(this,{id:`${this}-command-encoder`}),this.canvasContext._startObservers()}destroy(){this.props._reuseDevices||this._reused||(this._isLost=!0,this.commandEncoder?.destroy(),S(this.handle).device=null)}get isLost(){return this._isLost||this.gl.isContextLost()}createCanvasContext(e){throw Error("WebGL only supports a single canvas")}createPresentationContext(e){return new eo(this,e||{})}createBuffer(e){return new eh(this,this._normalizeBufferProps(e))}createTexture(e){return new eL(this,e)}createExternalTexture(e){throw Error("ExternalTexture is not available on WebGL")}createSampler(e){return new eS(this,e)}createShader(e){return new ep(this,e)}createFramebuffer(e){return new en(this,e)}createVertexArray(e){return new e8(this,e)}createTransformFeedback(e){return new e7(this,e)}createQuerySet(e){return new ti(this,e)}createFence(){return new tn(this)}createRenderPipeline(e){return new eV(this,e)}_createSharedRenderPipelineWebGL(e){return new eq(this,e)}createComputePipeline(e){throw Error("ComputePipeline not supported in WebGL")}createRenderBundleEncoder(e){throw Error("Render bundles are only supported in WebGPU")}createCommandEncoder(e={}){return new e1(this,e)}submit(e){let t=null;e||({submittedCommandEncoder:t,commandBuffer:e}=this._finalizeDefaultCommandEncoderForSubmit());try{e._executeCommands(),t&&t.resolveTimeProfilingQuerySet().then(()=>{this.commandEncoder._gpuTimeMs=t._gpuTimeMs}).catch(()=>{})}finally{e.destroy()}}writeBufferViaCommandEncoder(e,t,i,r=0){t.write(i,r)}_finalizeDefaultCommandEncoderForSubmit(){let e=this.commandEncoder,t=e.finish();return this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:e.props.id,timeProfilingQuerySet:e.getTimeProfilingQuerySet()}),{submittedCommandEncoder:e,commandBuffer:t}}readPixelsToArrayWebGL(e,t){return function(e,t){let{sourceX:i=0,sourceY:r=0,sourceAttachment:n=0}=t||{},{target:s=null,sourceWidth:a,sourceHeight:o,sourceDepth:l,sourceFormat:u,sourceType:c}=t||{},{framebuffer:h,deleteFramebuffer:d}=to(e),{gl:f,handle:p}=h;a||=h.width,o||=h.height;let g=h.colorAttachments[n]?.texture;if(!g)throw Error(`Invalid framebuffer attachment ${n}`);l=g?.depth||1,u||=g?.glFormat||6408,c||=g?.glType||5121,s=function(e,t,i,r,n,s){if(e)return e;let a=eM[t||=5121];return new(ts.r.getTypedArrayConstructor(a))(r*n*ta(i))}(s,c,u,a,o,0);let m=ts.r.getDataType(s);c=c||e$[m];let b=f.bindFramebuffer(36160,p);return f.readBuffer(36064+n),f.readPixels(i,r,a,o,u,c,s),f.readBuffer(36064),f.bindFramebuffer(36160,b||null),d&&h.destroy(),s}(e,t)}readPixelsToBufferWebGL(e,t){return function(e,t){let{target:i,sourceX:r=0,sourceY:n=0,sourceFormat:s=6408,targetByteOffset:a=0}=t||{},{sourceWidth:o,sourceHeight:l,sourceType:u}=t||{},{framebuffer:c,deleteFramebuffer:h}=to(e);o=o||c.width,l=l||c.height,u=u||5121;let d=i;if(!d){let e=a+o*l*ta(s)*function(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}(u);d=c.device.createBuffer({byteLength:e})}let f=e.device.createCommandEncoder();return f.copyTextureToBuffer({sourceTexture:e,width:o,height:l,origin:[r,n],destinationBuffer:d,byteOffset:a}),f.destroy(),h&&c.destroy(),d}(e,t)}setParametersWebGL(e){y(this.gl,e)}getParametersWebGL(e){return _(this.gl,e)}withParametersWebGL(e,t){return eC(this.gl,e,t)}resetWebGL(){n.R.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),y(this.gl,s)}_getDeviceSpecificTextureFormatCapabilities(e){return function(e,t,i){let r=t.create,n=U[t.format];n?.gl===void 0&&(r=!1),n?.x&&(r=r&&!!P(e,n.x,i)),"stencil8"===t.format&&(r=!1);let s=n?.r!==!1&&(n?.r===void 0||j(e,n.r,i)),a=r&&t.render&&s&&function(e,t,i){let r=U[t],n=r?.gl;if(void 0===n||r?.x&&!P(e,r.x,i))return!1;let s=e.getParameter(32873),a=e.getParameter(36006),o=e.createTexture(),l=e.createFramebuffer();if(!o||!l)return!1;let u=Number(0),c=Number(e.getError());for(;c!==u;)c=e.getError();let h=!1;try{if(e.bindTexture(3553,o),e.texStorage2D(3553,1,n,1,1),Number(e.getError())!==u)return!1;e.bindFramebuffer(36160,l),e.framebufferTexture2D(36160,36064,3553,o,0),h=Number(e.checkFramebufferStatus(36160))===Number(36053)&&Number(e.getError())===u}finally{e.bindFramebuffer(36160,a),e.deleteFramebuffer(l),e.bindTexture(3553,s),e.deleteTexture(o)}return h}(e,t.format,i);return{format:t.format,create:r&&t.create,render:a,filter:r&&t.filter,blend:r&&t.blend,store:r&&t.store}}(this.gl,e,this.extensions)}loseDevice(){let e=!1,t=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return t&&(e=!0,t.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),e}pushState(){x.get(this.gl).push()}popState(){x.get(this.gl).pop()}getGLKey(e,t){let i=this._getGLKeyByValue().get(Number(e));
547return i||(t?.emptyIfUnknown?"":String(e))}getGLKeys(e){let t={emptyIfUnknown:!0};return Object.entries(e).reduce((e,[i,r])=>(e[`${i}:${this.getGLKey(i,t)}`]=`${r}:${this.getGLKey(r,t)}`,e),{})}_getGLKeyByValue(){return this._glKeyByValue??=function(e){let t=new Map;for(let i in e){let r=e[i];if(i<"a"){let e=t.get(r);t.set(r,e?`${e}, GL.${i}`:`GL.${i}`)}}return t}(this.gl),this._glKeyByValue}setConstantAttributeWebGL(e,t){let i=this.limits.maxVertexAttributes;this._constants=this._constants||Array(i).fill(null);let r=this._constants[e];switch(r&&function(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}(r,t)&&n.R.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=t,t.constructor){case Float32Array:var s,a,o,l,u,c,h=this,d=e,f=t;switch(f.length){case 1:h.gl.vertexAttrib1fv(d,f);break;case 2:h.gl.vertexAttrib2fv(d,f);break;case 3:h.gl.vertexAttrib3fv(d,f);break;case 4:h.gl.vertexAttrib4fv(d,f)}break;case Int32Array:s=this,a=e,o=t,s.gl.vertexAttribI4iv(a,o);break;case Uint32Array:l=this,u=e,c=t,l.gl.vertexAttribI4uiv(u,c);break;default:throw Error("constant")}}getExtension(e){return P(this.gl,e,this.extensions),this.extensions}_setWebGLDebugMetadata(e,t,i){e.luma=t,e.__SPECTOR_Metadata={props:i.spector,id:i.spector.id}}}},28749:(e,t,i)=>{let r;function n(e){return(!r||r.byteLength<e)&&(r=new ArrayBuffer(e)),r}function s(e,t){let i=n(e.BYTES_PER_ELEMENT*t);return new e(i,0,t)}i.d(t,{X:()=>s,o:()=>n})},30346:(e,t,i)=>{i.d(t,{N:()=>o});var r=i(73544),n=i(85303),s=i(72868),a=i(59396);class o{static defaultProps={...n.r.defaultProps};static getDefaultPipelineFactory(e){let t=e.getModuleData("@luma.gl/core");return t.defaultPipelineFactory||=new o(e),t.defaultPipelineFactory}device;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};_sharedRenderPipelineCache={};get[Symbol.toStringTag](){return"PipelineFactory"}toString(){return`PipelineFactory(${this.device.id})`}constructor(e){this.device=e}createRenderPipeline(e){if(!this.device.props._cachePipelines)return this.device.createRenderPipeline(e);let t={...n.r.defaultProps,...e},i=this._renderPipelineCache,r=this._hashRenderPipeline(t),o=i[r]?.resource;if(o)i[r].useCount++,this.device.props.debugFactories&&s.R.log(3,`${this}: ${i[r].resource} reused, count=${i[r].useCount}, (id=${e.id})`)();else{let e="webgl"===this.device.type&&this.device.props._sharePipelines?this.createSharedRenderPipeline(t):void 0;(o=this.device.createRenderPipeline({...t,id:t.id?`${t.id}-cached`:(0,a.L)("unnamed-cached"),_sharedRenderPipeline:e})).hash=r,i[r]={resource:o,useCount:1},this.device.props.debugFactories&&s.R.log(3,`${this}: ${o} created, count=${i[r].useCount}`)()}return o}createComputePipeline(e){if(!this.device.props._cachePipelines)return this.device.createComputePipeline(e);let t={...r.C.defaultProps,...e},i=this._computePipelineCache,n=this._hashComputePipeline(t),a=i[n]?.resource;return a?(i[n].useCount++,this.device.props.debugFactories&&s.R.log(3,`${this}: ${i[n].resource} reused, count=${i[n].useCount}, (id=${e.id})`)()):((a=this.device.createComputePipeline({...t,id:t.id?`${t.id}-cached`:void 0})).hash=n,i[n]={resource:a,useCount:1},this.device.props.debugFactories&&s.R.log(3,`${this}: ${a} created, count=${i[n].useCount}`)()),a}release(e){if(!this.device.props._cachePipelines)return void e.destroy();let t=this._getCache(e),i=e.hash;t[i].useCount--,0===t[i].useCount?(this._destroyPipeline(e),this.device.props.debugFactories&&s.R.log(3,`${this}: ${e} released and destroyed`)()):t[i].useCount<0?(s.R.error(`${this}: ${e} released, useCount < 0, resetting`)(),t[i].useCount=0):this.device.props.debugFactories&&s.R.log(3,`${this}: ${e} released, count=${t[i].useCount}`)()}createSharedRenderPipeline(e){let t=this._hashSharedRenderPipeline(e),i=this._sharedRenderPipelineCache[t];return i||(i={resource:this.device._createSharedRenderPipelineWebGL(e),useCount:0},this._sharedRenderPipelineCache[t]=i),i.useCount++,i.resource}releaseSharedRenderPipeline(e){if(!e.sharedRenderPipeline)return;let t=this._hashSharedRenderPipeline(e.sharedRenderPipeline.props),i=this._sharedRenderPipelineCache[t];i&&(i.useCount--,0===i.useCount&&(i.resource.destroy(),delete this._sharedRenderPipelineCache[t]))}_destroyPipeline(e){let t=this._getCache(e);
547return!!this.device.props._destroyPipelines&&(delete t[e.hash],e.destroy(),e instanceof n.r&&this.releaseSharedRenderPipeline(e),!0)}_getCache(e){let t;if(e instanceof r.C&&(t=this._computePipelineCache),e instanceof n.r&&(t=this._renderPipelineCache),!t)throw Error(`${this}`);if(!t[e.hash])throw Error(`${this}: ${e} matched incorrect entry`);return t}_hashComputePipeline(e){let{type:t}=this.device,i=this._getHash(e.shader.source),r=this._getHash(JSON.stringify(e.shaderLayout));return`${t}/C/${i}SL${r}`}_hashRenderPipeline(e){let t=e.vs?this._getHash(e.vs.source):0,i=e.fs?this._getHash(e.fs.source):0,r=this._getWebGLVaryingHash(e),n=this._getHash(JSON.stringify(e.shaderLayout)),s=this._getHash(JSON.stringify(e._uniformBlockLayouts)),a=this._getHash(JSON.stringify(e.bufferLayout)),{type:o}=this.device;if("webgl"===o){let l=this._getHash(JSON.stringify(e.parameters));return`${o}/R/${t}/${i}V${r}T${e.topology}P${l}SL${n}UBL${s}BL${a}`}{let s=this._getHash(JSON.stringify({vertexEntryPoint:e.vertexEntryPoint,fragmentEntryPoint:e.fragmentEntryPoint})),l=this._getHash(JSON.stringify(e.parameters)),u=this._getWebGPUAttachmentHash(e);return`${o}/R/${t}/${i}V${r}T${e.topology}EP${s}P${l}SL${n}BL${a}A${u}`}}_hashSharedRenderPipeline(e){let t=e.vs?this._getHash(e.vs.source):0,i=e.fs?this._getHash(e.fs.source):0,r=this._getWebGLVaryingHash(e);return`webgl/S/${t}/${i}V${r}`}_getHash(e){return void 0===this._hashes[e]&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}_getWebGLVaryingHash(e){let{varyings:t=[],bufferMode:i=null}=e;return this._getHash(JSON.stringify({varyings:t,bufferMode:i}))}_getWebGPUAttachmentHash(e){let t=e.colorAttachmentFormats??[this.device.preferredColorFormat],i=e.depthStencilAttachmentFormat??(e.parameters?.depthWriteEnabled?this.device.preferredDepthF
547ormat:null);return this._getHash(JSON.stringify({colorAttachmentFormats:t,depthStencilAttachmentFormat:i}))}}},31269:(e,t,i)=>{i.d(t,{X:()=>n});var r=i(24486);class n extends r.F{get[Symbol.toStringTag](){return"TextureView"}constructor(e,t){super(e,t,n.defaultProps)}static defaultProps={...r.F.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0}}},31340:(e,t,i)=>{i.d(t,{K:()=>a,r:()=>s});var r=i(37148);let n=/^(vs|fs):(?:#(?:decl|main-start|main-end)|[A-Za-z_][\w-]*)$/;function s(e=[],t){let i=[],r={},n={},a={},l={};for(let s of e)o({modules:i,defines:r,injections:n,vertexInputs:a,varyings:l},s),o({modules:i,defines:r,injections:n,vertexInputs:a,varyings:l},s[t]);for(let e of Object.keys(l))if(a[e])throw Error(`ShaderPlugin name "${e}" cannot be both a vertex input and a varying`);return{modules:i,defines:r,injections:n,vertexInputs:a,varyings:l}}function a(e=[],t=[]){let i=[...e],r=new Set(i.map(e=>e.name));for(let e of t)r.has(e.name)||(i.push(e),r.add(e.name));return i}function o(e,t){if(t){for(let[i,r]of(t.modules?.length&&e.modules.push(...t.modules),t.defines&&Object.assign(e.defines,t.defines),Object.entries(t.vertexInputs||{}))){l(i,"vertex input");let t=e.vertexInputs[i];if(t&&t!==r)throw Error(`ShaderPlugin vertex input "${i}" has conflicting types "${t}" and "${r}"`);e.vertexInputs[i]=r}for(let[i,n]of Object.entries(t.varyings||{})){l(i,"varying");let t=function(e,t){let{primitiveType:i}=r.Co.getAttributeShaderTypeInfo(t.type),n="i32"===i||"u32"===i,s=t.interpolation||(n?"flat":"smooth");if(n&&"smooth"===s)throw Error(`ShaderPlugin integer varying "${e}" must use flat interpolation`);return{type:t.type,interpolation:s}}(i,n),s=e.varyings[i];if(s&&(s.type!==t.type||s.interpolation!==t.interpolation))throw Error(`ShaderPlugin varying "${i}" has conflicting declarations "${s.type}/${s.interpolation}" and "${t.type}/${t.interpolation}"`);e.varyings[i]=t}for(let i of t.injections||[])(function(e){if(!n.test(e))throw Error(`ShaderPlugin injection target "${e}" must be a named shader anchor or hook`)})(i.target),e.injections[i.target]||(e.injections[i.target]=[]),e.injections[i.target].push({injection:i.injection,order:i.order??0})}}function l(e,t){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)||e.startsWith("_luma_"))throw Error(`ShaderPlugin ${t} "${e}" must be a valid non-reserved identifier`)}},33029:(e,t,i)=>{i.d(t,{A:()=>it});var r=i(28284);let n=1,s=1;class a{time=0;channels=new Map;animations=new Map;playing=!1;lastEngineTime=-1;constructor(){}addChannel(e){let{delay:t=0,duration:i=1/0,rate:r=1,repeat:s=1}=e,a=n++,o={time:0,delay:t,duration:i,rate:r,repeat:s};return this._setChannelTime(o,this.time),this.channels.set(a,o),a}removeChannel(e){for(let[t,i]of(this.channels.delete(e),this.animations))i.channel===e&&this.detachAnimation(t)}isFinished(e){let t=this.channels.get(e);return void 0!==t&&this.time>=t.delay+t.duration*t.repeat}getTime(e){if(void 0===e)return this.time;let t=this.channels.get(e);return void 0===t?-1:t.time}setTime(e){for(let t of(this.time=Math.max(0,e),this.channels.values()))this._setChannelTime(t,this.time);for(let e of this.animations.values()){let{animation:t,channel:i}=e;t.setTime(this.getTime(i))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,t){let i=s++;return this.animations.set(i,{animation:e,channel:t}),e.setTime(this.getTime(t)),i}detachAnimation(e){this.animations.delete(e)}update(e){this.playing&&(-1===this.lastEngineTime&&(this.lastEngineTime=e),this.setTime(this.time+(e-this.lastEngineTime)),this.lastEngineTime=e)}_setChannelTime(e,t){let i=t-e.delay;i>=e.duration*e.repeat?e.time=e.duration*e.rate:(e.time=Math.max(0,i)%e.duration,e.time*=e.rate)}}var o=i(71011);let l=[i(92386).A],u=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"],c=[],h=`\
548layout(std140) uniform layerUniforms {
549  uniform float opacity;
550} layer;
551`,d={name:"layer",source:`\
552struct LayerUniforms {
553  opacity: f32,
554};
555
556@group(0) @binding(auto)
557var<uniform> layer: LayerUniforms;
558`,vs:h,fs:h,getUniforms:e=>({opacity:Math.pow(e.opacity,1/2.2)}),uniformTypes:{opacity:"f32"}};var f=i(53666),p=i(50748),g=i(38508),m=i(87208),b=i(22158),v=i(52135);class y{constructor(e,t,i){this._loadCount=0,this._subscribers=new Set,this.id=e,this.context=i,this.setData(t)}subscribe(e){this._subscribers.add(e)}unsubscribe(e){this._subscribers.delete(e)}inUse(){return this._subscribers.size>0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,t){if(e===this._data&&!t)return;this._data=e;let i=++this._loadCount,r=e;for(let t of("string"==typeof e&&(r=(0,v.H)(e)),r instanceof Promise?(this.isLoaded=!1,this._loader=r.then(e=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=e)}).catch(e=>{this._loadCount===i&&(this.isLoaded=!0,this._error=e||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e),this._subscribers))t.onChange(this.getData())}}class _{constructor(e){this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:e.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return!!e.startsWith(this.protocol)||e in this._resources}add({resourceId:e,data:t,forceUpdate:i=!1,persistent:r=!0}){let n=this._resources[e];n?n.setData(t,i):(n=new y(e,t,this._context),this._resources[e]=n),n.persistent=r}remove(e){let t=this._resources[e];t&&(t.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){let t=this._consumers[e];if(t){for(let e in t){let i=t[e],r=this._resources[i.resourceId];r&&r.unsubscribe(i)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:t,consumerId:i,requestId:r="default"}){let{_resources:n,protocol:s}=this;e.startsWith(s)&&(n[e=e.replace(s,"")]||this.add({resourceId:e,data:null,persistent:!1}));let a=n[e];if(this._track(i,r,a,t),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let e in this._resources)this._resources[e].delete()}_track(e,t,i,r){let n=this._consumers,s=n[e]=n[e]||{},a=s[t],o=a&&a.resourceId&&this._resources[a.resourceId];o&&(o.unsubscribe(a),this.prune()),i&&(a?(a.onChange=r,a.resourceId=i.id):a={onChange:r,resourceId:i.id},s[t]=a,i.subscribe(a))}_prune(){for(let e of(this._pruneRequest=null,Object.keys(this._resources))){let t=this._resources[e];t.persistent||t.inUse()||(t.delete(),delete this._resources[e])}}}var w=i(52446);class x{constructor(e,t){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=e=>{(0,g.A)("layerManager.activateViewport",this,e),e&&(this.context.viewport=e)};let{deck:i,stats:r,viewport:n,timeline:s}=t||{};this.layers=[],this.resourceManager=new _({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:i,shaderAssembler:function(e){let t=o._P.getDefaultShaderAssembler(e);for(let e of l)t.addDefaultModule(e);for(let i of(t._hookFunctions.length=0,"glsl"===e?u:c))t.addShaderHook(i);return t}(e?.info?.shadingLanguage||"glsl"),defaultShaderModules:[d],renderPass:void 0,stats:r||new b.Uz({id:"deck.gl"}),viewport:n||new w.A({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:s||new a,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){for(let e of(this.resourceManager.finalize(),this.layers))this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;for(let i of(e.clearRedrawFlags&&(this._needsRedraw=!1),this.layers)){let r=i.getNeedsRedraw(e);t=t||r}return t}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(t=>e.find(e=>0===t.id.indexOf(e))):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers
558),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,t){(0,g.A)("layerManager.setLayers",this,t,e),this._lastRenderedLayers=e;let i=(0,m.B)(e,Boolean);for(let e of i)e.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){let{defaultShaderModules:t}=this.context;t.find(t=>t.name===e.name)||(t.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){let{defaultShaderModules:t}=this.context,i=t.findIndex(t=>t.name===e.name);i>=0&&(t.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(e,t,i){i.raiseError(t,`${e} of ${i}`)}_updateLayers(e,t){let i={};for(let t of e)i[t.id]?p.A.warn(`Multiple old layers with same id ${t.id}`)():i[t.id]=t;if(this._defaultShaderModulesChanged){for(let t of e)t.setNeedsUpdate(),t.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let r=[];this._updateSublayersRecursively(t,i,r),this._finalizeOldLayers(i);let n=!1;for(let e of r)if(e.hasUniformTransition()){n=`Uniform transition in ${e}`;break}this._needsUpdate=n,this.layers=r}_updateSublayersRecursively(e,t,i){for(let r of e){r.context=this.context;let e=t[r.id];null===e&&p.A.warn(`Multiple new layers with same id ${r.id}`)(),t[r.id]=null;let n=null;try{this._debug&&e!==r&&r.validateProps(),e?(this._transferLayerState(e,r),this._updateLayer(r)):this._initializeLayer(r),i.push(r),n=r.isComposite?r.getSubLayers():null}catch(e){this._handleError("matching",e,r)}n&&this._updateSublayersRecursively(n,t,i)}}_finalizeOldLayers(e){for(let t in e){let i=e[t];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=f.VD.INITIALIZED}catch(t){this._handleError("initialization",t,e)}}_transferLayerState(e,t){t._transferState(e),t.lifecycle=f.VD.MATCHED,t!==e&&(e.lifecycle=f.VD.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(t){this._handleError("update",t,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=f.VD.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=f.VD.FINALIZED}catch(t){this._handleError("finalization",t,e)}}}var E=i(90961);let S="default-canvas";class P{constructor(e){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=e.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=e.eventManager,this._eventManagers=e.eventManagers||{},this._viewEventManagers={},this._eventCallbacks={onViewStateChange:e.onViewStateChange,onInteractionStateChange:e.onInteractionStateChange},this._pickPosition=e.pickPosition,this._getCanvasContext=e.getCanvasContext,Object.seal(this),this.setProps(e)}finalize(){for(let e in this.controllers){let t=this.controllers[e];t&&t.finalize()}this.controllers={}}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e,this._needsRedraw=this._needsRedraw||e}updateViewStates(){for(let e in this.controllers){let t=this.controllers[e];t&&t.updateTransition()}}getViewports(e){return e?this._viewports.filter(t=>{let i=!e.canvasId||this.getCanvasId(t.id)===e.canvasId,r=!("x"in e)||t.containsPixel(e);return i&&r}):this._viewports}getViews(){let e={};return this.views.forEach(t=>{e[t.id]=t}),e}getView(e){return this.views.find(t=>t.id===e)}getViewState(e){let t="string"==typeof e?this.getView(e):e,i=t&&this.viewState[t.getViewStateId()]||this.viewState;return t?t.filterViewState(i):i}getViewport(e){return this._viewportMap[e]}getCanvasId(e){let t="string"==typeof e?this.getView(e):e;return t?this._viewEventManagers[t.id]?.canvasId||this._getCanvasIdFromView(t):void 0}unproject(e,t){let i=this.getViewports(),r={x:e[0],y:e[1]};for(let n=i.length-1;n>=0;--n){let s=i[n];if(s.containsPixel(r)){let i=e.slice();return i[0]-=s.x,i[1]-=s.y,s.unproject(i,t)}}return null}
558setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),"pickPosition"in e&&(this._pickPosition=e.pickPosition),"eventManagers"in e&&this._setEventManagers(e.eventManagers||{}),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,t){(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.setNeedsUpdate("Size changed"))}_setViews(e){e=(0,m.B)(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?((0,E.b)(e,this.viewState,3)||this.setNeedsUpdate("viewState changed"),this.viewState=e):p.A.warn("missing `viewState` or `initialViewState`")()}_setEventManagers(e){this._eventManagers!==e&&(this._eventManagers=e,this.setNeedsUpdate("eventManagers changed"))}_getCanvasIdFromView(e){return e.props.canvasId||this._getCanvasContext?.(e.id)?.id||S}_getCanvasDimensions(e){let t=this._getCanvasContext?.(e.id),[i,r]=t?.getCSSSize()||[this.width,this.height];return{width:i,height:r}}_getViewEventManager(e){let t=this.getCanvasId(e)||S;return{canvasId:t,eventManager:this._eventManagers[t]||this._eventManager}}_startViewportRebuild(){let e=this.controllers,t=this._viewEventManagers;return this._viewports=[],this.controllers={},this._viewEventManagers={},{oldControllers:e,oldViewEventManagers:t}}_getReusableController(e,t,i){return e&&(t?.canvasId!==i.canvasId||t?.eventManager!==i.eventManager)?(e.finalize(),null):e}_createController(e,t){return new t.type({timeline:this.timeline,eventManager:this._getViewEventManager(e).eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:t=>this.getView(e.id)?.makeViewport({viewState:t,...this._getCanvasDimensions(e)}),pickPosition:(t,i)=>this._pickPosition?.(t,i,e.id)})}_updateController(e,t,i,r){let n=e.controller;if(n&&i){let s={...t,...n,id:e.id,x:i.x,y:i.y,width:i.width,height:i.height};return r&&r.constructor===n.type||(r=this._createController(e,s)),r&&r.setProps(s),r}return null}_rebuildViewports(){let{views:e}=this,{oldControllers:t,oldViewEventManagers:i}=this._startViewportRebuild(),r=!1;for(let n=e.length;n--;){let s=e[n],{width:a,height:o}=this._getCanvasDimensions(s),l=this._getViewEventManager(s);this._viewEventManagers[s.id]=l;let u=this.getViewState(s),c=s.makeViewport({viewState:u,width:a,height:o}),h=this._getReusableController(t[s.id],i[s.id],l),d=!!s.controller;d&&!h&&(r=!0),(r||!d)&&h&&(h.finalize(),h=null),this.controllers[s.id]=this._updateController(s,u,c,h),c&&this._viewports.unshift(c)}for(let e in t){let i=t[e];i&&!this.controllers[e]&&i.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,t){return e.length!==t.length||e.some((i,r)=>!e[r].equals(t[r]))}}let C=/^(?:\d+\.?\d*|\.\d+)$/;function T(e){switch(typeof e){case"number":if(!Number.isFinite(e))throw Error(`Could not parse position string ${e}`);return{type:"literal",value:e};case"string":try{let t=function(e){let t=[],i=0;for(;i<e.length;){let r=e[i];if(/\s/.test(r)){i++;continue}if("+"===r||"-"===r||"("===r||")"===r||"%"===r){t.push({type:"symbol",value:r}),i++;continue}if(L(r)||"."===r){let n=i,s="."===r;for(i++;i<e.length;){let t=e[i];if(L(t)){i++;continue}if("."===t&&!s){s=!0,i++;continue}break}let a=e.slice(n,i);if(!C.test(a))throw Error("Invalid number token");t.push({type:"number",value:parseFloat(a)});continue}if(k(r)){let r=i;for(;i<e.length&&k(e[i]);)i++;let n=e.slice(r,i).toLowerCase();t.push({type:"word",value:n});continue}throw Error("Invalid token in position string")}return t}(e);return new M(t).parseExpression()}catch(i){let t=i instanceof Error?i.message:String(i);throw Error(`Could not parse position string ${e}: ${t}`)}default:throw Error(`Could not parse position string ${e}`)}}function A(e,t){return function e(t,i){switch(t.type){case"literal":return t.value;case"percentage":return Math.round(t.value*i);case"binary":let r=e(t.left,i),n=e(t.right,i);return"+"===t.operator?r+n:r-n;default:throw Error("Unknown layout expression type")}}(e,t)}class M{constructor(e){this.index=0,this.tokens=e}parseExpression(){let e=this.parseBinaryExpression();if(this.index<this.tokens.length)throw Error("Unexpected token at end of expression");return e}parseBinaryExpression(){var e;let t=this.parseFactor(),i=this.peek();for(;(e=i)&&"symbol"===e.type&&("+"===e.value||"-"===e.value);){this.index++;let e=this.parseFactor();t={type:"binary",operator:i.value,left:t,right:e},i=this.peek()}return t}parseFactor(){let e=this.peek();if(!e)throw Error("Unexpected end of expression");if("symbol"===e.type&&"+"===e.value)return this.index++,this.parseFactor();if("symbol"===e.type&&"-"===e.value)return this.index++,{type:"binary",operator:"-",left:{type:"literal",value:0},right:this.parseFactor()};if("symbol"===e.type&&"("===e.value){this.index++;let e=this.parseBinaryExpression();if(!this.consumeSymbol(")"))throw Error("Missing closing parenthesis");return e}if("word"===e.type&&"calc"===e.value){if(this.index++,!this.consumeSymbol("("))throw Error("Missing opening parenthesis after calc");let e=this.parseBinaryExpression();if(!this.consumeSymbol(")"))throw Error("Missing closing parenthesis");return e}if("number"===e.type){this.index++;let t=e.value,i=this.peek();return i&&"symbol"===i.type&&"%"===i.value?(this.index++,{type:"percentage",value:t/100}
558):(i&&"word"===i.type&&"px"===i.value&&this.index++,{type:"literal",value:t})}throw Error("Unexpected token in expression")}consumeSymbol(e){let t=this.peek();return!!t&&"symbol"===t.type&&t.value===e&&(this.index++,!0)}peek(){return this.tokens[this.index]||null}}function L(e){return e>="0"&&e<="9"}function k(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"}class I{constructor(e){let{id:t,x:i=0,y:r=0,width:n="100%",height:s="100%",padding:a=null}=e;this.id=t||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=T(i),this._y=T(r),this._width=T(n),this._height=T(s),this._padding=a&&{left:T(a.left||0),right:T(a.right||0),top:T(a.top||0),bottom:T(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e||this.constructor===e.constructor&&(0,E.b)(this.props,e.props,2)}clone(e){return new this.constructor({...this.props,...e})}makeViewport({width:e,height:t,viewState:i}){i=this.filterViewState(i);let r=this.getDimensions({width:e,height:t});return r.height&&r.width?new(this.getViewportType(i))({...i,...this.props,...r}):null}getViewStateId(){let{viewState:e}=this.props;return"string"==typeof e?e:e?.id||this.id}filterViewState(e){if(this.props.viewState&&"object"==typeof this.props.viewState){if(!this.props.viewState.id)return this.props.viewState;var t=this.props.viewState;let i={...e};for(let e in t)"id"!==e&&(Array.isArray(i[e])&&Array.isArray(t[e])?i[e]=function(e,t){e=e.slice();for(let i=0;i<t.length;i++){let r=t[i];Number.isFinite(r)&&(e[i]=r)}return e}(i[e],t[e]):i[e]=t[e]);return i}return e}getDimensions({width:e,height:t}){let i={x:A(this._x,e),y:A(this._y,t),width:A(this._width,e),height:A(this._height,t)};return this._padding&&(i.padding={left:A(this._padding.left,e),top:A(this._padding.top,t),right:A(this._padding.right,e),bottom:A(this._padding.bottom,t)}),i}get controller(){let e=this.props.controller;return e?!0===e?{type:this.ControllerType}:"function"==typeof e?{type:e}:{type:this.ControllerType,...e}:null}}var O=i(34809),R=i(85066),B=i(42178);let D=()=>{},F={mode:"preserve"},$={mode:"hard"},z={BREAK:1,SNAP_TO_END:2,IGNORE:3},N=e=>e,j=z.BREAK;class U{constructor(e){this._onTransitionUpdate=e=>{let{time:t,settings:{interpolator:i,startProps:r,endProps:n,duration:s,easing:a}}=e,o=a(t/s),l=i.interpolateProps(r,n,o);this.propsInTransition=this.getControllerState({...this.props,...l},F).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new B.A(e.timeline),this.onViewStateChange=e.onViewStateChange||D,this.onStateChange=e.onStateChange||D}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let t=!1,i=this.props;if(this.props=e,!i||this._shouldIgnoreViewportChange(i,e))return!1;if(this._isTransitionEnabled(e)){let r=i;if(this.transition.inProgress){let{interruption:e,endProps:t}=this.transition.settings;r={...i,...e===z.SNAP_TO_END?t:this.propsInTransition||i}}this._triggerTransition(r,e),t=!0}else this.transition.cancel();return t}updateTransition(){this.transition.update()}_isTransitionEnabled(e){let{transitionDuration:t,transitionInterpolator:i}=e;return(t>0||"auto"===t)&&!!i}_isUpdateDueToCurrentTransition(e){return!!this.transition.inProgress&&!!this.propsInTransition&&this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition)}_shouldIgnoreViewportChange(e,t){return this.transition.inProgress?this.transition.settings.interruption===z.IGNORE||this._isUpdateDueToCurrentTransition(t):!this._isTransitionEnabled(t)||t.transitionInterpolator.arePropsEqual(e,t)}_triggerTransition(e,t){let i=this.getControllerState(e,F),r=this.getControllerState(t,$).shortestPathFrom(i),n=t.transitionInterpolator,s=n.getDuration?n.getDuration(e,t):t.transitionDuration;if(0===s)return;let a=n.initializeProps(e,r);this.propsInTransition={};let o={duration:s,easing:t.transitionEasing||N,interpolator:n,interruption:t.transitionInterruption||j,startProps:a.start,endProps:a.end,onStart:t.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(t.onTransitionInterrupt),onEnd:this._onTransitionEnd(t.onTransitionEnd)};this.transition.start(o),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return t=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e?.(t)}}}var V=i(24972);
558class W{constructor(e){let{compare:t,extract:i,required:r}=e;this._propsToCompare=t,this._propsToExtract=i||t,this._requiredProps=r}arePropsEqual(e,t){for(let i of this._propsToCompare)if(!(i in e)||!(i in t)||!(0,R.aI)(e[i],t[i]))return!1;return!0}initializeProps(e,t){let i={},r={};for(let n of this._propsToExtract)(n in e||n in t)&&(i[n]=e[n],r[n]=t[n]);return this._checkRequiredProps(i),this._checkRequiredProps(r),{start:i,end:r}}getDuration(e,t){return t.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(t=>{let i=e[t];(0,V.A)(Number.isFinite(i)||Array.isArray(i),`${t} is required for transition`)})}}let G=["longitude","latitude","zoom","bearing","pitch"],H=["longitude","latitude","zoom"];class q extends W{constructor(e={}){let t=Array.isArray(e)?e:e.transitionProps,i=Array.isArray(e)?{}:e;i.transitionProps=Array.isArray(t)?{compare:t,required:t}:t||{compare:G,required:H},super(i.transitionProps),this.opts=i}initializeProps(e,t){let i=super.initializeProps(e,t),{makeViewport:r,around:n}=this.opts;if(r&&n){let s=r(e),a=r(t),o=s.unproject(n);i.start.around=n,Object.assign(i.end,{around:a.project(o),aroundPosition:o,width:t.width,height:t.height})}return i}interpolateProps(e,t,i){let r={};for(let n of this._propsToExtract)r[n]=(0,R.Cc)(e[n]||0,t[n]||0,i);if(t.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport({...t,...r});Object.assign(r,n.panByPosition(t.aroundPosition,(0,R.Cc)(e.around,t.around,i)))}return r}}var Y=i(81060);let Z={transitionDuration:0},K=e=>1-(1-e)*(1-e),X=e=>1===e?1:1-Math.pow(2,-10*e),Q={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],DOUBLE_CLICK_DRAG:["dblclickdragstart","dblclickdragmove","dblclickdragend","dblclickdragcancel"],KEYBOARD:["keydown"]},J={};class ee{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this._multiPanMode=null,this._multiPanStartCenter=null,this._doubleClickDragAnchor=null,this._suppressDoubleClickUntil=0,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.doubleClickDragZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.multiTouchDrag=null,this.trackpadGesture=!1,this.zoomAround="pointer",this.keyboard=!0,this.transitionManager=new U({...e,getControllerState:(t,i)=>new this.ControllerState({...t,constraintContext:i,makeViewport:e.makeViewport}),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport,this.pickPosition=e.pickPosition}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(let e in this._events)this._events[e]&&this.eventManager?.off(e,this.handleEvent);this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;let t=this._eventStartBlocked;switch(e.type){case"panstart":return!t&&this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return!t&&!!this._isTrackpadGestureAllowed(e)&&this._onPinchStart(e);case"pinchmove":return!!this._isTrackpadGestureAllowed(e)&&this._onPinch(e);case"pinchend":return!!this._isTrackpadGestureAllowed(e)&&this._onPinchEnd(e);case"multipanstart":return!t&&this._onMultiPanStart(e);case"multipanmove":return this._onMultiPan(e);case"multipanend":return this._onMultiPanEnd(e);case"dblclick":return this._onDoubleClick(e);case"dblclickdragstart":return!t&&this._onDoubleClickDragStart(e);case"dblclickdragmove":return this._onDoubleClickDrag(e);case"dblclickdragend":case"dblclickdragcancel":return this._onDoubleClickDragEnd(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){let{x:t,y:i}=this.props,{offsetCenter:r}=e;return[r.x-t,r.y-i]}getZoomPosition(e){if("pointer"===this.zoomAround)return e;let t=this.makeViewport(this.controllerState.getViewportProps()),[i,r]=(0,Y.VJ)(t.center,t.pixelProjectionMatrix);return[i,r]}isPointInBounds(e,t){let{width:i,height:r}=this.props;if(t&&t.handled)return!1;let n=e[0]>=0&&e[0]<=i&&e[1]>=0&&e[1]<=r;return n&&t&&t.stopPropagation(),n}isFunctionKeyPressed(e){let{srcEvent:t}=e;return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){let t=setTimeout(()=>{this._eventStartBlocked===t&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=t}setProps(e){void 0===e.maxBoundsPadding&&(e.maxBoundsPadding=null),e.dragMode&&(this.dragMode=e.dragMode);let t=this.props;this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);let{inertia:i}=e;this.inertia=Number.isFinite(i)?i:300*(!0===i);let{scrollZoom:r=!0,dragPan:n=!0,dragRotate:s=!0,doubleClickZoom:a=!0,doubleClickDragZoom:o=!1,touchZoom:l=!0,touchRotate:u=!1,multiTouchDrag:c=u?"rotate":null,trackpadGesture:h=!1,zoomAround:d="pointer",keyboard:f=!0}=e,p=!!this.onViewStateChange;if(this.toggleEvents(Q.WHEEL,p&&r),this.toggleEvents(Q.PAN,p),this.toggleEvents(Q.PINCH,p&&(l||"rotate"===c)),this.toggleEvents(Q.MULTI_PAN,p&&!!c),this.toggleEvents(Q.DOUBLE_CLICK,p&&a),this.toggleEvents(Q.DOUBLE_CLICK_DRAG,p&&o),this.toggleEvents(Q.KEYBOARD,p&&f),this.scrollZoom=r,this.dragPan=n,this.dragRotate=s,this.doubleClickZoom=a,this.doubleClickDragZoom=o,this.touchZoom=l,this.touchRotate="rotate"===c,this.multiTouchDrag=c,this.trackpadGesture=h,this.zoomAround=d,this.keyboard=f,(!t||t.height!==e.height||t.width!==e.width||t.maxBounds!==e.maxBounds||t.maxBoundsPadding!==e.maxBoundsPadding)&&e.maxBounds){let t=new this.ControllerState({...e,makeViewport:this.makeViewport}),i=t.getViewportProps();Object.keys(i).some(t=>!(0,E.b)(i[t],e[t],1))&&this.updateViewport(t)}}updateTransition(){this.transitionManager.updateTransition()}
558toggleEvents(e,t){this.eventManager&&e.forEach(e=>{this._events[e]!==t&&(this._events[e]=t,t?this.eventManager.on(e,this.handleEvent):this.eventManager.off(e,this.handleEvent))})}updateViewport(e,t=null,i={}){let r={...e.getViewportProps(),...t},n=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(i),n){let e=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:r,interactionState:this._interactionState,oldViewState:e,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_getConstraintContext(e,t){return this.props.rubberBand?{mode:"update"===t?"elastic":"end"===t?"rebound":"hard"}:{mode:"hard"}}_getReboundTransition(e,t){if("rebound"!==e.mode)return null;let i=t.getViewportProps();return Object.keys(i).some(e=>!(0,E.b)(this.props[e],i[e],1))?{...this._getTransitionProps(),transitionDuration:300,transitionEasing:X}:null}_onPanStart(e){let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||"pan"===this.dragMode)&&(i=!i);let r=i?"pan":"rotate",n=this._getConstraintContext(r,"start"),s=i?this.controllerState.panStart({pos:t},n):this.controllerState.rotateStart({pos:t},n);return this._panMove=i,this.updateViewport(s,Z,{isDragging:!0}),!0}_onPan(e){return!!this.isDragging()&&(this._panMove?this._onPanMove(e):this._onPanRotate(e))}_onPanEnd(e){return!!this.isDragging()&&(this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e))}_onPanMove(e){if(!this.dragPan)return!1;let t=this.getCenter(e),i=this.controllerState.pan({pos:t},this._getConstraintContext("pan","update"));return this.updateViewport(i,Z,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:t}=this;if(this.dragPan&&t&&e.velocity){let i=this.getCenter(e),r=[i[0]+e.velocityX*t/2,i[1]+e.velocityY*t/2],n=this.controllerState.pan({pos:r}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:K},{isDragging:!1,isPanning:!0})}else{let e=this.controllerState,t=this._getConstraintContext("pan","end"),i=e.panEnd(t),r=this._getReboundTransition(t,i);this.updateViewport(i,r,{isDragging:!1,isPanning:!!r})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;let t=this.getCenter(e),i=this.controllerState.rotate({pos:t},this._getConstraintContext("rotate","update"));return this.updateViewport(i,Z,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:t}=this;if(this.dragRotate&&t&&e.velocity){let i=this.getCenter(e),r=[i[0]+e.velocityX*t/2,i[1]+e.velocityY*t/2],n=this.controllerState.rotate({pos:r}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:K},{isDragging:!1,isRotating:!0})}else{let e=this.controllerState,t=this._getConstraintContext("rotate","end"),i=e.rotateEnd(t),r=this._getReboundTransition(t,i);this.updateViewport(i,r,{isDragging:!1,isRotating:!!r})}return!0}_onWheel(e){if(!this.scrollZoom||this.trackpadGesture&&"mouse"!==e.device)return!1;let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;e.srcEvent.preventDefault();let{speed:i=.01,smooth:r=!1}=!0===this.scrollZoom?{}:this.scrollZoom,{delta:n}=e,s=2/(1+Math.exp(-Math.abs(n*i)));n<0&&0!==s&&(s=1/s);let a=this.getZoomPosition(t),o=r?{...this._getTransitionProps({around:a}),transitionDuration:250}:Z,l=this.controllerState.zoom({pos:a,scale:s});return this.updateViewport(l,o,{isZooming:!0,isPanning:!0}),r||this._setInteractionState({isZooming:!1,isPanning:!1}),!0}_onMultiPanStart(e){let{multiTouchDrag:t}=this;if(!t||!this._isMultiPanEventAllowed(e,t))return!1;let i=e.offsetCenter;if(!this.isPointInBounds(this.getCenter(e),e))return!1;let r="trackpad"===e.pointerType,n={x:i.x-(r?0:e.deltaX),y:i.y-(r?0:e.deltaY)},s={...e,offsetCenter:n},a=this.getCenter(s),o="pan"===t?this.controllerState.panStart({pos:a},this._getConstraintContext("pan","start")):this.controllerState.rotateStart({pos:a},this._getConstraintContext("rotate","start"));return this._multiPanMode=t,this._multiPanStartCenter=n,this.updateViewport(o,Z,{isDragging:!0}),!0}_onMultiPan(e){let{mode:t,event:i}=this._getMultiPanEvent(e);return!!t&&!!i&&!!this.isDragging()&&("pan"===t?this._onPanMove(i):this._onPanRotate(i))}_onMultiPanEnd(e){let{mode:t,event:i}=this._getMultiPanEvent(e);
558if(!t||!i||!this.isDragging())return this._resetMultiPan(),!1;let r="pan"===t?this._onPanMoveEnd(i):this._onPanRotateEnd(i);return this._resetMultiPan(),r}_isTrackpadGestureAllowed(e){return"trackpad"!==e.pointerType||this.trackpadGesture}_isMultiPanEventAllowed(e,t){return"trackpad"===e.pointerType?this.trackpadGesture&&("pan"===t?this.dragPan:this.dragRotate):"touch"===e.pointerType&&("pan"===t?this.dragPan:this.dragRotate)}_getMultiPanEvent(e){let t=this._multiPanMode,i=this._multiPanStartCenter;return t&&i?{mode:t,event:{...e,offsetCenter:{x:i.x+e.deltaX,y:i.y+e.deltaY}}}:{mode:null,event:null}}_resetMultiPan(){this._multiPanMode=null,this._multiPanStartCenter=null}_onPinchStart(e){this._doubleClickDragAnchor=null;let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.controllerState.zoomStart({pos:this.getZoomPosition(t)},this._getConstraintContext("zoom","start")).rotateStart({pos:t},this._getConstraintContext("rotate","start"));return J._startPinchRotation=e.rotation,J._lastPinchEvent=e,this.updateViewport(i,Z,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let t=this.controllerState;if(this.touchZoom){let{scale:i}=e,r=this.getCenter(e);t=t.zoom({pos:this.getZoomPosition(r),scale:i},this._getConstraintContext("zoom","update"))}if(this.touchRotate){let{rotation:i}=e;t=t.rotate({deltaAngleX:J._startPinchRotation-i},this._getConstraintContext("rotate","update"))}return this.updateViewport(t,Z,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),J._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:t}=this,{_lastPinchEvent:i}=J;if(this.touchZoom&&t&&i&&e.scale!==i.scale){let r=this.getCenter(e),n=this.getZoomPosition(r),s=this.controllerState.rotateEnd(),a=Math.log2(e.scale),o=(a-Math.log2(i.scale))/(e.deltaTime-i.deltaTime),l=Math.pow(2,a+o*t/2);s=s.zoom({pos:n,scale:l}).zoomEnd(),this.updateViewport(s,{...this._getTransitionProps({around:n}),transitionDuration:t,transitionEasing:K},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(t)}else{let e=this.controllerState,t=this._getConstraintContext("zoom","end"),i=this._getConstraintContext("rotate","end"),r=e.zoomEnd(t).rotateEnd(i),n=this._getReboundTransition(this.touchZoom?t:i,r);this.updateViewport(r,n,{isDragging:!1,isPanning:!!n&&this.touchZoom,isZooming:!!n&&this.touchZoom,isRotating:!!n&&this.touchRotate})}return J._startPinchRotation=null,J._lastPinchEvent=null,!0}_onDoubleClick(e){if(!this.doubleClickZoom||Date.now()<this._suppressDoubleClickUntil)return!1;let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.isFunctionKeyPressed(e),r=this.getZoomPosition(t),n=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(n,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onDoubleClickDragStart(e){if(!this.doubleClickDragZoom)return this._doubleClickDragAnchor=null,!1;let t=this.getCenter(e);if(!this.isPointInBounds(t,e))return this._doubleClickDragAnchor=null,!1;this._doubleClickDragAnchor=this.getZoomPosition(t);let i=this.controllerState.zoomStart({pos:this._doubleClickDragAnchor},this._getConstraintContext("zoom","start"));return 1!==e.scale&&(i=i.zoom({pos:this._doubleClickDragAnchor,scale:e.scale},this._getConstraintContext("zoom","update"))),this.updateViewport(i,Z,{isDragging:!0,isPanning:!0,isZooming:!0}),!0}_onDoubleClickDrag(e){let t=this._doubleClickDragAnchor;if(!t)return!1;let i=this.controllerState.zoom({pos:t,scale:e.scale},this._getConstraintContext("zoom","update"));return this.updateViewport(i,Z,{isDragging:!0,isPanning:!0,isZooming:!0}),!0}_onDoubleClickDragEnd(e){if(!this._doubleClickDragAnchor)return!1;this._doubleClickDragAnchor=null;let t=this.controllerState,i=this._getConstraintContext("zoom","end"),r=t.zoomEnd(i),n=this._getReboundTransition(i,r);return this.updateViewport(r,n,{isDragging:!1,isPanning:!!n,isZooming:!!n}),this._suppressDoubleClickUntil=Date.now()+100,this.blockEvents(100),!0}_onKeyDown(e){let t;if(!this.keyboard)return!1;let i=this.isFunctionKeyPressed(e),{zoomSpeed:r,moveSpeed:n,rotateSpeedX:s,rotateSpeedY:a}=!0===this.keyboard?{}:this.keyboard,{controllerState:o}=this,l={};switch(e.srcEvent.code){case"Minus":t=i?o.zoomOut(r).zoomOut(r):o.zoomOut(r),l.isZooming=!0;break;case"Equal":t=i?o.zoomIn(r).zoomIn(r):o.zoomIn(r),l.isZooming=!0;break;case"ArrowLeft":i?(t=o.rotateLeft(s),l.isRotating=!0):(t=o.moveLeft(n),l.isPanning=!0);break;case"ArrowRight":i?(t=o.rotateRight(s),l.isRotating=!0):(t=o.moveRight(n),l.isPanning=!0);break;case"ArrowUp":i?(t=o.rotateUp(a),l.isRotating=!0):(t=o.moveUp(n),l.isPanning=!0);break;case"ArrowDown":i?(t=o.rotateDown(a),l.isRotating=!0):(t=o.moveDown(n),l.isPanning=!0);break;default:return!1}return this.updateViewport(t,this._getTransitionProps(),l),!0}_getTransitionProps(e){let{transition:t}=this;return t&&t.transitionInterpolator?e?{...t,transitionInterpolator:new q({...e,...t.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:t:Z}}let et=Symbol("constraintAround");class ei{constructor(e,t,i,r){this.makeViewport=i,this._viewportProps=this.applyConstraints(e,r),this._state=t}getViewportProps(){return this._viewportProps}getState(){return this._state}}function er(e,t,i){let r=e-t;return r&&Number.isFinite(r)?t+r*i/(i+Math.abs(r)):t}function en(e,t,i){let r=A(T(i?.left??0),e),n=A(T(i?.right??0),e),s=A(T(i?.top??0),t),a=A(T(i?.bottom??0),t);return{x:r,y:s,width:e-r-n,height:t-s-a}}var es=i(48956);let ea=[[-1/0,-90],[1/0,90]];function eo([e,t]){if(Math.abs(t)>90&&(t=90*Math.sign(t)),Number.isFinite(e)){let[i,r]=(0,Y.Gw)([e,t]);return[i,(0,R.qE)(r,0,512)]}let[,i]=(0,Y.Gw)([0,t]);return[e,(0,R.qE)(i,0,512)]}class el extends ei{constructor(e){let{width:t,height:i,latitude:r,longitude:n,zoom:s,bearing:a=0,pitch:o=0,altitude:l=1.5,position:u=[0,0,0],maxZoom:c=20,minZ
558oom:h=0,maxPitch:d=60,minPitch:f=0,startPanLngLat:p,startZoomLngLat:g,startRotatePos:m,startRotateLngLat:b,startBearing:v,startPitch:y,startZoom:_,normalize:w=!0,rubberBand:x=!1}=e,{[et]:E}=e;(0,V.A)(Number.isFinite(n)),(0,V.A)(Number.isFinite(r)),(0,V.A)(Number.isFinite(s)),super({width:t,height:i,latitude:r,longitude:n,zoom:s,bearing:a,pitch:o,altitude:l,maxZoom:c,minZoom:h,maxPitch:d,minPitch:f,normalize:w,position:u,maxBounds:e.maxBounds||(w?ea:null),maxBoundsPadding:e.maxBoundsPadding||null,rubberBand:x,...{[et]:E}},{startPanLngLat:p,startZoomLngLat:g,startRotatePos:m,startRotateLngLat:b,startBearing:v,startPitch:y,startZoom:_},e.makeViewport,e.constraintContext),this.getAltitude=e.getAltitude}panStart({pos:e},t){return this._getUpdatedState({startPanLngLat:this._unproject(e)},t)}pan({pos:e,startPos:t},i){let r=this.getState().startPanLngLat||this._unproject(t);if(!r)return this;let n=this.makeViewport(this.getViewportProps()).panByPosition(r,e);return this._getUpdatedState(n,i)}panEnd(e){return this._getUpdatedState({startPanLngLat:null},e)}rotateStart({pos:e}){let t=this.getAltitude?.(e);return this._getUpdatedState({startRotatePos:e,startRotateLngLat:void 0!==t?this._unproject3D(e,t):void 0,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:t=0,deltaAngleY:i=0}){let r,{startRotatePos:n,startRotateLngLat:s,startBearing:a,startPitch:o}=this.getState();if(!n||void 0===a||void 0===o)return this;if(r=e?this._getNewRotation(e,n,o,a):{bearing:a+t,pitch:o+i},s){let e=this.makeViewport({...this.getViewportProps(),...r}),t="panByPosition3D"in e?"panByPosition3D":"panByPosition";return this._getUpdatedState({...r,...e[t](s,n)})}return this._getUpdatedState(r)}rotateEnd(){return this._getUpdatedState({startRotatePos:null,startRotateLngLat:null,startBearing:null,startPitch:null})}zoomStart({pos:e},t){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom},t)}zoom({pos:e,startPos:t,scale:i},r){let{startZoom:n,startZoomLngLat:s}=this.getState();return(s||(n=this.getViewportProps().zoom,s=this._unproject(t)||this._unproject(e)),s)?this._getUpdatedState({zoom:n+Math.log2(i),[et]:{position:s,screenPosition:e}},r):this}zoomEnd(e){return this._getUpdatedState({startZoomLngLat:null,startZoom:null},e)}zoomIn(e=2,t){return this._zoomFromCenter(e,t)}zoomOut(e=2,t){return this._zoomFromCenter(1/e,t)}moveLeft(e=100,t){return this._panFromCenter([e,0],t)}moveRight(e=100,t){return this._panFromCenter([-e,0],t)}moveUp(e=100,t){return this._panFromCenter([0,e],t)}moveDown(e=100,t){return this._panFromCenter([0,-e],t)}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){let t=e.getViewportProps(),i={...this.getViewportProps()},{bearing:r,longitude:n}=i;return Math.abs(r-t.bearing)>180&&(i.bearing=r<0?r+360:r-360),Math.abs(n-t.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(e,t){let i=e[et];delete e[et];let{maxPitch:r,minPitch:n,pitch:s,bearing:a,normalize:o,maxBounds:l,rubberBand:u}=e;o&&(a<-180||a>180)&&(e.bearing=(0,es.zi)(a+180,360)-180),e.pitch=(0,R.qE)(s,n,r);let c=this._constrainZoom(e.zoom,e),h=u&&t?.mode==="elastic";if(e.zoom=t?.mode==="preserve"?e.zoom:h?er(e.zoom,c,1):c,i){let t=this.makeViewport(e);Object.assign(e,t.panByPosition(i.position,i.screenPosition))}if(o&&(e.longitude<-180||e.longitude>180)&&(e.longitude=(0,es.zi)(e.longitude+180,360)-180),l){let i=en(e.width,e.height,e.maxBoundsPadding),r=function(e,t,i){let[r,n]=e.project(t);return r=Number.isFinite(r)?r:e.width/2,n=Number.isFinite(n)?n:e.height/2,{left:r-i.x,right:i.x+i.width-r,top:n-i.y,bottom:i.y+i.height-n}}(this.makeViewport({...e,bearing:0,pitch:0}),[e.longitude,e.latitude],i),n=eo(l[0]),s=eo(l[1]),a=2**e.zoom,o=[n[0]+r.left/a,n[1]+r.bottom/a],u=[s[0]-r.right/a,s[1]-r.top/a],c=eo([e.longitude,e.latitude]),d=[(0,R.qE)(c[0],o[0],u[0]),(0,R.qE)(c[1],o[1],u[1])],f=c.slice();if(i.width>=0&&(f[0]=t?.mode==="preserve"?c[0]:h?er(c[0],d[0],i.width/2/a):d[0]),i.height>=0&&(f[1]=t?.mode==="preserve"?c[1]:h?er(c[1],d[1],i.height/2/a):d[1]),f[0]!==c[0]||f[1]!==c[1]){let[t,i]=(0,Y.iV)(f);f[0]!==c[0]&&(e.longitude=t),f[1]!==c[1]&&(e.latitude=i)}}return e}_constrainZoom(e,t){t||(t=this.getViewportProps());let{maxZoom:i,maxBounds:r}=t,n=null!==r&&t.width>0&&t.height>0,{minZoom:s}=t;if(n){let e=en(t.width,t.height,t.maxBoundsPadding),n=eo(r[0]),a=eo(r[1]),o=a[0]-n[0],l=a[1]-n[1];e.width>0&&Number.isFinite(o)&&o>0&&(s=Math.max(s,Math.log2(e.width/o))),e.height>0&&Number.isFinite(l)&&l>0&&(s=Math.max(s,Math.log2(e.height/l))),s>i&&(s=i)}return(0,R.qE)(e,s,i)}_zoomFromCenter(e,t){let{width:i,height:r}=this.getViewportProps();return this.zoom({pos:[i/2,r/2],scale:e},t)}_panFromCenter(e,t){let{width:i,height:r}=this.getViewportProps();return this.pan({startPos:[i/2,r/2],pos:[i/2+e[0],r/2+e[1]]},t)}_getUpdatedState(e,t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.get
558State(),...e,constraintContext:t})}_unproject(e){let t=this.makeViewport(this.getViewportProps());return e&&t.unproject(e)}_unproject3D(e,t){return this.makeViewport(this.getViewportProps()).unproject(e,{targetZ:t})}_getNewRotation(e,t,i,r){let n=e[0]-t[0],s=e[1]-t[1],a=e[1],o=t[1],{width:l,height:u}=this.getViewportProps(),c=0;s>0?Math.abs(u-o)>5&&(c=s/(o-u)*1.2):s<0&&o>5&&(c=1-a/o),c=(0,R.qE)(c,-1,1);let{minPitch:h,maxPitch:d}=this.getViewportProps(),f=i;return c>0?f=i+c*(d-i):c<0&&(f=i-c*(h-i)),{pitch:f,bearing:r+n/l*180}}}class eu extends ee{constructor(){super(...arguments),this.ControllerState=el,this.transition={transitionDuration:300,transitionInterpolator:new q({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan",this.rotationPivot="center",this._getAltitude=e=>{if("2d"===this.rotationPivot)return 0;if("3d"===this.rotationPivot&&this.pickPosition){let{x:t,y:i}=this.props,r=this.pickPosition(t+e[0],i+e[1]);if(r&&r.coordinate&&r.coordinate.length>=3)return r.coordinate[2]}}}setProps(e){"rotationPivot"in e&&(this.rotationPivot=e.rotationPivot||"center"),e.getAltitude=this._getAltitude,e.position=e.position||[0,0,0],e.maxBounds=e.maxBounds||(!1===e.normalize?null:ea),super.setProps(e)}updateViewport(e,t=null,i={}){let r=e.getState();i.isDragging&&r.startRotateLngLat?i={...i,rotationPivotPosition:r.startRotateLngLat}:!1===i.isDragging&&(i={...i,rotationPivotPosition:void 0}),super.updateViewport(e,t,i)}}class ec extends I{constructor(e={}){super(e)}getViewportType(){return O.A}get ControllerType(){return eu}}ec.displayName="MapView";let eh=[255,255,255],ed=0;class ef{constructor(e={}){this.type="ambient";let{color:t=eh}=e,{intensity:i=1}=e;this.id=e.id||`ambient-${ed++}`,this.color=t,this.intensity=i}}var ep=i(65558);let eg=[255,255,255],em=[0,0,-1],eb=0;class ev{constructor(e={}){this.type="directional";let{color:t=eg}=e,{intensity:i=1}=e,{direction:r=em}=e,{_shadow:n=!1}=e;this.id=e.id||`directional-${eb++}`,this.color=t,this.intensity=i,this.type="directional",this.direction=new ep.P(r).normalize().toArray(),this.shadow=n}getProjectedLight(e){return this}}var ey=i(18151);class e_{constructor(e,t={id:"pass"}){let{id:i}=t;this.id=i,this.device=e,this.props={...t}}setProps(e){Object.assign(this.props,e)}render(e){}cleanup(){}}let ew={depthWriteEnabled:!0,depthCompare:"less-equal",blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"one-minus-src-alpha",blendAlphaOperation:"add",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one-minus-src-alpha"};class ex extends e_{constructor(){super(...arguments),this._lastRenderIndex=-1}render(e){this._render(e)}_render(e){let{canvasContext:t=this.device.canvasContext}=e,i=e.target??t.getCurrentFramebuffer(),[r,n]=t.getDrawingBufferSize(),s=e.clearCanvas??!0,a=e.clearColor??(!!s&&[0,0,0,0]),o=!!s&&1,l=!!s&&
5580,u=e.colorMask??15,c={viewport:[0,0,r,n]};e.colorMask&&(c.colorMask=u),e.scissorRect&&(c.scissorRect=e.scissorRect);let{shaderModuleProps:h,viewports:d,views:f,onViewportActive:p,clearStack:g=!0}=e,m=e.pass||"unknown",b="webgpu"===this.device.type;g&&(this._lastRenderIndex=-1);let v=[];if(!d.length)return this.device.beginRenderPass({framebuffer:i,parameters:c,clearColor:a,clearDepth:o,clearStencil:l}).end(),this.device.submit(),v;try{for(let r of d){p?.(r);let n=this._getDrawLayerParams(r,e),s=f&&f[r.id],u=r.subViewports||[r];for(let r of b?u.map(e=>[e]):[u]){let u=this.device.beginRenderPass({framebuffer:i,parameters:c,clearColor:a,clearDepth:o,clearStencil:l});try{for(let a of r){let r=this._drawLayersInViewport(u,{target:i,canvasContext:t,shaderModuleProps:h,viewport:a,view:s,pass:m,layers:e.layers,isPicking:e.isPicking},n);v.push(r)}}finally{u.end(),b&&this.device.submit()}a=!1,o=!1,l=!1}}return v}finally{b||this.device.submit()}}_getDrawLayerParams(e,{layers:t,pass:i,isPicking:r=!1,layerFilter:n,cullRect:s,views:a,effects:o,canvasContext:l=this.device.canvasContext,shaderModuleProps:u},c=!1){let h=[],d=function e(t=0,i={}){let r={},n=(s,a)=>{let o,l=s.props._offset,u=s.id,c=s.parent&&s.parent.id;if(!c||c in i||n(s.parent,!1),c in r){let t=r[c]=r[c]||e(i[c],i);o=t(s,a),r[u]=t}else Number.isFinite(l)?(o=l+(i[c]||0),r[u]=null):o=t;return a&&o>=t&&(t=o+1),i[u]=o,o};return n}(this._lastRenderIndex+1),f={layer:t[0],viewport:e,isPicking:r,renderPass:i,cullRect:s},p={};for(let r=0;r<t.length;r++){let s=t[r],g=this._shouldDrawLayer(s,f,n,p),m={shouldDrawLayer:g};g&&!c&&(m.shouldDrawLayer=!0,m.layerRenderIndex=d(s,g),m.shaderModuleProps=this._getShaderModuleProps(s,o,i,l,u),m.layerParameters={..."webgpu"===s.context.device.type?ew:null,...s.context.deck?.props.parameters,...a?.[e.id]?.props.parameters,...this.getLayerParameters(s,r,e)}),h[r]=m}return h}_drawLayersInViewport(e,{layers:t,shaderModuleProps:i,pass:r,target:n,canvasContext:s,viewport:a,view:o,isPicking:l},u){let c=function(e,{canvasContext:t=e.canvasContext,shaderModuleProps:i,target:r,viewport:n}){let s=i?.project?.devicePixelRatio??t.cssToDeviceRatio(),[,a]=t.getDrawingBufferSize(),o=r?r.height:a;return[n.x*s,o-(n.y+n.height)*s,n.width*s,n.height*s]}(this.device,{canvasContext:s,shaderModuleProps:i,target:n,viewport:a});if(o){let{clear:e,clearColor:t,clearDepth:i,clearStencil:r}=o.props;if(e){let e=[0,0,0,0],s=1,a=0;Array.isArray(t)&&!l?e=[...t.slice(0,3),t[3]||255].map(e=>e/255):!1===t&&(e=!1),void 0!==i&&(s=i),void 0!==r&&(a=r),this.device.beginRenderPass({framebuffer:n,parameters:{viewport:c,scissorRect:c},clearColor:e,clearDepth:s,clearStencil:a}).end()}}let h={totalCount:t.length,visibleCount:0,compositeCount:0,pickableCount:0};e.setParameters({viewport:c});for(let i=0;i<t.length;i++){let n=t[i],s=u[i],{shouldDrawLayer:o}=s;if(o&&n.props.pickable&&h.pickableCount++,n.isComposite&&h.compositeCount++,n.isDrawable&&s.shouldDrawLayer){let{layerRenderIndex:t,shaderModuleProps:i,layerParameters:o}=s;h.visibleCount++,this._lastRenderIndex=Math.max(this._lastRenderIndex,t),i.project&&(i.project.viewport=a),n.context.renderPass=e;try{n._drawLayer({renderPass:e,shaderModuleProps:i,uniforms:{layerIndex:t},parameters:o})}catch(e){n.raiseError(e,`drawing ${n} to ${r}`)}}}return h}shouldDrawLayer(e){return!0}getShaderModuleProps(e,t,i){return null}getLayerParameters(e,t,i){return e.props.parameters}_shouldDrawLayer(e,t,i,r){if(!(e.props.visible&&this.shouldDrawLayer(e)))return!1;t.layer=e;let n=e.parent;for(;n;){if(!n.props.visible||!n.filterSubLayer(t))return!1;t.layer=n,n=n.parent}if(i){let e=t.layer.id;if(e in r||(r[e]=i(t)),!r[e])return!1}return e.activateViewport(t.viewport),!0}_getShaderModuleProps(e,t,i,r,n){let s=r.cssToDeviceRatio(),a=e.internalState?.propsInTransition||e.props,o={layer:a,picking:{isActive:!1},project:{viewport:e.context.viewport,devicePixelRatio:s,modelMatrix:a.modelMatrix,coordinateSystem:a.coordinateSystem,coordinateOrigin:a.coordinateOrigin,autoWrapLongitude:e.wrapLongitude}};if(t)for(let i of t)eE(o,i.getShaderModuleProps?.(e,o));for(let t of e.context.defaultShaderModules)t.name in o||(o[t.name]={});
558return eE(o,this.getShaderModuleProps(e,t,o),n)}}function eE(e,...t){for(let i of t)if(i)for(let t in i)e[t]?Object.assign(e[t],i[t]):e[t]=i[t];return e}class eS extends ex{constructor(e,t){super(e,t);let i=e.createTexture({format:"rgba8unorm",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),r=e.createTexture({format:"depth16unorm",width:1,height:1});this.fbo=e.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[i],depthStencilAttachment:r})}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null)}getShadowMap(){return this.fbo.colorAttachments[0].texture}render(e){let t=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),r=e.viewports[0],n=r.width*i,s=r.height*i;(n!==t.width||s!==t.height)&&t.resize({width:n,height:s}),super.render({...e,clearColor:[1,1,1,1],target:t,pass:"shadow"})}getLayerParameters(e,t,i){return{...e.props.parameters,blend:!1,depthWriteEnabled:!0,depthCompare:"less-equal"}}shouldDrawLayer(e){return!1!==e.props.shadowEnabled}getShaderModuleProps(e,t,i){return{shadow:{project:i.project,drawToShadowMap:!0}}}}var eP=i(59465),eC=i(16452),eT=i(90994),eA=i(1609);let eM=`
559layout(std140) uniform shadowUniforms {
560  bool drawShadowMap;
561  bool useShadowMap;
562  vec4 color;
563  highp int lightId;
564  float lightCount;
565  mat4 viewProjectionMatrix0;
566  mat4 viewProjectionMatrix1;
567  vec4 projectCenter0;
568  vec4 projectCenter1;
569} shadow;
570`,eL=`
571const int max_lights = 2;
572
573out vec3 shadow_vPosition[max_lights];
574
575vec4 shadow_setVertexPosition(vec4 position_commonspace) {
576  mat4 viewProjectionMatrices[max_lights];
577  viewProjectionMatrices[0] = shadow.viewProjectionMatrix0;
578  viewProjectionMatrices[1] = shadow.viewProjectionMatrix1;
579  vec4 projectCenters[max_lights];
580  projectCenters[0] = shadow.projectCenter0;
581  projectCenters[1] = shadow.projectCenter1;
582
583  if (shadow.drawShadowMap) {
584    return project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[shadow.lightId], projectCenters[shadow.lightId]);
585  }
586  if (shadow.useShadowMap) {
587    for (int i = 0; i < max_lights; i++) {
588      if(i < int(shadow.lightCount)) {
589        vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[i], projectCenters[i]);
590        shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;
591      }
592    }
593  }
594  return gl_Position;
595}
596`,ek=`
597${eM}
598${eL}
599`,eI=`
600const int max_lights = 2;
601uniform sampler2D shadow_uShadowMap0;
602uniform sampler2D shadow_uShadowMap1;
603
604in vec3 shadow_vPosition[max_lights];
605
606const vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);
607const vec4 bitUnpackShift = 1.0 / bitPackShift;
608const vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0,  0.0);
609
610float shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {
611  vec4 rgbaDepth = texture(shadowMap, position.xy);
612
613  float z = dot(rgbaDepth, bitUnpackShift);
614  return smoothstep(0.001, 0.01, position.z - z);
615}
616
617vec4 shadow_filterShadowColor(vec4 color) {
618  if (shadow.drawShadowMap) {
619    vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);
620    rgbaDepth -= rgbaDepth.gbaa * bitMask;
621    return rgbaDepth;
622  }
623  if (shadow.useShadowMap) {
624    float shadowAlpha = 0.0;
625    shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);
626    if(shadow.lightCount > 1.0) {
627      shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);
628    }
629    shadowAlpha *= shadow.color.a / shadow.lightCount;
630    float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);
631
632    return vec4(
633      mix(color.rgb, shadow.color.rgb, shadowAlpha / blendedAlpha),
634      blendedAlpha
635    );
636  }
637  return color;
638}
639`,eO=`
640${eM}
641${eI}
642`,eR=(0,eT.A)(function({viewport:e,center:t}){return new ey.k(e.viewProjectionMatrix).invert().transform(t)}),eB=(0,eT.A)(function({viewport:e,shadowMatrices:t}){let i=[],r=e.pixelUnprojectionMatrix,n=e.isGeospatial?void 0:1,s=[[0,0,n],[e.width,0,n],[0,e.height,n],[e.width,e.height,n],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(e=>(function(e,t){let[i,r,n]=e,s=(0,Y.xJ)([i,r,n],t);return Number.isFinite(n)?s:[s[0],s[1],0]})(e,r));for(let r of t){let t=r.clone().translate(new ep.P(e.center).negate()),n=s.map(e=>t.transform(e)),a=new ey.k().ortho({left:Math.min(...n.map(e=>e[0])),right:Math.max(...n.map(e=>e[0])),bottom:Math.min(...n.map(e=>e[1])),top:Math.max(...n.map(e=>e[1])),near:Math.min(...n.map(e=>-e[2])),far:Math.max(...n.map(e=>-e[2]))});i.push(a.multiplyRight(r))}return i}),eD=[0,0,0,1],eF=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],e$={name:"shadow",dependencies:[eC.A],vs:ek,fs:eO,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
643    position = shadow_setVertexPosition(geometry.position);
644    `,"fs:DECKGL_FILTER_COLOR":`
645    color = shadow_filterShadowColor(color);
646    `},getUniforms:function(e){let{shadowEnabled:t=!0,project:i}=e;if(!t||!i||!e.shadowMatrices||!e.shadowMatrices.length)return{drawShadowMap:!1,useShadowMap:!1,shadow_uShadowMap0:e.dummyShadowMap,shadow_uShadowMap1:e.dummyShadowMap};let r=eC.A.getUniforms(i),n=eR({viewport:i.viewport,center:r.center}),s=[],a=eB({shadowMatrices:e.shadowMatrices,viewport:i.viewport}).slice();for(let t=0;t<e.shadowMatrices.length;t++){let e=a[t],o=e.clone().translate(new ep.P(i.viewport.center).negate());
646r.coordinateSystem===(0,eA.LB)("lnglat")&&r.projectionMode===eP.Kx.WEB_MERCATOR?(a[t]=o,s[t]=n):(a[t]=e.clone().multiplyRight(eF),s[t]=o.transform(n))}let o={drawShadowMap:!!e.drawToShadowMap,useShadowMap:!!e.shadowMaps&&e.shadowMaps.length>0,color:e.shadowColor||eD,lightId:e.shadowLightId||0,lightCount:e.shadowMatrices.length,shadow_uShadowMap0:e.dummyShadowMap,shadow_uShadowMap1:e.dummyShadowMap};for(let e=0;e<a.length;e++)o[`viewProjectionMatrix${e}`]=a[e],o[`projectCenter${e}`]=s[e];for(let t=0;t<2;t++)o[`shadow_uShadowMap${t}`]=e.shadowMaps&&e.shadowMaps[t]||e.dummyShadowMap;return o},uniformTypes:{drawShadowMap:"f32",useShadowMap:"f32",color:"vec4<f32>",lightId:"i32",lightCount:"f32",viewProjectionMatrix0:"mat4x4<f32>",viewProjectionMatrix1:"mat4x4<f32>",projectCenter0:"vec4<f32>",projectCenter1:"vec4<f32>"}},ez={color:[255,255,255],intensity:1},eN=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],ej=[0,0,0,200/255];class eU{constructor(e={}){this.id="lighting-effect",this.shadowColor=ej,this.shadow=!1,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.dummyShadowMap=null,this.setProps(e)}setup(e){this.context=e;let{device:t,deck:i}=e;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(t),i._addDefaultShaderModule(e$),this.dummyShadowMap=t.createTexture({width:1,height:1}))}setProps(e){for(let t in this.ambientLight=void 0,this.directionalLights=[],this.pointLights=[],e){let i=e[t];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i)}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(e=>e.shadow),this.context&&this.setup(this.context),this.props=e}preRender({layers:e,layerFilter:t,viewports:i,onViewportActive:r,views:n}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let s=0;s<this.shadowPasses.length;s++)this.shadowPasses[s].render({layers:e,layerFilter:t,viewports:i,onViewportActive:r,views:n,shaderModuleProps:{shadow:{shadowLightId:s,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}}})}}getShaderModuleProps(e,t){let i=this.shadow?{project:t.project,shadowMaps:this.shadowPasses.map(e=>e.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},r={enabled:!0,lights:this._getLights(e)},n=e.props.material;return{shadow:i,lighting:r,phongMaterial:n,gouraudMaterial:n}}cleanup(e){for(let e of this.shadowPasses)e.delete();this.shadowPasses.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,e.deck._removeDefaultShaderModule(e$))}_calculateMatrices(){let e=[];for(let t of this.directionalLights){let i=new ey.k().lookAt({eye:new ep.P(t.direction).negate()});e.push(i)}return e}_createShadowPasses(e){for(let t=0;t<this.directionalLights.length;t++){let i=new eS(e);this.shadowPasses[t]=i}}_applyDefaultLights(){let{ambientLight:e,pointLights:t,directionalLights:i}=this;e||0!==t.length||0!==i.length||(this.ambientLight=new ef(ez),this.directionalLights.push(new ev(eN[0]),new ev(eN[1])))}_getLights(e){let t=[];for(let i of(this.ambientLight&&t.push(this.ambientLight),this.pointLights))t.push(i.getProjectedLight({layer:e}));for(let i of this.directionalLights)t.push(i.getProjectedLight({layer:e}));return t}}let eV=new eU;class eW{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){let t=this._defaultEffects;if(!t.find(t=>t.id===e.id)){let i=t.findIndex(t=>{var i,r;return i=t,r=e,(i.order??1/0)-(r.order??1/0)>0});i<0?t.push(e):t.splice(i,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&!(0,E.b)(e.effects,this.effects,1)&&this._setEffects(e.effects)}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}getEffects(){return this._resolvedEffects}_setEffects(e){let t={};for(let e of this.effects)t[e.id]=e;let i=[];for(let r of e){let e=t[r.id],n=r;e&&e!==r?e.setProps?(e.setProps(r.props),n=e):e.cleanup(this._context):e||r.setup(this._context),i.push(n),delete t[r.id]}for(let e in t)t[e].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),e.some(e=>e instanceof eU)||this._resolvedEffects.push(eV),this._needsRedraw="effects changed"}finalize(){for(let e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}}class eG extends ex{shouldDrawLayer(e){let{operation:t}=e.props;return t.includes("draw")||t.includes("terrain")}render(e){return this._render(e)}}let eH={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"
646constant",blendAlphaDstFactor:"zero"};class eq extends ex{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):{decodePickingColor:null,stats:super._render(e)}}_drawPickingBuffer({layers:e,layerFilter:t,views:i,viewports:r,onViewportActive:n,pickingFBO:s,deviceRect:{x:a,y:o,width:l,height:u},cullRect:c,effects:h,pass:d="picking",pickZ:f,canvasContext:p,shaderModuleProps:g,clearColor:m}){this.pickZ=f;let b=this._resetColorEncoder(f),v=super._render({target:s,layers:e,layerFilter:t,views:i,viewports:r,onViewportActive:n,cullRect:c,effects:h?.filter(e=>e.useInPicking),pass:d,canvasContext:p,isPicking:!0,shaderModuleProps:g,clearColor:m??[0,0,0,0],colorMask:15,scissorRect:[a,o,l,u]});return this._colorEncoderState=null,{decodePickingColor:b&&eZ.bind(null,b),stats:v}}shouldDrawLayer(e){let{pickable:t,operation:i}=e.props;return t&&i.includes("draw")||i.includes("terrain")||i.includes("mask")}getShaderModuleProps(e,t,i){return{picking:{isActive:1,isAttribute:this.pickZ,disabledPickingIndices:e.internalState?.disabledPickingIndices},lighting:{enabled:!1}}}getLayerParameters(e,t,i){let r={...e.props.parameters},{pickable:n,operation:s}=e.props;return this._colorEncoderState?n&&s.includes("draw")?(Object.assign(r,eH),r.blend=!0,"webgpu"===this.device.type?r.blendConstant=eY(this._colorEncoderState,e,i):r.blendColor=eY(this._colorEncoderState,e,i),s.includes("terrain")&&e.state?._hasPickingCover&&(r.blendAlphaSrcFactor="one")):s.includes("terrain")&&(r.blend=!1):r.blend=!1,r}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}}function eY(e,t,i){let r,{byLayer:n,byAlpha:s}=e,a=n.get(t);return a?(a.viewports.push(i),r=a.a):(r=n.size+1)<=255?(a={a:r,layer:t,viewports:[i]},n.set(t,a),s[r]=a):(p.A.warn("Too many pickable layers, only picking the first 255")(),r=0),[0,0,0,r/255]}function eZ(e,t){let i=e.byAlpha[t[3]];return i&&{pickedLayer:i.layer,pickedViewports:i.viewports,pickedObjectIndex:i.layer.decodePickingColor(t)}}class eK{constructor(e,t={}){this.device=e,this.stats=t.stats,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new eG(e),this.pickLayersPass=new eq(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){let t=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};if(!e.viewports.length){let e=t.render(i),r="stats"in e?e.stats:e;this._updateStats(r);return}i.effects&&this._preRender(i.effects,i);let r=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);let n=t.render({...i,target:r}),s="stats"in n?n.stats:n;i.effects&&(this.lastPostProcessEffect&&(i.clearCanvas=void 0===e.clearCanvas||e.clearCanvas),this._postRender(i.effects,i)),this.renderCount++,(0,g.A)("deckRenderer.renderLayers",this,s,e),this._updateStats(s)}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}finalize(){let{renderBuffers:e}=this;for(let t of e)t.delete();e.length=0}_updateStats(e){if(!this.stats)return;let t=0;for(let{visibleCount:i}of e)t+=i;this.stats.get("Layers rendered").addCount(t)}_preRender(e,t){for(let i of(this.lastPostProcessEffect=null,t.preRenderStats=t.preRenderStats||{},e))t.preRenderStats[i.id]=i.preRender(t),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers(t.canvasContext)}_resizeRenderBuffers(e=this.device.canvasContext){let{renderBuffers:t}=this,i=e.getDrawingBufferSize(),[r,n]=i;for(let e of(0===t.length&&[0,1].map(e=>{let i=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:r,height:n});
646t.push(this.device.createFramebuffer({id:`deck-renderbuffer-${e}`,colorAttachments:[i]}))}),t))e.resize(i)}_postRender(e,t){let{renderBuffers:i}=this,r=t.target??t.canvasContext?.getCurrentFramebuffer()??t.target,n={...t,inputBuffer:i[0],swapBuffer:i[1]};for(let t of e)if(t.postRender){n.target=t.id===this.lastPostProcessEffect?r:void 0;let e=t.postRender(n);n.inputBuffer=e,n.swapBuffer=e===i[0]?i[1]:i[0]}}}var eX=i(82493),eQ=i(20296);let eJ={pickedColor:null,pickedObjectIndex:-1};function e0({pickedColors:e,decodePickingColor:t,deviceX:i,deviceY:r,deviceRadius:n,deviceRect:s}){let{x:a,y:o,width:l,height:u}=s,c=n*n,h=-1,d=0;for(let t=0;t<u;t++){let n=t+o-r,s=n*n;if(s>c)d+=4*l;else for(let t=0;t<l;t++){if(e[d+3]-1>=0){let e=t+a-i,r=e*e+s;r<=c&&(c=r,h=d)}d+=4}}if(h>=0){let i=e.slice(h,h+4),r=t(i);if(r){let e=Math.floor(h/4/l),t=h/4-e*l;return{...r,pickedColor:i,pickedX:a+t,pickedY:o+e}}p.A.error("Picked non-existent layer. Is picking buffer corrupt?")()}return eJ}function e1({pickedColors:e,decodePickingColor:t}){let i=new Map;if(e){for(let r=0;r<e.length;r+=4)if(e[r+3]-1>=0){let n=e.slice(r,r+4),s=n.join(",");if(!i.has(s)){let e=t(n);e?i.set(s,{...e,color:n}):p.A.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(i.values())}function e2({pickInfo:e,viewports:t,pixelRatio:i,x:r,y:n,z:s}){let a,o=t[0];if(t.length>1&&(o=function(e,t){for(let i=e.length-1;i>=0;i--){let r=e[i];if(r.containsPixel(t))return r}return e[0]}(e?.pickedViewports||t,{x:r,y:n})),o){let e=[r-o.x,n-o.y];void 0!==s&&(e[2]=s),a=o.unproject(e)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:r,y:n,pixel:[r,n],coordinate:a,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:i}}function e3(e){let{pickInfo:t,lastPickedInfo:i,mode:r,layers:n}=e,{pickedColor:s,pickedLayer:a,pickedObjectIndex:o}=t,l=a?[a]:[];if("hover"===r){let e=i.index,t=i.layerId,r=a?a.props.id:null;if(r!==t||o!==e){if(r!==t){let e=n.find(e=>e.props.id===t);e&&l.unshift(e)}i.layerId=r,i.index=o,i.info=null}}let u=e2(e),c=new Map;return c.set(null,u),l.forEach(e=>{let t={...u};e===a&&(t.color=s,t.index=o,t.picked=!0);let n=(t=e6({layer:e,info:t,mode:r})).layer;e===a&&"hover"===r&&(i.info=t),c.set(n.id,t),"hover"===r&&n.updateAutoHighlight(t)}),c}function e6({layer:e,info:t,mode:i}){for(;e&&t;){let r=t.layer||null;t.sourceLayer=r,t.layer=e,t=e.getPickingInfo({info:t,mode:i,sourceLayer:r}),e=e.parent}return t}class e4{constructor(e,t={}){this._pickable=!0,this.device=e,this.stats=t.stats,this.pickLayersPass=new eq(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}
646pickObjectAsync(e){return this._pickClosestObjectAsync(e)}pickObjectsAsync(e){return this._pickVisibleObjectsAsync(e)}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:t,layers:i,viewports:r},n=this.lastPickedInfo.info){let s=n&&n.layer&&n.layer.id,a=n&&n.viewport&&n.viewport.id,o=s?i.find(e=>e.id===s):null,l=a&&r.find(e=>e.id===a)||r[0],u=l&&l.unproject([e-l.x,t-l.y]);return{...n,x:e,y:t,viewport:l,coordinate:u,layer:o}}_resizeBuffer(e=this.device.getDefaultCanvasContext()){if(!this.pickingFBO){let e=this.device.createTexture({format:"rgba8unorm",width:1,height:1,usage:eX.g.RENDER_ATTACHMENT|eX.g.COPY_SRC});if(this.pickingFBO=this.device.createFramebuffer({colorAttachments:[e],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float")){let e=this.device.createTexture({format:"rgba32float",width:1,height:1,usage:eX.g.RENDER_ATTACHMENT|eX.g.COPY_SRC}),t=this.device.createFramebuffer({colorAttachments:[e],depthStencilAttachment:"depth16unorm"});this.depthFBO=t}}let[t,i]=e.getDrawingBufferSize();this.pickingFBO?.resize({width:t,height:i}),this.depthFBO?.resize({width:t,height:i})}_getPickable(e){if(!1===this._pickable)return null;let t=e.filter(e=>this.pickLayersPass.shouldDrawLayer(e)&&!e.isComposite);return t.length?t:null}async _pickClosestObjectAsync({layers:e,views:t,viewports:i,x:r,y:n,radius:s=0,depth:a=1,mode:o="query",unproject3D:l,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:c,effects:h}){let d,f=u.cssToDeviceRatio(),p=this._getPickable(e);if(!p||0===i.length)return{result:[],emptyInfo:e2({viewports:i,x:r,y:n,pixelRatio:f})};this._resizeBuffer(u);let g=u.cssToDevicePixels([r,n],!0),m=[g.x+Math.floor(g.width/2),g.y+Math.floor(g.height/2)],b=Math.round(s*f),{width:v,height:y}=this.pickingFBO,_=this._getPickingRect({deviceX:m[0],deviceY:m[1],deviceRadius:b,deviceWidth:v,deviceHeight:y}),w={x:r-s,y:n-s,width:2*s+1,height:2*s+1},x=[],E=new Set;for(let e=0;e<a;e++){let s,g;if(_){let e=await this._drawAndSampleAsync({layers:p,views:t,viewports:i,onViewportActive:c,deviceRect:_,cullRect:w,effects:h,pass:`picking:${o}`,canvasContext:u});s=e0({...e,deviceX:m[0],deviceY:m[1],deviceRadius:b,deviceRect:_})}else s={pickedColor:null,pickedObjectIndex:-1};let v=this._getDepthLayers(s,p,l);if(v.length>0){let{pickedColors:e}=await this._drawAndSampleAsync({layers:v,views:t,viewports:i,onViewportActive:c,deviceRect:{x:s.pickedX??m[0],y:s.pickedY??m[1],width:1,height:1},cullRect:w,effects:h,pass:`picking:${o}:z`,canvasContext:u},!0);e[3]&&(g=e[0])}for(let t of(s.pickedLayer&&e+1<a&&(E.add(s.pickedLayer),s.pickedLayer.disablePickingIndex(s.pickedObjectIndex)),(d=e3({pickInfo:s,lastPickedInfo:this.lastPickedInfo,mode:o,layers:p,viewports:i,x:r,y:n,z:g,pixelRatio:f})).values()))t.layer&&x.push(t);if(!s.pickedColor)break}for(let e of E)e.restorePickingColors();return{result:x,emptyInfo:d.get(null)}}_pickClosestObject({layers:e,views:t,viewports:i,x:r,y:n,radius:s=0,depth:a=1,mode:o="query",unproject3D:l,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:c,effects:h}){let d,f=u.cssToDeviceRatio(),p=this._getPickable(e);if(!p||0===i.length)return{result:[],emptyInfo:e2({viewports:i,x:r,y:n,pixelRatio:f})};this._resizeBuffer(u);let g=u.cssToDevicePixels([r,n],!0),m=[g.x+Math.floor(g.width/2),g.y+Math.floor(g.height/2)],b=Math.round(s*f),{width:v,height:y}=this.pickingFBO,_=this._getPickingRect({deviceX:m[0],deviceY:m[1],deviceRadius:b,deviceWidth:v,deviceHeight:y}),w={x:r-s,y:n-s,width:2*s+1,height:2*s+1},x=[],E=new Set;for(let e=0;e<a;e++){let s,g;if(_){let e=this._drawAndSample({layers:p,views:t,viewports:i,onViewportActive:c,deviceRect:_,cullRect:w,effects:h,pass:`picking:${o}`,canvasContext:u});s=e0({...e,deviceX:m[0],deviceY:m[1],deviceRadius:b,deviceRect:_})}else s={pickedColor:null,pickedObjectIndex:-1};let v=this._getDepthLayers(s,p,l);if(v.length>0){let{pickedColors:e}=this._drawAndSample({layers:v,views:t,viewports:i,onViewportActive:c,deviceRect:{x:s.pickedX??m[0],y:s.pickedY??m[1],width:1,height:1},cullRect:w,effects:h,pass:`picking:${o}:z`,canvasContext:u},!0);e[3]&&(g=e[0])}for(let t of(s.pickedLayer&&e+1<a&&(E.add(s.pickedLayer),s.pickedLayer.disablePickingIndex(s.pickedObjectIndex)),(d=e3({pickInfo:s,lastPickedInfo:this.lastPickedInfo,mode:o,layers:p,viewports:i,x:r,y:n,z:g,pixelRatio:f}
646)).values()))t.layer&&x.push(t);if(!s.pickedColor)break}for(let e of E)e.restorePickingColors();return{result:x,emptyInfo:d.get(null)}}async _pickVisibleObjectsAsync({layers:e,views:t,viewports:i,x:r,y:n,width:s=1,height:a=1,mode:o="query",maxObjects:l=null,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:c,effects:h}){let d=this._getPickable(e);if(!d||0===i.length)return[];this._resizeBuffer(u);let f=u.cssToDeviceRatio(),p=u.cssToDevicePixels([r,n],!0),g=p.x,m=p.y+p.height,b=u.cssToDevicePixels([r+s,n+a],!0),v=b.x+b.width,y=b.y,_=await this._drawAndSampleAsync({layers:d,views:t,viewports:i,onViewportActive:c,deviceRect:{x:g,y:y,width:v-g,height:m-y},cullRect:{x:r,y:n,width:s,height:a},effects:h,pass:`picking:${o}`,canvasContext:u}),w=e1(_),x=new Map,E=[],S=Number.isFinite(l);for(let e=0;e<w.length&&(!S||!(E.length>=l));e++){let t=w[e],i={color:t.pickedColor,layer:null,index:t.pickedObjectIndex,picked:!0,x:r,y:n,pixelRatio:f},s=(i=e6({layer:t.pickedLayer,info:i,mode:o})).layer.id;x.has(s)||x.set(s,new Set);let a=x.get(s),l=i.object??i.index;a.has(l)||(a.add(l),E.push(i))}return E}_pickVisibleObjects({layers:e,views:t,viewports:i,x:r,y:n,width:s=1,height:a=1,mode:o="query",maxObjects:l=null,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:c,effects:h}){let d=this._getPickable(e);if(!d||0===i.length)return[];this._resizeBuffer(u);let f=u.cssToDeviceRatio(),p=u.cssToDevicePixels([r,n],!0),g=p.x,m=p.y+p.height,b=u.cssToDevicePixels([r+s,n+a],!0),v=b.x+b.width,y=b.y,_=this._drawAndSample({layers:d,views:t,viewports:i,onViewportActive:c,deviceRect:{x:g,y:y,width:v-g,height:m-y},cullRect:{x:r,y:n,width:s,height:a},effects:h,pass:`picking:${o}`,canvasContext:u}),w=e1(_),x=new Map,E=[],S=Number.isFinite(l);for(let e=0;e<w.length&&(!S||!(E.length>=l));e++){let t=w[e],i={color:t.pickedColor,layer:null,index:t.pickedObjectIndex,picked:!0,x:r,y:n,pixelRatio:f},s=(i=e6({layer:t.pickedLayer,info:i,mode:o})).layer.id;x.has(s)||x.set(s,new Set);let a=x.get(s),l=i.object??i.index;a.has(l)||(a.add(l),E.push(i))}return E}async _drawAndSampleAsync({layers:e,views:t,viewports:i,onViewportActive:r,deviceRect:n,cullRect:s,effects:a,pass:o,canvasContext:l},u=!1){let c=u?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:t,viewports:i,onViewportActive:r,pickingFBO:c,deviceRect:n,cullRect:s,effects:a,pass:o,canvasContext:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let e of a)e.useInPicking&&(h.preRenderStats[e.id]=e.preRender(h));let{decodePickingColor:d,stats:f}=this.pickLayersPass.render(h);this._updateStats(f);let{x:g,y:m,width:b,height:v}=n,y=c.colorAttachments[0]?.texture;if(!y)throw Error("Picking framebuffer color attachment is missing");let _=await this._readTextureDataAsync(y,{x:g,y:m,width:b,height:v},u?Float32Array:Uint8Array);if(!u){let e=!1;for(let t=3;t<_.length;t+=4)if(0!==_[t]){e=!0;break}!e&&_.length>0&&p.A.warn("Async pick readback returned only zero alpha values",{deviceRect:n,bytes:Array.from(_.subarray(0,Math.min(_.length,16)))})()}return{pickedColors:_,decodePickingColor:d}}async _readTextureDataAsync(e,t,i){let{width:r,height:n}=t,s=e.computeMemoryLayout(t),a=this.device.createBuffer({byteLength:s.byteLength,usage:eQ.h.COPY_DST|eQ.h.MAP_READ});try{e.readBuffer(t,a);let o=await a.readAsync(0,s.byteLength),l=i.BYTES_PER_ELEMENT;if(s.bytesPerRow%l!=0)throw Error(`Texture readback row stride ${s.bytesPerRow} is not aligned to ${l}-byte elements.`);let u=new i(o.buffer,o.byteOffset,s.byteLength/l),c=4*r,h=s.bytesPerRow/l;if(h<c)throw Error(`Texture readback row stride ${h} is smaller than packed row length ${c}.`);let d=new i(r*n*4);for(let e=0;e<n;e++){let t=e*h;d.set(u.subarray(t,t+c),e*c)}return d}finally{a.destroy()}}_drawAndSample({layers:e,views:t,viewports:i,onViewportActive:r,deviceRect:n,cullRect:s,effects:a,pass:o,canvasContext:l},u=!1){let c=u?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:t,viewports:i,onViewportActive:r,pickingFBO:c,deviceRect:n,cullRect:s,effects:a,pass:o,canvasContext:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let e of a)e.useInPicking&&(h.preRenderStats[e.id]=e.preRender(h));let{decodePickingColor:d,stats:f}=this.pickLayersPass.render(h);this._updateStats(f);let{x:p,y:g,width:m,height:b}=n,v=new(u?Float32Array:Uint8Array)(m*b*4);return this.device.readPixelsToArrayWebGL(c,{sourceX:p,sourceY:g,sourceW
646idth:m,sourceHeight:b,target:v}),{pickedColors:v,decodePickingColor:d}}_updateStats(e){if(!this.stats)return;let t=0;for(let{visibleCount:i}of e)t+=i;this.stats.get("Layers picked").addCount(t)}_getDepthLayers(e,t,i){if(!i||!this.depthFBO)return[];let{pickedLayer:r}=e,n=r?.state?.terrainDrawMode==="drape";return r&&!n?[r]:t.filter(e=>e.props.operation.includes("terrain"))}_getPickingRect({deviceX:e,deviceY:t,deviceRadius:i,deviceWidth:r,deviceHeight:n}){let s=Math.max(0,e-i),a=Math.max(0,t-i),o=Math.min(r,e+i+1)-s,l=Math.min(n,t+i+1)-a;return o<=0||l<=0?null:{x:s,y:a,width:o,height:l}}}let e5={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},e8="root";class e9{constructor({deck:e,parentElement:t}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,t?.classList.add("deck-widget-container"),this.parentElement=t}getWidgets(){return this.resolvedWidgets}setProps(e){if(e.widgets&&!(0,E.b)(e.widgets,this.widgets,1)){let t=e.widgets.filter(Boolean);this._setWidgets(t)}}finalize(){for(let e of this.getWidgets())this._removeWidget(e);for(let e in this.defaultWidgets.length=0,this.resolvedWidgets.length=0,this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(t=>t.id===e.id)||(this._addWidget(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}onRedraw({viewports:e,layers:t}){let i=e.reduce((e,t)=>(e[t.id]=t,e),{});for(let r of this.getWidgets()){let{viewId:n}=r;if(n){let e=i[n];e&&(r.onViewportChange&&r.onViewportChange(e),r.onRedraw?.({viewports:[e],layers:t}))}else{if(r.onViewportChange)for(let t of e)r.onViewportChange(t);r.onRedraw?.({viewports:e,layers:t})}}this.lastViewports=i,this._updateContainers()}onHover(e,t){for(let i of this.getWidgets()){let{viewId:r}=i;r&&r!==e.viewport?.id||i.onHover?.(e,t)}}getCanvasBounds(e){let t=this.deck?.getCanvas?.(),i=t?.getBoundingClientRect(),r=this.parentElement?.getBoundingClientRect(),n=this.deck?.getCanvasContext?.(e?.id);if(n&&r){n.updatePosition();let[e,t]=n.getPosition(),[i,s]=n.getCSSSize();return{x:e-r.left,y:t-r.top,width:i,height:s}}return{x:i&&r?i.left-r.left:0,y:i&&r?i.top-r.top:0,width:i?.width||this.deck?.width||0,height:i?.height||this.deck?.height||0}}onEvent(e,t){let i=eP.tg[t.type];if(i)for(let r of this.getWidgets()){let{viewId:n}=r;n&&n!==e.viewport?.id||r[i]?.(e,t)}}_setWidgets(e){let t={};for(let e of this.resolvedWidgets)t[e.id]=e;for(let e of(this.resolvedWidgets.length=0,this.defaultWidgets))t[e.id]=null,this.resolvedWidgets.push(e);for(let i of e){let e=t[i.id];e?e.viewId!==i.viewId||e.placement!==i.placement?(this._removeWidget(e),this._addWidget(i)):i!==e&&(e.setProps(i.props),i=e):this._addWidget(i),t[i.id]=null,this.resolvedWidgets.push(i)}for(let e in t){let i=t[e];i&&this._removeWidget(i)}this.widgets=e}_addWidget(e){let{viewId:t=null,placement:i="top-left"}=e,r=e.props._container??t;e.widgetManager=this,e.deck=this.deck,e.rootElement=e._onAdd({deck:this.deck,viewId:t}),e.rootElement&&this._getContainer(r,i).append(e.rootElement),e.updateHTML()}_removeWidget(e){e.onRemove?.(),e.rootElement&&e.rootElement.remove(),e.rootElement=void 0,e.deck=void 0,e.widgetManager=void 0}_getContainer(e,t){if(e&&"string"!=typeof e)return e;let i=e||e8,r=this.containers[i];r||((r=document.createElement("div")).style.pointerEvents="none",r.style.position="absolute",r.style.overflow="hidden",this.parentElement?.append(r),this.containers[i]=r);let n=r.querySelector(`.${t}`);return n||((n=globalThis.document.createElement("div")).className=t,n.style.position="absolute",n.style.zIndex="2",Object.assign(n.style,e5[t]),r.append(n)),n}_updateContainers(){for(let e in this.containers){let t=this.lastViewports[e]||null,i=e===e8||t,r=this.containers[e];if(i){let e=this._getContainerBounds(t);r.style.display="block",r.style.left=`${e.x}px`,r.style.top=`${e.y}px`,r.style.width=`${e.width}px`,r.style.height=`${e.height}px`}else r.style.display="none"}}_getContainerBounds(e){if(!e)return{x:0,y:0,width:this.parentElement?.clientWidth||this.deck.width,height:this.parentElement?.clientHeight||this.deck.height};let t=this.getCanvasBounds(e);return{x:t.x+e.x,y:t.y+e.y,width:e.width,height:e.height}}}function e7(e,t){t&&Object.entries(t).map(([t,i])=>{t.startsWith("--")?e.style.setProperty(t,i):e.style[t]=i})}class te{constructor(e){this.viewId=null,this.props={...this.constructor.defaultProps,...e},this.id=this.props.id}setProps(e){let t=this.props,i=this.rootElement;if(i&&t.className!==e.className&&(t.className&&i.classList.remove(t.className),e.className&&i.classList.add(e.className)),i&&!(0,E.b)(t.style,e.style,1)){var r;(r=t.style)&&Object.keys(r).map(e=>
646{e.startsWith("--")?i.style.removeProperty(e):i.style[e]=""}),e7(i,e.style)}Object.assign(this.props,e),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}get viewIds(){return this.viewId?[this.viewId]:this.deck?.getViews().map(e=>e.id)??[]}getViewState(e){return this.deck?.viewManager?.getViewState(e)||{}}setViewState(e,t){this.deck?._onViewStateChange({viewId:e,viewState:t,interactionState:{}})}onCreateRootElement(){let e=["deck-widget",this.className,this.props.className],t=document.createElement("div");return e.filter(e=>"string"==typeof e&&e.length>0).forEach(e=>t.classList.add(e)),e7(t,this.props.style),t}_onAdd(e){return this.onAdd(e)??this.onCreateRootElement()}onAdd(e){}onRemove(){}onViewportChange(e){}onRedraw(e){}onHover(e,t){}onClick(e,t){}onDrag(e,t){}onDragStart(e,t){}onDragEnd(e,t){}}te.defaultProps={id:"widget",style:{},_container:null,className:""};let tt={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"};class ti extends te{constructor(e={}){super(e),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(e)}onCreateRootElement(){let e=document.createElement("div");return e.className=this.className,Object.assign(e.style,tt),e}onRenderHTML(e){}onViewportChange(e){this.isVisible&&e.id===this.lastViewport?.id&&!e.equals(this.lastViewport)&&this.setTooltip(null),this.lastViewport=e}onHover(e){let{deck:t}=this,i=t&&t.props.getTooltip;if(!i)return;let r=i(e),n=this.widgetManager?.getCanvasBounds(e.viewport),s=e.x+(n?.x||0),a=e.y+(n?.y||0);this.setTooltip(r,s,a)}setTooltip(e,t,i){let r=this.rootElement;if(r){if("string"==typeof e)r.innerText=e;else if(e)e.text&&(r.innerText=e.text),e.html&&(r.innerHTML=e.html),e.className&&(r.className=e.className);else{this.isVisible=!1,r.style.display="none";return}this.isVisible=!0,r.style.display="block",r.style.transform=`translate(${t}px, ${i}px)`,e&&"object"==typeof e&&"style"in e&&Object.assign(r.style,e.style)}}}ti.defaultProps={...te.defaultProps};class tr{constructor(e){this.targets={},this.order=[],this.eventManagers={},this._eventRootToCanvasId=new WeakMap,this._createEventManager=e.createEventManager,this._getEventRoot=e.getEventRoot}finalize(){for(let e of Object.values(this.targets))e.eventManager.destroy(),e.presentationContext.destroy();this.targets={},this.order=[],this.eventManagers={},this._eventRootToCanvasId=new WeakMap}syncCanvasEntries(e){let t=this._normalizeCanvasList(e.canvases),i={},r=[],n=new Map;for(let{canvas:e}of t){let t=this._getEventRoot(e);n.set(t,(n.get(t)||0)+1)}for(let{id:s,canvas:a}of t){let t=this._getEventRoot(a),o=1===n.get(t)?t:a,l=this.targets[s];if(!l||l.device!==e.device||l.canvas!==a||l.eventRoot!==o){l?.eventManager.destroy(),l?.presentationContext.destroy();let t=e.device.createPresentationContext({id:s,canvas:a,useDevicePixels:e.useDevicePixels,autoResize:!0});l={id:s,device:e.device,canvas:a,eventRoot:o,presentationContext:t,eventManager:this._createEventManager(o)}}this._eventRootToCanvasId.set(o,s),this._eventRootToCanvasId.set(a,s),i[s]=l,r.push(s)}for(let[e,t]of Object.entries(this.targets))i[e]||(t.eventManager.destroy(),t.presentationContext.destroy());this.targets=i,this.order=r;let s=Object.fromEntries(Object.entries(i).map(([e,t])=>[e,t.eventManager]));this._haveSameEventManagers(s)||(this.eventManagers=s)}getCanvasIdFromEvent(e){return e?this._eventRootToCanvasId.get(e):void 0}getTarget(e){return this.targets[e||this.order[0]||S]||null}_normalizeCanvasList(e=[]){let t=new Set;return e.map((e,i)=>{let r,n;return"string"==typeof e?(r=document.getElementById(e),(0,V.A)(r,`Canvas with id ${e} not found`),n=e):n=(r=e).id||`deckgl-canvas-${i}`,(0,V.A)(!t.has(n),`Duplicate canvas id ${n}`),t.add(n),{id:n,canvas:r}})}_haveSameEventManagers(e){let t=Object.keys(e),i=Object.keys(this.eventManagers);return t.length===i.length&&t.every(t=>e[t]===this.eventManagers[t])}}var tn=i(60864),ts=i(57516),ta=i(95675),to=i(11911);let tl=globalThis.loaders?.parseImageNode,tu="undefined"!=typeof Image,tc="undefined"!=typeof ImageBitmap,th=!!to.Bd||!!tl,td=/^data:image\/svg\+xml/,tf=/\.svg((\?|#).*)?$/;function tp(e){return e&&(td.test(e)||tf.test(e))}function tg(e,t){if(tp(t))throw Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function tm(e,t,i){let r=function(e,t){if(tp(t)){let t=new TextDecoder().decode(e);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(t=unescape(encodeURIComponent(t)))}catch(e){throw Error(e.message)}return`data:image/svg+xml;base64,${btoa(t)}`}return tg(e,t)}
646(e,i),n=self.URL||self.webkitURL,s="string"!=typeof r&&n.createObjectURL(r);try{return await tb(s||r,t)}finally{s&&n.revokeObjectURL(s)}}async function tb(e,t){let i=new Image;return(i.src=e,t.image&&t.image.decode&&i.decode)?(await i.decode(),i):await new Promise((e,t)=>{try{i.onload=()=>e(i),i.onerror=e=>{let i=e instanceof Error?e.message:"error";t(Error(i))}}catch(e){t(e)}})}let tv=!0;async function ty(e,t,i){let r;r=tp(i)?await tm(e,t,i):tg(e,i);let n=t&&t.imagebitmap;return await t_(r,n)}async function t_(e,t=null){if((function(e){if(!e)return!0;for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}(t)||!tv)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(e){console.warn(e),tv=!1}return await createImageBitmap(e)}function tw(e){let t=tx(e);return function(e){let t=tx(e);return t.byteLength>=24&&0x89504e47===t.getUint32(0,!1)?{mimeType:"image/png",width:t.getUint32(16,!1),height:t.getUint32(20,!1)}:null}(t)||function(e){let t=tx(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,!1)&&255===t.getUint8(2)))return null;let{tableMarkers:i,sofMarkers:r}=function(){let e=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)e.add(t);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}(),n=2;for(;n+9<t.byteLength;){let e=t.getUint16(n,!1);if(r.has(e))return{mimeType:"image/jpeg",height:t.getUint16(n+5,!1),width:t.getUint16(n+7,!1)};if(!i.has(e))break;n+=2,n+=t.getUint16(n,!1)}return null}(t)||function(e){let t=tx(e);return t.byteLength>=10&&0x47494638===t.getUint32(0,!1)?{mimeType:"image/gif",width:t.getUint16(6,!0),height:t.getUint16(8,!0)}:null}(t)||function(e){let t=tx(e);return t.byteLength>=14&&16973===t.getUint16(0,!1)&&t.getUint32(2,!0)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,!0),height:t.getUint32(22,!0)}:null}(t)||function(e){var t;let i=!function(e,t,i=0){let r=[...t].map(e=>e.charCodeAt(0));for(let t=0;t<r.length;++t)if(r[t]!==e[t+i])return!1;return!0}(t=new Uint8Array(e instanceof DataView?e.buffer:e),"ftyp",4)||(96&t[8])==0?null:function(e){switch(String.fromCharCode(...e.slice(8,12)).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}(t);return i?{mimeType:i.mimeType,width:0,height:0}:null}(t)}function tx(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw Error("toDataView")}async function tE(e,t){let{mimeType:i}=tw(e)||{},r=globalThis.loaders?.parseImageNode;return(0,ta.v)(r),await r(e,i)}let tS={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:"4.5.2",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],parse:async function e(e,t,i){let r,n=((t=t||{}).image||{}).type||"auto",{url:s}=i||{};switch(function(e){switch(e){case"auto":case"data":if(tc)return"imagebitmap";if(tu)return"image";if(th)return"data";throw Error("Install '@loaders.gl/polyfills' to parse images under Node.js");default:return!function(e){switch(e){case"auto":return tc;case"imagebitmap":case"image":case"data":return;default:throw Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}(e),e}}(n)){case"imagebitmap":r=await ty(e,t,s);break;case"image":r=await tm(e,t,s);break;case"data":r=await tE(e,t);break;default:(0,ta.v)(!1)}return"data"===n&&(r=function(e){switch(function(e){var t;let i=(t=e,"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?"imagebitmap":"undefined"!=typeof Image&&t instanceof Image?"image":t&&"object"==typeof t&&t.data&&t.width&&t.height?"data":null);if(!i)throw Error("Not an image");return i}(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),i=t.getContext("2d");if(!i)throw Error("getImageData");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0),i.getImageData(0,0,e.width,e.height);default:throw Error("getImageData")}}(r)),r},tests:[e=>!!tw(new DataView(e))],options:{image:{type:"auto",decode:!0}}},tP={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:function(e){let t=e[0],i=e[e.length-1];return"{"===t&&"}"===i||"["===t&&"]"===i},parseTextSync:JSON.parse},tC=function(){let e="9.4.0",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw Error(`deck.gl - multiple versions detected: ${t} vs ${e}`);return t||(p.A.log(1,`deck.gl ${e}`)(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:p.A,_registerLoggers:g.k},(0,ts.mk)([tP,[tS,{imagebitmap:{premultiplyAlpha:"none"}}]])),e}();var tT=i(25927),tA=i(82139),tM=i(72868);let tL="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.";class tk{static defaultProps={...tT.M,type:"best-available",adapters:void 0,waitForPageLoad:!0};stats=tA.d;log=tM.R;VERSION="9.4.2";spector;preregisteredAdapters=new Map;constructor(){if(globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw tM.R.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),tM.R.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),Error("luma.gl - multiple versions detected: see console log");tM.R.error("This version of luma.gl has already been initialized")()}tM.R.log(1,`${this.VERSION} - set luma.log.level=1 (or higher) to trace rendering`)(),globalThis.luma=this}async createDevice(e={}){let t={...tk.defaultProps,...e},i=this.selectAdapter(t.type,t.adapters);if(!i)throw Error(tL);return t.waitForPageLoad&&await i.pageLoaded,await i.create(t)}async attachDevice(e,t){let i=this._getTypeFromHandle(e,t.adapters),r=i&&this.selectAdapter(i,t.adapters);if(!r)throw Error(tL);return await r?.attach?.(e,t)}registerAdapters(e){for(let t of e)this.preregisteredAdapters.set(t.type,t)}
646getSupportedAdapters(e=[]){return Array.from(this._getAdapterMap(e)).map(([,e])=>e).filter(e=>e.isSupported?.()).map(e=>e.type)}getBestAvailableAdapterType(e=[]){let t=this._getAdapterMap(e);for(let e of["webgpu","webgl","null"])if(t.get(e)?.isSupported?.())return e;return null}selectAdapter(e,t=[]){let i=e;"best-available"===e&&(i=this.getBestAvailableAdapterType(t));let r=this._getAdapterMap(t);return i&&r.get(i)||null}enforceWebGL2(e=!0,t=[]){let i=this._getAdapterMap(t).get("webgl");i||tM.R.warn("enforceWebGL2: webgl adapter not found")(),i?.enforceWebGL2?.(e)}setDefaultDeviceProps(e){Object.assign(tk.defaultProps,e)}_getAdapterMap(e=[]){let t=new Map(this.preregisteredAdapters);for(let i of e)t.set(i.type,i);return t}_getTypeFromHandle(e,t=[]){return e instanceof WebGL2RenderingContext?"webgl":"undefined"!=typeof GPUDevice&&e instanceof GPUDevice||e?.queue?"webgpu":null===e?"null":(e instanceof WebGLRenderingContext?tM.R.warn("WebGL1 is not supported",e)():tM.R.warn("Unknown handle type",e)(),null)}}let tI=new tk;var tO=i(76850);class tR{get pageLoaded(){return tD||(tD=tB&&"complete"===document.readyState||"undefined"==typeof window?Promise.resolve():new Promise(e=>window.addEventListener("load",()=>e()))),tD}}let tB=(0,tO.B)()&&"undefined"!=typeof document,tD=null;var tF=i(23024);let t$={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}};var tz=i(81258);class tN extends tR{type="webgl";enforceWebGL2(e){!function(e=!0){let t=HTMLCanvasElement.prototype;if(!e&&t.originalGetContext){t.getContext=t.originalGetContext,t.originalGetContext=void 0;return}t.originalGetContext=t.getContext,t.getContext=function(e,t){if("webgl"===e||"experimental-webgl"===e){let e=this.originalGetContext("webgl2",t);return e instanceof HTMLElement&&function(e){e.getExtension("EXT_color_buffer_float");let t={...t$,WEBGL_disjoint_timer_query:e.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:{drawBuffersWEBGL:t=>e.drawBuffers(t),COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067},OES_vertex_array_object:{VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES:()=>e.createVertexArray(),deleteVertexArrayOES:t=>e.deleteVertexArray(t),isVertexArrayOES:t=>e.isVertexArray(t),bindVertexArrayOES:t=>e.bindVertexArray(t)},ANGLE_instanced_arrays:{VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE:(...t)=>e.drawArraysInstanced(...t),drawElementsInstancedANGLE:(...t)=>e.drawElementsInstanced(...t),vertexAttribDivisorANGLE:(...t)=>e.vertexAttribDivisor(...t)}},i=e.getExtension.bind(e);e.getExtension=function(e){let r=i(e);return r||(e in t?t[e]:null)};let r=e.getSupportedExtensions;e.getSupportedExtensions=function(){let i=r.apply(e)||[];return i?.concat(Object.keys(t))}}(e),e}return this.originalGetContext(e,t)}}(e)}isSupported(){return"undefined"!=typeof WebGL2RenderingContext}isDeviceHandle(e){return!!("undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext)||("undefined"!=typeof WebGLRenderingContext&&e instanceof WebGLRenderingContext&&tM.R.warn("WebGL1 is not supported",e)(),!1)}async attach(e,t={}){var r;let{WebGLDevice:n}=await Promise.resolve().then(i.bind(i,28284));if(e instanceof n)return e;let s=n.getDeviceFromContext(e);if(s)return s;if(r=e,!("undefined"!=typeof WebGL2RenderingContext&&r instanceof WebGL2RenderingContext)&&(!r||"function"!=typeof r.createVertexArray))throw Error("Invalid WebGL2RenderingContext");t=tU(t),await tV(t);let a=!0===t.createCanvasContext?{}:t.createCanvasContext;return new n({...t,_handle:e,createCanvasContext:{canvas:e.canvas,autoResize:!1,...a}})}async create(e={}){let{WebGLDevice:t}=await Promise.resolve().then(i.bind(i,28284));e=tU(e),await tV(e);try{let i=new t(e);tM.R.groupCollapsed(1,`WebGLDevice ${i.id} created`)();let r=`\
647${i._reused?"Reusing":"Created"} device with WebGL2 ${i.props.debug?"debug ":""}context: \
648${i.info.vendor}, ${i.info.renderer} for canvas: ${i.canvasContext.id}`;return tM.R.probe(1,r)(),tM.R.table(1,i.info)(),i}finally{tM.R.groupEnd(1)(),tM.R.info(1,"%cWebGL call tracing: luma.log.set('debug-webgl') ","color: white; background: blue; padding: 2px 6px; border-radius: 3px;")()}}}let tj=new tN;function tU(e){return{...e,debug:e.debug??tF.pF.defaultProps.debug,debugWebGL:e.debugWebGL??tF.pF.defaultProps.debugWebGL,debugSpectorJS:e.debugSpectorJS??!!tM.R.get("debug-spectorjs")}}async function tV(e){let t=[];for(let i of((e.debugWebGL||e.debug)&&t.push((0,tz.z2)()),e.debugSpectorJS&&t.push((0,tz.Oy)(e)),await Promise.allSettled(t)))"rejected"===i.status&&tM.R.error(`Failed to initialize debug libraries ${i.reason}`)()}let tW=0,tG={requestAnimationFrame:e=>(function(e){let t="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame:null;return t?t.call(window,e):setTimeout(()=>e("undefined"!=typeof performance?performance.now():Date.now()),1e3/60)})(e),cancelAnimationFrame:e=>(function(e){let t="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame:null;if(t)return void t.call(window,e);clearTimeout(e)})(e)};class tH{static defaultAnimationLoopProps={device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:e=>{console.error(e)},stats:void 0,autoResizeViewport:!1,animationFrameProvider:tG};device=null;canvas=null;props;animationProps=null;timeline=null;stats;sharedStats;cpuTime;gpuTime;frameRate;display;_needsRedraw="initialized";_initialized=!1;_running=!1;_animationFrameId=null;_nextFramePromise=null;_resolveNextFrame=null;_cpuStartTime=0;_error=null;_lastFrameTime=0;constructor(e){if(this.props={...tH.defaultAnimationLoopProps,...e}
648,!(e=this.props).device)throw Error("No device provided");this.stats=e.stats||new b.Uz({id:`animation-loop-${tW++}`}),this.sharedStats=tI.stats.get("Animation Loop"),this.frameRate=this.stats.get("Frame Rate"),this.frameRate.setSampleSize(1),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.setProps({autoResizeViewport:e.autoResizeViewport,animationFrameProvider:e.animationFrameProvider}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null),this.device?._disableDebugGPUTime()}delete(){this.destroy()}reportError(e){this._error=e,this.props.onError(e),this.props.onError===tH.defaultAnimationLoopProps.onError&&"undefined"!=typeof window&&"undefined"!=typeof ErrorEvent&&window.dispatchEvent(new ErrorEvent("error",{error:e,message:e.message}))}setNeedsRedraw(e){return this._needsRedraw=this._needsRedraw||e,this}needsRedraw(){let e=this._needsRedraw;return this._needsRedraw=!1,e}setProps(e){if("autoResizeViewport"in e&&(this.props.autoResizeViewport=e.autoResizeViewport||!1),"animationFrameProvider"in e){let t=e.animationFrameProvider||tG;if(t!==this.props.animationFrameProvider){let e=null!==this._animationFrameId;e&&this._cancelAnimationFrame(),this.props.animationFrameProvider=t,e&&this._requestAnimationFrame()}}return this}async start(){if(this._running)return this;this._running=!0;try{let e;if(!this._initialized){if(this._initialized=!0,await this._initDevice(),this._initialize(),!this._running)return null;await this.props.onInitialize(this._getAnimationProps())}if(!this._running)return null;return!1!==e&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this}catch(t){let e=t instanceof Error?t:Error("Unknown error");throw this.props.onError(e),e}}stop(){if(this._running){let e=this.animationProps;this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1,this._lastFrameTime=0,e&&this.props.onFinalize(e)}return this}redraw(e,t=null){return this.device?.isLost||this._error||(this._beginFrameTimers(e),this._setupFrame(),this.animationProps&&(this.animationProps.animationFrame=t),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers()),this}attachTimeline(e){return this.timeline=e,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(e=>{this._resolveNextFrame=e})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeViewport(),this.device?._enableDebugGPUTime()}_setDisplay(e){this.display&&(this.display.destroy(),this.display.animationLoop=null),e&&(e.animationLoop=this),this.display=e}_requestAnimationFrame(){this._running&&(this._animationFrameId=this.props.animationFrameProvider.requestAnimationFrame(this._animationFrame.bind(this)))}_cancelAnimationFrame(){null!==this._animationFrameId&&(this.props.animationFrameProvider.cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null)}_animationFrame(e,t){if(this._running)try{this.redraw(e,t??null),this._requestAnimationFrame()}catch(t){let e=t instanceof Error?t:Error(String(t));this.reportError(e),this.stop()}}_renderFrame(e){if(this.display)return void this.display._renderFrame(e);let t=this.props.onRender(this._getAnimationProps());this.device&&!1!==t&&this.device.submit()}_clearNeedsRedraw(){this._needsRedraw=!1}_setupFrame(){this._resizeViewport()}_initializeAnimationProps(){let e=this.device?.getDefaultCanvasContext();if(!this.device||!e)throw Error("loop");let t=e?.canvas,i=e.props.useDevicePixels;this.animationProps={animationLoop:this,device:this.device,canvasContext:e,canvas:t,useDevicePixels:i,timeline:this.timeline,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,animationFrame:null,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;let{width:e,height:t,aspect:i}=this._getSizeAndAspect();(e!==this.animationProps.width||t!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=e,this.animationProps.height=t,this.animationProps.aspect=i,this.animationProps.needsRedraw=this._needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw Error("No device provided");this.canvas=this.device.getDefaultCanvasContext().canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){let e=document.createElement("div");document.body.appendChild(e),e.style.position="relative";let t=document.createElement("div");t.style.position="absolute",t.style.left="10px",t.style.bottom="10px",t.style.width="300px",t.style.background="white",this.canvas instanceof HTMLCanvasElement&&e.appendChild(this.canvas),e.appendChild(t);let i=this.props.onAddHTML(t);i&&(t.innerHTML=i)}}_getSizeAndAspect(){if(!this.device)return{width:1,height:1,aspect:1};let[e,t]=this.device.getDefaultCanvasContext().getDrawingBufferSize();return{width:e,height:t,aspect:e>0&&t>0?e/t:1}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_beginFrameTimers(e){let t=e??("undefined"!=typeof performance?performance.now():Date.now());if(this._lastFrameTime){let e=t-this._lastFrameTime;e>0&&this.frameRate.addTime(e)}this._lastFrameTime=t,this.device?._isDebugGPUTimeEnabled()&&this._consumeEncodedGpuTime(),this.cpuTime.timeStart()}_endFrameTimers(){this.device?._isDebugGPUTimeEnabled()&&this._consumeEncodedGpuTime(),this.cpuTime.timeEnd(),this._updateSharedStats()}_consumeEncodedGpuTime(){if(!this.device)return;let e=this.device.commandEncoder._gpuTimeMs;void 0!==e&&(this.gpuTime.addTime(e),this.device.commandEncoder._gpuTimeMs=void 0)}_updateSharedStats(){if(this.stats!==this.sharedStats){for(let e of Object.keys(this.sharedStats.stats)
648)this.stats.stats[e]||delete this.sharedStats.stats[e];this.stats.forEach(e=>{let t=this.sharedStats.get(e.name,e.type);t.sampleSize=e.sampleSize,t.time=e.time,t.count=e.count,t.samples=e.samples,t.lastTiming=e.lastTiming,t.lastSampleTime=e.lastSampleTime,t.lastSampleCount=e.lastSampleCount,t._count=e._count,t._time=e._time,t._samples=e._samples,t._startTime=e._startTime,t._timerPending=e._timerPending})}}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(e){e instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[e.offsetX,e.offsetY])}_onMouseleave(e){this._getAnimationProps()._mousePosition=null}}var tq=i(1806);function tY(){}let tZ={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,pickAsync:"auto",layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{},gl:null,canvas:null,_canvases:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:tY,onWebGLInitialized:tY,onResize:tY,onViewStateChange:tY,onInteractionStateChange:tY,onBeforeRender:tY,onAfterRender:tY,onLoad:tY,onError:e=>p.A.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:({isDragging:e})=>e?"grabbing":"grab",getTooltip:null,debug:!1,drawPickingColors:!1};class tK{constructor(e){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.eventManagers={},this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this._canvasContext=null,this._deviceResizeHandler=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new b.Uz({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,layersCount:0,drawLayersCount:0,updateLayersCount:0,updateAttributesCount:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,pickLayersCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._hoverPickSequence=0,this._pointerDownPickSequence=0,this._needsRedraw="Initial render",this._canvasManager=new tr({createEventManager:e=>this._createEventManager(e),getEventRoot:e=>this._getEventRoot(e)}),this._ownedCanvas=null,this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,canvasId:void 0,event:null,unproject3D:!1},this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=null,this._onPointerMove=e=>{let{_pickRequest:t}=this,i=this._getCanvasIdFromEvent(e);if("pointerleave"===e.type)t.x=-1,t.y=-1,t.radius=0,t.canvasId=i;else{if(e.leftButton||e.rightButton)return;let r=e.offsetCenter;if(!r)return;
648t.x=r.x,t.y=r.y,t.radius=this.props.pickingRadius,t.canvasId=i}this.layerManager&&(this.layerManager.context.mousePosition={x:t.x,y:t.y}),t.event=e},this._onEvent=e=>{let t=eP.tg[e.type],i=e.offsetCenter,r=this._getCanvasIdFromEvent(e);if(!t||!i||!this.layerManager)return;let n=this.layerManager.getLayers(),s=this._getInternalPickingMode();if(s){if("sync"===s){let t="click"===e.type&&this._shouldUnproject3D(n)?this._getFirstPickedInfo(this._pickPointSync(this._getPointPickOptions(i.x,i.y,{unproject3D:!0,canvasId:r},n))):this._getLastPointerDownPickingInfo(i.x,i.y,r,n);this._dispatchPickingEvent(t,e);return}(this._lastPointerDownInfoPromise||Promise.resolve(this._getLastPointerDownPickingInfo(i.x,i.y,r,n))).then(t=>{this._dispatchPickingEvent(t,e)}).catch(e=>this.props.onError?.(e))}},this._onPointerDown=e=>{let t=e.offsetCenter,i=this._getCanvasIdFromEvent(e);if(!t)return;let r=this._getInternalPickingMode();if(!r)return;let n=this.layerManager?.getLayers()||[],s=++this._pointerDownPickSequence;if("sync"===r){let e=this._pickPointSync({x:t.x,y:t.y,canvasId:i,radius:this.props.pickingRadius}),r=this._getFirstPickedInfo(e);this._lastPointerDownInfo=r,this._lastPointerDownInfoPromise=Promise.resolve(r);return}let a=this._pickPointAsync(this._getPointPickOptions(t.x,t.y,{canvasId:i},n)).then(e=>this._getFirstPickedInfo(e)).then(e=>(s===this._pointerDownPickSequence&&(this._lastPointerDownInfo=e),e)).catch(e=>{this.props.onError?.(e);let r=this.deckPicker&&this.viewManager?this._getLastPointerDownPickingInfo(t.x,t.y,i,n):{};return s===this._pointerDownPickSequence&&(this._lastPointerDownInfo=r),r});this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=a};let t=e;this.props={...tZ,...e},e=this.props,this._validateCanvasConfiguration(e),e.viewState&&e.initialViewState&&p.A.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device&&(this.device=e.device,this._setDeviceCanvasContext(e.device));let i=this.device;!i&&e.gl&&(e.gl instanceof WebGLRenderingContext&&p.A.error("WebGL1 context not supported.")(),i=tj.attach(e.gl,{_cacheShaders:!0,_cachePipelines:!0,...this.props.deviceProps})),i||(i=this._createDevice(e)),this.animationLoop=this._createAnimationLoop(i,e),this.setProps(t),e._typedArrayManagerProps&&tn.A.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this._restoreDeviceResizeHandler(),this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._hoverPickSequence++,this._pointerDownPickSequence++,this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,Object.keys(this._canvasManager.targets).length||this.eventManager?.destroy(),this.eventManager=null,this.eventManagers={},this.widgetManager?.finalize(),this.widgetManager=null,this._canvasManager.finalize(),this._isMultiCanvasMode()?this.canvas=null:this.canvas&&this.canvas===this._ownedCanvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null,this._ownedCanvas=null),this._canvasContext=null}setProps(e){this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&p.A.removed("onLayerHover","onHover")(),"onLayerClick"in e&&p.A.removed("onLayerClick","onClick")(),e.initialViewState&&!(0,E.b)(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),(0,V.A)(!("_canvases"in e)||Array.isArray(e._canvases)===this._isMultiCanvasMode()),Object.assign(this.props,e),this._validateCanvasConfiguration(this.props),this._validateInternalPickingMode(),this.device&&this._isMultiCanvasMode()&&this._syncCanvasTargets(),this._setCanvasSize(this.props);let t=Object.create(this.props);if(Object.assign(t,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState(),eventManagers:this.eventManagers}),e.device&&e.device.id!==this.device?.id){let t=e.device.getDefaultCanvasContext();this.animationLoop?.stop(),this._isMultiCanvasMode()||this.canvas===t.canvas||(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),this._setDeviceCanvasContext(e.device),p.A.log(`recreating animation loop for new device! id=${e.device.id}`)(),this.animationLoop=this._createAnimationLoop(e.device,e),this.animationLoop.start()}if(this.animationLoop?.setProps(t),void 0!==e.useDevicePixels&&this._canvasContext?.setProps)for(let t of(this._canvasContext.setProps({useDevicePixels:e.useDevicePixels}),Object.values(this._canvasManager.targets)))t.presentationContext.setProps({useDevicePixels:e.useDevicePixels});this.layerManager&&(this.viewManager.setProps(t),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(t),this.effectManager.setProps(t),this.deckRenderer.setProps(t),this.deckPicker.setProps(t),this.widgetManager.setProps(t)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let t=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(e),r=this.layerManager.needsRedraw(e),n=this.effectManager.needsRedraw(e),s=this.deckRenderer.needsRedraw(e);return t||i||r||n||s}redraw(e){if(!this.layerManager)return;let t=this.needsRedraw({clearRedrawFlags:!0});(t=e||t)&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(t):this._drawLayers(t))}get isInitialized(){return null!==this.viewManager}getViews(){return(0,V.A)(this.viewManager),this.viewManager.views}getView(e){return(0,V.A)(this.viewManager),this.viewManager.getView(e)}getViewports(e){return(0,V.A)(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}getCanvasContext(e){let t=e?this.viewManager?.getView(e)?.props.canvasId:void 0;return this._getCanvasContext(t)}
648getEventManager(e){if(!e||!this.viewManager)return this.eventManager;let t=this.viewManager.getCanvasId(e)||S;return this.eventManagers[t]||this.eventManager}async pickObjectAsync(e){let t=(await this._pickAsync("pickObjectAsync","pickObject Time",e)).result;return t.length?t[0]:null}async pickObjectsAsync(e){return await this._pickAsync("pickObjectsAsync","pickObjects Time",e)}pickObject(e){let t=this._pick("pickObject","pickObject Time",e).result;return t.length?t[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_pickPositionForController(e,t,i){return"sync"!==this._getInternalPickingMode()?null:this.pickObject({x:e,y:t,radius:0,unproject3D:!0,canvasId:i?this.viewManager?.getCanvasId(i):void 0})}_addResources(e,t=!1){for(let i in e)this.layerManager.resourceManager.add({resourceId:i,data:e[i],forceUpdate:t})}_removeResources(e){for(let t of e)this.layerManager.resourceManager.remove(t)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){this.layerManager?.removeDefaultShaderModule(e)}_resolveInternalPickingMode(){let{pickAsync:e}=this.props,t=this.device?.type||this.props.deviceProps?.type;if("auto"===e)return"webgpu"===t?"async":"sync";if("sync"===e&&"webgpu"===t)throw Error('`pickAsync: "sync"` is not supported when Deck is using a WebGPU device.');return e}_getInternalPickingMode(){try{return this._resolveInternalPickingMode()}catch(e){return this.props.onError?.(e),null}}_validateInternalPickingMode(){this._getInternalPickingMode()}_getFirstPickedInfo({result:e,emptyInfo:t}){return e[0]||t}_shouldUnproject3D(e=this.layerManager?.getLayers()||[]){return e.some(e=>"3d"===e.props.pickable)}_getPointPickOptions(e,t,i={},r=this.layerManager?.getLayers()||[]){return{x:e,y:t,canvasId:i.canvasId,radius:this.props.pickingRadius,unproject3D:this._shouldUnproject3D(r),...i}}_pickPointSync(e){return this._pick("pickObject","pickObject Time",e)}_pickPointAsync(e){return this._pickAsync("pickObjectAsync","pickObject Time",e)}_getLastPointerDownPickingInfo(e,t,i,r=this.layerManager?.getLayers()||[]){return this.deckPicker.getLastPickedObject({x:e,y:t,layers:r,viewports:this.getViewports({x:e,y:t,canvasId:i})},this._lastPointerDownInfo)}_applyHoverCallbacks({result:e,emptyInfo:t},i){if(!this.widgetManager)return;this.cursorState.isHovering=e.length>0;let r=t,n=!1;for(let t of e)r=t,n=t.layer?.onHover(t,i)||n;n||(this.props.onHover?.(r,i),this.widgetManager.onHover(r,i))}_dispatchPickingEvent(e,t){if(!this.layerManager||!this.widgetManager)return;let i=eP.tg[t.type];if(!i)return;let{layer:r}=e,n=r&&(r[i]||r.props[i]),s=this.props[i],a=!1;n&&(a=n.call(r,e,t)),a||(s?.(e,t),this.widgetManager.onEvent(e,t))}_pickAsync(e,t,i){(0,V.A)(this.deckPicker);let{stats:r}=this,n=this._isMultiCanvasMode()?i.canvasId||this._getDefaultCanvasId():i.canvasId,s=this._getCanvasContext(n)||void 0;r.get("Pick Count").incrementCount(),r.get(t).timeStart(),this._resizeForCanvasTarget(n);let a=this.deckPicker[e]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports({...i,canvasId:n}),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i,canvasId:n,canvasContext:s});return r.get(t).timeEnd(),a}_pick(e,t,i){(0,V.A)(this.deckPicker);let{stats:r}=this,n=this._isMultiCanvasMode()?i.canvasId||this._getDefaultCanvasId():i.canvasId,s=this._getCanvasContext(n)||void 0;r.get("Pick Count").incrementCount(),r.get(t).timeStart(),this._resizeForCanvasTarget(n);let a=this.deckPicker[e]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports({...i,canvasId:n}),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i,canvasId:n,canvasContext:s});return r.get(t).timeEnd(),a}_createCanvas(e){let t=e.canvas;return"string"==typeof t&&(t=document.getElementById(t),(0,V.A)(t)),t?this._ownedCanvas=null:((t=document.createElement("canvas")).id=e.id||"deckgl-overlay",e.width&&"number"==typeof e.width&&(t.width=e.width),e.height&&"number"==typeof e.height&&(t.height=e.height),(e.parent||document.body).appendChild(t),this._ownedCanvas=t),Object.assign(t.style,e.style),t}
648_isMultiCanvasMode(){return Array.isArray(this.props._canvases)}_getDefaultCanvasId(){return this._canvasManager.order[0]||S}_validateCanvasConfiguration(e){Array.isArray(e._canvases)&&((0,V.A)(!e.canvas),(0,V.A)(!e.gl),(0,V.A)(!e.device?.canvasContext||e.device.getDefaultCanvasContext().offscreenCanvas))}_createEventManager(e){let t=new tq.EU(e,{touchAction:this.props.touchAction,recognizers:Object.keys(eP.We).map(e=>{let[t,i,r,n]=eP.We[e],s=this.props.eventRecognizerOptions?.[e];return{recognizer:new t({...i,...s,event:e}),recognizeWith:r,requireFailure:n}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let e in eP.tg)"dblclick"===e?t.watch(e,this._onEvent):t.on(e,this._onEvent);return t}_getEventRoot(e){return e.closest(".deck-events-root")||this.props.parent?.querySelector(".deck-events-root")||e}_syncCanvasTargets(){if(!this.device||!this._isMultiCanvasMode())return;this._canvasManager.syncCanvasEntries({device:this.device,canvases:this.props._canvases||[],useDevicePixels:this.props.useDevicePixels}),this.eventManagers=this._canvasManager.eventManagers;let e=this._getDefaultCanvasId();this.eventManager=this.eventManagers[e]||null,this.canvas=this._canvasManager.targets[e]?.canvas||null}_setCanvasContext(e){this._canvasContext=e,"style"in e.canvas&&(this.canvas=e.canvas)}_setDeviceCanvasContext(e,t={}){let i=e.getDefaultCanvasContext();this._setCanvasContext(i),this._setDeviceResizeHandler(e,t)}_setDeviceResizeHandler(e,t={}){let i=!!t.syncDrawingBuffer;if(this._deviceResizeHandler?.device===e){this._deviceResizeHandler.syncDrawingBuffer=i;return}this._restoreDeviceResizeHandler();let r=e=>{this._isMultiCanvasMode()?this._updateMultiCanvasDimensions():e===this._canvasContext&&this._canvasContext&&this._onCanvasContextResize(this._canvasContext,{syncDrawingBuffer:this._deviceResizeHandler?.syncDrawingBuffer})};e.props.onResize=r,this._deviceResizeHandler={device:e,onResize:r,syncDrawingBuffer:i}}_restoreDeviceResizeHandler(){let e=this._deviceResizeHandler;e&&e.device.props?.onResize===e.onResize&&(e.device.props.onResize=tY),this._deviceResizeHandler=null}_setCanvasSize(e){if(this._isMultiCanvasMode()||!this.canvas)return;let{width:t,height:i}=e;if(t||0===t){let e=Number.isFinite(t)?`${t}px`:t;this.canvas.style.width=e}if(i||0===i){let t=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=e.style?.position||"absolute",this.canvas.style.height=t}}_getCanvasIdFromEvent(e){return this._canvasManager.getCanvasIdFromEvent(e?.rootElement)}_getCanvasContext(e){return this._canvasManager.getTarget(e)?.presentationContext||this._canvasContext}_resizeForCanvasTarget(e){let t=this._canvasManager.getTarget(e);if(!t||!this.device?.canvasContext)return;let[i,r]=t.presentationContext.getDrawingBufferSize();this.device.canvasContext.setDrawingBufferSize(i,r)}_createDeviceCanvas(e){if(this._isMultiCanvasMode()){let t=globalThis.OffscreenCanvas;if(!t)throw Error("`_canvases` requires OffscreenCanvas support.");return new t("number"==typeof e.width&&Number.isFinite(e.width)?e.width:1,"number"==typeof e.height&&Number.isFinite(e.height)?e.height:1)}return this._createCanvas(e)}_updateCanvasSize(e=this._canvasContext){if(this._isMultiCanvasMode())return void this._updateMultiCanvasDimensions();let{canvas:t}=this,[i,r]=e?e.getCSSSize():[t?.clientWidth??t?.width??0,t?.clientHeight??t?.height??0];(i!==this.width||r!==this.height)&&(this.width=i,this.height=r,this.viewManager?.setProps({width:i,height:r}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:i,height:r},e||void 0))}_onCanvasContextResize(e,t={}){if(t.syncDrawingBuffer){let{width:t,height:i}=e.canvas;e.setDrawingBufferSize(t,i)}this._needsRedraw="Canvas resized",this._updateCanvasSize(e)}_updateMultiCanvasDimensions(){let[e,t]=this._getCanvasContext()?.getCSSSize()||[0,0];(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.props.onResize({width:e,height:t})),this._needsRedraw="Canvas resized",this.viewManager?.setNeedsUpdate("Canvas resized"),this.viewManager?.setProps({width:this.width,height:this.height})}_createAnimationLoop(e,t){let{gl:i,onError:r}=t;return new tH({device:e,autoResizeDrawingBuffer:!i&&!Array.isArray(t._canvase
648s),autoResizeViewport:!1,onInitialize:e=>this._setDevice(e.device),onRender:this._onRenderFrame.bind(this),onError:r})}_createDevice(e){let t=this.props.deviceProps?.createCanvasContext,i={adapters:[],_cacheShaders:!0,_cachePipelines:!0,...e.deviceProps};i.adapters.includes(tj)||i.adapters.push(tj);let r={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0};return tI.createDevice({_reuseDevices:!0,type:"webgl",...i,createCanvasContext:{...r,..."object"==typeof t?t:void 0,canvas:this._createDeviceCanvas(e),useDevicePixels:this.props.useDevicePixels,autoResize:!0}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,t=Array.isArray(e)?e:e?[e]:[new ec({id:"default-view"})];return t.length&&this.props.controller&&(t[0]=t[0].clone({controller:this.props.controller})),t}_onContextLost(){let{onError:e}=this.props;this.animationLoop&&e&&e(Error("WebGL context is lost"))}_pickAndCallback(){let{_pickRequest:e}=this;if(e.event){let t=e.event,i=this.layerManager?.getLayers()||[],r=this._getPointPickOptions(e.x,e.y,{canvasId:e.canvasId,radius:e.radius,mode:e.mode},i),n=this._getInternalPickingMode(),s=++this._hoverPickSequence;if(e.event=null,e.canvasId=void 0,!n)return;if("sync"===n)return void this._applyHoverCallbacks(this._pickPointSync(r),t);this._pickPointAsync(r).then(({result:e,emptyInfo:i})=>{s===this._hoverPickSequence&&this._applyHoverCallbacks({result:e,emptyInfo:i},t)}).catch(e=>this.props.onError?.(e))}}_updateCursor(){let e=this.props.getCursor(this.cursorState);if(this._isMultiCanvasMode()){for(let t of Object.values(this._canvasManager.targets))t.canvas.style.cursor=e;return}let t=this.props.parent||this.canvas;t&&(t.style.cursor=e)}_setDevice(e){if(this.device=e,this._validateInternalPickingMode(),!this.animationLoop)return;this._setDeviceCanvasContext(e,{syncDrawingBuffer:!!(this.props.gl&&this.props.device!==e)}),this._isMultiCanvasMode()?this._syncCanvasTargets():this.canvas&&!this.canvas.isConnected&&this.props.parent&&this.props.parent.insertBefore(this.canvas,this.props.parent.firstChild),"webgl"===this.device.type&&this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),"webgl"===this.device.type&&this.props.onWebGLInitialized(this.device.gl);let t=new a;if(t.play(),this.animationLoop.attachTimeline(t),!this._isMultiCanvasMode()){let e=this.canvas&&this._getEventRoot(this.canvas);(0,V.A)(e),this.eventManager=this._createEventManager(e),this.eventManagers={[S]:this.eventManager}}this.viewManager=new P({timeline:t,eventManager:this.eventManager,eventManagers:this.eventManagers,getCanvasContext:this._isMultiCanvasMode()?this.getCanvasContext.bind(this):void 0,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),pickPosition:this._pickPositionForController.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let i=this.viewManager.getViewports()[0];this.layerManager=new x(this.device,{deck:this,stats:this.stats,viewport:i,timeline:t}),this.effectManager=new eW({deck:this,device:this.device}),this.deckRenderer=new eK(this.device,{stats:this.stats}),this.deckPicker=new e4(this.device,{stats:this.stats});let r=this.props.parent?.querySelector(".deck-widgets-root")||(this._isMultiCanvasMode()?this.props.parent||this.canvas?.parentElement:null)||this.canvas?.parentElement;this.widgetManager=new e9({deck:this,parentElement:r}),this.widgetManager.addDefault(new ti),this.setProps({}),this._updateCanvasSize(this._canvasContext),this.props.onLoad()}_drawLayers(e,t){let{device:i,gl:r}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:r});let n={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...t};if(this._isMultiCanvasMode()&&"screen"===n.pass&&!n.target&&this._canvasManager.order.length)for(let e of this._canvasManager.order){let t=n.viewports.filter(t=>this.viewManager.getCanvasId(t.id)===e);if(!t.length){let t=this._canvasManager.targets[e];this._resizeForCanvasTarget(e),this.deckRenderer?.renderLayers({...n,canvasContext:t.presentationContext,target:t.presentationContext.getCurrentFramebuffer(),viewports:[],clearCanvas:!0}),t.presentationContext.present();continue}let i=this._canvasManager.targets[e];this._resizeForCanvasTarget(e);let r=i.presentationContext.getCurrentFramebuffer();this.deckRenderer?.renderLayers({...n,canvasContext:i.presentationContext,target:r,viewports:t}),i.presentationContext.present()}else this.deckRenderer?.renderLayers(n);"screen"===n.pass&&this.widgetManager.onRedraw({viewports:n.viewports,layers:n.layers}),this.props.onAfterRender({device:i,gl:r})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60==0&&(this._getMetrics(),this.stats.reset(),p.A.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCursor(
648),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){let t=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:t},!this.props.viewState&&this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){let{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();let t=this.animationLoop.stats;e.get("GPU Time").addTime(t.get("GPU Time").lastTiming),e.get("CPU Time").addTime(t.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:e,stats:t}=this;e.fps=t.get("frameRate").getHz(),e.setPropsTime=t.get("setProps Time").time,e.updateAttributesTime=t.get("Update Attributes").time,e.framesRedrawn=t.get("Redraw Count").count,e.pickTime=t.get("pickObject Time").time+t.get("pickMultipleObjects Time").time+t.get("pickObjects Time").time,e.pickCount=t.get("Pick Count").count,e.layersCount=this.layerManager?.layers.length??0,e.drawLayersCount=t.get("Layers rendered").lastSampleCount,e.pickLayersCount=t.get("Layers picked").lastSampleCount,e.updateLayersCount=t.get("Layer updates").count,e.updateAttributesCount=t.get("Attributes updated").count,e.gpuTime=t.get("GPU Time").time,e.cpuTime=t.get("CPU Time").time,e.gpuTimePerFrame=t.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=t.get("CPU Time").getAverageTime();let i=tI.stats.get("GPU Time and Memory");e.bufferMemory=i.get("Buffer Memory").count,e.textureMemory=i.get("Texture Memory").count,e.renderbufferMemory=i.get("Renderbuffer Memory").count,e.gpuMemory=i.get("GPU Memory").count}}tK.defaultProps=tZ,tK.VERSION=tC;var tX=i(34722),tQ=i(47696),tJ=i(67267),t0=i(26966);class t1 extends tX.M{constructor(e=0,t=0){super(2),(0,R.cy)(e)&&1==arguments.length?this.copy(e):(R.$W.debug&&((0,tQ.ws)(e),(0,tQ.ws)(t)),this[0]=e,this[1]=t)}set(e,t){return this[0]=e,this[1]=t,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this.check()}fromObject(e){return R.$W.debug&&((0,tQ.ws)(e.x),(0,tQ.ws)(e.y)),this[0]=e.x,this[1]=e.y,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return(0,tJ.Z0)(this,this,e),this.check()}transformAsVector(e){return(0,t0.B$)(this,this,e),this.check()}transformByMatrix3(e){return(0,tJ.ei)(this,this,e),this.check()}transformByMatrix2x3(e){return(0,tJ.l0)(this,this,e),this.check()}transformByMatrix2(e){return(0,tJ.ZF)(this,this,e),this.check()}}let t2="deck-gl-google-maps-container";function t3(e,t,i,r){if(i){if(i.userData._googleMap===e)return i;t6(i)}let n={click:null,rightclick:null,dblclick:null,mousemove:null,mouseout:null},s=new tK({...r,useDevicePixels:r.useDevicePixels??!0,...!r.gl&&{deviceProps:{...r.deviceProps,createCanvasContext:{..."object"==typeof r.deviceProps?.createCanvasContext?r.deviceProps.createCanvasContext:void 0,pixelSizeSource:"css-dpr"}}},style:r.interleaved?null:{pointerEvents:"none"},parent:function(e,t){let i=document.createElement("div");i.style.position="absolute",Object.assign(i.style,t);let r=e.getMap().getDiv().querySelector(`#${t2}`);return r?r.appendChild(i):"getPanes"in e&&e.getPanes()?.overlayLayer.appendChild(i),i}(t,r.style),views:new ec({repeat:!0}),initialViewState:{longitude:0,latitude:0,zoom:1},controller:!1});for(let t in n)n[t]=e.addListener(t,e=>(function(e,t,i){if(!e.isInitialized)return;let r={type:t,offsetCenter:function(e,t){if(e.pixel)return e.pixel;let i=t.getViewports()[0].project([e.latLng.lng(),e.latLng.lat()]);return{x:i[0],y:i[1]}}(i,e),srcEvent:i};switch(t){case"click":case"rightclick":r.type="click",r.tapCount=1,e._onPointerDown(r),e._onEvent(r);break;case"dblclick":r.type="click",r.tapCount=2,e._onEvent(r);break;case"mousemove":r.type="pointermove",e._onPointerMove(r);break;case"mouseout":r.type="pointerleave",e._onPointerMove(r);break;default:return}})(s,t,e));return s.userData._googleMap=e,s.userData._eventListeners=n,s}function t6(e){let{_eventListeners:t}=e.userData;for(let e in t)t[e]&&t[e].remove();e.finalize()}function t4(e){let t=e.getDiv().firstChild;return{width:t.offsetWidth,height:t.offsetHeight}}function t5(e,t,i){let r=new google.maps.Point(t,i),n=e.fromContainerPixelToLatLng(r);return[n.lng(),n.lat()]}let t8=()=>!1,t9={depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],blendEquation:32774};function t7(){}let ie={interleaved:!0};class it{constructor(e){this.props={},this._map=null,this._deck=null,this._overlay=null,this._positioningOverlay=null,this._externalFramebuffer=null,this.setProps({...ie,...e})}setMap(e){if(e===this._map)return;let{VECTOR:t,UNINITIALIZED:i}=google.maps.RenderingType;this._map&&(!e&&this._map.getRenderingType()===t&&this.props.interleaved&&this._overlay.requestRedraw(),this._overlay?.setMap(null),this._positioningOverlay?.setMap(null),this._map=null),e&&(this._map=e,e.getRenderingType()!==i?this._createOverlay(e):e.addListener("renderingtype_changed",()=>{this._createOverlay(e)}))}setProps(e){if(Object.assign(this.props,e),this._deck){let t=this._deck.props.parent||this._deck.getCanvas()?.parentElement;e.style&&t&&(Object.assign(t.style,e.style),e.style=null),this._deck.setProps(e)}}pickObject(e){return this._deck&&this._deck.pickObject(e)}pickMultipleObjects(e){return this._deck&&this._deck.pickMultipleObjects(e)}pickObjects(e){return this._deck&&this._deck.pickObjects(e)}finalize(){this.setMap(null),this._deck&&(t6(this._deck),this._deck=null)}_createOverlay(e){let{VECTOR:t,UNINITIALIZED:i}=google.maps.RenderingType,r=e.getRenderingType();r!==i&&(r===t&&google.maps.WebGLOverlayView?this._createOverlayVector(e):this._createOverlayRaster(e))}_createOverlayVector(e){let t=this.props.interleaved??ie.interleaved,i=new google.maps.OverlayView;i.onAdd=this._onAddVectorOverlay.bind(this),i.draw=this._updateContainerSize.bind(this),i.onRemove=this._onRemove.bind(this),this._positioningOverlay=i,this._positioningOverlay.setMap(e);let r=new google.maps.WebGLOverlayView;r.onAdd=t7,r.onContextRestored=t?this._onContextRestored.bind(this):t7,r.onDraw=this._onDrawVector.bind(this),r.onContextLost=t?this._onContextLost.bind(this):t7,r.onRemove=t?this._onRemove.bind(this):t7,this._overlay=r,this._overlay.setMap(e)}_createOverlayRaster(e){let t=new google.maps.OverlayView;t.onAdd=this._onAdd.bind(this),t.draw=this._onDrawRaster.bind(this),t.onRemove=this._onRemove.bind(this),this._overlay=t,this._overlay.setMap(e)}_onAdd(){this._deck=t3(this._map,this._overlay,this._deck,this.props)}_onAddVectorOverlay(){let e=this._positioningOverlay,t=e.getPanes();if(t){let e=document.createElement("div");e.id=t2,e.style.position="absolute",t.overlayLayer.appendChild(e)}this._deck=t3(this._map,e,this._deck,this.props)}_updateContainerSize(){if(!this._map)return;let e=this._map.getDiv().querySelector(`#${t2}`);if(!e)return;let t=this._map.getDiv().firstChild;if(!t)return;let i=t.offsetWidth,r=t.offsetHeight;e.style.width=`${i}px`,e.style.height=`${r}px`,e.style.left=`${-i/2}px`,e.style.top=`${-r/2}px`}_onContextRestored({gl:e}){if(!this._map||!this._overlay)return;let t=()=>{this._overlay&&this._overlay.requestRedraw()},i=t3(this._map,this._overlay,this._deck,{gl:e,_customRender:t,...this.props});this._deck=i;let r=i.animationLoop;r._renderFrame=()=>{let t=e.getParameter(34964);i.device.withParametersWebGL({},()=>{r.props.onRender(r.animationProps)}),e.bindBuffer(34962,t)}}_onContextLost(){this._deck&&(t6(this._deck),this._deck=null)}_onRemove(){this._deck?.setProps({layerFilter:t8})}_onDrawRaster(){if(!this._deck||!this._map)return;let e=this._deck,{width:t,height:i,left:r,top:n,...s}=function(e,t){let i,{width:r,height:n}=t4(e),s=t.getProjection(),a=e.getBounds();if(!a)return{width:r,height:n,left:0,top:0};
648let o=a.getNorthEast(),l=a.getSouthWest(),u=s.fromLatLngToDivPixel(o),c=s.fromLatLngToDivPixel(l),h=t5(s,r/2,n/2),d=new google.maps.LatLng(0,h[0]),f=s.fromLatLngToContainerPixel(d),p=s.fromLatLngToDivPixel(d);if(!u||!c||!p||!f)return{width:r,height:n,left:0,top:0};let g=Math.round(p.x-f.x),m=p.y-f.y,b=t5(s,r/2,0),v=t5(s,r/2,n),y=h[1],_=h[0];if(Math.abs(y)>85.05113){y=y>0?85.05113:-85.05113;let e=new google.maps.LatLng(y,_);m+=s.fromLatLngToContainerPixel(e).y-n/2}m=Math.round(m);let w=180*new t1(b).sub(v).verticalAngle()/Math.PI;w<0&&(w+=360);let x=e.getHeading()||0,E=e.getZoom()-1;if(0===w)i=n?(c.y-u.y)/n:1;else if(w===x){let e=new t1([u.x,u.y]).sub([c.x,c.y]).len(),t=new t1([r,-n]).len();i=t?e/t:1}return{width:r,height:n,left:g,top:m,zoom:E+=Math.log2(i||1),bearing:w,pitch:e.getTilt(),latitude:y,longitude:_}}(this._map,this._overlay),a=e.getCanvas(),o=a?.parentElement||e.props.parent;if(o){let e=o.style;e.left=`${r}px`,e.top=`${n}px`}e.setProps({width:t,height:i,viewState:{altitude:1e4,...s}}),e.redraw()}_onDrawVector({gl:e,transformer:t}){if(!this._deck||!this._map)return;let i=this._deck,{interleaved:n}=this.props;if(i.setProps({...function(e,t){let{width:i,height:r}=t4(e),{center:n,heading:s,tilt:a,zoom:o}=t.getCameraParams(),l=new ey.k().perspective({fovy:25*Math.PI/180,aspect:r?i/r:1,near:.75,far:3e14});return{width:i,height:r,viewState:{altitude:.5*l[5],bearing:s,latitude:n.lat(),longitude:n.lng(),pitch:a,projectionMatrix:l,repeat:!0,zoom:o-1}}}(this._map,t),...n&&{width:null,height:null}}),n&&i.isInitialized){let t=i.device;if(t instanceof r.WebGLDevice){let r=t.getParametersWebGL(36006),n=null;if(r){if(this._externalFramebuffer?.handle!==r){this._externalFramebuffer?.wrapper.destroy();let i=t.createFramebuffer({handle:r,width:e.canvas.width,height:e.canvas.height});this._externalFramebuffer={handle:r,wrapper:i}}n=this._externalFramebuffer.wrapper}i.setProps({_framebuffer:n})}i.needsRedraw({clearRedrawFlags:!0}),t instanceof r.WebGLDevice&&(t.setParametersWebGL({viewport:[0,0,e.canvas.width,e.canvas.height],scissor:[0,0,e.canvas.width,e.canvas.height],stencilFunc:[519,0,255,519,0,255]}),t.withParametersWebGL(t9,()=>{i._drawLayers("google-vector",{clearCanvas:!1})}))}else n||i.redraw()}}},34722:(e,t,i)=>{i.d(t,{M:()=>a});var r=i(56210),n=i(47696);function s(e,t){if(!e)throw Error(`math.gl assertion ${t}`)}class a extends r.a{get x(){return this[0]}set x(e){this[0]=(0,n.ws)(e)}get y(){return this[1]}set y(e){this[1]=(0,n.ws)(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let i=0;i<this.ELEMENTS;++i){let r=this[i]-e[i];t+=r*r}return(0,n.ws)(t)}dot(e){let t=0;for(let i=0;i<this.ELEMENTS;++i)t+=this[i]*e[i];return(0,n.ws)(t)}normalize(){let e=this.magnitude();if(0!==e)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]*=t[e];return this.check()}divide(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]/=t[e];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return s(e>=0&&e<this.ELEMENTS,"index is out of range"),(0,n.ws)(this[e])}setComponent(e,t){return s(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}}},34809:(e,t,i)=>{i.d(t,{A:()=>u});var r=i(52446),n=i(81060),s=i(85066),a=i(18151),o=i(67267);class l extends r.A{constructor(e={}){let t,{latitude:i=0,longitude:r=0,zoom:o=0,pitch:l=0,bearing:u=0,nearZMultiplier:c=.1,farZMultiplier:h=1.01,nearZ:d,farZ:f,orthographic:p=!1,projectionMatrix:g,repeat:m=!1,worldOffset:b=0,position:v,padding:y,legacyMeterSizes:_=!1}=e,{width:w,height:x,altitude:E=1.5}=e,S=Math.pow(2,o);w=w||1,x=x||1;let P=null;if(g)E=g[5]/2,t=(0,n.Os)(E);else{let r;if(e.fovy?(t=e.fovy,E=(0,n.wZ)(t)):t=(0,n.Os)(E),y){let{top:e=0,bottom:t=0}=y;r=[0,(0,s.qE)((e+x-t)/2,0,x)-x/2]}P=(0,n.om)({width:w,height:x,scale:S,center:v&&[0,0,v[2]*(0,n.mY)(i)],offset:r,pitch:l,fovy:t,nearZMultiplier:c,farZMultiplier:h}),Number.isFinite(d)&&(P.near=d),Number.isFinite(f)&&(P.far=f)}let C=(0,n.rY)({height:x,pitch:l,bearing:u,scale:S,altitude:E});b&&(C=new a.k().translate([512*b,0,0]).multiplyLeft(C)),super({...e,width:w,height:x,viewMatrix:C,longitude:r,latitude:i,zoom:o,...P,fovy:t,focalDistance:E}),this.latitude=i,this.longitude=r,this.zoom=o,this.pitch=l,this.bearing=u,this.altitude=E,this.fovy=t,this.orthographic=p,this._subViewports=m?[]:null,this._pseudoMeters=_,Object.freeze(this)}get subViewports(){if(this._subViewports&&!this._subViewports.length){let e=this.getBounds(),t=Math.floor((e[0]+180)/360),i=Math.ceil((e[2]-180)/360);for(let e=t;e<=i;e++){let t=e?new l({...this,worldOffset:e}):this;this._subViewports.push(t)}}return this._subViewports}equals(e){return e instanceof l&&e._pseudoMeters===this._pseudoMeters&&super.equals(e)}projectPosition(e){if(this._pseudoMeters)return super.projectPosition(e);let[t,i]=this.projectFlat(e);return[t,i,(e[2]||0)*(0,n.mY)(e[1])]}unprojectPosition(e){if(this._pseudoMeters)return super.unprojectPosition(e);let[t,i]=this.unprojectFlat(e),r=(e[2]||0)/(0,n.mY)(i);return[t,i,r]}addMetersToLngLat(e,t){return(0,n.dT)(e,t)}panByPosition(e,t,i){let r=(0,n.xJ)(t,this.pixelUnprojectionMatrix),s=this.projectFlat(e),a=o.WQ([],s,o.ze([],r)),l=o.WQ([],this.center,a),[u,c]=this.unprojectFlat(l);return{longitude:u,latitude:c}}panByPosition3D(e,t){let i=e[2]||0,r=o.jb([],e,this.unproject(t,{targetZ:i}));return{longitude:this.longitude+r[0],latitude:this.latitude+r[1]}}getBounds(e={}){let t=(0,n.gW)(this,e.z||0);return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1]),Math.max(t[0][0],t[1][0],t[2][0],t[3][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1])]}fitBounds(e,t={}){let{width:i,height:r}=this,{longitude:s,latitude:a,zoom:o}
648=(0,n.Fe)({width:i,height:r,bounds:e,...t});return new l({width:i,height:r,longitude:s,latitude:a,zoom:o})}}l.displayName="WebMercatorViewport";let u=l},36018:(e,t,i)=>{i.d(t,{M:()=>s});var r=i(79149),n=i(5346);class s{name;dataType;format;length;valueLength;stride;byteOffset;byteStride;rowByteLength;bufferLayout;data=[];device;bufferProps;isAppendable=!1;ownsDataChunks=!0;ownedVectors=[];appendableByteLength=0;constructor(e){switch(e.type){case"buffer":{let{name:t,buffer:i,format:n,length:s,valueLength:o=s,byteOffset:l=0,ownsBuffer:u=!1}=e,{stride:c,byteStride:h,rowByteLength:d}=a(e);this.name=t,this.dataType=e.dataType,this.format=n,this.length=s,this.valueLength=o,this.stride=c,this.byteOffset=l,this.byteStride=h,this.rowByteLength=d,this.data.push(new r.L({buffer:i,format:n,length:s,valueLength:o,stride:c,byteOffset:l,byteStride:h,rowByteLength:d,ownsBuffer:u,dataType:e.dataType}));return}case"interleaved":{let{name:t,buffer:i,format:n,length:s,valueLength:a=s,byteOffset:o=0,byteStride:l,attributes:u,ownsBuffer:c=!1}=e;this.name=t,this.dataType=e.dataType,this.format=n,this.length=s,this.valueLength=a,this.stride=l,this.byteOffset=o,this.byteStride=l,this.rowByteLength=l,this.bufferLayout={name:t,byteStride:l,attributes:u},this.data.push(new r.L({buffer:i,format:n,length:s,valueLength:a,stride:l,byteOffset:o,byteStride:l,rowByteLength:l,ownsBuffer:c,dataType:e.dataType}));return}case"data":{var t;let i=e.format??(t=e.data,t[0]?.format),r=i?(0,n.Ft)(i):void 0,{name:s,data:a,stride:o=a[0]?.stride??r?.components??1,valueLength:l=a.reduce((e,t)=>e+t.valueLength,0),byteStride:u=a[0]?.byteStride??r?.byteLength,rowByteLength:c=a[0]?.rowByteLength??r?.byteLength,bufferLayout:h,ownsData:d=!1}=e;if(void 0===u||void 0===c)throw Error("GPUVector requires format or explicit byte layout metadata");i&&function(e,t){if(e.find(e=>e.format!==t))throw Error("GPUVector data chunks must share the declared format")}(a,i),this.name=s,this.dataType=e.dataType,this.format=i,this.length=a.reduce((e,t)=>e+t.length,0),this.valueLength=l,this.stride=o,this.byteOffset=1===a.length?a[0].byteOffset:0,this.byteStride=u,this.rowByteLength=c,this.bufferLayout=h,this.ownsDataChunks=d,this.data.push(...a);return}case"appendable":{let{name:t,device:i,format:r,valueLength:n=0,bufferProps:s}=e,{stride:o,byteStride:l,rowByteLength:u}=a(e);this.name=t,this.dataType=e.dataType,this.format=r,this.length=0,this.valueLength=n,this.stride=o,this.byteOffset=0,this.byteStride=l,this.rowByteLength=u,this.device=i,this.bufferProps=s,this.isAppendable=!0;return}}}get ownsBuffer(){return this.ownsDataChunks&&this.data.some(e=>e.ownsBuffer)||this.ownedVectors.some(e=>e.ownsBuffer)}get capacityRows(){return this.isAppendable?this.length:void 0}get appendedByteLength(){return this.appendableByteLength}addData(e){if(this.format&&e.format!==this.format)throw Error("GPUVector.addData() requires matching formats");if(e.byteStride!==this.byteStride)throw Error("GPUVector.addData() requires matching byteStride");if(e.rowByteLength!==this.rowByteLength)throw Error("GPUVector.addData() requires matching rowByteLength");return this.data.push(e),this.length+=e.length,this.valueLength+=e.valueLength,this}appendDataChunk(e,t=this.appendableByteLength+e.buffer.byteLength){if(!this.isAppendable)throw Error("GPUVector.appendDataChunk() requires appendable vector storage");if(this.format&&e.format!==this.format)throw Error("GPUVector.appendDataChunk() requires matching formats");if(e.byteStride!==this.byteStride||e.rowByteLength!==this.rowByteLength)throw Error("GPUVector.appendDataChunk() requires matching byte layout metadata");return this.data.push(e),this.length+=e.length,this.valueLength+=e.valueLength,this.appendableByteLength=t,this}resetLastBatch(){if(!this.isAppendable)throw Error("GPUVector.resetLastBatch() requires appendable vector storage");for(let e of this.data.splice(0))e.destroy();return this.length=0,this.valueLength=0,this.appendableByteLength=0,this}retainOwnedVectors(e){return this.ownedVectors.push(...e),this}transferBufferOwnership(e){let t=this.data[0],i=e.data[0];if(!t||!i||t.buffer!==i.buffer)throw Error("GPUVector ownership can only be transferred to the same buffer");t.transferBufferOwnership(i)}destroy(){if(this.ownsDataChunks)for(let e of this.data)e.destroy();for(let e of this.ownedVectors.splice(0))e.destroy()}}function a(e){let t=e.format?(0,n.Ft)(e.format):void 0,i=e.rowByteLength??e.byteStride??t?.byteLength;if(void 0===i)throw Error("GPUVector requires format or explicit rowByteLength");return{stride:e.stride??t?.components??1,byteStride:e.byteStride??i,rowByteLength:i}}},37148:(e,t,i)=>{function r(e){let t=u[s(e)];
648if(!t)throw Error(`Unsupported variable shader type: ${e}`);return t}i.d(t,{Co:()=>a,k0:()=>r,si:()=>s});class n{getVariableShaderTypeInfo(e){return r(e)}getAttributeShaderTypeInfo(e){let t=l[function(e){return c[e]||e}(e)];if(!t)throw Error(`Unsupported attribute shader type: ${e}`);let[i,r]=t,n=o[i]*r;return{primitiveType:i,components:r,byteLength:n,integer:"i32"===i||"u32"===i,signed:"u32"!==i}}makeShaderAttributeType(e,t){var i,r;return i=e,1===(r=t)?i:`vec${r}<${i}>`}resolveAttributeShaderTypeAlias(e){var t;return c[t=e]||t}resolveVariableShaderTypeAlias(e){return s(e)}}function s(e){return h[e]||e}let a=new n,o={f32:4,f16:2,i32:4,u32:4},l={f32:["f32",1],"vec2<f32>":["f32",2],"vec3<f32>":["f32",3],"vec4<f32>":["f32",4],f16:["f16",1],"vec2<f16>":["f16",2],"vec3<f16>":["f16",3],"vec4<f16>":["f16",4],i32:["i32",1],"vec2<i32>":["i32",2],"vec3<i32>":["i32",3],"vec4<i32>":["i32",4],u32:["u32",1],"vec2<u32>":["u32",2],"vec3<u32>":["u32",3],"vec4<u32>":["u32",4]},u={f32:{type:"f32",components:1},f16:{type:"f16",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2<f32>":{type:"f32",components:2},"vec3<f32>":{type:"f32",components:3},"vec4<f32>":{type:"f32",components:4},"vec2<f16>":{type:"f16",components:2},"vec3<f16>":{type:"f16",components:3},"vec4<f16>":{type:"f16",components:4},"vec2<i32>":{type:"i32",components:2},"vec3<i32>":{type:"i32",components:3},"vec4<i32>":{type:"i32",components:4},"vec2<u32>":{type:"u32",components:2},"vec3<u32>":{type:"u32",components:3},"vec4<u32>":{type:"u32",components:4},"mat2x2<f32>":{type:"f32",components:4},"mat2x3<f32>":{type:"f32",components:6},"mat2x4<f32>":{type:"f32",components:8},"mat3x2<f32>":{type:"f32",components:6},"mat3x3<f32>":{type:"f32",components:9},"mat3x4<f32>":{type:"f32",components:12},"mat4x2<f32>":{type:"f32",components:8},"mat4x3<f32>":{type:"f32",components:12},"mat4x4<f32>":{type:"f32",components:16},"mat2x2<f16>":{type:"f16",components:4},"mat2x3<f16>":{type:"f16",components:6},"mat2x4<f16>":{type:"f16",components:8},"mat3x2<f16>":{type:"f16",components:6},"mat3x3<f16>":{type:"f16",components:9},"mat3x4<f16>":{type:"f16",components:12},"mat4x2<f16>":{type:"f16",components:8},"mat4x3<f16>":{type:"f16",components:12},"mat4x4<f16>":{type:"f16",components:16},"mat2x2<i32>":{type:"i32",components:4},"mat2x3<i32>":{type:"i32",components:6},"mat2x4<i32>":{type:"i32",components:8},"mat3x2<i32>":{type:"i32",components:6},"mat3x3<i32>":{type:"i32",components:9},"mat3x4<i32>":{type:"i32",components:12},"mat4x2<i32>":{type:"i32",components:8},"mat4x3<i32>":{type:"i32",components:12},"mat4x4<i32>":{type:"i32",components:16},"mat2x2<u32>":{type:"u32",components:4},"mat2x3<u32>":{type:"u32",components:6},"mat2x4<u32>":{type:"u32",components:8},"mat3x2<u32>":{type:"u32",components:6},"mat3x3<u32>":{type:"u32",components:9},"mat3x4<u32>":{type:"u32",components:12},"mat4x2<u32>":{type:"u32",components:8},"mat4x3<u32>":{type:"u32",components:12},"mat4x4<u32>":{type:"u32",components:16}},c={vec2i:"vec2<i32>",vec3i:"vec3<i32>",vec4i:"vec4<i32>",vec2u:"vec2<u32>",vec3u:"vec3<u32>",vec4u:"vec4<u32>",vec2f:"vec2<f32>",vec3f:"vec3<f32>",vec4f:"vec4<f32>",vec2h:"vec2<f16>",vec3h:"vec3<f16>",vec4h:"vec4<f16>"},h={vec2i:"vec2<i32>",vec3i:"vec3<i32>",vec4i:"vec4<i32>",vec2u:"vec2<u32>",vec3u:"vec3<u32>",vec4u:"vec4<u32>",vec2f:"vec2<f32>",vec3f:"vec3<f32>",vec4f:"vec4<f32>",vec2h:"vec2<f16>",vec3h:"vec3<f16>",vec4h:"vec4<f16>",mat2x2f:"mat2x2<f32>",mat2x3f:"mat2x3<f32>",mat2x4f:"mat2x4<f32>",mat3x2f:"mat3x2<f32>",mat3x3f:"mat3x3<f32>",mat3x4f:"mat3x4<f32>",mat4x2f:"mat4x2<f32>",mat4x3f:"mat4x3<f32>",mat4x4f:"mat4x4<f32>",mat2x2i:"mat2x2<i32>",mat2x3i:"mat2x3<i32>",mat2x4i:"mat2x4<i32>",mat3x2i:"mat3x2<i32>",mat3x3i:"mat3x3<i32>",mat3x4i:"mat3x4<i32>",mat4x2i:"mat4x2<i32>",mat4x3i:"mat4x3<i32>",mat4x4i:"mat4x4<i32>",mat2x2u:"mat2x2<u32>",mat2x3u:"mat2x3<u32>",mat2x4u:"mat2x4<u32>",mat3x2u:"mat3x2<u32>",mat3x3u:"mat3x3<u32>",mat3x4u:"mat3x4<u32>",mat4x2u:"mat4x2<u32>",mat4x3u:"mat4x3<u32>",mat4x4u:"mat4x4<u32>",mat2x2h:"mat2x2<f16>",mat2x3h:"mat2x3<f16>",mat2x4h:"mat2x4<f16>",mat3x2h:"mat3x2<f16>",mat3x3h:"mat3x3<f16>",mat3x4h:"mat3x4<f16>",mat4x2h:"mat4x2<f16>",mat4x3h:"mat4x3<f16>",mat4x4h:"mat4x4<f16>"}},37911:(e,t,i)=>{i.d(t,{T5:()=>S,c4:()=>d,ko:()=>C});var r=i(12115),n=i(47650),s=i(53013);function a(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var n=0,r=Object.getOwnPropertySymbols(e);n<r.length;n++)0>t.indexOf(r[n])&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(i[r[n]]=e[r[n]]);return i}
648function o(e,t,i,r){return new(i||(i=Promise))(function(n,s){function a(e){try{l(r.next(e))}catch(e){s(e)}}function o(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}l((r=r.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;let l={NOT_LOADED:"NOT_LOADED",LOADING:"LOADING",LOADED:"LOADED",FAILED:"FAILED",AUTH_FAILURE:"AUTH_FAILURE"};class u{static load(e,t){return o(this,void 0,void 0,function*(){var i,r;let n=e.libraries?e.libraries.split(","):[],s=this.serializeParams(e);this.listeners.push(t),(null==(r=null==(i=window.google)?void 0:i.maps)?void 0:r.importLibrary)?(this.serializedApiParams||(this.loadingStatus=l.LOADED),this.notifyLoadingStatusListeners()):(this.serializedApiParams=s,this.initImportLibrary(e)),this.serializedApiParams&&this.serializedApiParams!==s&&console.warn("[google-maps-api-loader] The maps API has already been loaded with different parameters and will not be loaded again. Refresh the page for new values to have effect.");let a=["maps",...n];yield Promise.all(a.map(e=>google.maps.importLibrary(e)))})}static serializeParams(e){return[e.v,e.key,e.language,e.region,e.authReferrerPolicy,e.solutionChannel].join("/")}static initImportLibrary(e){if(window.google||(window.google={}),window.google.maps||(window.google.maps={}),window.google.maps.importLibrary)return void console.error("[google-maps-api-loader-internal]: initImportLibrary must only be called once");let t=null,i=()=>t||(t=new Promise((t,i)=>{var r;let n=document.createElement("script"),s=new URLSearchParams;for(let[t,i]of Object.entries(e)){let e=t.replace(/[A-Z]/g,e=>"_"+e[0].toLowerCase());s.set(e,String(i))}s.set("loading","async"),s.set("callback","__googleMapsCallback__"),n.async=!0,n.src="https://maps.googleapis.com/maps/api/js?"+s.toString(),n.nonce=(null==(r=document.querySelector("script[nonce]"))?void 0:r.nonce)||"",n.onerror=()=>{this.loadingStatus=l.FAILED,this.notifyLoadingStatusListeners(),i(Error("The Google Maps JavaScript API could not load."))},window.__googleMapsCallback__=()=>{this.loadingStatus=l.LOADED,this.notifyLoadingStatusListeners(),t()},window.gm_authFailure=()=>{this.loadingStatus=l.AUTH_FAILURE,this.notifyLoadingStatusListeners()},this.loadingStatus=l.LOADING,this.notifyLoadingStatusListeners(),document.head.append(n)}));google.maps.importLibrary=e=>i().then(()=>google.maps.importLibrary(e))}static notifyLoadingStatusListeners(){for(let e of this.listeners)e(this.loadingStatus)}}u.loadingStatus=l.NOT_LOADED,u.listeners=[];let c=["gmp_visgl_reactgooglemaps_v1.7.1"],h=r.createContext(null),d=e=>{let{children:t}=e,i=a(e,["children"]),{mapInstances:n,addMapInstance:s,removeMapInstance:l,clearMapInstances:d}=function(){let[e,t]=(0,r.useState)({});return{mapInstances:e,addMapInstance:(e,i="default")=>{t(t=>Object.assign(Object.assign({},t),{[i]:e}))},removeMapInstance:(e="default")=>{t(t=>(t[e],a(t,["symbol"==typeof e?e:e+""])))},clearMapInstances:()=>{t({})}}}(),{status:f,loadedLibraries:p,importLibrary:g}=function(e){let{onLoad:t,onError:i,apiKey:n,version:s,libraries:l=[]}=e,c=a(e,["onLoad","onError","apiKey","version","libraries"]),[h,d]=(0,r.useState)(u.loadingStatus),[f,p]=(0,r.useReducer)((e,t)=>e[t.name]?e:Object.assign(Object.assign({},e),{[t.name]:t.value}),{}),g=(0,r.useMemo)(()=>null==l?void 0:l.join(","),[l]),m=(0,r.useMemo)(()=>JSON.stringify(Object.assign({apiKey:n,version:s},c)),[n,s,c]),b=(0,r.useCallback)(e=>o(this,void 0,void 0,function*(){var t;if(f[e])return f[e];if(!(null==(t=null==google?void 0:google.maps)?void 0:t.importLibrary))throw Error("[api-provider-internal] importLibrary was called before google.maps.importLibrary was defined.");let i=yield window.google.maps.importLibrary(e);return p({name:e,value:i}),i}),[f]);return(0,r.useEffect)(()=>{o(this,void 0,void 0,function*(){try{let e=Object.assign({key:n},c);for(let t of(s&&(e.v=s),(null==g?void 0:g.length)>0&&(e.libraries=g),(void 0===e.channel||e.channel<0||e.channel>999)&&delete e.channel,void 0===e.solutionChannel?e.solutionChannel="GMP_visgl_rgmlibrary_v1_default":""===e.solutionChannel&&delete e.solutionChannel,yield u.load(e,e=>d(e)),["core","maps",...l]))yield b(t);t&&t()}catch(e){i?i(e):console.error("<ApiProvider> failed to load the Google Maps JavaScript API",e)}})},[n,g,m]),{status:h,loadedLibraries:f,importLibrary:b}}(i),m=function(e){return(0,r.useMemo)(()=>e.disableUsageAttribution?null:c,[e.disableUsageAttribution])}(i),b=(0,r.useMemo)(()=>({mapInstances:n,addMapInstance:s,removeMapInstance:l,clearMapInstances:d,status:f,loadedLibraries:p,importLibrary:g,internalUsageAttributionIds:m}),[n,s,l,d,f,p,g,m]);return r.createElement(h.Provider,{value:b},t)},f={onBoundsChanged:"bounds_changed",onCenterChanged:"center_changed",onClick:"click",onContextmenu:"contextmenu",onDblclick:"dblclick",onDrag:"drag",onDragend:"dragend",onDragstart:"dragstart",onHeadingChanged:"heading_changed",onIdle:"idle",onIsFractionalZoomEnabledChanged:"isfractionalzoomenabled_changed",onMapCapabilitiesChanged:"mapcapabilities_changed",onMapTypeIdChanged:"maptypeid_changed",onMousemove:"mou
648semove",onMouseout:"mouseout",onMouseover:"mouseover",onProjectionChanged:"projection_changed",onRenderingTypeChanged:"renderingtype_changed",onTilesLoaded:"tilesloaded",onTiltChanged:"tilt_changed",onZoomChanged:"zoom_changed",onCameraChanged:"bounds_changed"},p=["bounds_changed","center_changed","heading_changed","tilt_changed","zoom_changed"],g=["click","contextmenu","dblclick","mousemove","mouseout","mouseover"],m=Object.keys(f),b=new Set(["backgroundColor","clickableIcons","controlSize","disableDefaultUI","disableDoubleClickZoom","draggable","draggableCursor","draggingCursor","fullscreenControl","fullscreenControlOptions","gestureHandling","headingInteractionEnabled","isFractionalZoomEnabled","keyboardShortcuts","mapTypeControl","mapTypeControlOptions","mapTypeId","maxZoom","minZoom","noClear","panControl","panControlOptions","restriction","rotateControl","rotateControlOptions","scaleControl","scaleControlOptions","scrollwheel","streetView","streetViewControl","streetViewControlOptions","styles","tiltInteractionEnabled","zoomControl","zoomControlOptions"]);function v(){var e;return(null==(e=(0,r.useContext)(h))?void 0:e.status)||l.NOT_LOADED}function y(e){return e&&"object"==typeof e&&"lat"in e&&"lng"in e&&Number.isFinite(e.lat)&&Number.isFinite(e.lng)?e:e.toJSON()}let _=()=>r.createElement("div",{style:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:999,display:"flex",flexFlow:"column nowrap",textAlign:"center",justifyContent:"center",fontSize:".8rem",color:"rgba(0,0,0,0.6)",background:"#dddddd",padding:"1rem 1.5rem"}},r.createElement("h2",null,"Error: AuthFailure"),r.createElement("p",null,"A problem with your API key prevents the map from rendering correctly. Please make sure the value of the ",r.createElement("code",null,"APIProvider.apiKey")," prop is correct. Check the error-message in the console for further details."));function w(){return v()===l.LOADED}class x{static has(e){return this.entries[e]&&this.entries[e].length>0}static pop(e){return this.entries[e]&&this.entries[e].pop()||null}static push(e,t){this.entries[e]||(this.entries[e]=[]),this.entries[e].push(t)}}x.entries={};let E=r.createContext(null),S=e=>{let{children:t,id:i,className:n,style:o}=e,u=(0,r.useContext)(h),c=v();if(!u)throw Error("<Map> can only be used inside an <ApiProvider> component.");let[d,S,P]=function(e,t){let i=w(),[n,s]=(0,r.useState)(null),[o,l]=function(){let[e,t]=(0,r.useState)(null);return[e,(0,r.useCallback)(e=>t(e),[t])]}(),u=function(e){let t=function(){let[,e]=(0,r.useReducer)(e=>e+1,0);return e}(),i=(0,r.useRef)({center:{lat:0,lng:0},heading:0,tilt:0,zoom:0});return(0,r.useEffect)(()=>{if(!e)return;let r=google.maps.event.addListener(e,"bounds_changed",()=>{!function(e,t){let i=e.getCenter(),r=e.getZoom(),n=e.getHeading()||0,s=e.getTilt()||0,a=e.getBounds();i&&a&&Number.isFinite(r)||console.warn("[useTrackedCameraState] at least one of the values from the map returned undefined. This is not expected to happen. Please report an issue at https://github.com/visgl/react-google-maps/issues/new"),Object.assign(t.current,{center:(null==i?void 0:i.toJSON())||{lat:0,lng:0},zoom:r||0,heading:n,tilt:s})}(e,i),t()});return()=>r.remove()},[e,t]),i}(n),{id:c,defaultBounds:h,defaultCenter:d,defaultZoom:f,defaultHeading:p,defaultTilt:g,reuseMaps:m,renderingType:b,colorScheme:v}=e,y=a(e,["id","defaultBounds","defaultCenter","defaultZoom","defaultHeading","defaultTilt","reuseMaps","renderingType","colorScheme"]),_=void 0!==e.zoom||void 0!==e.defaultZoom,E=void 0!==e.center||void 0!==e.defaultCenter;h||_&&E||console.warn("<Map> component is missing configuration. You have to provide zoom and center (via the `zoom`/`defaultZoom` and `center`/`defaultCenter` props) or specify the region to show using `defaultBounds`. See https://visgl.github.io/react-google-maps/docs/api-reference/components/map#required"),!y.center&&d&&(y.center=d),!y.zoom&&Number.isFinite(f)&&(y.zoom=f),!y.heading&&Number.isFinite(p)&&(y.heading=p),!y.tilt&&Number.isFinite(g)&&(y.tilt=g);let S=y.internalUsageAttributionIds;for(let e of(null==S?y.internalUsageAttributionIds=t.internalUsageAttributionIds:y.internalUsageAttributionIds=[...t.internalUsageAttributionIds||[],...S],Object.keys(y)))void 0===y[e]&&delete y[e];let P=(0,r.useRef)(void 0);return(0,r.useEffect)(()=>{let r,n;if(!o||!i)return;let{addMapInstance:l,removeMapInstance:d}=t,{mapId:f}=e,p=`${f||"default"}:${b||"default"}:${v||"LIGHT"}`;if(m&&x.has(p)?(r=(n=x.pop(p)).getDiv(),o.appendChild(r),n.setOptions(y),setTimeout(()=>n.setCenter(n.getCenter()),0)):((r=document.createElement("div")).style.height="100%",o.appendChild(r),n=new google.maps.Map(r,Object.assign(Object.assign(Object.assign({},y),b?{renderingType:b}:{}),v?{colorScheme:v}:{}))),s(n),l(n,c),h){let{padding:e}=h,t=a(h,["padding"]);n.fitBounds(t,e)}else _&&E||n.fitBounds({east:180,west:-180,south:-90,north:90});if(P.current){let{mapId:e,cameraState:t}=P.current;e!==f&&n.setOptions(t)}return()=>{P.current={mapId:f,cameraState:u.current},r.remove(),m?x.push(p,n):google.maps.event.clearInstanceListeners(n),s(null),d(c)}},[o,i,c,e.mapId,e.renderingType,e.colorScheme]),[n,l,u]}(e,u);!function(e,t,i){let n=i.center?y(i.center):null,s=null,a=null;n&&Number.isFinite(n.lat)&&Number.isFinite(n.lng)&&(s=n.lat,a=n.lng);let o=Number.isFinite(i.zoom)?i.zoom:null,l=Number.isFinite(i.heading)?i.heading:null,u=Number.isFinite(i.tilt)?i.tilt:null;(0,r.useLayoutEffect)(()=>
648{if(!e)return;let i={},r=!1;null!==s&&null!==a&&(t.current.center.lat!==s||t.current.center.lng!==a)&&(i.center={lat:s,lng:a},r=!0),null!==o&&t.current.zoom!==o&&(i.zoom=o,r=!0),null!==l&&t.current.heading!==l&&(i.heading=l,r=!0),null!==u&&t.current.tilt!==u&&(i.tilt=u,r=!0),r&&e.moveCamera(i)})}(d,P,e),function(e,t){for(let i of m){let n=t[i],s=f[i];(0,r.useEffect)(()=>{if(!e||!n)return;let t=google.maps.event.addListener(e,s,t=>{n(function(e,t,i){var r;let n={type:e,map:t,detail:{},stoppable:!1,stop:()=>{}};if(p.includes(e)){let e=t.getCenter(),i=t.getZoom(),r=t.getHeading()||0,s=t.getTilt()||0,a=t.getBounds();return e&&a&&Number.isFinite(i)||console.warn("[createEvent] at least one of the values from the map returned undefined. This is not expected to happen. Please report an issue at https://github.com/visgl/react-google-maps/issues/new"),n.detail={center:(null==e?void 0:e.toJSON())||{lat:0,lng:0},zoom:i||0,heading:r,tilt:s,bounds:(null==a?void 0:a.toJSON())||{north:90,east:180,south:-90,west:-180}},n}if(g.includes(e)){if(!i)throw Error("[createEvent] mouse events must provide a srcEvent");return n.domEvent=i.domEvent,n.stoppable=!0,n.stop=()=>i.stop(),n.detail={latLng:(null==(r=i.latLng)?void 0:r.toJSON())||null,placeId:i.placeId},n}return n}(s,e,t))});return()=>t.remove()},[e,s,n])}}(d,e),function(e,t){var i,n;let a={};for(let e of Object.keys(t))b.has(e)&&(a[e]=t[e]);i=()=>{e&&e.setOptions(a)},n=[a],(0,r.useEffect)(i,[function(e,t){let i=function(e){let t=(0,r.useRef)(void 0);return(0,r.useEffect)(()=>{t.current=e}),t.current}(e);return(0,r.useMemo)(()=>i&&t(i,e)?i:e,[e,i,t])}(n,s)])}(d,e);let C=function(e,t){let{viewport:i,viewState:n}=t;return(0,r.useLayoutEffect)(()=>{if(!e||!n)return;let{latitude:t,longitude:i,bearing:r,pitch:s,zoom:a}=n;e.moveCamera({center:{lat:t,lng:i},heading:r,tilt:s,zoom:a+1})},[e,n]),!!i}(d,e),T=!!e.controlled;(0,r.useEffect)(()=>{if(d)return C&&d.setOptions({disableDefaultUI:!0}),(C||T)&&d.setOptions({gestureHandling:"none",keyboardShortcuts:!1}),()=>{d.setOptions({gestureHandling:e.gestureHandling,keyboardShortcuts:e.keyboardShortcuts})}},[d,C,T,e.gestureHandling,e.keyboardShortcuts]);let A=e.center?y(e.center):null,M=null,L=null;A&&Number.isFinite(A.lat)&&Number.isFinite(A.lng)&&(M=A.lat,L=A.lng);let k=(0,r.useMemo)(()=>{var t,i,r;return{center:{lat:null!=M?M:0,lng:null!=L?L:0},zoom:null!=(t=e.zoom)?t:0,heading:null!=(i=e.heading)?i:0,tilt:null!=(r=e.tilt)?r:0}},[M,L,e.zoom,e.heading,e.tilt]);(0,r.useLayoutEffect)(()=>{if(!d||!T)return;d.moveCamera(k);let e=d.addListener("bounds_changed",()=>{d.moveCamera(k)});return()=>e.remove()},[d,T,k]);let I=(0,r.useMemo)(()=>Object.assign({width:"100%",height:"100%",position:"relative",zIndex:C?-1:0},o),[o,C]),O=(0,r.useMemo)(()=>({map:d}),[d]);return c===l.AUTH_FAILURE?r.createElement("div",{style:Object.assign({position:"relative"},n?{}:I),className:n},r.createElement(_,null)):r.createElement("div",Object.assign({ref:S,"data-testid":"map",style:n?void 0:I,className:n},i?{id:i}:{}),d?r.createElement(E.Provider,{value:O},t):null)};S.deckGLViewProps=!0;let P=new Set,C=(e=null)=>{let t=(0,r.useContext)(h),{map:i}=(0,r.useContext)(E)||{};if(null===t)return!function(...e){let t=JSON.stringify(e);P.has(t)||(P.add(t),console.error(...e))}("useMap(): failed to retrieve APIProviderContext. Make sure that the <APIProvider> component exists and that the component you are calling `useMap()` from is a sibling of the <APIProvider>."),null;let{mapInstances:n}=t;return null!==e?n[e]||null:i||n.default||null};function T(e,t,i){(0,r.useEffect)(()=>{if(!e||!t||!i)return;let r=google.maps.event.addListener(e,t,i);return()=>r.remove()},[e,t,i])}function A(e,t,i){(0,r.useEffect)(()=>{e&&(e[t]=i)},[e,t,i])}function M(e,t,i){(0,r.useEffect)(()=>{if(e&&t&&i)return e.addEventListener(t,i),()=>e.removeEventListener(t,i)},[e,t,i])}class L{constructor(){this.renderedStyles=new Set,this.styleElement=null}getStyleElement(){return this.styleElement||(this.styleElement=document.createElement("style"),this.styleElement.setAttribute("data-rgm-anchor-styles",""),document.head.appendChild(this.styleElement)),this.styleElement}addAdvancedMarkerPointerEventsOverwrite(){if(this.renderedStyles.has("marker-pointer-events"))return;let e=this.getStyleElement();e.textContent+=`
649      gmp-advanced-marker[data-origin='rgm'] {
650        pointer-events: none !important;
651      }
652    `,this.renderedStyles.add("marker-pointer-events")}cleanup(){this.styleElement&&(this.styleElement.remove(),this.styleElement=null,this.renderedStyles.clear())}}let k=new L,I=r.createContext(null),O={BOTTOM:["50%","100%"]};
652function R(e){return e.nodeType===Node.ELEMENT_NODE}(0,r.forwardRef)((e,t)=>{let{children:i,style:s,className:a,anchorPoint:o}=e,[l,u]=function(e){var t,i,n,s,a;let[o,l]=(0,r.useState)(null),[u,c]=(0,r.useState)(null),d=C(),f=function(e){let t=w(),i=(0,r.useContext)(h);return(0,r.useEffect)(()=>{t&&i&&i.importLibrary(e)},[t,i,e]),(null==i?void 0:i.loadedLibraries[e])||null}("marker"),{children:p,onClick:g,className:m,onMouseEnter:b,onMouseLeave:v,onDrag:y,onDragStart:_,onDragEnd:x,collisionBehavior:E,clickable:S,draggable:P,position:L,title:I,zIndex:B,anchorPoint:D,anchorLeft:F,anchorTop:$}=e,z=r.Children.count(p);return(0,r.useEffect)(()=>{if(!d||!f)return;let e=new f.AdvancedMarkerElement;e.map=d,l(e);let t=null;return z>0&&(e.content=t=document.createElement("div"),c(t)),()=>{e.map=null,null==t||t.remove(),l(null),c(null)}},[d,f,z]),(0,r.useEffect)(()=>{(null==o?void 0:o.content)&&R(o.content)&&!(z>0)&&(o.content.className=null!=m?m:"")},[o,m,z]),t=o,i=D,n=F,s=$,a=z>0,(0,r.useEffect)(()=>{if(!t||!a)return;let e=function(e,t){var i;if(!(null==(i=null==google?void 0:google.maps)?void 0:i.version))return;let r=google.maps.version.split("."),n=parseInt(r[0],10),s=parseInt(r[1],10);return n>3||3===n&&s>=62}(3,0),r=t.content;if(r&&R(r)){if(void 0!==n||void 0!==s){e||console.warn(`AdvancedMarker: The anchorLeft and anchorTop props are only supported in Google Maps API version 3.62 and above. The current version is ${google.maps.version}.`),t.anchorLeft=n,t.anchorTop=s,void 0!==i&&console.warn("AdvancedMarker: the anchorPoint prop is ignored when anchorLeft and/or anchorTop are set.");return}if(void 0!==i){let[n,s]=null!=i?i:O.BOTTOM,a=`calc(-1 * ${n})`,o=`calc(-1 * ${s})`;e?(t.anchorLeft=a,t.anchorTop=o,r.style.transform=""):(r.style.transform=`translate(50%, 100%) translate(${a}, ${o})`,t.dataset.origin="rgm",k.addAdvancedMarkerPointerEventsOverwrite())}}},[t,i,n,s,a]),A(o,"position",L),A(o,"title",null!=I?I:""),A(o,"zIndex",B),A(o,"collisionBehavior",E),(0,r.useEffect)(()=>{o&&(void 0!==P?o.gmpDraggable=P:y||_||x?o.gmpDraggable=!0:o.gmpDraggable=!1)},[o,P,y,x,_]),(0,r.useEffect)(()=>{if(!o)return;let e=void 0!==S||!!g||!!b||!!v;o.gmpClickable=e,e&&(null==o?void 0:o.content)&&R(o.content)&&(o.content.style.pointerEvents="all",g&&(o.content.style.cursor="pointer"))},[o,S,g,b,v]),T(o,"click",g),T(o,"drag",y),T(o,"dragstart",_),T(o,"dragend",x),M(null==o?void 0:o.element,"mouseenter",b),M(null==o?void 0:o.element,"mouseleave",v),[o,u]}(e),c=(0,r.useMemo)(()=>l?{marker:l}:null,[l]);return((0,r.useImperativeHandle)(t,()=>l,[l]),u)?r.createElement(I.Provider,{value:c},(0,n.createPortal)(r.createElement(B,{anchorPoint:o,styles:s,className:a},i),u)):null}).displayName="AdvancedMarker";let B=({children:e,styles:t,className:i})=>r.createElement("div",{className:i,style:t},e);(0,r.forwardRef)((e,t)=>{let i=function(e){let[t,i]=(0,r.useState)(null),n=C(),{onClick:s,onDrag:o,onDragStart:l,onDragEnd:u,onMouseOver:c,onMouseOut:h}=e,d=a(e,["onClick","onDrag","onDragStart","onDragEnd","onMouseOver","onMouseOut"]),{position:f,draggable:p}=d;return(0,r.useEffect)(()=>{if(!n){void 0===n&&console.error("<Marker> has to be inside a Map component.");return}let e=new google.maps.Marker(d);return e.setMap(n),i(e),()=>{e.setMap(null),i(null)}},[n]),(0,r.useEffect)(()=>{if(!t)return;let e=google.maps.event;return s&&e.addListener(t,"click",s),o&&e.addListener(t,"drag",o),l&&e.addListener(t,"dragstart",l),u&&e.addListener(t,"dragend",u),c&&e.addListener(t,"mouseover",c),h&&e.addListener(t,"mouseout",h),t.setDraggable(!!p),()=>{e.clearInstanceListeners(t)}},[t,p,s,o,l,u,c,h]),(0,r.useEffect)(()=>{t&&d&&t.setOptions(d)},[t,d]),(0,r.useEffect)(()=>{!p&&f&&t&&t.setPosition(f)},[p,f,t]),t}(e);return(0,r.useImperativeHandle)(t,()=>i,[i]),r.createElement(r.Fragment,null)}).displayName="Marker"},38508:(e,t,i)=>{i.d(t,{A:()=>a,k:()=>s});var r=i(50748);let n={};function s(e){n=e}function a(e,t,i,s){r.A.level>0&&n[e]&&n[e].call(null,t,i,s)}},38705:(e,t,i)=>{i.d(t,{C:()=>b});var r=i(73544),n=i(30346),s=i(88057),a=i(11940),o=i(42852),l=i(72868),u=i(93614),c=i(20296),h=i(71011),d=i(31340),f=i(39713),p=i(70309),g=i(22045),m=i(52975);class b{static defaultProps={...r.C.defaultProps,id:"unnamed",handle:void 0,userData:{},source:"",modules:[],defines:{},plugins:[],bindings:void 0,shaderInputs:void 0,pipelineFactory:void 0,shaderFactory:void 0,shaderAssembler:h._P.getDefaultShaderAssembler("wgsl"),debugShaders:void 0};device;id;pipelineFactory;shaderFactory;userData={};bindings={};pipeline;source;shader;shaderInputs;_uniformStore;_pipelineNeedsUpdate="newly created";_getModuleUniforms;props;_destroyed=!1;constructor(e,t){if("webgpu"!==e.type)throw Error("Computation is only supported in WebGPU");this.props={...b.defaultProps,...t},t=this.props,this.id=t.id||(0,m.L)("model"),this.device=e,Object.assign(this.userData,t.userData);let i=function(e){return{type:e.type,shaderLanguage:e.info.shadingLanguage,shaderLanguageVersion:e.info.shadingLanguageVersion,gpu:e.info.gpu,limits:e.limits,features:e.features}}(e),r=(0,d.r)(this.props.plugins,i.shaderLanguage);if(Object.keys(r.vertexInputs).length>0||Object.keys(r.varyings).length>0)throw Error("Computation does not support ShaderPlugin vertex inputs or varyings");let o=Object.fromEntries((0,d.K)(this.props.modules,r.modules).map(e=>[e.name,e]));this.shaderInputs=t.shaderInputs||new p.l(o),t.shaderInputs&&r.modules.length>0&&this.shaderInputs.addModules(r.modules),this.setShaderInputs(this.shaderInputs);let l=(0,g.jY)(this.props.modules,this.shaderInputs?.getModules()),u={...r.defines,...this.props.defines};this.props.shaderLayout=(0,g.Y$)(this.props.shaderLayout,l)||null,this.pipelineFactory=t.pipelineFactory||n.N.getDefaultPipelineFactory(this.device),this.shaderFactory=t.shaderFactory||s.g.getDefaultShaderFactory(this.device);let c=this.props.shaderAssembler;(0,a.v)(c instanceof h.Ry);let{source:f,getUniforms:v,shaderLayout:y}=c.assembleWGSLShader({platformInfo:i,...this.props,modules:l,defines:u,scanVertexAttributes:!1,pluginInjections:r.injections});this.source=f,this._getModuleUniforms=v;let _=y??e.getShaderLayout?.(this.source,{scanVertexAttributes:!1});this.props.shaderLayout=(0,g.Y$)(this.props.shaderLayout||_||null,l)||null,this.pipeline=this._updatePipeline(),t.bindings&&this.setBindings(t.bindings)}destroy(){this._destroyed||(this.pipelineFactory.release(this.pipeline),this.shaderFactory.release(this.shader),this._uniformStore.destroy(),this._destroyed=!0)}predraw(e){this.updateShaderInputs(e)}
652dispatch(e,t,i,r){try{this._logDrawCallStart(),this._setPipeline(e),e.dispatch(t,i,r)}finally{this._logDrawCallEnd()}}dispatchIndirect(e,t,i=0){try{this._logDrawCallStart(),this._setPipeline(e),e.dispatchIndirect(t,i)}finally{this._logDrawCallEnd()}}_setPipeline(e){this.pipeline=this._updatePipeline(),this.pipeline.setBindings(this.bindings),e.setPipeline(this.pipeline),e.setBindings({})}setVertexCount(e){}setInstanceCount(e){}setShaderInputs(e){for(let[t,i]of(this.shaderInputs=e,this._uniformStore=new o.K(this.device,this.shaderInputs.modules),Object.entries(this.shaderInputs.modules)))if((0,g.fX)(i)){let e=this._uniformStore.getManagedUniformBuffer(t);this.bindings[`${t}Uniforms`]=e}}setShaderModuleProps(e){let t=this._getModuleUniforms(e),i=Object.keys(t).filter(e=>{let i=t[e];return!(0,f.H9)(i)&&"number"!=typeof i&&"boolean"!=typeof i}),r={};for(let e of i)r[e]=t[e],delete t[e]}updateShaderInputs(e){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues(),e)}setBindings(e){Object.assign(this.bindings,e)}_setPipelineNeedsUpdate(e){this._pipelineNeedsUpdate=this._pipelineNeedsUpdate||e}_updatePipeline(){if(this._pipelineNeedsUpdate){let e=null;this.pipeline&&(l.R.log(1,`Model ${this.id}: Recreating pipeline because "${this._pipelineNeedsUpdate}".`)(),e=this.shader),this._pipelineNeedsUpdate=!1,this.shader=this.shaderFactory.createShader({id:`${this.id}-fragment`,stage:"compute",source:this.source,debugShaders:this.props.debugShaders}),this.pipeline=this.pipelineFactory.createComputePipeline({...this.props,shader:this.shader}),e&&this.shaderFactory.release(e)}return this.pipeline}_lastLogTime=0;_logOpen=!1;_logDrawCallStart(){let e=l.R.level>3?0:1e4;l.R.level<2||Date.now()-this._lastLogTime<e||(this._lastLogTime=Date.now(),this._logOpen=!0,l.R.group(2,`>>> DRAWING MODEL ${this.id}`,{collapsed:l.R.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=this.shaderInputs.getDebugTable();l.R.table(2,e)(),l.R.groupEnd(2)(),this._logOpen=!1}}_drawCount=0;_getBufferOrConstantValues(e,t){let i=u.r.getTypedArrayConstructor(t);return(e instanceof c.h?new i(e.debugData):e).toString()}}},38758:(e,t,i)=>{i.d(t,{$Q:()=>n});var r=i(18976);function n(e){(0,r.$g)(e);let t={},i={};!function e(t){let{modules:i,level:r,moduleMap:n,moduleDepth:s}=t;if(r>=5)throw Error("Possible loop in shader dependency graph");for(let e of i)n[e.name]=e,(void 0===s[e.name]||s[e.name]<r)&&(s[e.name]=r);for(let t of i)t.dependencies&&e({modules:t.dependencies,level:r+1,moduleMap:n,moduleDepth:s})}({modules:e,level:0,moduleMap:t,moduleDepth:i});let n=Object.keys(i).sort((e,t)=>i[t]-i[e]).map(e=>t[e]);return(0,r.$g)(n),n}},39713:(e,t,i)=>{i.d(t,{H9:()=>r});function r(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)||!!Array.isArray(e)&&(0===e.length||"number"==typeof e[0])}},42178:(e,t,i)=>{i.d(t,{A:()=>r});class r{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){this.cancel(),this.settings=e,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(null===this._handle){let{_timeline:e,settings:t}=this;this._handle=e.addChannel({delay:e.getTime(),duration:t.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}}},42852:(e,t,i)=>{i.d(t,{K:()=>c});var r=i(20296),n=i(72868),s=i(23323);function a(e){return Array.isArray(e)?0===e.length||"number"==typeof e[0]:ArrayBuffer.isView(e)&&!(e instanceof DataView)}class o{name;uniforms={};modifiedUniforms={};modified=!0;bindingLayout={};needsRedraw="initialized";constructor(e){if(this.name=e?.name||"unnamed",e?.name&&e?.shaderLayout){let t=e?.shaderLayout.bindings?.find(t=>"uniform"===t.type&&t.name===e?.name);if(!t)throw Error(e?.name);for(let e of t.uniforms||[])this.bindingLayout[e.name]=e}}setUniforms(e){for(let[t,i]of Object.entries(e))this._setUniform(t,i)&&!this.needsRedraw&&this.setNeedsRedraw(`${this.name}.${t}=${i}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,t){return!function(e,t,i=16){if(e===t)return!0;
652if(!a(e)||!a(t)||e.length!==t.length)return!1;let r=Math.min(i,128);if(e.length>r)return!1;for(let i=0;i<e.length;++i)if(t[i]!==e[i])return!1;return!0}(this.uniforms[e],t)&&(this.uniforms[e]=a(t)?t.slice():t,this.modifiedUniforms[e]=!0,this.modified=!0,!0)}}var l=i(28749);class u{layout;constructor(e){this.layout=e}has(e){return!!this.layout.fields[e]}get(e){let t=this.layout.fields[e];return t?{offset:t.offset,size:t.size}:void 0}getFlatUniformValues(e){let t={};for(let[i,r]of Object.entries(e)){let e=this.layout.uniformTypes[i];e?this._flattenCompositeValue(t,i,e,r):this.layout.fields[i]&&(t[i]=r)}return t}getData(e){let t=(0,l.o)(this.layout.byteLength);new Uint8Array(t,0,this.layout.byteLength).fill(0);let i={i32:new Int32Array(t),u32:new Uint32Array(t),f32:new Float32Array(t),f16:new Uint16Array(t)};for(let[t,r]of Object.entries(this.getFlatUniformValues(e)))this._writeLeafValue(i,t,r);return new Uint8Array(t,0,this.layout.byteLength)}_flattenCompositeValue(e,t,i,r){if(void 0!==r){var o;if("string"==typeof i||this.layout.fields[t]){e[t]=r;return}if(Array.isArray(i)){let s=i[0],o=i[1];if(Array.isArray(s))throw Error(`Nested arrays are not supported for ${t}`);if("string"==typeof s&&a(r))return void this._flattenPackedArray(e,t,s,o,r);if(!Array.isArray(r))return void n.R.warn(`Unsupported uniform array value for ${t}:`,r)();for(let i=0;i<Math.min(r.length,o);i++){let n=r[i];void 0!==n&&this._flattenCompositeValue(e,`${t}[${i}]`,s,n)}return}if((0,s.WC)(i)&&(o=r)&&"object"==typeof o&&!Array.isArray(o)&&!ArrayBuffer.isView(o)){for(let[n,s]of Object.entries(r)){if(void 0===s)continue;let r=`${t}.${n}`;this._flattenCompositeValue(e,r,i[n],s)}return}n.R.warn(`Unsupported uniform value for ${t}:`,r)()}}_flattenPackedArray(e,t,i,r,n){let a=(0,s.jV)(i,this.layout.layout).components;for(let i=0;i<r;i++){var o,l,u;let r=i*a;if(r>=n.length)break;1===a?e[`${t}[${i}]`]=Number(n[r]):e[`${t}[${i}]`]=(o=n,l=r,u=r+a,Array.prototype.slice.call(o,l,u))}}_writeLeafValue(e,t,i){let r=this.layout.fields[t];if(!r)return void n.R.warn(`Uniform ${t} not found in layout`)();let{type:s,components:a,columns:o,rows:l,offset:u,columnStride:c}=r,h=e[s];if(1===a){h[u]=Number(i);return}if(1===o){for(let e=0;e<a;e++)h[u+e]=Number(i[e]??0);return}let d=0;for(let e=0;e<o;e++){let t=u+e*c;for(let e=0;e<l;e++)h[t+e]=Number(i[d++]??0)}}}class c{device;uniformBlocks=new Map;shaderBlockLayouts=new Map;shaderBlockWriters=new Map;uniformBuffers=new Map;constructor(e,t){for(let[i,r]of(this.device=e,Object.entries(t))){let t=(0,s.Pr)(r.uniformTypes??{},{layout:r.layout??("webgpu"===e.type?"wgsl-uniform":"std140")}),n=new u(t);this.shaderBlockLayouts.set(i,t),this.shaderBlockWriters.set(i,n);let a=new o({name:i});a.setUniforms(n.getFlatUniformValues(r.defaultUniforms||{})),this.uniformBlocks.set(i,a)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e,t){for(let[t,i]of Object.entries(e)){let e=this.shaderBlockWriters.get(t),r=e?.getFlatUniformValues(i||{});this.uniformBlocks.get(t)?.setUniforms(r||{})}this.updateUniformBuffers(t)}getUniformBufferByteLength(e){return Math.max(this.shaderBlockLayouts.get(e)?.byteLength||0,1024)}getUniformBufferData(e){let t=this.uniformBlocks.get(e)?.getAllUniforms()||{},i=this.shaderBlockWriters.get(e);return i?.getData(t)||new Uint8Array(0)}createUniformBuffer(e,t){t&&this.setUniforms(t);let i=this.getUniformBufferByteLength(e),n=this.device.createBuffer({usage:r.h.UNIFORM|r.h.COPY_DST,byteLength:i}),s=this.getUniformBufferData(e);return n.write(s),n}getManagedUniformBuffer(e){if(!this.uniformBuffers.get(e)){let t=this.getUniformBufferByteLength(e),i=this.device.createBuffer({usage:r.h.UNIFORM|r.h.COPY_DST,byteLength:t});this.uniformBuffers.set(e,i)}return this.uniformBuffers.get(e)}updateUniformBuffers(e){let t=!1;for(let i of this.uniformBlocks.keys()){let r=this.updateUniformBuffer(i,e);t||=r}return t&&n.R.log(3,`UniformStore.updateUniformBuffers(): ${t}`)(),t}updateUniformBuffer(e,t){let i=this.uniformBlocks.get(e),r=this.uniformBuffers.get(e),s=!1;if(r&&i?.needsRedraw){s||=i.needsRedraw;let a=this.getUniformBufferData(e);if((r=this.uniformBuffers.get(e))&&(t?this.device.writeBufferViaCommandEncoder(t,r,a):r.write(a)),n.R.level>=4){let t=this.uniformBlocks.get(e)?.getAllUniforms();n.R.log(4,`Writing to uniform buffer ${String(e)}`,a,t)()}}return s}}},44486:(e,t,i)=>{i.d(t,{P:()=>o});var r=i(72868),n=i(37148),s=i(47097),a=i(75659);function o(e,t){let i={};for(let o of(0,a.JO)(e,t,{warnOnMissingBufferLayout:!0})){let t=function(e,t){let i=function(e,t){let i=e.attributes.find(e=>e.name===t);return i||r.R.warn(`shader layout attribute "${t}" not present in shader`)(),i||null}(e,t.attributeName),a=n.Co.getAttributeShaderTypeInfo(i.type),o=t.vertexFormat,l=s.E.getVertexFormatInfo(o);return{attributeName:t.attributeName,bufferName:t.bufferName,location:i.location,shaderType:i.type,primitiveType:a.primitiveType,shaderComponents:a.components,vertexFormat:o,bufferDataType:l.type,bufferComponents:l.components,normalized:l.normalized,integer:a.integer,stepMode:t.stepMode,byteOffset:t.byteOffset,byteStride:t.byteStride}}(e,o);i[o.attributeName]=t}return i}},45044:(e,t,i)=>{function r(e,t){switch(e){case"u32":return`${t}u`;case"f32":return Number.isInteger(t)?`${t}.0`:`${t}`;default:return`${t}`}}function n(e,t){switch(e){case"uint32":return r("u32",Math.trunc(t));case"sint32":return`${Math.trunc(t)}`;case"float32":return r("f32",t);default:throw Error(`WebGPU operations only support 32-bit output types, got ${e}`)}}function s(e){switch(e){case"uint32":return"0u";case"sint32":return"0";case"float32":return"0.0";default:throw Error(`WebGPU operations only support 32-bit output types, got ${e}`)}}function a(e){switch(e){case"uint32":return"u32";case"sint32":return"i32";case"float32":return"f32";default:throw Error(`WebGPU operations only support 32-bit storage types, got ${e}`)}}i.d(t,{C1:()=>n,Lm:()=>r,_1:()=>s,iP:()=>a})},45518:(e,t,i)=>{i.d(t,{hW:()=>b});var r,n=i(76850);let s="4.1.2";function a(e,t){if(!e)throw Error(t||"Assertion failed")}function o(e){let t;if(!e)return 0;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return a(Number.isFinite(t)&&t>=0),t}let l=()=>{};class u{constructor({level:e=0}={}){this.userData={},this._onceCache=new Set,this._level=e}set level(e){this.setLevel(e)}get level(){return this.getLevel()}setLevel(e){return this._level=e,this}getLevel(){return this._level}warn(e,...t){return this._log("warn",0,e,t,{once:!0})}error(e,...t){return this._log("error",0,e,t)}log(e,t,...i){return this._log("log",e,t,i)}info(e,t,...i){return this._log("info",e,t,i)}once(e,t,...i){return this._log("once",e,t,i,{once:!0})}_log(e,t,i,r,n={}){let s=function(e){let{logLevel:t,message:i}=e;e.logLevel=o(t);let r=e.args?Array.from(e.args):[];for(;r.length&&r.shift()!==i;);switch(typeof t){case"string":case"function":void 0!==i&&r.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());let n=typeof e.message;return a("string"===n||"object"===n),Object.assign(e,{args:r},e.opts)}({logLevel:t,message:i,args:this._buildArgs(t,i,r),opts:n});return this._createLogFunction(e,s,n)}_buildArgs(e,t,i){return[e,t,...i]}_createLogFunction(e,t,i){if(!this._shouldLog(t.logLevel))return l;let r=this._getOnceTag(i.tag??t.tag??t.message);if((i.once||t.once)&&void 0!==r){if(this._onceCache.has(r))return l;this._onceCache.add(r)}return this._emit(e,t)}_shouldLog(e){return this.getLevel()>=o(e)}_getOnceTag(e){if(void 0!==e)try{return"string"==typeof e?e:String(e)}catch{return}}}class c{constructor(e,t,i="sessionStorage"){this.storage=function(e){try{let t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config=t,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){if(Object.assign(this.config,e),this.storage){let e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}}_loadConfiguration(){let e={};
652if(this.storage){let t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function h(e){return"string"!=typeof e?e:r[e=e.toUpperCase()]||r.WHITE}!function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"}(r||(r={}));var d=i(67153);class f{getHighResolutionTimer(){let e;if((0,n.B)()&&d.x.performance)e=d.x?.performance?.now?.();else if("hrtime"in d.eh){let t=d.eh?.hrtime?.();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}getMemoryUsageMB(){let e=d.x?.performance,t=e?.memory?.usedJSHeapSize;return null==t?null:Math.trunc(t/1024/1024)}}let p=new f;globalThis.Probe=f,globalThis.probe=p;let g={debug:(0,n.B)()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},m={enabled:!0,level:0};class b extends u{constructor({id:e}={id:""}){super({level:0}),this.VERSION=s,this._startTs=p.getHighResolutionTimer(),this._deltaTs=p.getHighResolutionTimer(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new c(`__probe-${this.id}__`,{[this.id]:m}),this.timeStamp(`${this.id} started`),function(e,t=["constructor"]){for(let i of Object.getOwnPropertyNames(Object.getPrototypeOf(e))){let r=e[i];"function"!=typeof r||t.find(e=>i===e)||(e[i]=r.bind(e))}}(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((p.getHighResolutionTimer()-this._startTs).toPrecision(10))}getDelta(){return Number((p.getHighResolutionTimer()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._updateConfiguration({enabled:e}),this}setLevel(e){return this._updateConfiguration({level:e}),this}get(e){return this._getConfiguration()[e]}set(e,t){this._updateConfiguration({[e]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,t){if(!e)throw Error(t||"Assertion failed")}warn(e,...t){return this._log("warn",0,e,t,{method:g.warn,once:!0})}error(e,...t){return this._log("error",0,e,t,{method:g.error})}deprecated(e,t){return this.warn(`\`${e}\` is deprecated and will be removed \
653in a later version. Use \`${t}\` instead`)}removed(e,t){return this.error(`\`${e}\` has been removed. Use \`${t}\` instead`)}probe(e,t,...i){let r=p.getMemoryUsageMB();if(null!==r){let e=`${r}MB `;"function"==typeof t?t=()=>`${e}${t()}`:"string"==typeof t&&(t=`${e}${t}`)}return this._log("log",e,t,i,{method:g.log,time:!0,once:!0})}log(e,t,...i){return this._log("log",e,t,i,{method:g.debug})}info(e,t,...i){return this._log("info",e,t,i,{method:console.info})}once(e,t,...i){return this._log("once",e,t,i,{method:g.debug||g.info,once:!0})}table(e,t,i){return t?this._log("table",e,t,i&&[i]||[],{method:console.table||l,tag:function(e){for(let t in e)for(let i in e[t])return i||"untitled";return"empty"}(t)}):l}time(e,t){return this._log("time",e,t,[],{method:console.time?console.time:console.info})}timeEnd(e,t){return this._log("time",e,t,[],{method:console.timeEnd?console.timeEnd:console.info})}timeStamp(e,t){return this._log("time",e,t,[],{method:console.timeStamp||l})}group(e,t,i={collapsed:!1}){let r=(i.collapsed?console.groupCollapsed:console.group)||console.info;return this._log("group",e,t,[],{method:r})}groupCollapsed(e,t,i={}){return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._log("groupEnd",e,"",[],{method:console.groupEnd||l})}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&super._shouldLog(e)}_emit(e,t){let i=t.method;a(i),t.total=this.getTotal(),t.delta=this.getDelta(),this._deltaTs=p.getHighResolutionTimer();let r=function(e,t,i){if("string"==typeof t){var r;let s=i.time?function(e,t=8){let i=Math.max(t-e.length,0);return`${" ".repeat(i)}${e}`}((r=i.total)<10?`${r.toFixed(2)}ms`:r<100?`${r.toFixed(1)}ms`:r<1e3?`${r.toFixed(0)}ms`:`${(r/1e3).toFixed(2)}s`):"";t=function(e,t,i){if(!n.B&&"string"==typeof e){if(t){let i=h(t);e=`\u001b[${i}m${e}\u001b[39m`}if(i){let t=h(i);e=`\u001b[${t+10}m${e}\u001b[49m`}}return e}(t=i.time?`${e}: ${s}  ${t}`:`${e}: ${t}`,i.color,i.background)}return t}(this.id,t.message,t);return i.bind(console,r,...t.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(m),this._storage.config[this.id]}_updateConfiguration(e){let t=this._storage.config[this.id]||{...m};this._storage.setConfiguration({[this.id]:{...t,...e}})}}b.VERSION=s},47097:(e,t,i)=>{i.d(t,{E:()=>s});var r=i(93614);class n{getVertexFormatInfo(e){let t,i;if("unorm10-10-10-2"===e)return{type:"unorm8",components:4,byteLength:4,integer:!1,signed:!1,normalized:!0};let n="unorm8x4-bgra"===e?"unorm8x4":e;n.endsWith("-webgl")&&(n=n.slice(0,-6),t=!0);let s=n.split("x");if(s.length>2)throw Error(`Unsupported vertex format: ${e}`);let[a,o]=s,l=function(e,t){if(!t)return 1;let i=Number(t);if(2===i||3===i||4===i)return i;throw Error(`Unsupported vertex format: ${e}`)}(e,o),u=function(e,t){try{return r.r.getDataTypeInfo(t)}catch{throw Error(`Unsupported vertex format: ${e}`)}}(e,a);try{i=t?function(e,t,i){if(3!==i)throw Error(`Unsupported vertex format: ${e}`);
653switch(t){case"uint8":case"sint8":case"unorm8":case"snorm8":case"uint16":case"sint16":case"unorm16":case"snorm16":return`${t}x3-webgl`;default:throw Error(`Unsupported vertex format: ${e}`)}}(e,a,l):this.makeVertexFormat(u.signedType,l,u.normalized)}catch{throw Error(`Unsupported vertex format: ${e}`)}if(i!==(t?e:n))throw Error(`Unsupported vertex format: ${e}`);let c={type:a,components:l,byteLength:u.byteLength*l,integer:u.integer,signed:u.signed,normalized:u.normalized};return t&&(c.webglOnly=!0),c}makeVertexFormat(e,t,i){let n=i?r.r.getNormalizedDataType(e):e;switch(n){case"unorm8":if(1===t)return"unorm8";if(3===t)return"unorm8x3-webgl";return`${n}x${t}`;case"snorm8":if(1===t)return"snorm8";if(3===t)return"snorm8x3-webgl";return`${n}x${t}`;case"uint8":case"sint8":case"float16":if(3===t)throw Error(`size: ${t}`);return 1===t?n:`${n}x${t}`;case"uint16":if(1===t)return"uint16";if(3===t)return"uint16x3-webgl";return`${n}x${t}`;case"sint16":if(1===t)return"sint16";if(3===t)return"sint16x3-webgl";return`${n}x${t}`;case"unorm16":if(1===t)return"unorm16";if(3===t)return"unorm16x3-webgl";return`${n}x${t}`;case"snorm16":if(1===t)return"snorm16";if(3===t)return"snorm16x3-webgl";return`${n}x${t}`;default:return 1===t?n:`${n}x${t}`}}getVertexFormatFromAttribute(e,t,i){if(!t||t>4)throw Error(`size ${t}`);let n=r.r.getDataType(e);return this.makeVertexFormat(n,t,i)}getCompatibleVertexFormat(e){let t;switch(e.primitiveType){case"f32":t="float32";break;case"i32":t="sint32";break;case"u32":t="uint32";break;case"f16":return e.components<=2?"float16x2":"float16x4"}return 1===e.components?t:`${t}x${e.components}`}}let s=new n},47696:(e,t,i)=>{i.d(t,{qk:()=>s,ws:()=>n});var r=i(85066);function n(e){if(!Number.isFinite(e))throw Error(`Invalid number ${JSON.stringify(e)}`);return e}function s(e,t,i=""){if(r.$W.debug&&!function(e,t){if(e.length!==t)return!1;for(let t=0;t<e.length;++t)if(!Number.isFinite(e[t]))return!1;return!0}(e,t))throw Error(`math.gl: ${i} some fields set to invalid numbers'`);return e}},48766:(e,t,i)=>{i.d(t,{O_:()=>o,bv:()=>u,Uu:()=>l});let r={vertex:`\
654#ifdef MODULE_LOGDEPTH
655  logdepth_adjustPosition(gl_Position);
656#endif
657`,fragment:`\
658#ifdef MODULE_MATERIAL
659  fragColor = material_filterColor(fragColor);
660#endif
661
662#ifdef MODULE_LIGHTING
663  fragColor = lighting_filterColor(fragColor);
664#endif
665
666#ifdef MODULE_FOG
667  fragColor = fog_filterColor(fragColor);
668#endif
669
670#ifdef MODULE_PICKING
671  fragColor = picking_filterHighlightColor(fragColor);
672  fragColor = picking_filterPickingColor(fragColor);
673#endif
674
675#ifdef MODULE_LOGDEPTH
676  logdepth_setFragDepth();
677#endif
678`},n=/void\s+main\s*\([^)]*\)\s*\{\n?/,s=/}\n?[^{}]*$/,a=[],o="__LUMA_INJECT_DECLARATIONS__";function l(e){let t={vertex:{},fragment:{}};for(let i in e){let r=e[i];"string"==typeof r&&(r={order:0,injection:r}),t[function(e){let t=e.slice(0,2);switch(t){case"vs":return"vertex";case"fs":return"fragment";default:throw Error(t)}}(i)][i]=r}return t}function u(e,t,i,l=!1,h="glsl",d={}){let f="vertex"===t;for(let t in i){let r=i[t];r.sort((e,t)=>e.order-t.order),a.length=r.length;for(let e=0,t=r.length;e<t;++e)a[e]=r[e].injection;let l=`${a.join("\n")}
679`;switch(t){case"vs:#decl":("wgsl"===h||f)&&(e=e.replace(o,l));break;case"vs:#main-start":("wgsl"===h||f)&&(e="wgsl"===h?c(e,"vertex",l,"start",d.vertex):e.replace(n,e=>e+l));break;case"vs:#main-end":("wgsl"===h||f)&&(e="wgsl"===h?c(e,"vertex",l,"end",d.vertex):e.replace(s,e=>l+e));break;case"fs:#decl":"wgsl"!==h&&f||(e=e.replace(o,l));break;case"fs:#main-start":"wgsl"!==h&&f||(e="wgsl"===h?c(e,"fragment",l,"start",d.fragment):e.replace(n,e=>e+l));break;case"fs:#main-end":"wgsl"!==h&&f||(e="wgsl"===h?c(e,"fragment",l,"end",d.fragment):e.replace(s,e=>l+e));break;default:e=e.replace(t,e=>e+l)}}return e=e.replace(o,""),l&&(e=e.replace(/\}\s*$/,e=>e+r[t])),e}function c(e,t,i,r,n){let s=function(e,t,i){let r="vertex"===t?"@vertex":"@fragment",n=e.indexOf(r);if(n<0)return null;let s=i?e.search(RegExp(`\\bfn\\s+${i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*\\(`)):e.indexOf("fn",n);if(s<0)return null;let a=e.indexOf("{",s);if(a<0)return null;let o=0;for(let t=a;t<e.length;t++){let i=e[t];if("{"===i)o++;else if("}"===i&&0==--o)return{openBraceIndex:a,closeBraceIndex:t}}return null}(e,t,n);if(!s)return e;if("start"===r){let t=s.openBraceIndex+1;return`${e.slice(0,t)}
680${i}${e.slice(t)}`}return`${e.slice(0,s.closeBraceIndex)}${i}${e.slice(s.closeBraceIndex)}`}},48956:(e,t,i)=>{let r;i.d(t,{$M:()=>a,Vl:()=>l,_Z:()=>f,cT:()=>d,on:()=>u,zi:()=>o});var n=i(60864),s=i(65558);function a(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function o(e,t){let i=e%t;return i<0?t+i:i}function l(e){return[e[12],e[13],e[14]]}function u(e){return{left:h(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:h(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:h(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:h(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:h(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:h(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}let c=new s.P;function h(e,t,i,r){c.set(e,t,i);let n=c.len();return{distance:r/n,normal:new s.P(-e/n,-t/n,-i/n)}}function d(e,t){let{size:i=1,startIndex:s=0}=t,a=void 0!==t.endIndex?t.endIndex:e.length,o=(a-s)/i;r=n.A.allocate(r,o,{type:Float32Array,size:2*i});let l=s,u=0;for(;l<a;){for(let t=0;t<i;t++){let n=e[l++];r[u+t]=n,r[u+t+i]=n-Math.fround(n)}u+=2*i}return r.subarray(0,o*i*2)}function f(e){let t=null,i=!1;for(let r of e)r&&(t?(i||(t=[[t[0][0],t[0][1]],[t[1][0],t[1][1]]],i=!0),t[0][0]=Math.min(t[0][0],r[0][0]),t[0][1]=Math.min(t[0][1],r[0][1]),t[1][0]=Math.max(t[1][0],r[1][0]),t[1][1]=Math.max(t[1][1],r[1][1])):t=r);return t}},50748:(e,t,i)=>{i.d(t,{A:()=>r});let r=new(i(45518)).hW({id:"deck"})},52135:(e,t,i)=>{i.d(t,{H:()=>eb});var r=i(53866),n=i(10398);let s={};
680class a extends Error{constructor(e,t){super(e),this.reason=t.reason,this.url=t.url,this.response=t.response}reason;url;response}let o=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,l=/^([-\w.]+\/[-\w.+]+)/;function u(e,t){return e.toLowerCase()===t.toLowerCase()}function c(e){let t=o.exec(e);return t?t[1]:""}var h=i(9664);function d(e){return(0,r.Sv)(e)?e.url:(0,r.qf)(e)?("name"in e?e.name:"")||"":"string"==typeof e?e:""}function f(e){if((0,r.Sv)(e)){let t=e.headers.get("content-type")||"",i=(0,h.S3)(e.url);return function(e){let t=l.exec(e);return t?t[1]:e}(t)||c(i)}return(0,r.qf)(e)?e.type||"":"string"==typeof e?c(e):""}async function p(e){var t;if((0,r.Sv)(e))return e;let i={},n=(t=e,(0,r.Sv)(t)?t.headers["content-length"]||-1:(0,r.qf)(t)?t.size:"string"==typeof t?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1);n>=0&&(i["content-length"]=String(n));let s=d(e),a=f(e);a&&(i["content-type"]=a);let o=await b(e);o&&(i["x-first-bytes"]=o),"string"==typeof e&&(e=new TextEncoder().encode(e));let l=new Response(e,{headers:i});return Object.defineProperty(l,"url",{value:s}),l}async function g(e){if(!e.ok)throw await m(e)}async function m(e){let t=(0,h.E1)(e.url),i=`Failed to fetch resource (${e.status}) ${e.statusText}: ${t}`;i=i.length>100?`${i.slice(0,100)}...`:i;let r={reason:e.statusText,url:e.url,response:e};try{let t=e.headers.get("Content-Type");r.reason=!e.bodyUsed&&t?.includes("application/json")?await e.json():await e.text()}catch(e){}return new a(i,r)}async function b(e){if("string"==typeof e)return`data:,${e.slice(0,5)}`;if(e instanceof Blob){let t=e.slice(0,5);return await new Promise(e=>{let i=new FileReader;i.onload=t=>e(t?.target?.result),i.readAsDataURL(t)})}if(e instanceof ArrayBuffer){let t=function(e){let t="",i=new Uint8Array(e);for(let e=0;e<i.byteLength;e++)t+=String.fromCharCode(i[e]);return btoa(t)}(e.slice(0,5));return`data:base64,${t}`}return null}async function v(e,t){if("string"==typeof e){var i;let r=function(e){for(let t in s)if(e.startsWith(t)){let i=s[t];e=e.replace(t,i)}return e.startsWith("http://")||e.startsWith("https://")||(e=`${e}`),e}(e);return!((i=r).startsWith("http:")||i.startsWith("https:"))&&!r.startsWith("data:")&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,t):await fetch(r,t)}return await p(e)}var y=i(10620);function _(e,t){let i=(0,y.pp)(),n=e||i,s=n.fetch??n.core?.fetch;return"function"==typeof s?s:(0,r.Gv)(s)?e=>v(e,s):t?.fetch?t?.fetch:v}var w=i(87358);let x={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document};x.self||x.window||x.global,x.window||x.self||x.global,x.global||x.self||x.window,x.document;let E="object"!=typeof w||"[object process]"!==String(w)||!0,S="undefined"!=typeof window&&void 0!==window.orientation,P=void 0!==w&&w.version&&/v([0-9]*)/.exec(w.version);P&&parseFloat(P[1]);class C{terminate(){}}function T(e,t){if(!e)throw Error(t||"loaders.gl assertion failed.")}let A=new Map;function M(e){let t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}function L(e){return!!e&&!!(e instanceof ArrayBuffer||"undefined"!=typeof MessagePort&&e instanceof MessagePort||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)}let k=()=>{};class I{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return"undefined"!=typeof Worker&&E||!E}constructor(e){let{name:t,source:i,url:r}=e;T(i||r),this.name=t,this.source=i,this.url=r,this.onMessage=k,this.onError=e=>console.log(e),this.worker=E?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=k,this.onError=k,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(e,t){t=t||function e(t,i=!0,r){let n=r||new Set;if(t){if(L(t))n.add(t);else if(L(t.buffer))n.add(t.buffer);else if(ArrayBuffer.isView(t));else if(i&&"object"==typeof t)for(let r in t)e(t[r],i,n)}return void 0===r?Array.from(n):[]}(e),this.worker.postMessage(e,t)}_getErrorFromErrorEvent(e){let t="Failed to load ";return t+=`worker ${this.name} from ${this.url}. `,e.message&&(t+=`${e.message} in `),e.lineno&&(t+=`:${e.lineno}:${e.colno}`),Error(t)}_createBrowserWorker(){var e,t,i;let r;this._loadableURL=(T((e={source:this.source,url:this.url}).source&&!e.url||!e.source&&e.url),(r=A.get(e.source||e.url))||(e.url&&(r=(t=e.url).startsWith("http")?M((i=t,`\
681try {
682  importScripts('${i}');
683} catch (error) {
684  console.error(error);
685  throw error;
686}
686`)):t,A.set(e.url,r)),e.source&&(r=M(e.source),A.set(e.source,r))),T(r),r);let n=new Worker(this._loadableURL,{name:this.name});return n.onmessage=e=>{e.data?this.onMessage(e.data):this.onError(Error("No data received"))},n.onerror=e=>{this.onError(this._getErrorFromErrorEvent(e)),this.terminated=!0},n.onmessageerror=e=>console.error(e),n}_createNodeWorker(){let e;if(this.url)e=new C(this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`,{eval:!1,type:this.url.endsWith(".ts")||this.url.endsWith(".mjs")?"module":"commonjs"});else if(this.source)e=new C(this.source,{eval:!0});else throw Error("no worker");return e.on("message",e=>{this.onMessage(e)}),e.on("error",e=>{this.onError(e)}),e.on("exit",e=>{}),e}}class O{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(e,t){this.name=e,this.workerThread=t,this.result=new Promise((e,t)=>{this._resolve=e,this._reject=t})}postMessage(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}done(e){T(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){T(this.isRunning),this.isRunning=!1,this._reject(e)}}class R{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return I.isSupported()}constructor(e){this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach(e=>e.destroy()),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}async startJob(e,t=(e,t,i)=>e.done(i),i=(e,t)=>e.error(t)){let r=new Promise(r=>(this.jobQueue.push({name:e,onMessage:t,onError:i,onStart:r}),this));return this._startQueuedJob(),await r}async _startQueuedJob(){if(!this.jobQueue.length)return;let e=this._getAvailableWorker();if(!e)return;let t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:e,backlog:this.jobQueue.length});let i=new O(t.name,e);e.onMessage=e=>t.onMessage(i,e.type,e.payload),e.onError=e=>t.onError(i,e),t.onStart(i);try{await i.result}catch(e){console.error(`Worker exception: ${e}`)}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){!E||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){return this.idleQueue.length>0?this.idleQueue.shift()||null:this.count<this._getMaxConcurrency()?(this.count++,new I({name:`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`,source:this.source,url:this.url})):null}_getMaxConcurrency(){return S?this.maxMobileConcurrency:this.maxConcurrency}}let B={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}};class D{props;workerPools=new Map;static _workerFarm;static isSupported(){return I.isSupported()}static getWorkerFarm(e={}){return D._workerFarm=D._workerFarm||new D({}),D._workerFarm.setProps(e),D._workerFarm}constructor(e){this.props={...B},this.setProps(e),this.workerPools=new Map}destroy(){for(let e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){for(let t of(this.props={...this.props,...e},this.workerPools.values()))t.setProps(this._getWorkerPoolProps())}getWorkerPool(e){let{name:t,source:i,url:r}=e,n=this.workerPools.get(t);return n||((n=new R({name:t,source:i,url:r})).setProps(this._getWorkerPoolProps()),this.workerPools.set(t,n)),n}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}async function F(e,t,i,r,n){let s=e.id,a=function(e,t={}){let i=t[e.id]||{},r=E?e.workerFile||`${e.id}-worker.js`:`${e.id}-worker-node.js`,n=i.workerUrl;if(n||"compression"!==e.id||(n=t.workerUrl),"test"===(t._workerType||t?.core?._workerType)&&(n=E?`modules/${e.module}/dist/${r}`:`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!n){let t=e.version;"latest"===t&&(t="latest");let i=t?`@${t}`:"";n=`https://unpkg.com/@loaders.gl/${e.module}${i}/dist/${r}`}return T(n),n}(e,i),o=D.getWorkerFarm(i?.core).getWorkerPool({name:s,url:a});(i=JSON.parse(JSON.stringify(i||{})))._workerLoaderId=e.id,r=JSON.parse(JSON.stringify(r||{}));let l=await o.startJob("process-on-worker",$.bind(null,n));l.postMessage("process",{input:t,options:i,context:r});let u=await l.result;return await u.result}async function $(e,t,i,r){switch(i){case"done":t.done(r);break;case"error":t.error(Error(r.error));break;case"process":let{id:n,input:s,options:a}=r;try{let i=await e(s,a);t.postMessage("done",{id:n,result:i})}catch(i){let e=i instanceof Error?i.message:"unknown error";t.postMessage("error",{id:n,error:e})}break;
686default:console.warn(`parse-with-worker unknown message ${i}`)}}let z=(globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.5.2"),globalThis._loadersgl_.version);function N(e){return e&&"object"==typeof e&&e.isBuffer}function j(e){if(N(e)||e instanceof ArrayBuffer)return e;if((0,r.L8)(e))return V(e);if(ArrayBuffer.isView(e)){let t=e.buffer;return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?t:t.slice(e.byteOffset,e.byteOffset+e.byteLength)}if("string"==typeof e)return new TextEncoder().encode(e).buffer;if(e&&"object"==typeof e&&e._toArrayBuffer)return e._toArrayBuffer();throw Error("toArrayBuffer")}function U(e){if(e instanceof ArrayBuffer)return e;if((0,r.L8)(e))return V(e);let{buffer:t,byteOffset:i,byteLength:n}=e;return t instanceof ArrayBuffer&&0===i&&n===t.byteLength?t:V(t,i,n)}function V(e,t=0,i=e.byteLength-t){let r=new Uint8Array(e,t,i),n=new Uint8Array(r.length);return n.set(r),n.buffer}async function W(e){let t=[];for await(let i of e)t.push(function(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e)){let{buffer:t,byteOffset:i,byteLength:r}=e;return G(t,i,r)}return G(e)}(i));return function(...e){var t=e;let i=t.map(e=>e instanceof ArrayBuffer?new Uint8Array(e):e),r=new Uint8Array(i.reduce((e,t)=>e+t.byteLength,0)),n=0;for(let e of i)r.set(e,n),n+=e.byteLength;return r.buffer}(...t)}function G(e,t=0,i=e.byteLength-t){let r=new Uint8Array(e,t,i),n=new Uint8Array(r.length);return n.set(r),n.buffer}async function*H(e,t){let i=t?.chunkSize||1048576,r=0;for(;r<e.size;){let t=r+i,n=await e.slice(r,t).arrayBuffer();r=t,yield n}}var q=i(11911);function Y(e,t){return q.Bd?Z(e,t):K(e,t)}async function*Z(e,t){let i,r=e.getReader();try{for(;;){let e=i||r.read();t?._streamReadAhead&&(i=r.read());let{done:n,value:s}=await e;if(n)return;yield j(s)}}catch(e){r.releaseLock()}}async function*K(e,t){for await(let t of e)yield j(t)}let X="Cannot convert supplied data type";async function Q(e,t,i){if("string"==typeof e||(0,r.B1)(e)){var n,s=e;if(t.text&&"string"==typeof s)return s;if(N(s)&&(s=s.buffer),(0,r.B1)(s)){let e=ArrayBuffer.isView(n=s)?n:new Uint8Array(n);return t.text&&!t.binary?new TextDecoder("utf8").decode(e):j(e)}throw Error(X)}if((0,r.qf)(e)&&(e=await p(e)),(0,r.Sv)(e))return await g(e),t.binary?await e.arrayBuffer():await e.text();if((0,r.H1)(e)&&(e=function(e,t){if("string"==typeof e)return function*(e,t){let i=t?.chunkSize||262144,r=0,n=new TextEncoder;for(;r<e.length;){let t=Math.min(e.length-r,i),s=e.slice(r,r+t);r+=t,yield U(n.encode(s))}}(e,t);if(e instanceof ArrayBuffer)return function*(e,t={}){let{chunkSize:i=262144}=t,r=0;for(;r<e.byteLength;){let t=Math.min(e.byteLength-r,i),n=new ArrayBuffer(t),s=new Uint8Array(e,r,t);new Uint8Array(n).set(s),r+=t,yield n}}(e,t);if((0,r.qf)(e))return H(e,t);if((0,r.H1)(e))return Y(e,t);if((0,r.Sv)(e)){let i=e.body;if(!i)throw Error("Readable stream not available on Response");return Y(i,t)}throw Error("makeIterator")}(e,i)),(0,r.xZ)(e)||(0,r.Td)(e))return W(e);throw Error(X)}var J=i(56028),ee=i(45518);let et="4.5.2",ei=et[0]>="0"&&et[0]<="9"?`v${et}`:"",er=function(){let e=new ee.hW({id:"loaders.gl"});return globalThis.loaders||={},globalThis.loaders.log=e,globalThis.loaders.version=ei,globalThis.probe||={},globalThis.probe.loaders=e,e}();var en=i(57516);let es=/\.([^.]+)$/;async function ea(e,t=[],i,n){if(!eu(e))return null;let s=(0,y.Rf)(i||{});if(s.core||={},e instanceof Response&&eo(e)){let i=el(await e.clone().text(),t,{...s,core:{...s.core,nothrow:!0}},n);if(i)return i}let a=el(e,t,{...s,core:{...s.core,nothrow:!0}},n);if(a)return a;if((0,r.qf)(e)&&(a=el(e=await e.slice(0,10).arrayBuffer(),t,s,n)),!a&&e instanceof Response&&eo(e)&&(a=el(await e.clone().text(),t,s,n)),!a&&!s.core.nothrow)throw Error(ec(e));return a}function eo(e){let t=f(e);return!!(t&&(t.startsWith("text/")||"application/json"===t||t.endsWith("+json")))}function el(e,t=[],i,r){if(!eu(e))return null;let s=(0,y.Rf)(i||{});if(s.core||={},t&&!Array.isArray(t))return(0,n.D)(t);let a=[];t&&(a=a.concat(t)),s.core.ignoreRegisteredLoaders||a.push(...(0,en.Ph)()),function(e){for(let t of e)(0,n.D)(t)}(a);let o=function(e,t,i,r){let n=d(e),s=f(e),a=(0,h.S3)(n)||r?.url,o=null,l="";return i?.core?.mimeType&&(o=eh(t,i?.core?.mimeType),l=`match forced by supplied MIME type ${i?.core?.mimeType}`),o=o||function(e,t){let i=t&&es.exec(t),r=i&&i[1];return r?function(e,t){for(let i of(t=t.toLowerCase(),e))for(let e of i.extensions)if(e.toLowerCase()===t)return i;return null}(e,r):null}(t,a),l=l||(o?`matched url ${a}`:""),o=o||eh(t,s),l=l||(o?`matched MIME type ${s}`:""),o=o||function(e,t){if(!t)return null;for(let i of e)if("string"==typeof t){if(function(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(t=>e.startsWith(t))}(t,i))return i}else if(ArrayBuffer.isView(t)){if(ed(t.buffer,t.byteOffset,i))return i}else if(t instanceof ArrayBuffer&&ed(t,0,i))return i;return null}(t,e),l=l||(o?`matched initial data ${ef(e)}`:""),i?.core?.fallbackMimeType&&(o=o||eh(t,i?.core?.fallbackMimeType),l=l||(o?`matched fallback MIME type ${s}`:"")),l&&er.log(1,`selectLoader selected ${o?.name}: ${l}.`),o}(e,a,s,r);if(!o&&!s.core.nothrow)throw Error(ec(e));return o}function eu(e){return!(e instanceof Response)||204!==e.status}function ec(e){let t=d(e),i=f(e),r="No valid loader found (";r+=(t?`${J.iW(t)}, `:"no url provided, ")+`MIME type: ${i?`"${i}"`:"not provided"}, `;let n=e?ef(e):"";return r+((n?` first bytes: "${n}"`:"first bytes: not available")+")")}function eh(e,t){for(let i of e)if(i.mimeTypes?.some(e=>u(t,e))||u(t,`application/x.${i.id}`))return i;return null}function ed(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some(i=>(function(e,t,i,n){if((0,r.B1)(n))return function(e,t,i){if(i=i||e.byteLength,e.byteLength<i||t.byteLength<i)return!1;let r=new Uint8Array(e),n=new Uint8Array(t);for(let e=0;e<r.length;++e)if(r[e]!==n[e])return!1;return!0}(n,e,n.byteLength);switch(typeof n){case"function":return n(U(e));case"string":let s=ep(e,t,n.length);return n===s;default:return!1}})(e,t,0,i))}function ef(e,t=5){return"string"==typeof e?e.slice(0,t):ArrayBuffer.isView(e)?ep(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?ep(e,0,t):""}function ep(e,t,i){if(e.byteLength<t+i)return"";let r=new DataView(e),n="";for(let e=0;e<i;e++)n+=String.fromCharCode(r.getUint8(t+e));return n}async function eg(e,t,i,r){!t||Array.isArray(t)||(0,n.l)(t)||(r=void 0,i=t,t=void 0),e=await e,i=i||{};let s=d(e),a=function(e,t){let i;if(e&&!Array.isArray(e))return e;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){let e=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[...i,...e]:e}return i&&i.length?i:void 0}(t,r),o=await ea(e,a,i);if(!o)return null;let l=(0,y.a5)(i,o,a,s);return r=function(e,t,i){if(i)return i;let r={fetch:_(t,e),...e};if(r.url){let e=(0,h.S3)(r.url);r.baseUrl=e,r.queryString=(0,h.by)(r.url),r.filename=J.iW(e),r.baseUrl=J.pD(e)}return Array.isArray(r.loaders)||(r.loaders=null),r}({url:s,_parse:eg,loaders:a},l,r||null),await em(o,e,l,r)}async function em(e,t,i,n){if(!function(e,t=z){T(e,"no worker provided");e.version}(e),i=function e(t,i,r=0){if(r>3)return i;let n={...t};for(let[t,s]of Object.entries(i))s&&"object"==typeof s&&!Array.isArray(s)?n[t]=e(n[t]||{},i[t],r+1):n[t]=i[t];return n}(e.options||{},i),(0,r.Sv)(t)){let{ok:e,redirected:i,status:r,statusText:s,type:a,url:o}=t;n.response={headers:Object.fromEntries(t.headers.entries()),ok:e,redirected:i,status:r,statusText:s,type:a,url:o}}if(t=await Q(t,e,i),e.parseTextSync&&"string"==typeof t)return e.parseTextSync(t,i,n);if(function(e,t){if(!D.isSupported())return!1;let i=t?._nodeWorkers??t?.core?._nodeWorkers;if(!E&&!i)return!1;let r=t?.worker??t?.core?.worker;return!!(e.worker&&r)}(e,i))return await F(e,t,i,n,eg);if(e.parseText&&"string"==typeof t)return await e.parseText(t,i,n);if(e.parse)return await e.parse(t,i,n);throw T(!e.parseSync),Error(`${e.id} loader - no parser found and worker is disabled`)}async function eb(e,t,i,s){let a,o;Array.isArray(t)||(0,n.l)(t)?(a=t,o=i):(a=[],o=t);let l=_(o),u=e;if("string"==typeof e&&(u=await l(e)),(0,r.qf)(e)&&(u=await l(e)),"string"==typeof e){let t=(0,y.Rf)(o||{});t.core?.baseUrl||(o={...o,core:{...o?.core,baseUrl:e}})}return Array.isArray(a),await eg(u,a,o)}},52446:(e,t,i)=>{i.d(t,{A:()=>m});var r=i(50748),n=i(48956),s=i(18151),a=i(85066),o=i(65558),l=i(69173),u=i(81060),c=i(59465);let h=Math.PI/180,d=(0,n.$M)(),f=[0,0,0],p={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};class g{constructor(e={}){this._frustumPlanes={},this.id=e.id||this.constructor.displayName||"viewport",this.x=e.x||
6860,this.y=e.y||0,this.width=e.width||1,this.height=e.height||1,this.zoom=e.zoom||0,this.padding=e.padding,this.distanceScales=e.distanceScales||p,this.focalDistance=e.focalDistance||1,this.position=e.position||f,this.modelMatrix=e.modelMatrix||null;let{longitude:t,latitude:i}=e;this.isGeospatial=Number.isFinite(i)&&Number.isFinite(t),this._initProps(e),this._initMatrices(e),this.equals=this.equals.bind(this),this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectPosition=this.projectPosition.bind(this),this.unprojectPosition=this.unprojectPosition.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this)}get subViewports(){return null}get metersPerPixel(){return this.distanceScales.metersPerUnit[2]/this.scale}get projectionMode(){return this.isGeospatial?this.zoom<12?c.Kx.WEB_MERCATOR:c.Kx.WEB_MERCATOR_AUTO_OFFSET:c.Kx.IDENTITY}equals(e){return e instanceof g&&(this===e||e.width===this.width&&e.height===this.height&&e.scale===this.scale&&e.projectionMode===this.projectionMode&&e.resolution===this.resolution&&(0,a.aI)(e.distanceScales.unitsPerMeter,this.distanceScales.unitsPerMeter)&&(0,a.aI)(e.projectionMatrix,this.projectionMatrix)&&(0,a.aI)(e.viewMatrix,this.viewMatrix))}project(e,{topLeft:t=!0}={}){let i=this.projectPosition(e),r=(0,u.VJ)(i,this.pixelProjectionMatrix),[n,s]=r,a=t?s:this.height-s;return 2===e.length?[n,a]:[n,a,r[2]]}unproject(e,{topLeft:t=!0,targetZ:i}={}){let[r,n,s]=e,a=t?n:this.height-n,o=i&&i*this.distanceScales.unitsPerMeter[2],l=(0,u.xJ)([r,a,s],this.pixelUnprojectionMatrix,o),[c,h,d]=this.unprojectPosition(l);return Number.isFinite(s)?[c,h,d]:Number.isFinite(i)?[c,h,i]:[c,h]}projectPosition(e){let[t,i]=this.projectFlat(e);return[t,i,(e[2]||0)*this.distanceScales.unitsPerMeter[2]]}unprojectPosition(e){let[t,i]=this.unprojectFlat(e);return[t,i,(e[2]||0)*this.distanceScales.metersPerUnit[2]]}projectFlat(e){if(this.isGeospatial){let t=(0,u.Gw)(e);return t[1]=(0,a.qE)(t[1],-318,830),t}return e}unprojectFlat(e){return this.isGeospatial?(0,u.iV)(e):e}getBounds(e={}){let t={targetZ:e.z||0},i=this.unproject([0,0],t),r=this.unproject([this.width,0],t),n=this.unproject([0,this.height],t),s=this.unproject([this.width,this.height],t);return[Math.min(i[0],r[0],n[0],s[0]),Math.min(i[1],r[1],n[1],s[1]),Math.max(i[0],r[0],n[0],s[0]),Math.max(i[1],r[1],n[1],s[1])]}getDistanceScales(e){return e&&this.isGeospatial?(0,u.nI)({longitude:e[0],latitude:e[1],highPrecision:!0}):this.distanceScales}containsPixel({x:e,y:t,width:i=1,height:r=1}){return e<this.x+this.width&&this.x<e+i&&t<this.y+this.height&&this.y<t+r}getFrustumPlanes(){return this._frustumPlanes.near||Object.assign(this._frustumPlanes,(0,n.on)(this.viewProjectionMatrix)),this._frustumPlanes}panByPosition(e,t,i){return null}_initProps(e){let t=e.longitude,i=e.latitude;this.isGeospatial&&(Number.isFinite(e.zoom)||(this.zoom=(0,u.fO)({latitude:i})+Math.log2(this.focalDistance)),this.distanceScales=e.distanceScales||(0,u.nI)({latitude:i,longitude:t}));let r=Math.pow(2,this.zoom);this.scale=r;let{position:n,modelMatrix:a}=e,l=f;if(n&&(l=a?new s.k(a).transformAsVector(n,[]):n),this.isGeospatial){let e=this.projectPosition([t,i,0]);this.center=new o.P(l).scale(this.distanceScales.unitsPerMeter).add(e)}else this.center=this.projectPosition(l)}_initMatrices(e){let{viewMatrix:t=d,projectionMatrix:i=null,orthographic:u=!1,fovyRadians:c,fovy:f=75,near:p=.1,far:g=1e3,padding:m=null,focalDistance:b=1}=e;this.viewMatrixUncentered=t,this.viewMatrix=new s.k().multiplyRight(t).translate(new o.P(this.center).negate()),this.projectionMatrix=i||function({width:e,height:t,orthographic:i,fovyRadians:r,focalDistance:n,padding:o,near:l,far:u}){let c=e/t,h=i?new s.k().orthographic({fovy:r,aspect:c,focalDistance:n,near:l,far:u}):new s.k().perspective({fovy:r,aspect:c,near:l,far:u});if(o){let{left:i=0,right:r=0,top:n=0,bottom:s=0}=o,l=(0,a.qE)((i+e-r)/2,0,e)-e/2,u=(0,a.qE)((n+t-s)/2,0,t)-t/2;h[8]-=2*l/e,h[9]+=2*u/t}return h}({width:this.width,height:this.height,orthographic:u,fovyRadians:c||f*h,focalDistance:b,padding:m,near:p,far:g});let v=(0,n.$M)();l.lw(v,v,this.projectionMatrix),l.lw(v,v,this.viewMatrix),this.viewProjectionMatrix=v,this.viewMatrixInverse=l.B8([],this.viewMatrix)||this.viewMatrix,this.cameraPosition=(0,n.Vl)(this.viewMatrixInverse);let y=(0,n.$M)(),_=(0,n.$M)();l.hs(y,y,[this.width/2,-this.height/2,1]),l.Tl(y,y,[1,-1,0]),l.lw(_,y,this.viewProjectionMatrix),this.pixelProjectionMatrix=_,this.pixelUnprojectionMatrix=l.B8((0,n.$M)(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||r.A.warn("Pixel project matrix not invertible")()}}g.displayName="Viewport";let m=g},52471:(e,t,i)=>{i.d(t,{K:()=>D});
686var r=i(85303),n=i(11940),s=i(30346),a=i(88057),o=i(72868),l=i(42852),u=i(3802),c=i(31269),h=i(20296),d=i(82493),f=i(24486);class p extends f.F{width;height;updateTimestamp;get[Symbol.toStringTag](){return"ExternalTexture"}constructor(e,t){super(e,t,p.defaultProps);let i=this.props.source?e.getExternalImageSize(this.props.source):null;this.width=this.props.width||i?.width||0,this.height=this.props.height||i?.height||0,this.updateTimestamp=e.incrementTimestamp()}static defaultProps={...f.F.defaultProps,source:void 0,width:0,height:0,colorSpace:"srgb",sampler:{}}}var g=i(44486),m=i(93614),b=i(71011),v=i(31340),y=i(47097),_=i(52975);class w{id;topology;vertexCount;indices;attributes;bufferLayout;userData={};constructor(e){let{attributes:t={},indices:i=null,vertexCount:r=null}=e;for(let[r,n]of(this.id=e.id||(0,_.L)("geometry"),this.topology=e.topology,i&&(this.indices=ArrayBuffer.isView(i)?{value:i,size:1}:i),this.attributes={},Object.entries(t))){let e=ArrayBuffer.isView(n)?{value:n}:n;if(!ArrayBuffer.isView(e.value))throw Error(`${this._print(r)}: must be typed array or object with value as typed array`);if("POSITION"!==r&&"positions"!==r||e.size||(e.size=3),"indices"===r){if(this.indices)throw Error("Multiple indices detected");this.indices=e}else{let t=x(r),i=Object.keys(this.attributes).find(e=>x(e)===t);i&&delete this.attributes[i],this.attributes[r]=e}}this.indices&&void 0!==this.indices.isIndexed&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this.vertexCount=r||this._calculateVertexCount(this.attributes,this.indices),this.bufferLayout=e.bufferLayout||function(e){let t=[];for(let[i,r]of Object.entries(e)){if(!r)continue;let{value:e,size:n,normalized:s}=r;if(void 0===n)throw Error(`Attribute ${i} is missing a size`);t.push({name:x(i),format:y.E.getVertexFormatFromAttribute(e,n,s)})}return t}(this.attributes)}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(e){return`Geometry ${this.id} attribute ${e}`}_setAttributes(e,t){return this}_calculateVertexCount(e,t){if(t)return t.value.length;let i=1/0;for(let t of Object.values(e)){if(!t)continue;let{value:e,size:r,constant:n}=t;!n&&e&&void 0!==r&&r>=1&&(i=Math.min(i,e.length/r))}return i}}function x(e){switch(e){case"POSITION":return"positions";case"NORMAL":return"normals";case"TEXCOORD_0":return"texCoords";case"TEXCOORD_1":return"texCoords1";case"COLOR_0":return"colors";default:return e}}function E(e,t){return Math.ceil(e/t)*t}class S{id;userData={};topology;bufferLayout=[];vertexCount;indices;attributes;constructor(e){if(this.id=e.id||(0,_.L)("geometry"),this.topology=e.topology,this.indices=e.indices||null,this.attributes=e.attributes,this.vertexCount=e.vertexCount,this.bufferLayout=e.bufferLayout||[],this.indices&&!(this.indices.usage&h.h.INDEX))throw Error("Index buffer must have INDEX usage")}destroy(){for(let e of(this.indices?.destroy(),Object.values(this.attributes)))e.destroy()}getVertexCount(){return this.vertexCount}getAttributes(){return this.attributes}getIndexes(){return this.indices||null}_calculateVertexCount(e){return e.byteLength/12}}let P="__debugFramebufferState";function C(e,t){if(!e)return t;let i=Number.parseInt(e,10);return Number.isFinite(i)?i:t}function T(e,t,i){if(e===t)return!0;if(!i||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!T(e[r],t[r],i-1))return!1;return!0}if(Array.isArray(t))return!1;if("object"==typeof e&&"object"==typeof t){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let n of r)if(!t.hasOwnProperty(n)||!T(e[n],t[n],i-1))return!1;return!0}return!1}var A=i(75659);class M{bufferLayouts;constructor(e){this.bufferLayouts=e}getBufferLayout(e){return this.bufferLayouts.find(t=>t.name===e)||null}getAttributeNamesForBuffer(e){return(0,A.TC)(e)}mergeBufferLayouts(e,t){let i=[...e];for(let e of t){let t=i.findIndex(t=>t.name===e.name);t<0?i.push(e):i[t]=e}return i}}var L=i(22045),k=i(70309),I=i(70278);function O(e){return null!==e&&"object"==typeof e&&"resolveTextureBinding"in e&&"function"==typeof e.resolveTextureBinding}let R="render pipeline initialization failed",B=["stencil8","depth16unorm","depth24plus","depth24plus-stencil8","depth32float","depth32float-stencil8"];class D{static defaultProps={...r.r.defaultProps,source:void 0,vs:null,fs:null,id:"unnamed",handle:void 0,userData:{},defines:{},modules:[],plugins:[],geometry:null,indexBuffer:null,indexCount:void 0,firstVertex:0,firstIndex:0,attributes:{},constantAttributes:{},bindings:{},uniforms:{},varyings:[],isInstanced:void 0,instanceCount:0,vertexCount:0,shaderInputs:void 0,material:void 0,pipelineFactory:void 0,shaderFactory:void 0,transformFeedback:void 0,shaderAssembler:b._P.getDefaultShaderAssembler("glsl"),debugShaders:void 0,disableWarnings:void 0};device;id;source;vs;fs;pipelineFactory;shaderFactory;userData={};parameters;topology;bufferLayout;isInstanced=void 0;instanceCount=0;vertexCount;indexCount;firstVertex;firstIndex;indexBuffer=null;bufferAttributes={};constantAttributes={};bindings={};vertexArray;transformFeedback=null;pipeline;shaderInputs;material=null;_uniformStore;_attributeInfos={};_gpuGeometry=null;props;
686_dynamicIndexBufferSource=null;_dynamicAttributeBufferSources={};_colorAttachmentFormats;_depthStencilAttachmentFormat;_pipelineNeedsUpdate="newly created";_needsRedraw="initializing";_drawBlockedReason=!1;_destroyed=!1;_vertexCountSet=!1;_lastDrawTimestamp=-1;_bindingTable=[];get[Symbol.toStringTag](){return"Model"}toString(){return`Model(${this.id})`}constructor(e,t){let i=D.defaultProps.shaderAssembler,r=void 0!==t.vertexCount;this.props={...D.defaultProps,...t,shaderAssembler:t.shaderAssembler??(F(i,e.info.shadingLanguage)?i:b._P.getDefaultShaderAssembler(e.info.shadingLanguage))},this._vertexCountSet=r,t=this.props,this.id=t.id||(0,_.L)("model"),this.device=e,Object.assign(this.userData,t.userData),this.material=t.material||null;let o=function(e){return{type:e.type,shaderLanguage:e.info.shadingLanguage,shaderLanguageVersion:e.info.shadingLanguageVersion,gpu:e.info.gpu,limits:e.limits,features:e.features}}(e),l=(0,v.r)(this.props.plugins,o.shaderLanguage),u=Object.fromEntries((0,v.K)(this.props.modules,l.modules).map(e=>[e.name,e])),c=t.shaderInputs||new k.l(u,{disableWarnings:this.props.disableWarnings});t.shaderInputs&&l.modules.length>0&&c.addModules(l.modules),this.setShaderInputs(c);let h=(0,L.jY)(this.props.modules,c.getModules()),d={...l.defines,...this.props.defines};if("webgl"===this.device.type&&(this.props._uniformBlockLayouts=(0,L._R)(h)),this.props.shaderLayout=(0,L.Y$)(this.props.shaderLayout,h)||null,"webgpu"===this.device.type&&this.props.source){let t=this.props.shaderAssembler;(0,n.v)(F(t,"wgsl"));let{source:i,getUniforms:r,bindingTable:s,shaderLayout:a}=t.assembleWGSLShader({platformInfo:o,...this.props,modules:h,defines:d,pluginInjections:l.injections,pluginVertexInputs:l.vertexInputs,pluginVaryings:l.varyings});this.source=i,this._getModuleUniforms=r,this._bindingTable=s;let u=function(e,t){return e&&0!==Object.keys(t).length?{...e,attributes:e.attributes.map(e=>{let i=e.name.startsWith("_luma_")?e.name.slice(6):null;return i&&t[i]?{...e,name:i}:e})}:e}(a??e.getShaderLayout?.(this.source),l.vertexInputs),c=(0,L.He)(this.props.shaderLayout,u,Object.keys(l.vertexInputs));this.props.shaderLayout=(0,L.Y$)(c||null,h)||null}else{let e=this.props.shaderAssembler;(0,n.v)(F(e,"glsl"));let{vs:t,fs:i,getUniforms:r}=e.assembleGLSLShaderPair({platformInfo:o,...this.props,modules:h,defines:d,pluginInjections:l.injections,pluginVertexInputs:l.vertexInputs,pluginVaryings:l.varyings});this.vs=t,this.fs=i,this._getModuleUniforms=r,this._bindingTable=[]}this.vertexCount=this.props.vertexCount,this.indexCount=this.props.indexCount,this.firstVertex=this.props.firstVertex,this.firstIndex=this.props.firstIndex,this.instanceCount=this.props.instanceCount,this.topology=this.props.topology,this.bufferLayout=this.props.bufferLayout,this.parameters=this.props.parameters,this._colorAttachmentFormats=this.props.colorAttachmentFormats,this._depthStencilAttachmentFormat=this.props.depthStencilAttachmentFormat,t.geometry&&this.setGeometry(t.geometry),this.pipelineFactory=t.pipelineFactory||s.N.getDefaultPipelineFactory(this.device),this.shaderFactory=t.shaderFactory||a.g.getDefaultShaderFactory(this.device),this.pipeline=this._updatePipeline(),this.vertexArray=e.createVertexArray({shaderLayout:this.pipeline.shaderLayout,bufferLayout:this.pipeline.bufferLayout}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry),"isInstanced"in t&&(this.isInstanced=t.isInstanced),t.instanceCount&&this.setInstanceCount(t.instanceCount),t.vertexCount&&this.setVertexCount(t.vertexCount),t.indexBuffer&&this.setIndexBuffer(t.indexBuffer),t.attributes&&this.setAttributes(t.attributes),t.constantAttributes&&this.setConstantAttributes(t.constantAttributes),t.bindings&&this.setBindings(t.bindings),t.transformFeedback&&(this.transformFeedback=t.transformFeedback)}destroy(){this._destroyed||(this.pipelineFactory.release(this.pipeline),this.shaderFactory.release(this.pipeline.vs),this.pipeline.fs&&this.pipeline.fs!==this.pipeline.vs&&this.shaderFactory.release(this.pipeline.fs),this._uniformStore.destroy(),this._gpuGeometry?.destroy(),this._destroyed=!0)}needsRedraw(){this._getBindingsUpdateTimestamp()>this._lastDrawTimestamp&&this.setNeedsRedraw("contents of bound textures or buffers updated");let e=this._needsRedraw;return this._needsRedraw=!1,e}setNeedsRedraw(e){this._needsRedraw||=e}getBindingDebugTable(){return this._bindingTable}predraw(e){this._syncDynamicBuffers(),this.updateShaderInputs(e),this.material?.updateShaderInputs(e),this.pipeline=this._updatePipeline()}draw(e){let t;if(this._drawBlockedReason&&!this._pipelineNeedsUpdate)return o.R.info(2,`>>> DRAWING ABORTED ${this.id}: ${this._drawBlockedReason}`)(),!1;let i=this._areBindingsLoading();if(i)return o.R.info(2,`>>> DRAWING ABORTED ${this.id}: ${i} not loaded`)(),!1;this._syncAttachmentFormats(e);try{e.pushDebugGroup(`${this}.predraw(${e})`),"webgpu"===this.device.type?(this.updateShaderInputs(),this.material?.updateShaderInputs(),this._syncDynamicBuffers(),this.pipeline=this._updatePipeline()):this.predraw(this.device.commandEncoder)}finally{e.popDebugGroup()}let r=this.pipeline.isErrored;try{if(e.pushDebugGroup(`${this}.draw(${e})`),this._logDrawCallStart(),this.pipeline=this._updatePipeline(),r=this.pipeline.isErrored)o.R.info(2,`>>> DRAWING ABORTED ${this.id}: ${R}`)(),t=!1;else{let i=this.vertexArray.getDrawValidationError();if(i)o.R.info(2,`>>> DRAWING ABORTED ${this.id}: ${i}`)(),this._drawBlockedReason=i,t=!1;else{let i=this._getCurrentShaderLayout(),r=this._getBindings(i),n=this._getBindGroups(i,r),{indexBuffer:s}=this.vertexArray,a=s?this.indexCount??(this._vertexCountSet?this.vertexCount:s.byteLength/("uint32"===s.indexType?4:2)):void 0;e.setPipeline(this.pipeline),e.setBindings(n,{_bindGroupCacheKeys:this._getBindGroupCacheKeys()}),e.setVertexArray(this.vertexArray),t=!0===this.isInstanced&&0===this.instanceCount||e.draw({isInstanced:this.isInstanced,vertexCount:this.vertexCount,instanceCount:this.isInstanced?this.instanceCount:void 0,indexCount:a,firstVertex:this.first
686Vertex,firstIndex:this.firstIndex,transformFeedback:this.transformFeedback||void 0,uniforms:this.props.uniforms,parameters:this.parameters,topology:this.topology})}}}finally{e.popDebugGroup(),this._logDrawCallEnd()}return this._logFramebuffer(e),t?(this._lastDrawTimestamp=this.device.timestamp,this._needsRedraw=!1):r?(this._needsRedraw=R,this._drawBlockedReason=R):this._drawBlockedReason?this._needsRedraw=this._drawBlockedReason:this._needsRedraw="waiting for resource initialization",t}setGeometry(e){this._gpuGeometry?.destroy();let t=e&&function(e,t){if(t instanceof S)return t;let i=function(e,t={}){var i,r;let n=t.bufferName||"geometry";if(function(e,t){if(1!==e.bufferLayout.length)return!1;let i=e.bufferLayout[0];return i.name===t&&!!i.attributes?.length&&!!e.attributes[t]}(e,n))return e;let s=t.minAttributeAlignment||4,a=(i=e,(r=t.attributes)?r.map(e=>[e,i.attributes[e]]):Object.entries(i.attributes)),o=[],l=0,u=1/0;for(let[e,t]of a){if(!t)continue;if(t.constant)throw Error(`Attribute ${e} is constant`);let{value:i,size:r,normalized:n}=t;if(!ArrayBuffer.isView(i))throw Error(`Attribute ${e} is missing typed array data`);if(void 0===r)throw Error(`Attribute ${e} is missing a size`);let a=y.E.getVertexFormatFromAttribute(i,r,n),c=y.E.getVertexFormatInfo(a);l=E(l,s),o.push({sourceName:e,attributeName:x(e),value:i,size:r,format:a,byteOffset:l,byteLength:c.byteLength}),l+=c.byteLength;let h=i.length/r;if(!Number.isInteger(h))throw Error(`Attribute ${e} length is not divisible by size`);u=Math.min(u,h)}if(0===o.length||!Number.isFinite(u))throw Error(`Geometry ${e.id} has no interleavable attributes`);let c=E(l,s),h=new ArrayBuffer(u*c);for(let e of o)!function(e,t,i,r){let n=r.value.constructor,s=n.BYTES_PER_ELEMENT;if(r.byteOffset%s!=0||i%s!=0)throw Error(`Attribute ${r.sourceName} is not aligned to its component type`);let a=new n(e),o=r.value,l=r.byteOffset/s,u=i/s;for(let e=0;e<t;e++){let t=e*r.size,i=e*u+l;for(let e=0;e<r.size;e++)a[i+e]=o[t+e]}}(h,u,c,e);return new w({id:e.id,topology:e.topology||"triangle-list",vertexCount:e.vertexCount,indices:e.indices,attributes:{[n]:{value:new Uint8Array(h),size:c,byteStride:c}},bufferLayout:[{name:n,stepMode:"vertex",byteStride:c,attributes:o.map(e=>({attribute:e.attributeName,format:e.format,byteOffset:e.byteOffset}))}]})}(t),r=function(e,t){if(!t.indices)return;let i=t.indices.value;return e.createBuffer({usage:h.h.INDEX,data:i})}(e,i),{attributes:n,bufferLayout:s}=function(e,t){let i={};for(let[r,n]of Object.entries(t.attributes)){let s=t.bufferLayout.find(e=>e.name===r)?.name||x(r);n&&(i[s]=e.createBuffer({data:n.value,id:`${r}-buffer`}))}return{attributes:i,bufferLayout:t.bufferLayout,vertexCount:t.vertexCount}}(e,i);return new S({topology:i.topology||"triangle-list",bufferLayout:s,vertexCount:i.vertexCount,indices:r,attributes:n})}(this.device,e);if(t){this.setTopology(t.topology||"triangle-list");let e=new M(this.bufferLayout);this.bufferLayout=e.mergeBufferLayouts(t.bufferLayout,this.bufferLayout),this.vertexArray&&this._setGeometryAttributes(t)}this._gpuGeometry=t}setTopology(e){e!==this.topology&&(this.topology=e,this._setPipelineNeedsUpdate("topology"))}setBufferLayout(e){let t=new M(this.bufferLayout),i=this._gpuGeometry?t.mergeBufferLayouts(e,this._gpuGeometry.bufferLayout):e;!T(i,this.bufferLayout,-1)&&(this.bufferLayout=i,this._setPipelineNeedsUpdate("bufferLayout"),this.pipeline=this._updatePipeline(),this.vertexArray=this.device.createVertexArray({shaderLayout:this.pipeline.shaderLayout,bufferLayout:this.pipeline.bufferLayout}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry))}setParameters(e){T(e,this.parameters,2)||(this.parameters=e,this._setPipelineNeedsUpdate("parameters"))}setInstanceCount(e){this.instanceCount=e,void 0===this.isInstanced&&e>0&&(this.isInstanced=!0),this.setNeedsRedraw("instanceCount")}setVertexCount(e){this.vertexCount=e,this._vertexCountSet=!0,this.setNeedsRedraw("vertexCount")}setIndexCount(e){this.indexCount=e,this.setNeedsRedraw("indexCount")}setDrawOffsets({firstVertex:e,firstIndex:t}){this.firstVertex=e,this.firstIndex=t,this.setNeedsRedraw("drawOffsets")}setShaderInputs(e){for(let[t,i]of(this.shaderInputs=e,this._uniformStore=new l.K(this.device,this.shaderInputs.modules),Object.entries(this.shaderInputs.modules)))if((0,L.fX)(i)&&!this.material?.ownsModule(t)){let e=this._uniformStore.getManagedUniformBuffer(t);this.bindings[`${t}Uniforms`]=e}this.setNeedsRedraw("shaderInputs")}setMaterial(e){this.material=e,this.setNeedsRedraw("material")}updateShaderInputs(e){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues(),e),this.setBindings(this._getNonMaterialBindings(this.shaderInputs.getBindingValues())),this.setNeedsRedraw("shaderInputs")}setBindings(e){Object.assign(this.bindings,e),this.setNeedsRedraw("bindings")}setTransformFeedback(e){this.transformFeedback=e,this.setNeedsRedraw("transformFeedback")}setIndexBuffer(e){let t=e instanceof I.kL?e.buffer:e;
686this.indexBuffer=t,this._dynamicIndexBufferSource=e instanceof I.kL?{source:e,generation:e.generation}:null,this.vertexArray.setIndexBuffer(t),this.setNeedsRedraw("indexBuffer")}setAttributes(e,t){this._drawBlockedReason=!1;let i=t?.disableWarnings??this.props.disableWarnings;e.indices&&o.R.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)(),this.bufferLayout=function(e,t){let i=(0,A.Lv)(e),r=t.slice();return r.sort((e,t)=>(0,A.Ef)((0,A.TC)(e).map(e=>i[e]))-(0,A.Ef)((0,A.TC)(t).map(e=>i[e]))),r}(this.pipeline.shaderLayout,this.bufferLayout);let r=new M(this.bufferLayout);for(let[t,n]of Object.entries(e)){let e=n instanceof I.kL?n.buffer:n,s=r.getBufferLayout(t);if(!s){i||o.R.warn(`Model(${this.id}): Missing layout for buffer "${t}".`)();continue}let a=r.getAttributeNamesForBuffer(s),l=!1;for(let t of a){let r=this._attributeInfos[t];if(r){let t="webgpu"===this.device.type?this.vertexArray.getBufferSlot(r.bufferName):r.location;if(null===t){i||o.R.warn(`Model(${this.id}): Missing vertex array slot for buffer "${r.bufferName}".`)();continue}this.vertexArray.setBuffer(t,e),n instanceof I.kL?this._dynamicAttributeBufferSources[t]={source:n,generation:n.generation}:delete this._dynamicAttributeBufferSources[t],l=!0}}l||i||o.R.warn(`Model(${this.id}): Ignoring buffer "${e.id}" for unknown attribute "${t}"`)()}this.setNeedsRedraw("attributes")}setConstantAttributes(e,t){for(let[i,r]of Object.entries(e)){let e=this._attributeInfos[i];e?this.vertexArray.setConstantWebGL(e.location,r):(t?.disableWarnings??this.props.disableWarnings)||o.R.warn(`Model "${this.id}: Ignoring constant supplied for unknown attribute "${i}"`)()}this.setNeedsRedraw("constants")}_areBindingsLoading(){for(let e of Object.values(this.bindings))if(O(e)&&!e.isReady)return e.id;for(let e of Object.values(this.material?.bindings||{}))if(O(e)&&!e.isReady)return e.id;return!1}_getBindings(e=this._getCurrentShaderLayout()){let t={};for(let[i,r]of Object.entries(this.bindings)){let n=function(e,t,i){if(O(t)){let r=function(e,t,i){let r=(0,u.Jc)(e,t,{ignoreWarnings:!0});return r?.type==="texture"||r?.type==="external-texture"?r:0===e.bindings.length&&i?.fallbackGroup!==void 0?{type:"texture",name:t,group:i.fallbackGroup,location:0}:null}(i,e,{fallbackGroup:0});return r?t.resolveTextureBinding(r):null}return t instanceof I.kL?t.buffer:(0,I.Hd)(t)?(0,I.j8)(t):t}(i,r,e);n&&(t[i]=n)}return t}_getBindGroups(e=this._getCurrentShaderLayout(),t=this._getBindings(e)){let i=e.bindings.length?(0,u.gO)(e,t):{0:t};if(!this.material)return i;for(let[t,r]of Object.entries(this.material.getBindingsByGroup(e))){let e=Number(t);i[e]={...i[e]||{},...r}}return i}_getBindGroupCacheKeys(){let e=this.material?.getBindGroupCacheKey(3);return e?{3:e}:{}}_getBindingsUpdateTimestamp(){let e=0;for(let t of(this._dynamicIndexBufferSource&&(e=Math.max(e,this._dynamicIndexBufferSource.source.updateTimestamp)),Object.values(this._dynamicAttributeBufferSources)))e=Math.max(e,t.source.updateTimestamp);for(let t of Object.values(this.bindings))t instanceof c.X?e=Math.max(e,t.texture.updateTimestamp):t instanceof h.h||t instanceof d.g||t instanceof p||t instanceof I.kL?e=Math.max(e,t.updateTimestamp):O(t)?e=t.isReady?Math.max(e,t.updateTimestamp):1/0:(0,I.Hd)(t)&&(e=Math.max(e,(t.buffer instanceof I.kL,t.buffer.updateTimestamp)));return Math.max(e,this.material?.getBindingsUpdateTimestamp()||0)}_setGeometryAttributes(e){let t={...e.attributes};for(let[e]of Object.entries(t))this.pipeline.shaderLayout.attributes.find(t=>t.name===e)||"positions"===e||delete t[e];this.vertexCount=e.vertexCount,this._vertexCountSet=!0,this.setIndexBuffer(e.indices||null),this.setAttributes(e.attributes,{disableWarnings:!0}),this.setAttributes(t,{disableWarnings:this.props.disableWarnings}),this.setNeedsRedraw("geometry attributes")}_setPipelineNeedsUpdate(e){this._pipelineNeedsUpdate||=e,this._drawBlockedReason=!1,this.setNeedsRedraw(e)}_updatePipeline(){if(this._pipelineNeedsUpdate){let e=null,t=null;this.pipeline&&(o.R.log(1,`Model ${this.id}: Recreating pipeline because "${this._pipelineNeedsUpdate}".`)(),e=this.pipeline.vs,t=this.pipeline.fs),this._pipelineNeedsUpdate=!1;let i=this.shaderFactory.createShader({id:`${this.id}-vertex`,stage:"vertex",source:this.source||this.vs,debugShaders:this.props.debugShaders}),r=null;this.source?r=i:this.fs&&(r=this.shaderFactory.createShader({id:`${this.id}-fragment`,stage:"fragment",source:this.source||this.fs,debugShaders:this.props.debugShaders})),this.pipeline=this.pipelineFactory.createRenderPipeline({...this.props,bindings:void 0,bufferLayout:this.bufferLayout,colorAttachmentFormats:this._colorAttachmentFormats,depthStencilAttachmentFormat:this._depthStencilAttachmentFormat,topology:this.topology,parameters:this.parameters,bindGroups:void 0,vs:i,fs:r}),this._attributeInfos=(0,g.P)(this.pipeline.shaderLayout,this.bufferLayout),e&&this.shaderFactory.release(e),t&&t!==e&&this.shaderFactory.release(t)}return this.pipeline}_lastLogTime=0;_logOpen=!1;_logDrawCallStart(){let e=o.R.level>3?0:1e4;o.R.level<2||Date.now()-this._lastLogTime<e||(this._lastLogTime=
686Date.now(),this._logOpen=!0,o.R.group(2,`>>> DRAWING MODEL ${this.id}`,{collapsed:o.R.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=function(e,t){let i={},r="Values";if(0===e.attributes.length&&!e.varyings?.length)return{"No attributes or varyings":{[r]:"N/A"}};for(let t of e.attributes)if(t){let e=`${t.location} ${t.name}: ${t.type}`;i[`in ${e}`]={[r]:t.stepMode||"vertex"}}for(let t of e.varyings||[]){let e=`${t.location} ${t.name}`;i[`out ${e}`]={[r]:JSON.stringify(t)}}return i}(this.pipeline.shaderLayout,this.id);o.R.table(2,e)();let t=this.shaderInputs.getDebugTable();o.R.table(2,t)();let i=this._getAttributeDebugTable();o.R.table(2,this._attributeInfos)(),o.R.table(2,i)(),o.R.groupEnd(2)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(e){let t=this.device.props.debugFramebuffers;if(this._drawCount++,!t)return;let i=e.props.framebuffer;!function(e,t,i){var r;if("webgl"!==e.device.type)return;let n=(r=e.device,r.userData[P]||={flushing:!1,queuedFramebuffers:[]},r.userData[P]);if(!n.flushing){if(function(e){let t=e.props.framebuffer;return!t||null===t.handle}(e))return function(e,t,i){if(0===i.queuedFramebuffers.length)return;let{gl:r}=e.device,n=r.getParameter(36010),s=r.getParameter(36006),[a,o]=e.device.getDefaultCanvasContext().getDrawingBufferSize(),l=C(t.top,8),u=C(t.left,8);i.flushing=!0;try{for(let e of i.queuedFramebuffers){let[i,n,s,c,h]=function(e){let{framebuffer:t,targetWidth:i,targetHeight:r,topPx:n,leftPx:s,minimap:a}=e,o=a?Math.max(Math.floor(i/4),1):i,l=a?Math.max(Math.floor(r/4),1):r,u=Math.min(o/t.width,l/t.height),c=Math.max(Math.floor(t.width*u),1),h=Math.max(Math.floor(t.height*u),1),d=Math.max(r-n-h,0);return[s,d,s+c,d+h,h]}({framebuffer:e,targetWidth:a,targetHeight:o,topPx:l,leftPx:u,minimap:t.minimap});r.bindFramebuffer(36008,e.handle),r.bindFramebuffer(36009,null),r.blitFramebuffer(0,0,e.width,e.height,i,n,s,c,16384,9728),l+=h+8}}finally{r.bindFramebuffer(36008,n),r.bindFramebuffer(36009,s),i.flushing=!1}}(e,i,n);t&&"colorAttachments"in t&&null!==t.handle&&!n.queuedFramebuffers.includes(t)&&n.queuedFramebuffers.push(t)}}(e,i,{id:i?.id||`${this.id}-framebuffer`,minimap:!0})}_getAttributeDebugTable(){let e={};for(let[t,i]of Object.entries(this._attributeInfos)){let r=this.vertexArray.attributes[i.location];e[i.location]={name:t,type:i.shaderType,values:r?this._getBufferOrConstantValues(r,i.bufferDataType):"null"}}if(this.vertexArray.indexBuffer){let{indexBuffer:t}=this.vertexArray,i="uint32"===t.indexType?new Uint32Array(t.debugData):new Uint16Array(t.debugData);e.indices={name:"indices",type:t.indexType,values:i.toString()}}return e}_getBufferOrConstantValues(e,t){let i=m.r.getTypedArrayConstructor(t);return(e instanceof h.h?new i(e.debugData):e).toString()}_getNonMaterialBindings(e){if(!this.material)return e;let t={};for(let[i,r]of Object.entries(e))this.material.ownsBinding(i)||(t[i]=r);return t}_getCurrentShaderLayout(){return this.pipeline?.shaderLayout||this.props.shaderLayout||{bindings:[]}}_syncDynamicBuffers(){if(this._dynamicIndexBufferSource&&this._dynamicIndexBufferSource.generation!==this._dynamicIndexBufferSource.source.generation){let e=this._dynamicIndexBufferSource.source.buffer;this.indexBuffer=e,this.vertexArray.setIndexBuffer(e),this._dynamicIndexBufferSource.generation=this._dynamicIndexBufferSource.source.generation,this.setNeedsRedraw("dynamic index buffer")}for(let[e,t]of Object.entries(this._dynamicAttributeBufferSources))t.generation!==t.source.generation&&(this.vertexArray.setBuffer(Number(e),t.source.buffer),t.generation=t.source.generation,this.setNeedsRedraw("dynamic attribute buffer"))}_syncAttachmentFormats(e){var t;if("webgpu"!==this.device.type)return;let i=e.framebuffer||e.props.framebuffer,r=e.props,n=r.colorAttachmentFormats??i?.colorAttachments?.map(e=>{var t;return(t=e?.texture?.format)&&!$(t)?t:null}),s=!1===r.depthStencilAttachmentFormat?void 0:r.depthStencilAttachmentFormat??((t=i?.depthStencilAttachment?.texture?.format)&&$(t)?t:void 0);T(this._colorAttachmentFormats,n,1)&&this._depthStencilAttachmentFormat===s||(this._colorAttachmentFormats=n,this._depthStencilAttachmentFormat=s,this._setPipelineNeedsUpdate("attachment formats"))}}function F(e,t){return(void 0===e.shaderLanguage||e.shaderLanguage===t)&&("glsl"===t?"assembleGLSLShaderPair"in e&&"function"==typeof e.assembleGLSLShaderPair:"assembleWGSLShader"in e&&"function"==typeof e.assembleWGSLShader)}function $(e){return B.includes(e)}},52975:(e,t,i)=>{i.d(t,{L:()=>n});let r={};function n(e="id"){r[e]=r[e]||1;let t=r[e]++;return`${e}-${t}`}},53013:e=>{e.exports=function e(t,i){if(t===i)return!0;
686if(t&&i&&"object"==typeof t&&"object"==typeof i){if(t.constructor!==i.constructor)return!1;if(Array.isArray(t)){if((r=t.length)!=i.length)return!1;for(n=r;0!=n--;)if(!e(t[n],i[n]))return!1;return!0}if(t.constructor===RegExp)return t.source===i.source&&t.flags===i.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===i.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===i.toString();if((r=(s=Object.keys(t)).length)!==Object.keys(i).length)return!1;for(n=r;0!=n--;)if(!Object.prototype.hasOwnProperty.call(i,s[n]))return!1;for(n=r;0!=n--;){var r,n,s,a=s[n];if(!e(t[a],i[a]))return!1}return!0}return t!=t&&i!=i}},53666:(e,t,i)=>{i.d(t,{VD:()=>r,YN:()=>l,fW:()=>s,jA:()=>o,r3:()=>n,uH:()=>a,vf:()=>u});let r={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},n=Symbol.for("component"),s=Symbol.for("propTypes"),a=Symbol.for("deprecatedProps"),o=Symbol.for("asyncPropDefaults"),l=Symbol.for("asyncPropOriginal"),u=Symbol.for("asyncPropResolved")},53733:(e,t,i)=>{i.d(t,{GL:()=>c,uy:()=>h});var r=i(81075),n=i(70278),s=i(12253),a=i(36018),o=i(79149),l=i(5346),u=i(95871);class c{static get bufferPoolSize(){return u.R.poolSize}static set bufferPoolSize(e){if(!Number.isSafeInteger(e)||e<0)throw Error("GPUDataEvaluator.bufferPoolSize must be a non-negative safe integer");u.R.poolSize=e,u.R.purge()}type;size;get offset(){return this._offset}get stride(){return this._stride}normalized;isConstant;length;get byteLength(){return this._byteLength}ValueType;source=null;format;_id;_destroyed=!1;_value;_offset;_stride;_byteLength;_gpuVector;_bufferOwnership="owned";_targetBuffer;static fromArray(e,{type:t,size:i=1,offset:n=0,stride:s=0,normalized:a=!1}){let o,l=t;return Array.isArray(e)?(l=l||"float32",o=new((0,r.Y0)(l))(e)):e instanceof Float64Array?(l="uint32",i*=2,n*=2,s*=2,o=new Uint32Array(e.buffer,e.byteOffset,e.byteLength/4)):(l=l||(0,r.UE)(e),o=e),new c({id:`<${l} * ${i}>`,type:l,size:i,offset:n,stride:s,normalized:a,value:o})}static fromConstant(e,t="float32"){let i,n=(0,r.Y0)(t);return Array.isArray(e)?i=`[${e.join(",")}]`:(i=String(e),e=[e]),new c({id:i,isConstant:!0,type:t,size:e.length,value:new n(e)})}static fromGPUData(e,t={}){return function(e){if(!e.format)throw Error("GPUDataEvaluator.fromGPUData() requires GPUData format metadata");if((0,l.Tm)(e.format)||(0,l.u4)(e.format))throw Error("GPUDataEvaluator.fromGPUData() does not support variable-length input");let t=(0,l.Ft)(e.format).byteLength;if(e.rowByteLength!==t)throw Error(`GPUDataEvaluator.fromGPUData() requires rowByteLength ${t} for GPUData`)}(e),new c({...d(new s.I({buffer:e.buffer,format:e.format,length:e.length,byteOffset:e.byteOffset,byteStride:e.byteStride})),id:t.id,gpuData:e})}static fromGPUDataView(e,t={}){return new c({...d(e),id:t.id,buffer:e.buffer})}constructor(e){let{id:t,value:i,buffer:n,gpuData:s,format:o,source:l=null,isConstant:u=!1}=e;if(!l&&!i&&!n&&!s)throw Error("GPUDataEvaluator must have a value source");let{type:h,size:d,offset:f,stride:p,normalized:g,length:m}=e;if(l instanceof c?(h=h??l.type,d=d??l.size,f=f??l.offset,p=p??l.stride,g=g??l.normalized,m=m??l.length):(d=d??1,f=f??0,g=g??!1,m=u?1:m),!h)throw Error("GPUDataEvaluator: type not defined");if(this._id=t,this.type=h,this.size=d,this.ValueType=(0,r.Y0)(this.type),this._offset=f,this._stride=p||this.ValueType.BYTES_PER_ELEMENT*d,this.normalized=g,this.source=l,this.format=o,void 0===m)if(u)m=1;else{if(!i)throw Error("GPUDataEvaluator: length not defined");m=Math.ceil(i.byteLength/this.stride)}this.isConstant=u,this.length=m;let b=this.ValueType.BYTES_PER_ELEMENT*this.size;this._byteLength=0===m?0:(m-1)*this.stride+b,this._value=i,this._bufferOwnership=l instanceof c||n||s?"borrowed":"owned",s?this._gpuVector=new a.M({type:"data",name:this._id??"data",format:s.format,data:[s],stride:s.stride,byteStride:s.byteStride,rowByteLength:s.rowByteLength}):n&&(this._gpuVector=this.createGPUVectorView({buffer:n,name:this._id,format:this.format}))}get value(){return this._value||(this.source instanceof c?this.source.value:void 0)}get evaluated(){return!!this._gpuVector}get id(){return this._id}get gpuVector(){if(!this._gpuVector)throw Error(`${this} not evaluated`);return this._gpuVector}get buffer(){return f(this.gpuVector)}setTargetBuffer({buffer:e,byteOffset:t=0,byteStride:i=this.stride}){if(this._destroyed)throw Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)throw Error(`GPUDataEvaluator ${this} already evaluated`);if(!this.source||this.source instanceof c)throw Error("GPUDataEvaluator target buffers require a deferred operation source");this._targetBuffer={buffer:e,byteOffset:t,byteStride:i}
686}async evaluate(e,t={}){let i;if(this._destroyed)throw Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;if(this.source instanceof c){let i=await this.source.evaluate(e);return this._gpuVector=this.createGPUVectorView({...t,buffer:f(i)}),this._gpuVector}if(i=this._getEvaluationBuffer(e),this._value)i.write(this._value);else{let t=await this.source.execute(e,i);if(!t.success)throw t.error||Error(`${this.source} evaluation failed`);t.value&&(this._value=t.value)}return this._gpuVector=this.createGPUVectorView({...t,buffer:i}),this._gpuVector}evaluateSync(e,t={}){let i;if(this._destroyed)throw Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;if(this.source instanceof c){let i=this.source.evaluateSync(e);return this._gpuVector=this.createGPUVectorView({...t,buffer:f(i)}),this._gpuVector}if(i=this._getEvaluationBuffer(e),this._value)i.write(this._value);else{let t=this.source.executeSync(e,i);if(!t.success)throw t.error||Error(`${this.source} evaluation failed`);t.value&&(this._value=t.value)}return this._gpuVector=this.createGPUVectorView({...t,buffer:i}),this._gpuVector}createGPUVectorView(e){let t=e.name??this._id??"vector",i=e.format??this.format??function(e,t,i=!1){return t>=1&&t<=4?p(e,t,i):void 0}(this.type,this.size,this.normalized);if(e.interleaved){let i="object"==typeof e.interleaved&&e.interleaved.attributes?e.interleaved.attributes:function(e){let t=[];return function e(t,i,r){let n=t.source;if(n&&!(n instanceof c)&&"interleave"===n.name){for(let t of Object.values(n.inputs))t instanceof c&&e(t,i,r);return}i.push({attribute:t.id??t.toString(),format:p(t.type,t.size,t.normalized),byteOffset:r.byteOffset}),r.byteOffset+=t.ValueType.BYTES_PER_ELEMENT*t.size}(e,t,{byteOffset:0}),t}(this);return new a.M({type:"interleaved",name:t,buffer:e.buffer,format:e.format??this.format,length:this.length,byteOffset:this.offset,byteStride:this.stride,attributes:i,ownsBuffer:!1})}return new a.M({type:"buffer",name:t,buffer:e.buffer,format:i,length:this.length,stride:this.size,byteOffset:this.offset,byteStride:this.stride,rowByteLength:this.ValueType.BYTES_PER_ELEMENT*this.size,ownsBuffer:!1})}_getEvaluationBuffer(e){let t=this._targetBuffer;if(!t)return u.R.createOrReuse(e,this.byteLength);if(t.buffer.device!==e)throw Error("GPUDataEvaluator target buffer belongs to a different device");let i=this.ValueType.BYTES_PER_ELEMENT*this.size,r=0===this.length?0:(this.length-1)*t.byteStride+i;if(t.byteOffset+r>t.buffer.byteLength)throw Error("GPUDataEvaluator target buffer is too small for the output layout");return this._offset=t.byteOffset,this._stride=t.byteStride,this._byteLength=r,this._bufferOwnership="borrowed",this._targetBuffer=void 0,t.buffer}async readValue(e=0,t){let{ValueType:i}=this,{size:r,offset:n,stride:s,length:a}=this,o=i.BYTES_PER_ELEMENT*r;if(t=t??a,t=Math.max(e=Math.max(0,Math.min(a,e)),Math.min(a,t)),this._value)return function(e,t,i,r){let{ValueType:n,size:s,offset:a,stride:o}=e,l=o/n.BYTES_PER_ELEMENT,u=a/n.BYTES_PER_ELEMENT,c=r-i;if(l===s){let e=u+i*l;return t.subarray(e,e+c*s)}let h=new n(c*s);for(let e=0;e<c;e++){let r=u+(i+e)*l;h.set(t.subarray(r,r+s),e*s)}return h}(this,this._value,e,t);let l=t-e;if(0===l)return new i(0);let u=n+e*s,c=await this.buffer.readAsync(u,s===o?l*o:(l-1)*s+o),h=new i(c.buffer,c.byteOffset,c.byteLength/i.BYTES_PER_ELEMENT);if(s===o)return h;let d=new Uint8Array(o*l);for(let e=0;e<l;e++){let t=e*s;d.set(c.subarray(t,t+o),e*o)}return new i(d.buffer)}async ensureCPUValue(){let e=this.value;if(e)return e;let t=await this.buffer.readAsync(0,this.offset+this.byteLength);if(t.byteLength%this.ValueType.BYTES_PER_ELEMENT!=0)throw Error(`${this} backing buffer byte length is not aligned to its scalar type`);let i=t.slice();return this._value=new this.ValueType(i.buffer,i.byteOffset,i.byteLength/this.ValueType.BYTES_PER_ELEMENT),this._value}ensureCPUValueSync(){let e=this.value;if(e)return e;throw Error(`${this} CPU value is not available for synchronous evaluation`)}toString(){return this._id??this.source?.toString()??this.constructor.name}destroy(){this._gpuVector&&("owned"===this._bufferOwnership&&u.R.recycle(f(this._gpuVector)),this._gpuVector=void 0),this._targetBuffer=void 0,this._destroyed=!0}}function h(e){if(e instanceof c)return e;if("number"==typeof e||Array.isArray(e))return c.fromConstant(e);if(e instanceof o.L)return c.fromGPUData(e);if(e instanceof s.I)return c.fromGPUDataView(e);throw Error("getGPUDataEvaluator() requires GPUDataEvaluator, GPUData, GPUDataView, number, or number[]")}function d(e){let t=(0,l.Ft)(e.format),i=(0,r.Y0)(t.signedDataType),n=i.BYTES_PER_ELEMENT*t.components;if(t.byteLength!==n)throw Error(`GPUDataEvaluator does not support packed vertex format ${e.format}: ${t.byteLength} physical bytes cannot expose ${t.components} ${t.signedDataType} components`);if(e.byteOffset%i.BYTES_PER_ELEMENT!=0||e.byteStride%i.BYTES_PER_ELEMENT!=0)throw Error(`GPUDataEvaluator requires ${e.format} offset and stride aligned to ${i.BYTES_PER_ELEMENT} bytes`);return{type:t.signedDataType,size:t.components,offset:e.byteOffset,stride:e.byteStride,normalized:t.normalized,length:e.length,format:e.format}}function f(e){let t=function(e){let[t,...i]=e.data;if(!t||i.length>0)throw Error(`GPUDataEvaluator requires exactly one GPUData chunk for "${e.name}"`);return t}(e).buffer;return t instanceof n.kL?t.buffer:t}function p(e,t,i=!1){if(t<1||t>4)throw Error(`Cannot synthesize a GPUVector vertex format with ${t} components`);let r=e;if(i)switch(e){case"uint8":r="unorm8";break;case"sint8":r="snorm8";break;case"uint16":r="unorm16";break;case"sint16":r="snorm16";break;case"float32":r="float32";break;default:throw Error(`Unsupported normalized vertex format for ${e}`)}return("uint8"===r||"sint8"===r||"uint16"===r||"sint16"===r||"unorm8"===r||"snorm8"===r||"unorm16"===r||"snorm16"===r)&&3===t?`${r}x3-webgl`:`${r}${1===t?"":`x${t}`}`}},53866:(e,t,i)=>{i.d(t,{B1:()=>a,Gv:()=>r,H1:()=>h,L8:()=>s,Sv:()=>u,Td:()=>l,aC:()=>n,qf:()=>c,xZ:()=>o});let r=e=>null!==e&&"object"==typeof e,n=e=>r(e)&&e.constructor===({}).constructor,s=e=>"undefined"!=typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer,a=e=>r(e)&&"number"==typeof e.byteLength&&"function"==typeof e.slice,o=e=>!!e&&"function"==typeof e[Symbol.iterator],l=e=>!!e&&"function"==typeof e[Symbol.asyncIterator],u=e=>"undefined"!=typeof Response&&e instanceof Response||r(e)&&"function"==typeof e.arrayBuffer&&"function"==typeof e.text&&"function"==typeof e.json,c=e=>"undefined"!=typeof Blob&&e instanceof Blob,h=e=>(e=>"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||r(e)&&"function"==typeof e.tee&&"function"==typeof e.cancel&&"function"==typeof e.getReader)(e)||(e=>r(e)&&"function"==typeof e.read&&"function"==typeof e.pipe&&"boolean"==typeof e.readable)(e)},56028:(e,t,i)=>{function r(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function n(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}i.d(t,{iW:()=>r,pD:()=>n})},56210:(e,t,i)=>{i.d(t,{a:()=>n});var r=i(85066);
686class n extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let i=0;i<this.ELEMENTS;++i)this[i]=e[i+t];return this.check()}toArray(e=[],t=0){for(let i=0;i<this.ELEMENTS;++i)e[t+i]=this[i];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:(0,r.cy)(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(r.$W)}formatString(e){let t="";for(let i=0;i<this.ELEMENTS;++i)t+=(i>0?", ":"")+(0,r.Fl)(this[i],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!(0,r.aI)(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,i){if(void 0===i)return this.lerp(this,e,t);for(let r=0;r<this.ELEMENTS;++r){let n=e[r],s="number"==typeof t?t:t[r];this[r]=n+i*(s-n)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],e[i]),t[i]);return this.check()}add(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]+=t[e];return this.check()}subtract(...e){for(let t of e)for(let e=0;e<this.ELEMENTS;++e)this[e]-=t[e];return this.check()}scale(e){if("number"==typeof e)for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(r.$W.debug&&!this.validate())throw Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],e),t);return this.check()}get elements(){return this}}},57516:(e,t,i)=>{i.d(t,{Ph:()=>o,mk:()=>a});var r=i(10398),n=i(10620);let s=()=>{let e=(0,n.K2)();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function a(e){let t=s();for(let i of e=Array.isArray(e)?e:[e]){let e=(0,r.D)(i);t.find(t=>e===t)||t.unshift(e)}}function o(){return s()}},59396:(e,t,i)=>{i.d(t,{L:()=>n});let r={};function n(e="id"){r[e]=r[e]||1;let t=r[e]++;return`${e}-${t}`}},59465:(e,t,i)=>{i.d(t,{Kx:()=>a,We:()=>u,p5:()=>o,tg:()=>l});var r=i(50748),n=i(1806);let s={DEFAULT:"default",LNGLAT:"lnglat",METER_OFFSETS:"meter-offsets",LNGLAT_OFFSETS:"lnglat-offsets",CARTESIAN:"cartesian"};Object.defineProperty(s,"IDENTITY",{get:()=>(r.A.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),s.CARTESIAN)});let a={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},o={common:0,meters:1,pixels:2},l={click:"onClick",dblclick:"onClick",panstart:"onDragStart",panmove:"onDrag",panend:"onDragEnd"},u={multipan:[n.uq,{threshold:10,pointers:2,trackpad:!0}],pinch:[n.h1,{trackpad:!0},null,["multipan"]],pan:[n.uq,{threshold:1},["pinch"],["multipan"]],dblclick:[n.Cx,{event:"dblclick",taps:2,enable:!1}],dblclickdrag:[n.Cp,{event:"dblclickdrag",enable:!1},["dblclick"],null],click:[n.Cx,{event:"click"},["dblclickdrag"],["dblclick","dblclickdrag"]]}},60864:(e,t,i)=>{i.d(t,{A:()=>n});class r{constructor(e={}){this._pool=[],this.opts={overAlloc:2,poolSize:100},this.setOptions(e)}setOptions(e){Object.assign(this.opts,e)}allocate(e,t,{size:i=1,type:r,padding:n=0,copy:s=!1,initialize:a=!1,maxCount:o}){let l=r||e&&e.constructor||Float32Array,u=t*i+n;if(ArrayBuffer.isView(e)){if(u<=e.length)return e;if(u*e.BYTES_PER_ELEMENT<=e.buffer.byteLength)return new l(e.buffer,0,u)}let c=1/0;o&&(c=o*i+n);let h=this._allocate(l,u,a,c);return e&&s?h.set(e):a||h.fill(0,0,4),this._release(e),h}release(e){this._release(e)}_allocate(e,t,i,r){let n=Math.max(Math.ceil(t*this.opts.overAlloc),1);n>r&&(n=r);let s=this._pool,a=e.BYTES_PER_ELEMENT*n,o=s.findIndex(e=>e.byteLength>=a);if(o>=0){let t=new e(s.splice(o,1)[0],0,n);return i&&t.fill(0),t}return new e(n)}_release(e){if(!ArrayBuffer.isView(e))return;let t=this._pool,{buffer:i}=e,{byteLength:r}=i,n=t.findIndex(e=>e.byteLength>=r);n<0?t.push(i):(n>0||t.length<this.opts.poolSize)&&t.splice(n,0,i),t.length>this.opts.poolSize&&t.shift()}}let n=new r},61229:(e,t,i)=>{i.d(t,{A:()=>t0});var r={};i.r(r),i.d(r,{arithmetic:()=>z,dot:()=>W,equalAll:()=>G,extent:()=>N,fround:()=>j,gather:()=>U,interleave:()=>V,length:()=>H,segmentedMap:()=>q,select:()=>Z,sequence:()=>X,swizzle:()=>Q});let n=new Float32Array(12);function s(e,t=2){let i=0;for(let r of e)for(let e=0;e<t;e++)n[i++]=r[e]||0;return n}var a=i(65603),o=i(52471),l=i(52975);class u{device;model;sampler;currentIndex=0;samplerTextureMap=null;bindings=[];resources={};constructor(e,t){this.device=e,this.sampler=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",minFilter:"nearest",magFilter:"nearest",mipmapFilter:"nearest"}),this.model=new o.K(this.device,{id:t.id||(0,l.L)("texture-transform-model"),fs:t.fs||(0,a.Wk)({input:t.targetTextureVarying,inputChannels:t.targetTextureChannels,output:"transform_output"}),vertexCount:t.vertexCount,...t}),this._initialize(t),Object.seal(this)}destroy(){for(let e of(this.model.destroy(),this.bindings))e.framebuffer?.destroy()}delete(){this.destroy()}run(e){let{framebuffer:t}=this.bindings[this.currentIndex],i=this.device.beginRenderPass({framebuffer:t,...e});this.model.draw(i),i.end(),this.device.submit()}getTargetTexture(){let{targetTexture:e}=this.bindings[this.currentIndex];return e}getFramebuffer(){return this.bindings[this.currentIndex].framebuffer}_initialize(e){this._updateBindings(e)}_updateBindings(e){this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],e)}_updateBinding(e,{sourceBuffers:t,sourceTextures:i,targetTexture:r}){if(e||(e={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(e.sourceTextures,i),Object.assign(e.sourceBuffers,t),r){e.targetTexture=r;let{width:t,height:i}=r;e.framebuffer&&e.framebuffer.destroy(),e.framebuffer=this.device.createFramebuffer({
686id:"transform-framebuffer",width:t,height:i,colorAttachments:[r]}),e.framebuffer.resize({width:t,height:i})}return e}_setSourceTextureParameters(){let e=this.currentIndex,{sourceTextures:t}=this.bindings[e];for(let e in t)t[e].sampler=this.sampler}}var c=i(16452);let h=`\
687// Define a structure to hold both the clip-space position and the common position.
688struct ProjectResult {
689  clipPosition: vec4<f32>,
690  commonPosition: vec4<f32>,
691};
692
693// This function mimics the GLSL version with the 'out' parameter by returning both values.
694fn project_position_to_clipspace_and_commonspace(
695    position: vec3<f32>,
696    position64Low: vec3<f32>,
697    offset: vec3<f32>
698) -> ProjectResult {
699  // Compute the projected position.
700  let projectedPosition: vec3<f32> = project_position_vec3_f64(position, position64Low);
701
702  // Start with the provided offset.
703  var finalOffset: vec3<f32> = offset;
704
705  // Get whether a rotation is needed and the rotation matrix.
706  let rotationResult = project_needs_rotation(projectedPosition);
707
708  // If rotation is needed, update the offset.
709  if (rotationResult.needsRotation) {
710    finalOffset = rotationResult.transform * offset;
711  }
712
713  // Compute the common position.
714  let commonPosition: vec4<f32> = vec4<f32>(projectedPosition + finalOffset, 1.0);
715
716  // Convert to clip-space.
717  let clipPosition: vec4<f32> = project_common_position_to_clipspace(commonPosition);
718
719  return ProjectResult(clipPosition, commonPosition);
720}
721
722// A convenience overload that returns only the clip-space position.
723fn project_position_to_clipspace(
724    position: vec3<f32>,
725    position64Low: vec3<f32>,
726    offset: vec3<f32>
727) -> vec4<f32> {
728  return project_position_to_clipspace_and_commonspace(position, position64Low, offset).clipPosition;
729}
730`,d=`\
731vec4 project_position_to_clipspace(
732  vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition
733) {
734  vec3 projectedPosition = project_position(position, position64Low);
735  mat3 rotation;
736  if (project_needs_rotation(projectedPosition, rotation)) {
737    // offset is specified as ENU
738    // when in globe projection, rotate offset so that the ground alighs with the surface of the globe
739    offset = rotation * offset;
740  }
741  commonPosition = vec4(projectedPosition + offset, 1.0);
742  return project_common_position_to_clipspace(commonPosition);
743}
744
745vec4 project_position_to_clipspace(
746  vec3 position, vec3 position64Low, vec3 offset
747) {
748  vec4 commonPosition;
749  return project_position_to_clipspace(position, position64Low, offset, commonPosition);
750}
751`,f={name:"project32",dependencies:[c.A],source:h,vs:d};var p=i(20296),g=i(81075),m=i(93614);let b=m.r.getDataType.bind(m.r);function v(e,t,i){if(t.size>4)return null;let r="webgpu"===i&&"uint8"===t.type?"unorm8":t.type,n=t.size,s=!!("webgpu"!==i&&3===n&&r&&["uint8","sint8","unorm8","snorm8","uint16","sint16","unorm16","snorm16"].includes(r));return{attribute:e,format:n>1?`${r}x${n}${s?"-webgl":""}`:t.type,byteOffset:t.offset||0}}function y(e){return e.stride||e.size*e.bytesPerElement}var _=i(60864),w=i(48956),x=i(50748);function E(e,t){t.offset&&x.A.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let i=y(e),r=(void 0!==t.vertexOffset?t.vertexOffset:e.vertexOffset||0)*i+(t.elementOffset||0)*e.bytesPerElement+(e.offset||0);return{...t,offset:r,stride:i}}class S{constructor(e,t,i){let r;this._buffer=null,this.device=e,this.id=t.id||"",this.size=t.size||1;let n=t.logicalType||t.type,s="float64"===n,{defaultValue:a}=t;a=Number.isFinite(a)?[a]:a||Array(this.size).fill(0),r=s?"float32":!n&&t.isIndexed?"uint32":n||"float32";let o=function(e){switch(e){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return(0,g.Ak)(e)}}(n||r);this.doublePrecision=s,s&&!1===t.fp64&&(o=Float32Array),this.value=null,this.settings={...t,defaultType:o,defaultValue:a,logicalType:n,type:r,normalized:r.includes("norm"),size:this.size,bytesPerElement:o.BYTES_PER_ELEMENT},this.state={...i,externalBuffer:null,bufferAccessor:this.settings,allocatedValue:null,numInstances:0,bounds:null,constant:!1}}get isConstant(){return this.state.constant}get buffer(){return this._buffer}get byteOffset(){let e=this.getAccessor();return e.vertexOffset?e.vertexOffset*y(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}get isDoublePrecisionBuffer(){return this._shouldSplitDoublePrecisionValue(this.value)}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),_.A.release(this.state.allocatedValue),this.state.allocatedValue=null}getBuffer(){return this.state.constant&&"webgpu"!==this.device.type?null:this.state.externalBuffer||this._buffer}getValue(e=this.id,t=null){let i={};if(this.state.constant){let r=this.value;if("webgpu"===this.device.type&&this._buffer)i[e]=this._buffer;else if(t){let n=E(this.getAccessor(),t),s=n.offset/r.BYTES_PER_ELEMENT,a=n.size||this.size;i[e]=r.subarray(s,s+a)}else i[e]=r}else i[e]=this.getBuffer();return this.doublePrecision&&(this.isDoublePrecisionBuffer?i[`${e}64Low`]=i[e]:i[`${e}64Low`]=new Float32Array(this.size)),i}_getBufferLayout(e=this.id,t=null){let i=this.getAccessor(),r=[],n={name:this.id,byteStride:"webgpu"===this.device.type&&this.state.constant?0:y(i)};if(this.doublePrecision){let n=function(e,t){let i=E(e,t);return{high:i,low:{...i,offset:i.offset+4*e.size}}}(i,t||{});r.push(v(e,{...i,...n.high},this.device.type),v(`${e}64Low`,{...i,...n.low},this.device.type))}else if(t){let n=E(i,t);r.push(v(e,{...i,...n},this.device.type))}else r.push(v(e,i,this.device.type));return n.attributes=r.filter(Boolean),n}setAccessor(e){this.state.bufferAccessor=e}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let e=null;if(this.state.constant&&this.value){let t=Array.from(this.value);e=[t,t]}else{let{value:t,numInstances:i,size:r}=this,n=i*r;if(t&&n&&t.length>=n){let i=Array(r).fill(1/0),s=Array(r).fill(-1/0);for(let e=0;e<n;)for(let n=0;n<r;n++){let r=t[e++];r<i[n]&&(i[n]=r),r>s[n]&&(s[n]=r)}e=[i,s]}}return this.state.bounds=e,e}setData(e){let t,{state:i}=this;t=ArrayBuffer.isView(e)?{value:e}:e instanceof p.h?{buffer:e}:e;let r={...this.settings,...t};if(ArrayBuffer.isView(t.value)){if(!t.type)if(this.doublePrecision&&t.value instanceof Float64Array)r.type="float32";else{let e=b(t.value);r.type=r.normalized?e.replace("int","norm"):e}r.bytesPerElement=t.value.BYTES_PER_ELEMENT,r.stride=y(r)}if(i.bounds=null,t.constant){let e=t.value;if(e=this._normalizeValue(e,[],0),this.settings.normalized&&(e=this.normalizeConstant(e)),!(!i.
751constant||!this._areValuesEqual(e,this.value)))return!1;i.externalBuffer=null,i.constant=!0,this.value=ArrayBuffer.isView(e)?e:new Float32Array(e)}else if(t.buffer)i.externalBuffer=t.buffer,i.constant=!1,this.value=t.value||null;else if(t.value){this._checkExternalBuffer(t);let e=t.value,n=e;i.externalBuffer=null,i.constant=!1,this.value=e,this._shouldSplitDoublePrecisionValue(n)&&(n=(0,w.cT)(n,r),e instanceof Float32Array&&(r.stride=2*r.size*Float32Array.BYTES_PER_ELEMENT));let{buffer:s}=this,a=y(r),o=(r.vertexOffset||0)*a;if(this.settings.isIndexed){let e=this.settings.defaultType;n.constructor!==e&&(n=new e(n))}let l=n.byteLength+o+2*a;(!s||s.byteLength<l)&&(s=this._createBuffer(l)),s.write(n,o)}return this.setAccessor(r),!0}updateSubBuffer(e={}){this.state.bounds=null;let t=this.value,{startOffset:i=0,endOffset:r}=e,n=this._shouldSplitDoublePrecisionValue(t);this.buffer.write(n?(0,w.cT)(t,{size:this.size,startIndex:i,endIndex:r}):t.subarray(i,r),i*(n?8:t.BYTES_PER_ELEMENT)+this.byteOffset)}allocate(e,t=!1){let{state:i}=this,r=i.allocatedValue,n=_.A.allocate(r,e+1,{size:this.size,type:this.settings.defaultType,copy:t});this.value=n;let s=this._shouldSplitDoublePrecisionValue(n),a=s&&n instanceof Float32Array?{...this.settings,stride:2*this.size*Float32Array.BYTES_PER_ELEMENT}:this.settings;this.setAccessor(a);let{byteOffset:o}=this,{buffer:l}=this,u=n.byteLength*(s&&n instanceof Float32Array?2:1);return(!l||l.byteLength<u+o)&&(l=this._createBuffer(u+o),t&&r&&l.write(this._shouldSplitDoublePrecisionValue(r)?(0,w.cT)(r,this):r,o)),i.allocatedValue=n,i.constant=!1,i.externalBuffer=null,!0}_shouldSplitDoublePrecisionValue(e){return!!(this.doublePrecision&&(e instanceof Float64Array||"webgpu"===this.device.type&&e instanceof Float32Array))}_checkExternalBuffer(e){let{value:t}=e;if(!ArrayBuffer.isView(t))throw Error(`Attribute ${this.id} value is not TypedArray`);let i=this.settings.defaultType,r=!1;if(this.doublePrecision&&(r=t.BYTES_PER_ELEMENT<4),r)throw Error(`Attribute ${this.id} does not support ${t.constructor.name}`);t instanceof i||!this.settings.normalized||"normalized"in e||x.A.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(e){switch(this.settings.type){case"snorm8":return new Float32Array(e).map(e=>(e+128)/255*2-1);case"snorm16":return new Float32Array(e).map(e=>(e+32768)/65535*2-1);case"unorm8":return new Float32Array(e).map(e=>e/255);case"unorm16":return new Float32Array(e).map(e=>e/65535);default:return e}}_normalizeValue(e,t,i){let{defaultValue:r,size:n}=this.settings;if(Number.isFinite(e))return t[i]=e,t;if(!e){let e=n;for(;--e>=0;)t[i+e]=r[e];return t}switch(n){case 4:t[i+3]=Number.isFinite(e[3])?e[3]:r[3];case 3:t[i+2]=Number.isFinite(e[2])?e[2]:r[2];case 2:t[i+1]=Number.isFinite(e[1])?e[1]:r[1];case 1:t[i+0]=Number.isFinite(e[0])?e[0]:r[0];break;default:let s=n;for(;--s>=0;)t[i+s]=Number.isFinite(e[s])?e[s]:r[s]}return t}_areValuesEqual(e,t){if(!e||!t)return!1;let{size:i}=this;for(let r=0;r<i;r++)if(e[r]!==t[r])return!1;return!0}_createBuffer(e){this._buffer&&this._buffer.destroy();let{isIndexed:t,type:i}=this.settings,r="webgpu"!==this.device.type||t?(t?p.h.INDEX:p.h.VERTEX)|p.h.COPY_DST:p.h.VERTEX|p.h.STORAGE|p.h.COPY_DST|p.h.COPY_SRC;return this._buffer=this.device.createBuffer({...this._buffer?.props,id:this.id,usage:r,indexType:t?i:void 0,byteLength:e}),this._buffer}}var P=i(24972);let C=[],T=[];function A(e){return e&&e[Symbol.asyncIterator]}var M=i(87208);let L=[],k=[[0,1/0]],I={interpolation:{duration:0,easing:e=>e},spring:{stiffness:.05,damping:.5}};function O(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:"interpolation",duration:e});let i=e.type||"interpolation";return{...I[i],...t,...e,type:i}}class R extends S{constructor(e,t){super(e,t,{startIndices:null,constantValue:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:k}),this.constant=!1,this.settings.update=t.update||(t.accessor?this._autoUpdater:void 0),Object.seal(this.settings),Object.seal(this.state),this._validateAttributeUpdaters()}get startIndices(){return this.state.startIndices}set startIndices(e){this.state.startIndices=e}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:e=!1}={}){let t=this.state.needsRedraw;return this.state.needsRedraw=t&&!e,t}layoutChanged(){return this.state.layoutChanged}setAccessor(e){var t,i;(t=this.state).layoutChanged||(i=this.getAccessor(),t.layoutChanged=e.type!==i.type||e.size!==i.size||y(e)!==y(i)||(e.offset||0)!==(i.offset||0)),super.setAccessor(e)}getUpdateTriggers(){let{accessor:e}=this.settings;return[this.id].concat("function"!=typeof e&&e||[])}supportsTransition(){return!!this.settings.transition}getTransitionSetting(e){if(!e||!this.supportsTransition())return null;let{accessor:t}=this.settings,i=this.settings.transition;return O(Array.isArray(t)?e[t.find(t=>e[t])]:e[t],i)}setNeedsUpdate(e=this.id,t){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),t){let{startRow:e=0,endRow:i=1/0}=t;this.state.updateRanges=function(e,t){if(e===k||(t[0]<0&&(t[0]=0),t[0]>=t[1]))return e;let i=[],r=e.length,n=0;for(let s=0;s<r;
751s++){let r=e[s];r[1]<t[0]?(i.push(r),n=s+1):r[0]>t[1]?i.push(r):t=[Math.min(r[0],t[0]),Math.max(r[1],t[1])]}return i.splice(n,0,t),i}(this.state.updateRanges,[e,i])}else this.state.updateRanges=k}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=L}setNeedsRedraw(e=this.id){this.state.needsRedraw=this.state.needsRedraw||e}allocate(e){let{state:t,settings:i}=this;if(i.noAlloc)return!1;if(i.update){let i=this.isConstant;return super.allocate(e,t.updateRanges!==k),t.layoutChanged||(t.layoutChanged=i&&"webgpu"===this.device.type),!0}return!1}updateBuffer({numInstances:e,data:t,props:i,context:r}){if(!this.needsUpdate())return!1;let{state:{updateRanges:n},settings:{update:s,noAlloc:a}}=this,o=!0;if(s){for(let[a,o]of n)s.call(r,this,{data:t,startRow:a,endRow:o,props:i,numInstances:e});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset){if(this.constant){let e=this.value;this.value=null,this.setConstantValue(r,e)}else this.setData({value:this.value,constant:this.constant});this.constant=!1}else for(let[t,i]of n){let r=Number.isFinite(t)?this.getVertexOffset(t):0,n=Number.isFinite(i)?this.getVertexOffset(i):a||!Number.isFinite(e)?this.value.length:e*this.size;super.updateSubBuffer({startOffset:r,endOffset:n})}this._checkAttributeArray()}else o=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),o}setConstantValue(e,t){var i;if(void 0===t||"function"==typeof t)return!1;let r=this.isConstant,n=this.settings.transform&&e?this.settings.transform.call(e,t):t,s=this.settings.defaultType;this.state.constantValue=this._normalizeValue(n,new s(this.size),0);let a=this.setData({constant:!0,value:n});if("webgpu"===this.device.type){let e=this.state.constantValue;this.doublePrecision&&(e instanceof Float32Array||e instanceof Float64Array)&&(e=(0,w.cT)(e,{size:this.size}),this.setAccessor({...this.getAccessor(),stride:2*this.size*Float32Array.BYTES_PER_ELEMENT}));let t=this._buffer;(!t||t.byteLength<e.byteLength)&&(t=this._createBuffer(e.byteLength)),t.write(e),(i=this.state).layoutChanged||(i.layoutChanged=!r),this.constant=!1}return a&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}getConstantValue(){return this.isConstant?this.state.constantValue:null}setExternalBuffer(e){let{state:t}=this;return e?(this.clearNeedsUpdate(),t.lastExternalBuffer===e||(t.lastExternalBuffer=e,this.setNeedsRedraw(),this.setData(e),!0)):(t.lastExternalBuffer=null,!1)}setBinaryValue(e,t=null){let{state:i,settings:r}=this;if(!e)return i.binaryValue=null,i.binaryAccessor=null,!1;if(r.noAlloc)return!1;if(i.binaryValue===e)return this.clearNeedsUpdate(),!0;if(i.binaryValue=e,this.setNeedsRedraw(),r.transform||t!==this.startIndices){ArrayBuffer.isView(e)&&(e={value:e});let n=e;(0,P.A)(ArrayBuffer.isView(n.value),`invalid ${r.accessor}`);let s=!!n.size&&n.size!==this.size;return i.binaryAccessor=function(e,t){let{size:i,stride:r,offset:n,startIndices:s,nested:a}=t,o=e.BYTES_PER_ELEMENT,l=r?r/o:i,u=n?n/o:0,c=Math.floor((e.length-u)/l);return(t,{index:r,target:n})=>{let o;if(!s){let t=r*l+u;for(let r=0;r<i;r++)n[r]=e[t+r];return n}let h=s[r],d=s[r+1]||c;if(a){o=Array(d-h);for(let t=h;t<d;t++){let r=t*l+u;n=Array(i);for(let t=0;t<i;t++)n[t]=e[r+t];o[t-h]=n}}else if(l===i)o=e.subarray(h*i+u,d*i+u);else{o=new e.constructor((d-h)*i);let t=0;for(let r=h;r<d;r++){let n=r*l+u;for(let r=0;r<i;r++)o[t++]=e[n+r]}}return o}}(n.value,{size:n.size||this.size,stride:n.stride,offset:n.offset,startIndices:t,nested:s}),!1}return this.clearNeedsUpdate(),this.setData(e),!0}getVertexOffset(e){let{startIndices:t}=this;return(t?e<t.length?t[e]:this.numInstances:e)*this.size}getValue(){let e=this.settings.shaderAttributes,t=super.getValue();if(!e)return t;for(let i in e)Object.assign(t,super.getValue(i,e[i]));return t}getBufferLayout(e){this.state.layoutChanged=!1;let t=this.settings.shaderAttributes,i=super._getBufferLayout(),{stepMode:r}=this.settings;if("dynamic"===r?i.stepMode=e?e.isInstanced?"instance":"vertex":"instance":i.stepMode=r??"vertex",!t)return i;for(let e in t){let r=super._getBufferLayout(e,t[e]);i.attributes.push(...r.attributes)}return i}_autoUpdater(e,{data:t,startRow:i,endRow:r,props:n,numInstances:s}){let{settings:a,state:o,value:l,size:u,startIndices:c}=e,{accessor:h,transform:d}=a,f=o.binaryAccessor||("function"==typeof h?h:n[h]);(0,P.A)("function"==typeof f,`accessor "${h}" is not a function`);let p=e.getVertexOffset(i),{iterable:g,objectInfo:m}=function(e,t=0,i=1/0){let r=C,n={index:-1,data:e,target:[]};return e?"function"==typeof e[Symbol.iterator]?r=e:e.length>0&&(T.length=e.length,r=T):r=C,(t>0||Number.isFinite(i))&&(r=(Array.isArray(r)?r:Array.from(r)).slice(t,i),n.index=t-1),{iterable:r,objectInfo:n}}(t,i,r);for(let t of g){m.index++;let i=f(t,m);if(d&&(i=d.call(this,i)),c){let t=(m.index<c.length-1?c[m.index+1]:s)-c[m.index];if(i&&Array.isArray(i[0])){let t=p;for(let r of i)e._normalizeValue(r,l,t),t+=u}else i&&i.length>u?l.set(i,p):(e._normalizeValue(i,m.target,0),(0,M.R)({target:l,s
751ource:m.target,start:p,count:t}));p+=t*u}else e._normalizeValue(i,l,p),p+=u}}_validateAttributeUpdaters(){let{settings:e}=this;if(!(e.noAlloc||"function"==typeof e.update))throw Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:e}=this,t=Math.min(4,this.size);if(e&&e.length>=t){let i=!0;switch(t){case 4:i=i&&Number.isFinite(e[3]);case 3:i=i&&Number.isFinite(e[2]);case 2:i=i&&Number.isFinite(e[1]);case 1:i=i&&Number.isFinite(e[0]);break;default:i=!1}if(!i)throw Error(`Illegal attribute generated for ${this.id}`)}}}var B=i(72868),D=i(24706);function F({elementWise:e,func:t,inputs:i,output:r,outputBuffer:n}){let s=Array.isArray(i)?i:Object.values(i);for(let e of s)if(!e.value)throw Error(`${e} does not have CPU value`);let a=r.length,o=r.size,l=new r.ValueType(a*o);for(let i=0;i<a;i++){let r=s.map(e=>$(e,i));if(e)for(let e=0;e<o;e++)l[i*o+e]=t.apply(null,r.map(t=>t[e]));else t.call(null,l.subarray(i*o,i*o+o),...r)}let u=r.ValueType.BYTES_PER_ELEMENT,c=r.offset/u,h=r.stride/u,d=l;if(0!==c||h!==o){d=new r.ValueType(c+r.byteLength/u);for(let e=0;e<a;e++){let t=e*o,i=c+e*h,r=l.subarray(t,t+o);d.set(r,i),n.write(r,i*u)}}else n.write(l);return{success:!0,value:d}}function $(e,t){let i=e.value,r=e.size,n=e.offset/e.ValueType.BYTES_PER_ELEMENT,s=e.stride/e.ValueType.BYTES_PER_ELEMENT,a=n+(e.isConstant?0:t)*s,o=i.slice(a,a+r);if(!e.normalized)return o;let l=new Float32Array(r);for(let t=0;t<r;t++)l[t]=function(e,t){switch(t){case"uint8":return e/255;case"uint16":return e/65535;case"uint32":return e/0xffffffff;case"sint8":return Math.max(e/127,-1);case"sint16":return Math.max(e/32767,-1);case"sint32":return Math.max(e/0x7fffffff,-1);case"float32":return e;default:throw Error(`Unsupported normalized source type ${t}`)}}(o[t],e.type);return l}let z=({inputs:e,output:t,target:i})=>{for(let t of Object.values(e.namedInputs))if(!t.value)throw Error(`${t} does not have CPU value`);let r=new t.ValueType(t.length*t.size);for(let i=0;i<t.length;i++){let n=Object.fromEntries(Object.entries(e.namedInputs).map(([e,t])=>[e,$(t,i)]));for(let s=0;s<t.size;s++)r[i*t.size+s]=function e(t,i,r){switch(t.kind){case"input":{let e=i[t.name];if(r<e.length)return e[r];return 1===e.length?e[0]:0}case"literal":if(Array.isArray(t.value))return t.value[r]??0;return t.value;case"call":{!function(e,t){let i=D.E[e].arity;if(t!==i)throw Error(`Arithmetic op '${e}' expects ${i} args, got ${t}`)}(t.op,t.args.length);let n=t.args.map(t=>e(t,i,r));switch(t.op){case"add":return n[0]+n[1];case"subtract":return n[0]-n[1];case"multiply":return n[0]*n[1];case"divide":return n[0]/n[1];case"pow":return Math.pow(n[0],n[1]);case"sqrt":return Math.sqrt(n[0]);case"abs":return Math.abs(n[0]);case"sin":return Math.sin(n[0]);case"cos":return Math.cos(n[0]);case"tan":return Math.tan(n[0]);case"exp":return Math.exp(n[0]);case"log":return Math.log(n[0]);default:{let e=t.op;throw Error(`Unsupported arithmetic op ${e}`)}}}default:throw Error(`Unsupported expression node ${t.kind}`)}}(e.expression,n,s)}return i.write(r),{success:!0,value:r}},N=({inputs:e,output:t,target:i})=>{let{sourceValues:r}=e;if(!r.value)throw Error(`${r} does not have CPU value`);let n=new t.ValueType(t.length*t.size);if(0===r.length)return{success:!1,error:Error(`${r} is empty`)};for(let e=0;e<r.size;e++){let i=$(r,0)[e],s=e*t.size,a=s+1;n[s]=i,n[a]=i;for(let t=1;t<r.length;t++){let i=$(r,t)[e];i<n[s]&&(n[s]=i),i>n[a]&&(n[a]=i)}}return i.write(n),{success:!0,value:n}},j=({inputs:e,output:t,target:i})=>F({func:(e,t)=>{let i=e.length/2,r=new Float64Array(t.buffer);for(let t=0;t<i;t++){let n=r[t];e[t]=Math.fround(n),e[t+i]=n-e[t]}return e},inputs:e,output:t,outputBuffer:i}),U=async({inputs:e,output:t,target:i})=>{let{ids:r,sourceValues:n}=e,s=r.value,a=n.value;if(!s)throw Error(`${r} does not have CPU value`);if(!a)throw Error(`${n} does not have CPU value`);let o=new t.ValueType(t.length*t.size),l=Array(t.size).fill(0);for(let e=0;e<t.length;e++){let i=Number($(r,e)[0]),s=!function(e,t){return Number.isInteger(e)&&e>=0&&e<t}(i,n.length)?l:$(n,i);o.set(s,e*t.size)}return i.write(o),{success:!0,value:o}}
751,V=({inputs:e,output:t,target:i})=>F({func:(e,...t)=>{let i=0;for(let r of t)e.set(r,i),i+=r.length},inputs:e,output:t,outputBuffer:i}),W=({inputs:e,output:t,target:i})=>{let{x:r,y:n}=e,s=new t.ValueType(t.length);for(let e=0;e<t.length;e++){let t=$(r,e),i=$(n,e),a=0;for(let e=0;e<r.size;e++)a+=t[e]*i[e];s[e]=a}return i.write(s),{success:!0,value:s}},G=({inputs:e,output:t,target:i})=>{let{x:r,y:n}=e,s=new t.ValueType(t.length);for(let e=0;e<t.length;e++){let t=$(r,e),i=$(n,e),a=1;for(let e=0;e<r.size;e++)if(t[e]!==i[e]){a=0;break}s[e]=a}return i.write(s),{success:!0,value:s}},H=({inputs:e,output:t,target:i})=>{let{x:r}=e,n=new t.ValueType(t.length);for(let e=0;e<t.length;e++){let t=$(r,e),i=0;for(let e=0;e<r.size;e++)i+=t[e]*t[e];n[e]=Math.sqrt(i)}return i.write(n),{success:!0,value:n}},q=async({inputs:e,output:t,target:i})=>{let{segments:r,vertexCount:n}=e,s=r.value;if(!s)throw Error(`${r} does not have CPU value`);!function(e,t,i){if(t.length<1)throw Error("segmentedMap segments must contain at least one segment start");let r=0;for(let i=0;i<t.length;i++){let n=e[Y(t,i)];if(0===i&&0!==n)throw Error(`segmentedMap segments must start at 0, got ${n}`);if(i>0&&n<r)throw Error(`segmentedMap segments must be non-decreasing, got ${n} after ${r}`);r=n}if(r>i)throw Error(`segmentedMap last segment start must be <= vertexCount, got ${r} > ${i}`)}(s,r,n);let a=new t.ValueType(t.length*t.size),o=0;for(let e=0;e<n;e++){for(;o+1<r.length&&s[Y(r,o+1)]<=e;)o++;let i=s[Y(r,o)],n=e*t.size;a[n]=o,a[n+1]=e-i}return i.write(a),{success:!0,value:a}};function Y(e,t){return e.offset/e.ValueType.BYTES_PER_ELEMENT+t*(e.stride/e.ValueType.BYTES_PER_ELEMENT)}let Z=async({inputs:e,output:t,target:i})=>{let{condition:r,whenTrue:n,whenFalse:s}=e,a=new t.ValueType(t.length*t.size);for(let e=0;e<t.length;e++){let i=$(r,e),o=$(n,e),l=$(s,e);for(let u=0;u<t.size;u++){let c=K(i,r.size,u);a[e*t.size+u]=0!==c?K(o,n.size,u):K(l,s.size,u)}}return i.write(a),{success:!0,value:a}};function K(e,t,i){return i<t?e[i]:1===t?e[0]:0}let X=({inputs:e,output:t,target:i})=>{let r=new t.ValueType(t.length);for(let i=0;i<t.length;i++)r[i]=e.start+i*e.step;return i.write(r),{success:!0,value:r}},Q=({inputs:e,output:t,target:i})=>{let{columns:r}=e;return F({func:(e,t)=>{for(let i=0;i<r.length;i++)e[i]=t[r[i]]},inputs:{x:e.x},output:t,outputBuffer:i})};class J{_modules={cpu:r};add(e,t){let i=this._modules[e];if("function"==typeof t.then){let r=Promise.all([Promise.resolve(i||{}),t]).then(([e,t])=>({...e,...t}));return this._modules[e]=r,r.then(t=>{this._modules[e]=t}).catch(t=>{B.R.error(`Failed to register ${e} backend: ${t}`)()}),r}if(i&&"function"==typeof i.then){let r=Promise.resolve(i).then(e=>({...e,...t})).then(t=>(this._modules[e]=t,t)).catch(t=>{throw B.R.error(`Failed to register ${e} backend: ${t}`)(),t});return this._modules[e]=r,r}let r={...i||{},...t};return this._modules[e]=r,Promise.resolve(r)}async get(e,t){let r=this._modules[e];if(!r)if("webgl"===e)r=this.add("webgl",i.e(52911).then(i.bind(i,52911)));else if("webgpu"===e)r=this.add("webgpu",i.e(9473).then(i.bind(i,9473)));else throw Error(`${e} backend not registered`);let n=(await r)[t];if("function"!=typeof n)throw Error(`${e} backend does not implement ${t}`);return n}getSync(e,t){let i=this._modules[e];if(!i)throw Error(`${e} backend not registered`);if("function"==typeof i.then)throw Error(`${e} backend is not loaded yet`);let r=i[t];if("function"!=typeof r)throw Error(`${e} backend does not implement ${t}`);return r}clear(){this._modules={}}}let ee=new J;var et=i(53733);class ei{inputs;dependencies;constructor(e){this.inputs=e,this.dependencies=Array.from(e instanceof Array?e:Object.values(e)).filter(e=>e instanceof et.GL)}async execute(e,t){return await this._resolveDependencies(e),await this._executeWithHandler(await ee.get(this._getHandlerRegistry(e),this.name),t)}executeSync(e,t){var i;this._resolveDependenciesSync(e);let r=this._executeWithHandler(ee.getSync(this._getHandlerRegistry(e),this.name),t);if(i=r,"function"==typeof i?.then)throw Error(`${this.name} returned a Promise in executeSync()`);return r}shouldExecuteOnCPU(){return this.output.length<=1&&Array.from(this.dependencies).every(e=>!!e.value)}_getHandlerRegistry(e){return this.shouldExecuteOnCPU()?"cpu":e.type}async _resolveDependencies(e){for(let t of this.dependencies)await t.evaluate(e);if("cpu"===this._getHandlerRegistry(e)||"null"===e.type)for(let e of this.dependencies)await e.ensureCPUValue()}_resolveDependenciesSync(e){for(let t of this.dependencies)t.evaluateSync(e);if("cpu"===this._getHandlerRegistry(e)||"null"===e.type)for(let e of this.dependencies)e.ensureCPUValueSync()}
751_executeWithHandler(e,t){return e({device:t.device,inputs:this.inputs,output:this.output,target:t})}}class er extends ei{name="interleave";output;constructor(e){super(e);let{isConstant:t,type:i,length:r}=function(...e){let t=function(e){let t=0,i=0;for(let r of e){if("f"===r[0])return"float32";let e=r.endsWith("8")?8:r.endsWith("6")?16:32;"u"===r[0]?t=Math.max(t,e):i=Math.max(i,e)}return t&&!i?`uint${t}`:i&&t<32?`sint${Math.max(i,2*t)}`:"float32"}(e.map(e=>e.type));return"f"!==t[0]&&e.some(e=>e.normalized)&&(t="float32"),{isConstant:e.every(e=>e.isConstant),type:t,size:e.reduce((e,t)=>Math.max(e,t.size),0),length:e.reduce((e,t)=>Math.max(e,t.length),0)}}(...e);this.output=new et.GL({isConstant:t,type:i,size:e.reduce((e,t)=>e+t.size,0),length:r,source:this})}toString(){return`_${this.inputs.join("_")}_`}}var en=i(70278),es=i(36018);class ea{gpuDataEvaluators;format;length;id;_gpuVector;_ownsGPUDataEvaluators;_destroyed=!1;static fromGPUVector(e){if(e.bufferLayout)throw Error(`GPUVectorEvaluator.fromGPUVector() does not accept interleaved vector "${e.name}"`);if(0===e.data.length)throw Error(`GPUVectorEvaluator.fromGPUVector() requires GPUData for "${e.name}"`);return new ea({id:e.name,gpuDataEvaluators:e.data.map(t=>et.GL.fromGPUData(t,{id:e.name})),gpuVector:e,format:e.format})}static fromGPUDataEvaluators(e,t={}){return new ea({id:t.id,gpuDataEvaluators:e,format:t.format})}constructor({id:e,gpuDataEvaluators:t,gpuVector:i,format:r}){if(0===t.length)throw Error("GPUVectorEvaluator requires at least one GPUData evaluator");(function(e){let t=e[0];for(let i of e.slice(1))if(i.type!==t.type||i.size!==t.size||i.normalized!==t.normalized||i.format!==t.format)throw Error("GPUVectorEvaluator requires matching GPUData evaluator layouts")})(t),this.id=e,this.gpuDataEvaluators=t,this.format=r??t[0].format,this.length=t.reduce((e,t)=>e+t.length,0),this._gpuVector=i,this._ownsGPUDataEvaluators=!i}get evaluated(){return!!this._gpuVector}get gpuVector(){if(!this._gpuVector)throw Error(`${this} not evaluated`);return this._gpuVector}mapGPUData(e){return ea.fromGPUDataEvaluators(this.gpuDataEvaluators.map((t,i)=>e(t,i)),{id:this.id})}async evaluate(e,t={}){if(this._destroyed)throw Error(`GPUVectorEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let i=await Promise.all(this.gpuDataEvaluators.map(i=>i.evaluate(e,t))),r=i[0],n=i.map(eo),s=t.format??this.format??r.format;return this._gpuVector=new es.M({type:"data",name:t.name??this.id??"vector",format:s,data:n,stride:r.stride,byteStride:r.byteStride,rowByteLength:r.rowByteLength,bufferLayout:r.bufferLayout}),this._gpuVector}evaluateSync(e,t={}){if(this._destroyed)throw Error(`GPUVectorEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let i=this.gpuDataEvaluators.map(i=>i.evaluateSync(e,t)),r=i[0],n=i.map(eo),s=t.format??this.format??r.format;return this._gpuVector=new es.M({type:"data",name:t.name??this.id??"vector",format:s,data:n,stride:r.stride,byteStride:r.byteStride,rowByteLength:r.rowByteLength,bufferLayout:r.bufferLayout}),this._gpuVector}destroy(){if(this._ownsGPUDataEvaluators)for(let e of this.gpuDataEvaluators)e.destroy();this._gpuVector=void 0,this._destroyed=!0}toString(){return this.id??this.constructor.name}}function eo(e){let[t,...i]=e.data;if(!t||i.length>0)throw Error(`GPUVectorEvaluator requires one GPUData chunk for "${e.name}"`);return t}function el(e){return e instanceof et.GL?[e.buffer]:e.gpuVector.data.map(e=>e.buffer instanceof en.kL?e.buffer.buffer:e.buffer)}var eu=i(14071);class ec{constructor(e,{id:t,isTransitionAttribute:i}){this.packedBuffers={},this.device=e,this.id=t,this.isTransitionAttribute=i,"webgpu"===this.device.type&&ee.add("webgpu",{interleave:eu.C})}hasGroups(e){return"webgpu"===this.device.type&&Object.values(e).some(e=>!!e.settings.bufferGroup)}finalize(){for(let e of Object.values(this.packedBuffers))e.packed.destroy();this.packedBuffers={}}getBufferLayouts(e,t){let i=this._getPackedGroups(e,t,{requireValues:!1,excludeAttributes:{}});return this._getBufferLayouts(e,i,t)}getBindings(e,t,i,r){let n=this._getPackedGroups(e,i,{requireValues:!0,excludeAttributes:r}),s={},a=new Set;for(let e of n.values()){let i=!this.packedBuffers[e.id]||e.attributes.some(e=>!!t[e.id]);for(let t of(s[e.id]=this._getPackedBuffer(e,i),e.attributes))a.add(t.id)}return{bufferLayouts:this._getBufferLayouts(e,n,i).filter(t=>!r[t.name]&&!e[t.name]?.settings.isIndexed),buffers:s,groupedAttributeIds:a}}_getPackedGroups(e,t,{requireValues:i,excludeAttributes:r}){let n=new Map;for(let t of Object.values(e)){let e=t.settings.bufferGroup;if(!e)continue;let i=n.get(e)||[];i.push(t),n.set(e,i)}let s=new Map;for(let[e,a]of n){let n=this._getPackedGroup(e,a,t,i,r);n&&s.set(e,n)}return s}_getPackedGroup(e,t,i,r,n){if(t.length<2)return null;let s=t.map(e=>e.getBufferLayout(i)),a=s[0].stepMode,o=Math.max(1,t[0].numInstances),l=r&&t.every(e=>e.isConstant);for(let e=0;e<t.length;e++){let i=t[e],l=i.getAccessor(),u=l.size*l.bytesPerElement;if(n[i.id]||i.settings.isIndexed||i.settings.noAlloc||i.doublePrecision||this.isTransitionAttribute(i.id)||s[e].stepMode!==a||i.numInstances!==t[0].numInstances||0!==(l.offset||0)||0!==(l.vertexOffset||0)||y(l)!==u||r&&(i.isConstant?!i.getConstantValue()||i.getConstantValue().byteLength<u:!ArrayBuffer.isView(i.value)||i.value.byteLength<o*u))return null}let u={},c=[],h=0;for(let e=0;e<t.length;e++){let i=t[e];for(let t of(h=eh(h),u[i.id]=h,s[e].attributes||[]))c.push({...t,byteOffset:h+(t.byteOffset||0)});h+=y(i.getAccessor())}return{id:e,attributes:t,byteStride:h=eh(h),byteOffsets:u,rowCount:o,layout:{name:e,byteStride:l?0:h,stepMode:a,attributes:c}}}_getBufferLayouts(e,t,i){let r=[],n=new Set,s=new Set;for(let e of t.values())for(let t of e.attributes)s.add(t.id);for(let a of Object.values(e)){let e=a.settings.bufferGroup,o=e&&t.get(e);o&&s.has(a.id)?n.has(o.id)||(r.push(o.layout),n.add(o.id)):r.push(a.getBufferLayout(i))}return r}_getPackedBuffer(e,t){let i=JSON.stringify({byteStride:e.layout.byteStride,attributes:e.layout.attributes}),r=this.packedBuffers[e.id];if(r&&r.layoutKey===i||(t=!0),t){r&&(r.packed.destroy(),delete this.packedBuffers[e.id]);let t=this._interleavePackedGroup(e);return this.packedBuffers[e.id]={packed:t,layoutKey:i},t.buffer}if(!r)throw Error(`Attribute buffer group ${e.id} has no packed buffer`);return r.packed.buffer}_interleavePackedGroup(e){let t=function(...e){if(0===e.length)throw Error("interleave() requires at least one input");return 1===e.length?(0,et.uy)(e[0]):new er(e.map(et.uy)).output}(...e.attributes.map(t=>this._getInterleaveInput(e,t)));return!function(e,t){let i=function(e){let t=new Set;return function e(t,i,r){var n;if((n=t)instanceof et.GL||n instanceof ea)return void i.add(t);if(!(!t||"object"!=typeof t||r.has(t))){if(r.add(t),Array.isArray(t)){for(let n of t)e(n,i,r);return}if(function(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(t))for(let n of Object.values(t))e(n,i,r)}}(e,t,new Set),Array.from(t)}(t);for(let t of i)t.evaluateSync(e);var r=i;let n=new Set(r.flatMap(el)),s=new Set;for(let e of r)!function e(t,i){if(t instanceof ea){for(let r of t.gpuDataEvaluators)e(r,i);return}let r=t.source;if(r){if(r instanceof et.GL){i.has(r)||(i.add(r),e(r,i));return}for(let t of r.dependencies)i.has(t)||(i.add(t),e(t,i))}}(e,s);for(let e of s)e.evaluated&&!n.has(e.buffer)&&e.destroy()}(this.device,t),t}_getInterleaveInput(e,t){let i=y(t.getAccessor()),r=e.byteOffsets[t.id];if(ed(`${e.id}.${t.id} rowByteLength`,i),ed(`${e.id}.${t.id} groupByteOffset`,r),t.isConstant){let r=t.getConstantValue();if(!r)throw Error(`Attribute group ${e.id} is missing constant value ${t.id}`);return ed(`${e.id}.${t.id}
751 constant byteOffset`,r.byteOffset),new et.GL({id:t.id,type:"uint32",size:i/4,isConstant:!0,value:new Uint32Array(r.buffer,r.byteOffset,i/Uint32Array.BYTES_PER_ELEMENT)})}let n=t.getBuffer(),s=t.byteOffset,a=t.getAccessor().stride||i;if(ed(`${e.id}.${t.id} byteOffset`,s),ed(`${e.id}.${t.id} stride`,a),!n)throw Error(`Attribute group ${e.id} cannot interleave missing buffer ${t.id}`);return new et.GL({id:t.id,type:"uint32",size:i/4,offset:s,stride:a,length:e.rowCount,buffer:n})}}function eh(e){return 4*Math.ceil(e/4)}function ed(e,t){if(t%4!=0)throw Error(`Attribute buffer groups require 32-bit alignment: ${e}=${t}`)}var ef=i(90994),ep=i(38508),eg=i(82220);function em(e,t=[],i=0){let r=Math.fround(e),n=e-r;return t[i]=r,t[i+1]=n,t}let eb=`\
752
753layout(std140) uniform fp64arithmeticUniforms {
754  uniform float ONE;
755  uniform float SPLIT;
756} fp64;
757
758/*
759About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
760
761The purpose of this workaround is to prevent shader compilers from
762optimizing away necessary arithmetic operations by swapping their sequences
763or transform the equation to some 'equivalent' form.
764
765These helpers implement Dekker/Veltkamp-style error tracking. If the compiler
766folds constants or reassociates the arithmetic, the high/low split can stop
767tracking the rounding error correctly. That failure mode tends to look fine in
768simple coordinate setup, but then breaks down inside iterative arithmetic such
769as fp64 Mandelbrot loops.
770
771The method is to multiply an artifical variable, ONE, which will be known to
772the compiler to be 1 only at runtime. The whole expression is then represented
773as a polynomial with respective to ONE. In the coefficients of all terms, only one a
774and one b should appear
775
776err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
777*/
778
779float prevent_fp64_optimization(float value) {
780#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
781  return value + fp64.ONE * 0.0;
782#else
783  return value;
784#endif
785}
786
787// Divide float number to high and low floats to extend fraction bits
788vec2 split(float a) {
789  // Keep SPLIT as a runtime uniform so the compiler cannot fold the Dekker
790  // split into a constant expression and reassociate the recovery steps.
791  float split = prevent_fp64_optimization(fp64.SPLIT);
792  float t = prevent_fp64_optimization(a * split);
793  float temp = t - a;
794  float a_hi = t - temp;
795  float a_lo = a - a_hi;
796  return vec2(a_hi, a_lo);
797}
798
799// Divide float number again when high float uses too many fraction bits
800vec2 split2(vec2 a) {
801  vec2 b = split(a.x);
802  b.y += a.y;
803  return b;
804}
805
806// Special sum operation when a > b
807vec2 quickTwoSum(float a, float b) {
808#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
809  float sum = (a + b) * fp64.ONE;
810  float err = b - (sum - a) * fp64.ONE;
811#else
812  float sum = a + b;
813  float err = b - (sum - a);
814#endif
815  return vec2(sum, err);
816}
817
818// General sum operation
819vec2 twoSum(float a, float b) {
820  float s = (a + b);
821#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
822  float v = (s * fp64.ONE - a) * fp64.ONE;
823  float err = (a - (s - v) * fp64.ONE) * fp64.ONE * fp64.ONE * fp64.ONE + (b - v);
824#else
825  float v = s - a;
826  float err = (a - (s - v)) + (b - v);
827#endif
828  return vec2(s, err);
829}
830
831vec2 twoSub(float a, float b) {
832  float s = (a - b);
833#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
834  float v = (s * fp64.ONE - a) * fp64.ONE;
835  float err = (a - (s - v) * fp64.ONE) * fp64.ONE * fp64.ONE * fp64.ONE - (b + v);
836#else
837  float v = s - a;
838  float err = (a - (s - v)) - (b + v);
839#endif
840  return vec2(s, err);
841}
842
843vec2 twoSqr(float a) {
844  float prod = a * a;
845  vec2 a_fp64 = split(a);
846#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
847  float err = ((a_fp64.x * a_fp64.x - prod) * fp64.ONE + 2.0 * a_fp64.x *
848    a_fp64.y * fp64.ONE * fp64.ONE) + a_fp64.y * a_fp64.y * fp64.ONE * fp64.ONE * fp64.ONE;
849#else
850  float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
851#endif
852  return vec2(prod, err);
853}
854
855vec2 twoProd(float a, float b) {
856  float prod = a * b;
857  vec2 a_fp64 = split(a);
858  vec2 b_fp64 = split(b);
859  // twoProd is especially sensitive because mul_fp64 and div_fp64 both depend
860  // on the split terms and cross terms staying in the original evaluation
861  // order. If the compiler folds or reassociates them, the low part tends to
862  // collapse to zero or NaN on some drivers.
863  float highProduct = prevent_fp64_optimization(a_fp64.x * b_fp64.x);
864  float crossProduct1 = prevent_fp64_optimization(a_fp64.x * b_fp64.y);
865  float crossProduct2 = prevent_fp64_optimization(a_fp64.y * b_fp64.x);
866  float lowProduct = prevent_fp64_optimization(a_fp64.y * b_fp64.y);
867#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
868  float err1 = (highProduct - prod) * fp64.ONE;
869  float err2 = crossProduct1 * fp64.ONE * fp64.ONE;
870  float err3 = crossProduct2 * fp64.ONE * fp64.ONE * fp64.ONE;
871  float err4 = lowProduct * fp64.ONE * fp64.ONE * fp64.ONE * fp64.ONE;
872#else
873  float err1 = highProduct - prod;
874  float err2 = crossProduct1;
875  float err3 = crossProduct2;
876  float err4 = lowProduct;
877#endif
878  float err = ((err1 + err2) + err3) + err4;
879  return vec2(prod, err);
880}
881
882vec2 sum_fp64(vec2 a, vec2 b) {
883  vec2 s, t;
884  s = twoSum(a.x, b.x);
885  t = twoSum(a.y, b.y);
886  s.y += t.x;
887  s = quickTwoSum(s.x, s.y);
888  s.y += t.y;
889  s = quickTwoSum(s.x, s.y);
890  return s;
891}
892
893vec2 sub_fp64(vec2 a, vec2 b) {
894  vec2 s, t;
895  s = twoSub(a.x, b.x);
896  t = twoSub(a.y, b.y);
897  s.y += t.x;
898  s = quickTwoSum(s.x, s.y);
899  s.y += t.y;
900  s = quickTwoSum(s.x, s.y);
901  return s;
902}
903
904vec2 mul_fp64(vec2 a, vec2 b) {
905  vec2 prod = twoProd(a.x, b.x);
906  // y component is for the error
907  prod.y += a.x * b.y;
908#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
909  prod = split2(prod);
910#endif
911  prod = quickTwoSum(prod.x, prod.y);
912  prod.y += a.y * b.x;
913#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
914  prod = split2(prod);
915#endif
916  prod = quickTwoSum(prod.x, prod.y);
917  return prod;
918}
919
920vec2 div_fp64(vec2 a, vec2 b) {
921  float xn = 1.0 / b.x;
922#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
923  vec2 yn = mul_fp64(a, vec2(xn, 0));
924#else
925  vec2 yn = a * xn;
926#endif
927  float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
928  vec2 prod = twoProd(xn, diff);
929  return sum_fp64(yn, prod);
930}
931
932vec2 sqrt_fp64(vec2 a) {
933  if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
934  if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
935
936  float x = 1.0 / sqrt(a.x);
937  float yn = a.x * x;
938#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
939  vec2 yn_sqr = twoSqr(yn) * fp64.ONE;
940#else
941  vec2 yn_sqr = twoSqr(yn);
942#endif
943  float diff = sub_fp64(a, yn_sqr).x;
944  vec2 prod = twoProd(x * 0.5, diff);
945#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
946  return sum_fp64(split(yn), prod);
947#else
948  return sum_fp64(vec2(yn, 0.0), prod);
949#endif
950}
951`,ev=`\
vendor: 14,505 bytes, lines 952-1402
952struct Fp64F32Bits {
953  sign: u32,
954  baseExponent: i32,
955  significand: u32,
956  isZero: bool,
957  isInf: bool,
958  isNan: bool,
959};
960
961// Decode an f32 as (-1)^sign * significand * 2^baseExponent.
962fn fp64_decode_f32_bits(bits: u32) -> Fp64F32Bits {
963  let sign = bits >> 31u;
964  let exponentBits = (bits >> 23u) & 0xffu;
965  let fraction = bits & 0x7fffffu;
966
967  if (exponentBits == 0xffu) {
968    return Fp64F32Bits(sign, 0, 0u, false, fraction == 0u, fraction != 0u);
969  }
970  if (exponentBits == 0u) {
971    return Fp64F32Bits(sign, -149, fraction, fraction == 0u, false, false);
972  }
973  return Fp64F32Bits(sign, i32(exponentBits) - 150, 0x800000u | fraction, false, false, false);
974}
975
976fn fp64_f32_magnitude_compare(aBits: u32, bBits: u32) -> i32 {
977  let aMagnitude = aBits & 0x7fffffffu;
978  let bMagnitude = bBits & 0x7fffffffu;
979  if (aMagnitude == bMagnitude) {
980    return 0;
981  }
982  return select(-1, 1, aMagnitude > bMagnitude);
983}
984
985fn fp64_make_residual_f32_bits(
986  exactSign: u32,
987  exactMagnitude: vec2u,
988  exactBaseExponent: i32,
989  highBits: u32
990) -> u32 {
991  if (fp64_u64_is_zero(exactMagnitude)) {
992    return 0u;
993  }
994
995  let high = fp64_decode_f32_bits(highBits);
996  if (high.isInf || high.isNan) {
997    return exactSign << 31u;
998  }
999  if (high.isZero) {
1000    return fp64_make_f32_bits_from_u64(exactSign, exactMagnitude, exactBaseExponent);
1001  }
1002
1003  let commonBaseExponent = min(exactBaseExponent, high.baseExponent);
1004  let exactShift = exactBaseExponent - commonBaseExponent;
1005  let highShift = high.baseExponent - commonBaseExponent;
1006
1007  // A normal two-sum/two-product residual never needs a shift this large.
1008  // This guard gives deterministic underflow behavior outside that contract.
1009  if (exactShift >= 64 || highShift >= 64) {
1010    return exactSign << 31u;
1011  }
1012
1013  let exactAligned = fp64_u64_shift_left(exactMagnitude, u32(exactShift));
1014  let highAligned = fp64_u64_shift_left(vec2u(0u, high.significand), u32(highShift));
1015  let comparison = fp64_u64_compare(exactAligned, highAligned);
1016  if (comparison == 0) {
1017    return 0u;
1018  }
1019
1020  var residualSign = exactSign;
1021  var residualMagnitude: vec2u;
1022  if (comparison > 0) {
1023    residualMagnitude = fp64_u64_sub(exactAligned, highAligned);
1024  } else {
1025    residualSign = exactSign ^ 1u;
1026    residualMagnitude = fp64_u64_sub(highAligned, exactAligned);
1027  }
1028  return fp64_make_f32_bits_from_u64(
1029    residualSign,
1030    residualMagnitude,
1031    commonBaseExponent
1032  );
1033}
1034
1035fn fp64_split_accumulator_bits(
1036  sign: u32,
1037  magnitude: vec2u,
1038  baseExponent: i32
1039) -> vec2u {
1040  let highBits = fp64_make_f32_bits_from_u64(sign, magnitude, baseExponent);
1041  let lowBits = fp64_make_residual_f32_bits(sign, magnitude, baseExponent, highBits);
1042  return vec2u(highBits, lowBits);
1043}
1044
1045fn fp64_two_sum_integer_bits(aBits: u32, bBits: u32) -> vec2u {
1046  let a = fp64_decode_f32_bits(aBits);
1047  let b = fp64_decode_f32_bits(bBits);
1048
1049  if (a.isNan || b.isNan) {
1050    return vec2u(0x7fc00000u, 0u);
1051  }
1052  if (a.isInf || b.isInf) {
1053    if (a.isInf && b.isInf && a.sign != b.sign) {
1054      return vec2u(0x7fc00000u, 0u);
1055    }
1056    return select(vec2u(bBits, 0u), vec2u(aBits, 0u), a.isInf);
1057  }
1058  if (a.isZero && b.isZero) {
1059    return vec2u((a.sign & b.sign) << 31u, 0u);
1060  }
1061  if (a.isZero) {
1062    return vec2u(bBits, 0u);
1063  }
1064  if (b.isZero) {
1065    return vec2u(aBits, 0u);
1066  }
1067
1068  let exponentDifference = select(
1069    b.baseExponent - a.baseExponent,
1070    a.baseExponent - b.baseExponent,
1071    a.baseExponent >= b.baseExponent
1072  );
1073
1074  // Beyond half an ulp, rounding cannot change the larger operand. Returning
1075  // the smaller operand intact also avoids an unbounded integer alignment.
1076  // At a power-of-two boundary the spacing below the larger operand is half
1077  // the spacing above it, so an opposite-sign gap-25 operand can still change
1078  // the rounded high limb. Gap 26 is the first universally safe early-out.
1079  if (exponentDifference > 25) {
1080    if (fp64_f32_magnitude_compare(aBits, bBits) >= 0) {
1081      return vec2u(aBits, bBits);
1082    }
1083    return vec2u(bBits, aBits);
1084  }
1085
1086  let commonBaseExponent = min(a.baseExponent, b.baseExponent);
1087  let aMagnitude = fp64_u64_shift_left(
1088    vec2u(0u, a.significand),
1089    u32(a.baseExponent - commonBaseExponent)
1090  );
1091  let bMagnitude = fp64_u64_shift_left(
1092    vec2u(0u, b.significand),
1093    u32(b.baseExponent - commonBaseExponent)
1094  );
1095
1096  var resultSign = a.sign;
1097  var resultMagnitude: vec2u;
1098  if (a.sign == b.sign) {
1099    resultMagnitude = fp64_u64_add(aMagnitude, bMagnitude);
1100  } else {
1101    let comparison = fp64_u64_compare(aMagnitude, bMagnitude);
1102    if (comparison == 0) {
1103      return vec2u(0u, 0u);
1104    }
1105    if (comparison > 0) {
1106      resultMagnitude = fp64_u64_sub(aMagnitude, bMagnitude);
1107    } else {
1108      resultSign = b.sign;
1109      resultMagnitude = fp64_u64_sub(bMagnitude, aMagnitude);
1110    }
1111  }
1112
1113  return fp64_split_accumulator_bits(resultSign, resultMagnitude, commonBaseExponent);
1114}
1115
1116fn fp64_two_sum_integer(a: f32, b: f32) -> vec2f {
1117  let resultBits = fp64_two_sum_integer_bits(bitcast<u32>(a), bitcast<u32>(b));
1118  return vec2f(bitcast<f32>(resultBits.x), bitcast<f32>(resultBits.y));
1119}
1120
1121fn fp64_multiply_significands(a: u32, b: u32) -> vec2u {
1122  let aLow = a & 0xffffu;
1123  let aHigh = a >> 16u;
1124  let bLow = b & 0xffffu;
1125  let bHigh = b >> 16u;
1126  let lowProduct = aLow * bLow;
1127  let crossProduct = aLow * bHigh + aHigh * bLow;
1128  let highProduct = aHigh * bHigh;
1129
1130  var result = vec2u(0u, lowProduct);
1131  result = fp64_u64_add(
1132    result,
1133    fp64_u64_shift_left(vec2u(0u, crossProduct), 16u)
1134  );
1135  result = fp64_u64_add(result, vec2u(highProduct, 0u));
1136  return result;
1137}
1138
1139fn fp64_two_prod_integer_bits(aBits: u32, bBits: u32) -> vec2u {
1140  let a = fp64_decode_f32_bits(aBits);
1141  let b = fp64_decode_f32_bits(bBits);
1142  let resultSign = a.sign ^ b.sign;
1143
1144  if (a.isNan || b.isNan || ((a.isZero || b.isZero) && (a.isInf || b.isInf))) {
1145    return vec2u(0x7fc00000u, 0u);
1146  }
1147  if (a.isInf || b.isInf) {
1148    return vec2u((resultSign << 31u) | 0x7f800000u, resultSign << 31u);
1149  }
1150  if (a.isZero || b.isZero) {
1151    return vec2u(resultSign << 31u, resultSign << 31u);
1152  }
1153
1154  let magnitude = fp64_multiply_significands(a.significand, b.significand);
1155  return fp64_split_accumulator_bits(
1156    resultSign,
1157    magnitude,
1158    a.baseExponent + b.baseExponent
1159  );
1160}
1161
1162fn fp64_two_prod_integer(a: f32, b: f32) -> vec2f {
1163  let resultBits = fp64_two_prod_integer_bits(bitcast<u32>(a), bitcast<u32>(b));
1164  return vec2f(bitcast<f32>(resultBits.x), bitcast<f32>(resultBits.y));
1165}
1166
1167fn fp64_round_add_integer(a: f32, b: f32) -> f32 {
1168  return fp64_two_sum_integer(a, b).x;
1169}
1170
1171fn fp64_round_mul_integer(a: f32, b: f32) -> f32 {
1172  return fp64_two_prod_integer(a, b).x;
1173}
1174
1175#ifndef LUMA_FP64_PREDICATE_ONLY
1176fn fp64_f32_finite_exponent(value: Fp64F32Bits) -> i32 {
1177  let mostSignificantBit = 31u - countLeadingZeros(value.significand);
1178  return value.baseExponent + i32(mostSignificantBit);
1179}
1180
1181fn fp64_scale_f32_integer(value: f32, exponent: i32) -> f32 {
1182  let decoded = fp64_decode_f32_bits(bitcast<u32>(value));
1183  if (decoded.isZero || decoded.isInf || decoded.isNan) {
1184    return value;
1185  }
1186  let resultBits = fp64_make_f32_bits_from_u64(
1187    decoded.sign,
1188    vec2u(0u, decoded.significand),
1189    decoded.baseExponent + exponent
1190  );
1191  return bitcast<f32>(resultBits);
1192}
1193
1194// Divide normalized significands so the hardware operation cannot overflow,
1195// underflow, or flush a subnormal result. Reapply the exponent with integer
1196// packing, which also produces subnormal correction limbs without relying on
1197// floating-point arithmetic to preserve them.
1198fn fp64_divide_f32_integer(aValue: f32, bValue: f32) -> f32 {
1199  let a = fp64_decode_f32_bits(bitcast<u32>(aValue));
1200  let b = fp64_decode_f32_bits(bitcast<u32>(bValue));
1201  if (a.isZero || b.isZero || a.isInf || b.isInf || a.isNan || b.isNan) {
1202    return aValue / bValue;
1203  }
1204
1205  let aMostSignificantBit = 31u - countLeadingZeros(a.significand);
1206  let bMostSignificantBit = 31u - countLeadingZeros(b.significand);
1207  let normalizedABits = fp64_make_f32_bits_from_u64(
1208    a.sign,
1209    vec2u(0u, a.significand),
1210    -i32(aMostSignificantBit)
1211  );
1212  let normalizedBBits = fp64_make_f32_bits_from_u64(
1213    b.sign,
1214    vec2u(0u, b.significand),
1215    -i32(bMostSignificantBit)
1216  );
1217  let normalizedQuotient = bitcast<f32>(normalizedABits) / bitcast<f32>(normalizedBBits);
1218  let quotient = fp64_decode_f32_bits(bitcast<u32>(normalizedQuotient));
1219  let exponentShift =
1220    a.baseExponent + i32(aMostSignificantBit) -
1221    b.baseExponent - i32(bMostSignificantBit);
1222  let quotientBits = fp64_make_f32_bits_from_u64(
1223    quotient.sign,
1224    vec2u(0u, quotient.significand),
1225    quotient.baseExponent + exponentShift
1226  );
1227  return bitcast<f32>(quotientBits);
1228}
1229#endif
1230
1231#ifndef LUMA_FP64_PREDICATE_ONLY
1232fn split(a: f32) -> vec2f {
1233  let aBits = bitcast<u32>(a);
1234  let decoded = fp64_decode_f32_bits(aBits);
1235  if (decoded.isZero || decoded.isInf || decoded.isNan) {
1236    return vec2f(a, 0.0);
1237  }
1238
1239  var roundedHigh = decoded.significand >> 12u;
1240  let remainder = decoded.significand & 0xfffu;
1241  if (remainder > 0x800u || (remainder == 0x800u && (roundedHigh & 1u) == 1u)) {
1242    roundedHigh = roundedHigh + 1u;
1243  }
1244  var highMagnitude = vec2u(0u, roundedHigh << 12u);
1245  var highBits = fp64_make_f32_bits_from_u64(
1246    decoded.sign,
1247    highMagnitude,
1248    decoded.baseExponent
1249  );
1250  // Rounding the high limb of a maximum-exponent value can overflow even
1251  // though the original value is finite. Truncate only in that boundary case
1252  // so split remains an exact finite decomposition.
1253  if (fp64_decode_f32_bits(highBits).isInf) {
1254    roundedHigh = decoded.significand >> 12u;
1255    highMagnitude = vec2u(0u, roundedHigh << 12u);
1256    highBits = fp64_make_f32_bits_from_u64(
1257      decoded.sign,
1258      highMagnitude,
1259      decoded.baseExponent
1260    );
1261  }
1262  let lowBits = fp64_make_residual_f32_bits(
1263    decoded.sign,
1264    vec2u(0u, decoded.significand),
1265    decoded.baseExponent,
1266    highBits
1267  );
1268  return vec2f(bitcast<f32>(highBits), bitcast<f32>(lowBits));
1269}
1270
1271fn split2(a: vec2f) -> vec2f {
1272  var result = split(a.x);
1273  result.y = fp64_round_add_integer(result.y, a.y);
1274  return result;
1275}
1276#endif
1277
1278#ifndef LUMA_FP64_PREDICATE_ONLY
1279fn quickTwoSum(a: f32, b: f32) -> vec2f {
1280  return fp64_two_sum_integer(a, b);
1281}
1282#endif
1283
1284fn twoSum(a: f32, b: f32) -> vec2f {
1285  return fp64_two_sum_integer(a, b);
1286}
1287
1288fn twoSub(a: f32, b: f32) -> vec2f {
1289  let bBits = bitcast<u32>(b) ^ 0x80000000u;
1290  let resultBits = fp64_two_sum_integer_bits(bitcast<u32>(a), bBits);
1291  return vec2f(bitcast<f32>(resultBits.x), bitcast<f32>(resultBits.y));
1292}
1293
1294#ifndef LUMA_FP64_PREDICATE_ONLY
1295fn twoSqr(a: f32) -> vec2f {
1296  return fp64_two_prod_integer(a, a);
1297}
1298
1299fn twoProd(a: f32, b: f32) -> vec2f {
1300  return fp64_two_prod_integer(a, b);
1301}
1302#endif
1303
1304fn sum_fp64(a: vec2f, b: vec2f) -> vec2f {
1305  var sum = fp64_two_sum_integer(a.x, b.x);
1306  let lowSum = fp64_two_sum_integer(a.y, b.y);
1307  sum.y = fp64_round_add_integer(sum.y, lowSum.x);
1308  sum = fp64_two_sum_integer(sum.x, sum.y);
1309  sum.y = fp64_round_add_integer(sum.y, lowSum.y);
1310  return fp64_two_sum_integer(sum.x, sum.y);
1311}
1312
1313fn sub_fp64(a: vec2f, b: vec2f) -> vec2f {
1314  let negatedB = vec2f(
1315    bitcast<f32>(bitcast<u32>(b.x) ^ 0x80000000u),
1316    bitcast<f32>(bitcast<u32>(b.y) ^ 0x80000000u)
1317  );
1318  return sum_fp64(a, negatedB);
1319}
1320
1321fn mul_fp64(a: vec2f, b: vec2f) -> vec2f {
1322  var product = fp64_two_prod_integer(a.x, b.x);
1323  let crossProduct1 = fp64_round_mul_integer(a.x, b.y);
1324  product.y = fp64_round_add_integer(product.y, crossProduct1);
1325  product = fp64_two_sum_integer(product.x, product.y);
1326  let crossProduct2 = fp64_round_mul_integer(a.y, b.x);
1327  product.y = fp64_round_add_integer(product.y, crossProduct2);
1328  return fp64_two_sum_integer(product.x, product.y);
1329}
1330
1331#ifndef LUMA_FP64_PREDICATE_ONLY
1332fn fp64_scale_fp64_integer(value: vec2f, exponent: i32) -> vec2f {
1333  let high = fp64_scale_f32_integer(value.x, exponent);
1334  let low = fp64_scale_f32_integer(value.y, exponent);
1335  return sum_fp64(vec2f(high, 0.0), vec2f(low, 0.0));
1336}
1337
1338fn fp64_div_fp64_normalized(a: vec2f, b: vec2f) -> vec2f {
1339  let quotientHigh = fp64_divide_f32_integer(a.x, b.x);
1340  var quotient = vec2f(quotientHigh, 0.0);
1341
1342  let remainder = sub_fp64(a, mul_fp64(b, quotient));
1343  let quotientLow = fp64_divide_f32_integer(remainder.x, b.x);
1344  quotient = sum_fp64(quotient, vec2f(quotientLow, 0.0));
1345
1346  let secondRemainder = sub_fp64(a, mul_fp64(b, quotient));
1347  let correction = fp64_divide_f32_integer(secondRemainder.x, b.x);
1348  return sum_fp64(quotient, vec2f(correction, 0.0));
1349}
1350
1351fn div_fp64(a: vec2f, b: vec2f) -> vec2f {
1352  let decodedA = fp64_decode_f32_bits(bitcast<u32>(a.x));
1353  let decodedB = fp64_decode_f32_bits(bitcast<u32>(b.x));
1354  if (
1355    decodedA.isZero || decodedB.isZero ||
1356    decodedA.isInf || decodedB.isInf ||
1357    decodedA.isNan || decodedB.isNan
1358  ) {
1359    return fp64_div_fp64_normalized(a, b);
1360  }
1361
1362  let exponentA = fp64_f32_finite_exponent(decodedA);
1363  let exponentB = fp64_f32_finite_exponent(decodedB);
1364  // Correct the quotient near unity so b * q and the remainder stay clear of
1365  // both f32 underflow and overflow. The exponent difference is applied once.
1366  let normalizedA = fp64_scale_fp64_integer(a, -exponentA);
1367  let normalizedB = fp64_scale_fp64_integer(b, -exponentB);
1368  let normalizedQuotient = fp64_div_fp64_normalized(normalizedA, normalizedB);
1369  return fp64_scale_fp64_integer(normalizedQuotient, exponentA - exponentB);
1370}
1371
1372fn fp64_sqrt_fp64_normalized(a: vec2f) -> vec2f {
1373  let estimate = sqrt(a.x);
1374  let difference = sub_fp64(a, fp64_two_prod_integer(estimate, estimate)).x;
1375  let denominator = fp64_round_add_integer(estimate, estimate);
1376  let correction = fp64_divide_f32_integer(difference, denominator);
1377  return sum_fp64(vec2f(estimate, 0.0), vec2f(correction, 0.0));
1378}
1379
1380fn sqrt_fp64(a: vec2f) -> vec2f {
1381  let decoded = fp64_decode_f32_bits(bitcast<u32>(a.x));
1382  let decodedLow = fp64_decode_f32_bits(bitcast<u32>(a.y));
1383  if (decoded.isZero && decodedLow.isZero) {
1384    return vec2f(0.0, 0.0);
1385  }
1386  if (decoded.sign == 1u) {
1387    let nanValue = fp64_nan(a.x);
1388    return vec2f(nanValue, nanValue);
1389  }
1390
1391  if (decoded.isInf || decoded.isNan) {
1392    return fp64_sqrt_fp64_normalized(a);
1393  }
1394  let exponent = fp64_f32_finite_exponent(decoded);
1395  // An even scale lets the final square-root rescale use an integer exponent.
1396  let evenExponent = exponent - (exponent & 1);
1397  let normalizedA = fp64_scale_fp64_integer(a, -evenExponent);
1398  let normalizedRoot = fp64_sqrt_fp64_normalized(normalizedA);
1399  return fp64_scale_fp64_integer(normalizedRoot, evenExponent / 2);
1400}
1401#endif
1402`
1402,ey={name:"fp64arithmetic",source:`\
vendor: 17,563 bytes, lines 1403-2026
1403struct Fp64ArithmeticUniforms {
1404  ONE: f32,
1405  SPLIT: f32,
1406};
1407
1408@group(0) @binding(auto) var<uniform> fp64arithmetic : Fp64ArithmeticUniforms;
1409
1410#ifndef LUMA_FP64_F32_INPUT_ONLY
1411struct Fp64Bits {
1412  sign: u32,
1413  exponent: i32,
1414  significand: vec2u,
1415  isZero: bool,
1416  isInf: bool,
1417  isNan: bool,
1418};
1419#endif
1420
1421#ifndef LUMA_FP64_PREDICATE_ONLY
1422fn fp64_nan(seed: f32) -> f32 {
1423  let nanBits = 0x7fc00000u | select(0u, 1u, seed < 0.0);
1424  return bitcast<f32>(nanBits);
1425}
1426#endif
1427
1428fn fp64_u64_is_zero(value: vec2u) -> bool {
1429  return value.x == 0u && value.y == 0u;
1430}
1431
1432fn fp64_u64_compare(a: vec2u, b: vec2u) -> i32 {
1433  if (a.x != b.x) {
1434    return select(-1, 1, a.x > b.x);
1435  }
1436  if (a.y != b.y) {
1437    return select(-1, 1, a.y > b.y);
1438  }
1439  return 0;
1440}
1441
1442fn fp64_u64_add(a: vec2u, b: vec2u) -> vec2u {
1443  let low = a.y + b.y;
1444  let carry = select(0u, 1u, low < a.y);
1445  return vec2u(a.x + b.x + carry, low);
1446}
1447
1448fn fp64_u64_sub(a: vec2u, b: vec2u) -> vec2u {
1449  let borrow = select(0u, 1u, a.y < b.y);
1450  return vec2u(a.x - b.x - borrow, a.y - b.y);
1451}
1452
1453fn fp64_u64_shift_left(value: vec2u, shift: u32) -> vec2u {
1454  if (shift == 0u) {
1455    return value;
1456  }
1457  if (shift < 32u) {
1458    return vec2u((value.x << shift) | (value.y >> (32u - shift)), value.y << shift);
1459  }
1460  if (shift == 32u) {
1461    return vec2u(value.y, 0u);
1462  }
1463  if (shift < 64u) {
1464    return vec2u(value.y << (shift - 32u), 0u);
1465  }
1466  return vec2u(0u);
1467}
1468
1469fn fp64_u64_shift_right(value: vec2u, shift: u32) -> vec2u {
1470  if (shift == 0u) {
1471    return value;
1472  }
1473  if (shift < 32u) {
1474    return vec2u(value.x >> shift, (value.y >> shift) | (value.x << (32u - shift)));
1475  }
1476  if (shift == 32u) {
1477    return vec2u(0u, value.x);
1478  }
1479  if (shift < 64u) {
1480    return vec2u(0u, value.x >> (shift - 32u));
1481  }
1482  return vec2u(0u);
1483}
1484
1485fn fp64_u64_get_bit(value: vec2u, bitIndex: u32) -> bool {
1486  if (bitIndex >= 64u) {
1487    return false;
1488  }
1489  if (bitIndex >= 32u) {
1490    return ((value.x >> (bitIndex - 32u)) & 1u) != 0u;
1491  }
1492  return ((value.y >> bitIndex) & 1u) != 0u;
1493}
1494
1495fn fp64_u64_has_bits_below(value: vec2u, bitCount: u32) -> bool {
1496  if (bitCount == 0u) {
1497    return false;
1498  }
1499  if (bitCount >= 64u) {
1500    return !fp64_u64_is_zero(value);
1501  }
1502  if (bitCount > 32u) {
1503    let highBitCount = bitCount - 32u;
1504    let highMask = (1u << highBitCount) - 1u;
1505    return value.y != 0u || (value.x & highMask) != 0u;
1506  }
1507  if (bitCount == 32u) {
1508    return value.y != 0u;
1509  }
1510  let lowMask = (1u << bitCount) - 1u;
1511  return (value.y & lowMask) != 0u;
1512}
1513
1514#ifndef LUMA_FP64_F32_INPUT_ONLY
1515fn fp64_u64_shift_right_sticky(value: vec2u, shift: u32) -> vec2u {
1516  var shifted = fp64_u64_shift_right(value, shift);
1517  if (fp64_u64_has_bits_below(value, shift)) {
1518    shifted.y = shifted.y | 1u;
1519  }
1520  return shifted;
1521}
1522#endif
1523
1524fn fp64_u64_count_leading_zeros(value: vec2u) -> u32 {
1525  if (value.x != 0u) {
1526    return countLeadingZeros(value.x);
1527  }
1528  return 32u + countLeadingZeros(value.y);
1529}
1530
1531fn fp64_round_shift_right_to_u32(value: vec2u, shift: u32) -> u32 {
1532  if (shift == 0u) {
1533    return value.y;
1534  }
1535
1536  let truncated = fp64_u64_shift_right(value, shift);
1537  var rounded = truncated.y;
1538  let guard = fp64_u64_get_bit(value, shift - 1u);
1539  let hasTrailingBits = fp64_u64_has_bits_below(value, shift - 1u);
1540  if (guard && (hasTrailingBits || (rounded & 1u) == 1u)) {
1541    rounded = rounded + 1u;
1542  }
1543  return rounded;
1544}
1545
1546#ifndef LUMA_FP64_F32_INPUT_ONLY
1547fn fp64_round_shift_right(value: vec2u, shift: u32) -> vec2u {
1548  if (shift == 0u) {
1549    return value;
1550  }
1551
1552  var rounded = fp64_u64_shift_right(value, shift);
1553  let guard = fp64_u64_get_bit(value, shift - 1u);
1554  let hasTrailingBits = fp64_u64_has_bits_below(value, shift - 1u);
1555  if (guard && (hasTrailingBits || (rounded.y & 1u) == 1u)) {
1556    rounded = fp64_u64_add(rounded, vec2u(0u, 1u));
1557  }
1558  return rounded;
1559}
1560#endif
1561
1562fn fp64_make_f32_bits_from_u64(sign: u32, significand: vec2u, baseExponent: i32) -> u32 {
1563  if (fp64_u64_is_zero(significand)) {
1564    return sign << 31u;
1565  }
1566
1567  let leadingZeros = fp64_u64_count_leading_zeros(significand);
1568  let mostSignificantBit = 63u - leadingZeros;
1569  var exponent = baseExponent + i32(mostSignificantBit);
1570
1571  if (exponent > 127) {
1572    return (sign << 31u) | 0x7f800000u;
1573  }
1574
1575  if (exponent >= -126) {
1576    let shift = i32(mostSignificantBit) - 23;
1577    var significand24: u32;
1578    if (shift > 0) {
1579      significand24 = fp64_round_shift_right_to_u32(significand, u32(shift));
1580    } else {
1581      significand24 = fp64_u64_shift_left(significand, u32(-shift)).y;
1582    }
1583
1584    if (significand24 >= 0x1000000u) {
1585      significand24 = significand24 >> 1u;
1586      exponent = exponent + 1;
1587      if (exponent > 127) {
1588        return (sign << 31u) | 0x7f800000u;
1589      }
1590    }
1591
1592    return (sign << 31u) | (u32(exponent + 127) << 23u) | (significand24 & 0x7fffffu);
1593  }
1594
1595  let scaleExponent = baseExponent + 149;
1596  var mantissa: u32;
1597  if (scaleExponent >= 0) {
1598    mantissa = fp64_u64_shift_left(significand, u32(scaleExponent)).y;
1599  } else {
1600    mantissa = fp64_round_shift_right_to_u32(significand, u32(-scaleExponent));
1601  }
1602
1603  if (mantissa >= 0x800000u) {
1604    return (sign << 31u) | 0x00800000u;
1605  }
1606  return (sign << 31u) | mantissa;
1607}
1608
1609#ifndef LUMA_FP64_F32_INPUT_ONLY
1610fn fp64_decode_bits(bits: vec2u) -> Fp64Bits {
1611  let sign = bits.x >> 31u;
1612  let exponentBits = (bits.x >> 20u) & 0x7ffu;
1613  let fractionHigh = bits.x & 0xfffffu;
1614  let fractionLow = bits.y;
1615  let fraction = vec2u(fractionHigh, fractionLow);
1616
1617  if (exponentBits == 0x7ffu) {
1618    let isInf = fp64_u64_is_zero(fraction);
1619    return Fp64Bits(sign, 0, vec2u(0u), false, isInf, !isInf);
1620  }
1621
1622  if (exponentBits == 0u) {
1623    let isZero = fp64_u64_is_zero(fraction);
1624    return Fp64Bits(sign, -1022, fraction, isZero, false, false);
1625  }
1626
1627  return Fp64Bits(sign, i32(exponentBits) - 1023, vec2u((1u << 20u) | fractionHigh, fractionLow), false, false, false);
1628}
1629
1630fn fp64_finite_magnitude_compare(a: Fp64Bits, b: Fp64Bits) -> i32 {
1631  if (a.exponent != b.exponent) {
1632    return select(-1, 1, a.exponent > b.exponent);
1633  }
1634  return fp64_u64_compare(a.significand, b.significand);
1635}
1636#endif
1637
1638#ifndef LUMA_FP64_F32_INPUT_ONLY
1639struct Fp64RawF32Bits {
1640  sign: u32,
1641  baseExponent: i32,
1642  significand: u32,
1643  isZero: bool,
1644  isInf: bool,
1645  isNan: bool,
1646};
1647
1648// Decode an f32 as (-1)^sign * significand * 2^baseExponent. This shared
1649// integer representation lets normalization remain independent of the
1650// selected double-single arithmetic implementation.
1651fn fp64_decode_raw_f32_bits(bits: u32) -> Fp64RawF32Bits {
1652  let sign = bits >> 31u;
1653  let exponentBits = (bits >> 23u) & 0xffu;
1654  let fraction = bits & 0x7fffffu;
1655
1656  if (exponentBits == 0xffu) {
1657    return Fp64RawF32Bits(sign, 0, 0u, false, fraction == 0u, fraction != 0u);
1658  }
1659  if (exponentBits == 0u) {
1660    return Fp64RawF32Bits(sign, -149, fraction, fraction == 0u, false, false);
1661  }
1662  return Fp64RawF32Bits(
1663    sign,
1664    i32(exponentBits) - 150,
1665    0x800000u | fraction,
1666    false,
1667    false,
1668    false
1669  );
1670}
1671
1672fn fp64_raw_f32_magnitude_compare(aBits: u32, bBits: u32) -> i32 {
1673  let aMagnitude = aBits & 0x7fffffffu;
1674  let bMagnitude = bBits & 0x7fffffffu;
1675  if (aMagnitude == bMagnitude) {
1676    return 0;
1677  }
1678  return select(-1, 1, aMagnitude > bMagnitude);
1679}
1680
1681fn fp64_make_raw_residual_f32_bits(
1682  exactSign: u32,
1683  exactMagnitude: vec2u,
1684  exactBaseExponent: i32,
1685  highBits: u32
1686) -> u32 {
1687  if (fp64_u64_is_zero(exactMagnitude)) {
1688    return 0u;
1689  }
1690
1691  let high = fp64_decode_raw_f32_bits(highBits);
1692  if (high.isInf || high.isNan) {
1693    return 0u;
1694  }
1695  if (high.isZero) {
1696    return fp64_make_f32_bits_from_u64(exactSign, exactMagnitude, exactBaseExponent);
1697  }
1698
1699  let commonBaseExponent = min(exactBaseExponent, high.baseExponent);
1700  let exactShift = exactBaseExponent - commonBaseExponent;
1701  let highShift = high.baseExponent - commonBaseExponent;
1702  if (exactShift >= 64 || highShift >= 64) {
1703    return 0u;
1704  }
1705
1706  let exactAligned = fp64_u64_shift_left(exactMagnitude, u32(exactShift));
1707  let highAligned = fp64_u64_shift_left(vec2u(0u, high.significand), u32(highShift));
1708  let comparison = fp64_u64_compare(exactAligned, highAligned);
1709  if (comparison == 0) {
1710    return 0u;
1711  }
1712
1713  var residualSign = exactSign;
1714  var residualMagnitude: vec2u;
1715  if (comparison > 0) {
1716    residualMagnitude = fp64_u64_sub(exactAligned, highAligned);
1717  } else {
1718    residualSign = exactSign ^ 1u;
1719    residualMagnitude = fp64_u64_sub(highAligned, exactAligned);
1720  }
1721  return fp64_make_f32_bits_from_u64(
1722    residualSign,
1723    residualMagnitude,
1724    commonBaseExponent
1725  );
1726}
1727
1728fn fp64_split_raw_accumulator_bits(
1729  sign: u32,
1730  magnitude: vec2u,
1731  baseExponent: i32
1732) -> vec2u {
1733  if (fp64_u64_is_zero(magnitude)) {
1734    return vec2u(0u);
1735  }
1736  let highBits = fp64_make_f32_bits_from_u64(sign, magnitude, baseExponent);
1737  let rawLowBits = fp64_make_raw_residual_f32_bits(sign, magnitude, baseExponent, highBits);
1738  let lowBits = select(rawLowBits, 0u, (rawLowBits & 0x7fffffffu) == 0u);
1739  if ((highBits & 0x7fffffffu) == 0u && (lowBits & 0x7fffffffu) == 0u) {
1740    return vec2u(0u);
1741  }
1742  return vec2u(highBits, lowBits);
1743}
1744#endif
1745
1746#ifndef LUMA_FP64_F32_INPUT_ONLY
1747// Round an arithmetic accumulator to binary64 before splitting it. The
1748// aligned add/subtract paths retain three guard bits plus a sticky bit, which
1749// is sufficient for round-to-nearest-even at the binary64 boundary.
1750fn fp64_split_binary64_accumulator_bits(
1751  sign: u32,
1752  magnitude: vec2u,
1753  baseExponent: i32
1754) -> vec2u {
1755  if (fp64_u64_is_zero(magnitude)) {
1756    return vec2u(0u);
1757  }
1758
1759  let mostSignificantBit = 63u - fp64_u64_count_leading_zeros(magnitude);
1760  let exponent = baseExponent + i32(mostSignificantBit);
1761  if (exponent > 1023) {
1762    return vec2u((sign << 31u) | 0x7f800000u, 0u);
1763  }
1764
1765  var roundedMagnitude = magnitude;
1766  var roundedBaseExponent = baseExponent;
1767  if (exponent >= -1022) {
1768    if (mostSignificantBit > 52u) {
1769      let shift = mostSignificantBit - 52u;
1770      roundedMagnitude = fp64_round_shift_right(magnitude, shift);
1771      roundedBaseExponent = baseExponent + i32(shift);
1772    }
1773  } else {
1774    let shift = -1074 - baseExponent;
1775    if (shift > 0) {
1776      roundedMagnitude = fp64_round_shift_right(magnitude, u32(shift));
1777      roundedBaseExponent = -1074;
1778    }
1779  }
1780
1781  if (fp64_u64_is_zero(roundedMagnitude)) {
1782    return vec2u(0u);
1783  }
1784  return fp64_split_raw_accumulator_bits(sign, roundedMagnitude, roundedBaseExponent);
1785}
1786#endif
1787
1788#ifndef LUMA_FP64_PREDICATE_ONLY
1789fn fp64_add_raw_f32_bits(aBits: u32, bBits: u32) -> vec2u {
1790  let a = fp64_decode_raw_f32_bits(aBits);
1791  let b = fp64_decode_raw_f32_bits(bBits);
1792
1793  if (a.isNan || b.isNan) {
1794    return vec2u(0x7fc00000u, 0u);
1795  }
1796  if (a.isInf || b.isInf) {
1797    if (a.isInf && b.isInf && a.sign != b.sign) {
1798      return vec2u(0x7fc00000u, 0u);
1799    }
1800    return select(vec2u(bBits, 0u), vec2u(aBits, 0u), a.isInf);
1801  }
1802  if (a.isZero && b.isZero) {
1803    return vec2u(0u);
1804  }
1805  if (a.isZero) {
1806    return vec2u(bBits, 0u);
1807  }
1808  if (b.isZero) {
1809    return vec2u(aBits, 0u);
1810  }
1811
1812  let exponentDifference = abs(a.baseExponent - b.baseExponent);
1813  if (exponentDifference > 25) {
1814    if (fp64_raw_f32_magnitude_compare(aBits, bBits) >= 0) {
1815      return vec2u(aBits, bBits);
1816    }
1817    return vec2u(bBits, aBits);
1818  }
1819
1820  let commonBaseExponent = min(a.baseExponent, b.baseExponent);
1821  let aMagnitude = fp64_u64_shift_left(
1822    vec2u(0u, a.significand),
1823    u32(a.baseExponent - commonBaseExponent)
1824  );
1825  let bMagnitude = fp64_u64_shift_left(
1826    vec2u(0u, b.significand),
1827    u32(b.baseExponent - commonBaseExponent)
1828  );
1829
1830  var resultSign = a.sign;
1831  var resultMagnitude: vec2u;
1832  if (a.sign == b.sign) {
1833    resultMagnitude = fp64_u64_add(aMagnitude, bMagnitude);
1834  } else {
1835    let comparison = fp64_u64_compare(aMagnitude, bMagnitude);
1836    if (comparison == 0) {
1837      return vec2u(0u);
1838    }
1839    if (comparison > 0) {
1840      resultMagnitude = fp64_u64_sub(aMagnitude, bMagnitude);
1841    } else {
1842      resultSign = b.sign;
1843      resultMagnitude = fp64_u64_sub(bMagnitude, aMagnitude);
1844    }
1845  }
1846
1847  return fp64_split_raw_accumulator_bits(
1848    resultSign,
1849    resultMagnitude,
1850    commonBaseExponent
1851  );
1852}
1853#endif
1854
1855#ifndef LUMA_FP64_F32_INPUT_ONLY
1856fn fp64_add_aligned_magnitudes_to_fp64_bits(
1857  sign: u32,
1858  larger: Fp64Bits,
1859  smaller: Fp64Bits
1860) -> vec2u {
1861  let largeSignificand = fp64_u64_shift_left(larger.significand, 3u);
1862  let smallSignificand = fp64_u64_shift_right_sticky(
1863    fp64_u64_shift_left(smaller.significand, 3u),
1864    u32(larger.exponent - smaller.exponent)
1865  );
1866  let resultSignificand = fp64_u64_add(largeSignificand, smallSignificand);
1867  return fp64_split_binary64_accumulator_bits(
1868    sign,
1869    resultSignificand,
1870    larger.exponent - 55
1871  );
1872}
1873
1874fn fp64_sub_aligned_magnitudes_to_fp64_bits(
1875  sign: u32,
1876  larger: Fp64Bits,
1877  smaller: Fp64Bits
1878) -> vec2u {
1879  let largeSignificand = fp64_u64_shift_left(larger.significand, 3u);
1880  let smallSignificand = fp64_u64_shift_right_sticky(
1881    fp64_u64_shift_left(smaller.significand, 3u),
1882    u32(larger.exponent - smaller.exponent)
1883  );
1884  let resultSignificand = fp64_u64_sub(largeSignificand, smallSignificand);
1885  return fp64_split_binary64_accumulator_bits(
1886    sign,
1887    resultSignificand,
1888    larger.exponent - 55
1889  );
1890}
1891
1892fn fp64_add_aligned_magnitudes_to_f32_bits(sign: u32, larger: Fp64Bits, smaller: Fp64Bits) -> u32 {
1893  let largeSignificand = fp64_u64_shift_left(larger.significand, 3u);
1894  let smallSignificand = fp64_u64_shift_right_sticky(
1895    fp64_u64_shift_left(smaller.significand, 3u),
1896    u32(larger.exponent - smaller.exponent)
1897  );
1898  let resultSignificand = fp64_u64_add(largeSignificand, smallSignificand);
1899  return fp64_make_f32_bits_from_u64(sign, resultSignificand, larger.exponent - 55);
1900}
1901
1902fn fp64_sub_aligned_magnitudes_to_f32_bits(sign: u32, larger: Fp64Bits, smaller: Fp64Bits) -> u32 {
1903  let largeSignificand = fp64_u64_shift_left(larger.significand, 3u);
1904  let smallSignificand = fp64_u64_shift_right_sticky(
1905    fp64_u64_shift_left(smaller.significand, 3u),
1906    u32(larger.exponent - smaller.exponent)
1907  );
1908  let resultSignificand = fp64_u64_sub(largeSignificand, smallSignificand);
1909  return fp64_make_f32_bits_from_u64(sign, resultSignificand, larger.exponent - 55);
1910}
1911
1912// Subtract two raw binary64 values and round the exact result once to f32.
1913// The input words are canonical high/low words: .x contains sign/exponent/high
1914// fraction bits, and .y contains the low 32 fraction bits.
1915fn sub_fp64u32_to_f32_bits(aBits: vec2u, bBits: vec2u) -> u32 {
1916  let a = fp64_decode_bits(aBits);
1917  let b = fp64_decode_bits(bBits);
1918  let bSubtractionSign = b.sign ^ 1u;
1919
1920  if (a.isNan || b.isNan) {
1921    return 0x7fc00000u;
1922  }
1923  if (a.isInf && b.isInf) {
1924    if (a.sign == bSubtractionSign) {
1925      return (a.sign << 31u) | 0x7f800000u;
1926    }
1927    return 0x7fc00000u;
1928  }
1929  if (a.isInf) {
1930    return (a.sign << 31u) | 0x7f800000u;
1931  }
1932  if (b.isInf) {
1933    return (bSubtractionSign << 31u) | 0x7f800000u;
1934  }
1935  if (a.isZero && b.isZero) {
1936    return select(0u, 0x80000000u, a.sign == 1u && b.sign == 0u);
1937  }
1938
1939  let magnitudeComparison = fp64_finite_magnitude_compare(a, b);
1940  if (a.sign == bSubtractionSign) {
1941    if (magnitudeComparison >= 0) {
1942      return fp64_add_aligned_magnitudes_to_f32_bits(a.sign, a, b);
1943    }
1944    return fp64_add_aligned_magnitudes_to_f32_bits(a.sign, b, a);
1945  }
1946
1947  if (magnitudeComparison == 0) {
1948    return 0u;
1949  }
1950  if (magnitudeComparison > 0) {
1951    return fp64_sub_aligned_magnitudes_to_f32_bits(a.sign, a, b);
1952  }
1953  return fp64_sub_aligned_magnitudes_to_f32_bits(bSubtractionSign, b, a);
1954}
1955
1956fn sub_fp64u32_to_f32(aBits: vec2u, bBits: vec2u) -> f32 {
1957  return bitcast<f32>(sub_fp64u32_to_f32_bits(aBits, bBits));
1958}
1959
1960// Subtract two raw binary64 values, round once to binary64, then split the
1961// result into normalized f32 limbs. Finite results must fit within the f32
1962// exponent range; larger magnitudes map to infinity and smaller magnitudes
1963// map to zero. The input words use canonical high/low word order.
1964fn sub_fp64u32_to_fp64_bits(aBits: vec2u, bBits: vec2u) -> vec2u {
1965  let a = fp64_decode_bits(aBits);
1966  let b = fp64_decode_bits(bBits);
1967  let bSubtractionSign = b.sign ^ 1u;
1968
1969  if (a.isNan || b.isNan) {
1970    return vec2u(0x7fc00000u, 0u);
1971  }
1972  if (a.isInf && b.isInf) {
1973    if (a.sign == bSubtractionSign) {
1974      return vec2u((a.sign << 31u) | 0x7f800000u, 0u);
1975    }
1976    return vec2u(0x7fc00000u, 0u);
1977  }
1978  if (a.isInf) {
1979    return vec2u((a.sign << 31u) | 0x7f800000u, 0u);
1980  }
1981  if (b.isInf) {
1982    return vec2u((bSubtractionSign << 31u) | 0x7f800000u, 0u);
1983  }
1984  if (a.isZero && b.isZero) {
1985    return vec2u(0u);
1986  }
1987
1988  let magnitudeComparison = fp64_finite_magnitude_compare(a, b);
1989  if (a.sign == bSubtractionSign) {
1990    if (magnitudeComparison >= 0) {
1991      return fp64_add_aligned_magnitudes_to_fp64_bits(a.sign, a, b);
1992    }
1993    return fp64_add_aligned_magnitudes_to_fp64_bits(a.sign, b, a);
1994  }
1995
1996  if (magnitudeComparison == 0) {
1997    return vec2u(0u);
1998  }
1999  if (magnitudeComparison > 0) {
2000    return fp64_sub_aligned_magnitudes_to_fp64_bits(a.sign, a, b);
2001  }
2002  return fp64_sub_aligned_magnitudes_to_fp64_bits(bSubtractionSign, b, a);
2003}
2004
2005fn sub_fp64u32_to_fp64(aBits: vec2u, bBits: vec2u) -> vec2f {
2006  let resultBits = sub_fp64u32_to_fp64_bits(aBits, bBits);
2007  return vec2f(bitcast<f32>(resultBits.x), bitcast<f32>(resultBits.y));
2008}
2009#endif
2010
2011#ifndef LUMA_FP64_PREDICATE_ONLY
2012fn fp64_runtime_zero() -> f32 {
2013  return fp64arithmetic.ONE * 0.0;
2014}
2015
2016fn prevent_fp64_optimization(value: f32) -> f32 {
2017#ifdef LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2018  return value + fp64_runtime_zero();
2019#else
2020  return value;
2021#endif
2022}
2023#endif
2024
2025#ifdef LUMA_FP64_INTEGER_ARITHMETIC
2026${
2026ev
vendor: 9,416 bytes, lines 2026-2302
2026}
2027#else
2028fn split(a: f32) -> vec2f {
2029  let splitValue = prevent_fp64_optimization(fp64arithmetic.SPLIT + fp64_runtime_zero());
2030  let t = prevent_fp64_optimization(a * splitValue);
2031  let temp = prevent_fp64_optimization(t - a);
2032  let aHi = prevent_fp64_optimization(t - temp);
2033  let aLo = prevent_fp64_optimization(a - aHi);
2034  return vec2f(aHi, aLo);
2035}
2036
2037fn split2(a: vec2f) -> vec2f {
2038  var b = split(a.x);
2039  b.y = b.y + a.y;
2040  return b;
2041}
2042
2043fn quickTwoSum(a: f32, b: f32) -> vec2f {
2044#ifdef LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2045  let sum = prevent_fp64_optimization((a + b) * fp64arithmetic.ONE);
2046  let err = prevent_fp64_optimization(b - (sum - a) * fp64arithmetic.ONE);
2047#else
2048  let sum = prevent_fp64_optimization(a + b);
2049  let err = prevent_fp64_optimization(b - (sum - a));
2050#endif
2051  return vec2f(sum, err);
2052}
2053
2054fn twoSum(a: f32, b: f32) -> vec2f {
2055  let s = prevent_fp64_optimization(a + b);
2056#ifdef LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2057  let v = prevent_fp64_optimization((s * fp64arithmetic.ONE - a) * fp64arithmetic.ONE);
2058  let err =
2059    prevent_fp64_optimization((a - (s - v) * fp64arithmetic.ONE) *
2060      fp64arithmetic.ONE *
2061      fp64arithmetic.ONE *
2062      fp64arithmetic.ONE) +
2063    prevent_fp64_optimization(b - v);
2064#else
2065  let v = prevent_fp64_optimization(s - a);
2066  let err = prevent_fp64_optimization(a - (s - v)) + prevent_fp64_optimization(b - v);
2067#endif
2068  return vec2f(s, err);
2069}
2070
2071fn twoSub(a: f32, b: f32) -> vec2f {
2072  let s = prevent_fp64_optimization(a - b);
2073#ifdef LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2074  let v = prevent_fp64_optimization((s * fp64arithmetic.ONE - a) * fp64arithmetic.ONE);
2075  let err =
2076    prevent_fp64_optimization((a - (s - v) * fp64arithmetic.ONE) *
2077      fp64arithmetic.ONE *
2078      fp64arithmetic.ONE *
2079      fp64arithmetic.ONE) -
2080    prevent_fp64_optimization(b + v);
2081#else
2082  let v = prevent_fp64_optimization(s - a);
2083  let err = prevent_fp64_optimization(a - (s - v)) - prevent_fp64_optimization(b + v);
2084#endif
2085  return vec2f(s, err);
2086}
2087
2088fn twoSqr(a: f32) -> vec2f {
2089  let prod = prevent_fp64_optimization(a * a);
2090  let aFp64 = split(a);
2091  let highProduct = prevent_fp64_optimization(aFp64.x * aFp64.x);
2092  let crossProduct = prevent_fp64_optimization(2.0 * aFp64.x * aFp64.y);
2093  let lowProduct = prevent_fp64_optimization(aFp64.y * aFp64.y);
2094#ifdef LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2095  let err =
2096    (prevent_fp64_optimization(highProduct - prod) * fp64arithmetic.ONE +
2097      crossProduct * fp64arithmetic.ONE * fp64arithmetic.ONE) +
2098    lowProduct * fp64arithmetic.ONE * fp64arithmetic.ONE * fp64arithmetic.ONE;
2099#else
2100  let err = ((prevent_fp64_optimization(highProduct - prod) + crossProduct) + lowProduct);
2101#endif
2102  return vec2f(prod, err);
2103}
2104
2105fn twoProd(a: f32, b: f32) -> vec2f {
2106  let prod = prevent_fp64_optimization(a * b);
2107  let aFp64 = split(a);
2108  let bFp64 = split(b);
2109  let highProduct = prevent_fp64_optimization(aFp64.x * bFp64.x);
2110  let crossProduct1 = prevent_fp64_optimization(aFp64.x * bFp64.y);
2111  let crossProduct2 = prevent_fp64_optimization(aFp64.y * bFp64.x);
2112  let lowProduct = prevent_fp64_optimization(aFp64.y * bFp64.y);
2113#ifdef LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2114  let err1 = (highProduct - prod) * fp64arithmetic.ONE;
2115  let err2 = crossProduct1 * fp64arithmetic.ONE * fp64arithmetic.ONE;
2116  let err3 = crossProduct2 * fp64arithmetic.ONE * fp64arithmetic.ONE * fp64arithmetic.ONE;
2117  let err4 =
2118    lowProduct *
2119    fp64arithmetic.ONE *
2120    fp64arithmetic.ONE *
2121    fp64arithmetic.ONE *
2122    fp64arithmetic.ONE;
2123#else
2124  let err1 = highProduct - prod;
2125  let err2 = crossProduct1;
2126  let err3 = crossProduct2;
2127  let err4 = lowProduct;
2128#endif
2129  let err12InputA = prevent_fp64_optimization(err1);
2130  let err12InputB = prevent_fp64_optimization(err2);
2131  let err12 = prevent_fp64_optimization(err12InputA + err12InputB);
2132  let err123InputA = prevent_fp64_optimization(err12);
2133  let err123InputB = prevent_fp64_optimization(err3);
2134  let err123 = prevent_fp64_optimization(err123InputA + err123InputB);
2135  let err1234InputA = prevent_fp64_optimization(err123);
2136  let err1234InputB = prevent_fp64_optimization(err4);
2137  let err = prevent_fp64_optimization(err1234InputA + err1234InputB);
2138  return vec2f(prod, err);
2139}
2140
2141fn sum_fp64(a: vec2f, b: vec2f) -> vec2f {
2142  var s = twoSum(a.x, b.x);
2143  let t = twoSum(a.y, b.y);
2144  s.y = prevent_fp64_optimization(s.y + t.x);
2145  s = quickTwoSum(s.x, s.y);
2146  s.y = prevent_fp64_optimization(s.y + t.y);
2147  s = quickTwoSum(s.x, s.y);
2148  return s;
2149}
2150
2151fn sub_fp64(a: vec2f, b: vec2f) -> vec2f {
2152  var s = twoSub(a.x, b.x);
2153  let t = twoSub(a.y, b.y);
2154  s.y = prevent_fp64_optimization(s.y + t.x);
2155  s = quickTwoSum(s.x, s.y);
2156  s.y = prevent_fp64_optimization(s.y + t.y);
2157  s = quickTwoSum(s.x, s.y);
2158  return s;
2159}
2160
2161fn mul_fp64(a: vec2f, b: vec2f) -> vec2f {
2162  var prod = twoProd(a.x, b.x);
2163  let crossProduct1 = prevent_fp64_optimization(a.x * b.y);
2164  prod.y = prevent_fp64_optimization(prod.y + crossProduct1);
2165#ifdef LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND
2166  prod = split2(prod);
2167#endif
2168  prod = quickTwoSum(prod.x, prod.y);
2169  let crossProduct2 = prevent_fp64_optimization(a.y * b.x);
2170  prod.y = prevent_fp64_optimization(prod.y + crossProduct2);
2171#ifdef LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND
2172  prod = split2(prod);
2173#endif
2174  prod = quickTwoSum(prod.x, prod.y);
2175  return prod;
2176}
2177
2178#ifndef LUMA_FP64_PREDICATE_ONLY
2179fn div_fp64(a: vec2f, b: vec2f) -> vec2f {
2180  let xn = prevent_fp64_optimization(1.0 / b.x);
2181  let yn = mul_fp64(a, vec2f(xn, fp64_runtime_zero()));
2182  let diff = prevent_fp64_optimization(sub_fp64(a, mul_fp64(b, yn)).x);
2183  let prod = twoProd(xn, diff);
2184  return sum_fp64(yn, prod);
2185}
2186
2187fn sqrt_fp64(a: vec2f) -> vec2f {
2188  if (a.x == 0.0 && a.y == 0.0) {
2189    return vec2f(0.0, 0.0);
2190  }
2191  if (a.x < 0.0) {
2192    let nanValue = fp64_nan(a.x);
2193    return vec2f(nanValue, nanValue);
2194  }
2195
2196  let x = prevent_fp64_optimization(1.0 / sqrt(a.x));
2197  let yn = prevent_fp64_optimization(a.x * x);
2198#ifdef LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2199  let ynSqr = twoSqr(yn) * fp64arithmetic.ONE;
2200#else
2201  let ynSqr = twoSqr(yn);
2202#endif
2203  let diff = prevent_fp64_optimization(sub_fp64(a, ynSqr).x);
2204  let prod = twoProd(prevent_fp64_optimization(x * 0.5), diff);
2205#ifdef LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND
2206  return sum_fp64(split(yn), prod);
2207#else
2208  return sum_fp64(vec2f(yn, 0.0), prod);
2209#endif
2210}
2211#endif
2212#endif
2213
2214#ifndef LUMA_FP64_PREDICATE_ONLY
2215fn fp64_f32_bits_is_nan(bits: u32) -> bool {
2216  return (bits & 0x7fffffffu) > 0x7f800000u;
2217}
2218
2219fn fp64_f32_bits_is_inf(bits: u32) -> bool {
2220  return (bits & 0x7fffffffu) == 0x7f800000u;
2221}
2222
2223fn fp64_compare_f32_bits(aBits: u32, bBits: u32) -> i32 {
2224  let aMagnitude = aBits & 0x7fffffffu;
2225  let bMagnitude = bBits & 0x7fffffffu;
2226  if (aMagnitude == 0u && bMagnitude == 0u) {
2227    return 0;
2228  }
2229  let aSign = aBits >> 31u;
2230  let bSign = bBits >> 31u;
2231  if (aSign != bSign) {
2232    return select(1, -1, aSign == 1u);
2233  }
2234  if (aMagnitude == bMagnitude) {
2235    return 0;
2236  }
2237  let magnitudeComparison = select(-1, 1, aMagnitude > bMagnitude);
2238  return select(magnitudeComparison, -magnitudeComparison, aSign == 1u);
2239}
2240
2241// Normalize an arbitrary pair of finite f32 limbs with integer accumulation.
2242// This is independent of LUMA_FP64_INTEGER_ARITHMETIC and canonicalizes every
2243// representation of zero to vec2f(+0.0, +0.0).
2244fn normalize_fp64(value: vec2f) -> vec2f {
2245  let resultBits = fp64_add_raw_f32_bits(bitcast<u32>(value.x), bitcast<u32>(value.y));
2246  return vec2f(bitcast<f32>(resultBits.x), bitcast<f32>(resultBits.y));
2247}
2248
2249fn is_nan_fp64(value: vec2f) -> bool {
2250  let normalized = normalize_fp64(value);
2251  return fp64_f32_bits_is_nan(bitcast<u32>(normalized.x)) ||
2252    fp64_f32_bits_is_nan(bitcast<u32>(normalized.y));
2253}
2254
2255fn is_finite_fp64(value: vec2f) -> bool {
2256  let normalized = normalize_fp64(value);
2257  let highBits = bitcast<u32>(normalized.x);
2258  let lowBits = bitcast<u32>(normalized.y);
2259  return !fp64_f32_bits_is_nan(highBits) && !fp64_f32_bits_is_nan(lowBits) &&
2260    !fp64_f32_bits_is_inf(highBits) && !fp64_f32_bits_is_inf(lowBits);
2261}
2262
2263// Returns -1, 0, or 1. NaN is unordered and returns 0; call is_nan_fp64 or
2264// is_finite_fp64 first when 0 must mean a finite zero.
2265fn sign_fp64(value: vec2f) -> i32 {
2266  let normalized = normalize_fp64(value);
2267  let highBits = bitcast<u32>(normalized.x);
2268  let lowBits = bitcast<u32>(normalized.y);
2269  if (fp64_f32_bits_is_nan(highBits) || fp64_f32_bits_is_nan(lowBits)) {
2270    return 0;
2271  }
2272  if ((highBits & 0x7fffffffu) != 0u) {
2273    return select(1, -1, (highBits >> 31u) == 1u);
2274  }
2275  if ((lowBits & 0x7fffffffu) != 0u) {
2276    return select(1, -1, (lowBits >> 31u) == 1u);
2277  }
2278  return 0;
2279}
2280
2281// Compares double-single values and returns -1, 0, or 1. NaN is unordered
2282// and returns 0; callers that require equality semantics must first check
2283// is_nan_fp64 or is_finite_fp64.
2284fn compare_fp64(a: vec2f, b: vec2f) -> i32 {
2285  let normalizedA = normalize_fp64(a);
2286  let normalizedB = normalize_fp64(b);
2287  let aHighBits = bitcast<u32>(normalizedA.x);
2288  let aLowBits = bitcast<u32>(normalizedA.y);
2289  let bHighBits = bitcast<u32>(normalizedB.x);
2290  let bLowBits = bitcast<u32>(normalizedB.y);
2291  if (fp64_f32_bits_is_nan(aHighBits) || fp64_f32_bits_is_nan(aLowBits) ||
2292      fp64_f32_bits_is_nan(bHighBits) || fp64_f32_bits_is_nan(bLowBits)) {
2293    return 0;
2294  }
2295  let highComparison = fp64_compare_f32_bits(aHighBits, bHighBits);
2296  if (highComparison != 0) {
2297    return highComparison;
2298  }
2299  return fp64_compare_f32_bits(aLowBits, bLowBits);
2300}
2301#endif
2302`
2302,fs:eb,vs:eb,defaultUniforms:{ONE:1,SPLIT:4097},uniformTypes:{ONE:"f32",SPLIT:"f32"},fp64ify:em,fp64LowPart:function(e){return e-Math.fround(e)},fp64ifyMatrix4:function(e){let t=new Float32Array(32);for(let i=0;i<4;++i)for(let r=0;r<4;++r){let n=4*i+r;em(e[4*r+i],t,2*n)}return t}};function e_(e){let{source:t,target:i,start:r=0,size:n,getData:s}=e,a=e.end||i.length,o=t.length,l=a-r;if(o>l)return void i.set(t.subarray(0,l),r);if(i.set(t,r),!s)return;let u=o;for(;u<l;){let e=s(u,t);for(let t=0;t<n;t++)i[r+u]=e[t]||0,u++}}function ew(e){switch(e){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw Error(`No defined attribute type for size "${e}"`)}}function ex(e){switch(e){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw Error("invalid type size")}}function eE(e){e.push(e.shift())}function eS({device:e,source:t,target:i}){return(!i||i.byteLength<t.byteLength)&&(i?.destroy(),i=e.createBuffer({byteLength:t.byteLength,usage:t.usage})),i}function eP({device:e,buffer:t,attribute:i,fromLength:r,toLength:n,fromStartIndices:s,getData:a=e=>e}){let o=i.isDoublePrecisionBuffer?2:1,l=i.size*o,u=i.byteOffset,c=i.settings.bytesPerElement<4?u/i.settings.bytesPerElement*4:u,h=i.startIndices,d=s&&h,f=i.isConstant;if(!d&&t&&r>=n)return t;let p=i.value instanceof Float64Array?Float32Array:i.value.constructor,g=f?i.value:new p(i.getBuffer().readSyncWebGL(u,n*p.BYTES_PER_ELEMENT).buffer);if(i.settings.normalized&&!f){let e=a;a=(t,r)=>i.normalizeConstant(e(t,r))}let m=f?(e,t)=>a(g,t):(e,t)=>a(g.subarray(e+u,e+u+l),t),b=new Float32Array(t?t.readSyncWebGL(c,4*r).buffer:0),v=new Float32Array(n);return!function({source:e,target:t,size:i,getData:r,sourceStartIndices:n,targetStartIndices:s}){if(!n||!s)return e_({source:e,target:t,size:i,getData:r});let a=0,o=0,l=r&&((e,t)=>r(e+o,t)),u=Math.min(n.length,s.length);for(let r=1;r<u;r++){let u=n[r]*i,c=s[r]*i;e_({source:e.subarray(a,u),target:t,start:o,end:c,size:i,getData:l}),a=u,o=c}o<t.length&&e_({source:[],target:t,start:o,size:i,getData:l})}({source:b,target:v,sourceStartIndices:s,targetStartIndices:h,size:l,getData:m}),(!t||t.byteLength<v.byteLength+c)&&(t?.destroy(),t=e.createBuffer({byteLength:v.byteLength+c,usage:35050})),t.write(v,c),t}var eC=i(42178);class eT{constructor({device:e,attribute:t,timeline:i}){this.buffers=[],this.currentLength=0,this.device=e,this.transition=new eC.A(i),this.attribute=t,this.attributeInTransition=function(e){let{device:t,settings:i,value:r}=e,n=new R(t,i);return n.setData({value:r instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:i.normalized}),n}(t),this.currentStartIndices=t.startIndices}get inProgress(){return this.transition.inProgress}start(e,t,i=1/0){this.settings=e,this.currentStartIndices=this.attribute.startIndices,this.currentLength=function(e,t){let{settings:i,value:r,size:n}=e,s=e.isDoublePrecisionBuffer?2:1,a=0,{shaderAttributes:o}=e.settings;if(o)for(let e of Object.values(o))a=Math.max(a,e.vertexOffset??0);return(i.noAlloc?r.length:(t+a)*n)*s}(this.attribute,t),this.transition.start({...e,duration:i})}update(){let e=this.transition.update();return e&&this.onUpdate(),e}setBuffer(e){let{stride:t}=this.attributeInTransition.getAccessor();this.attributeInTransition.setData({buffer:e,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value,stride:t})}cancel(){this.transition.cancel()}delete(){for(let e of(this.cancel(),this.buffers))e.destroy();this.buffers.length=0}}class eA extends eT{constructor({device:e,attribute:t,timeline:i}){super({device:e,attribute:t,timeline:i}),this.type="interpolation",this.transform=function(e,t){let i=t.size,r=ew(i),n=ex(i),s=t.getBufferLayout();return eI(t)?new eg.p(e,{vs:ek,bufferLayout:[{name:"aFrom",byteStride:8*i,attributes:[{attribute:"aFrom",format:n,byteOffset:0},{attribute:"aFrom64Low",format:n,byteOffset:4*i}]},{name:"aTo",byteStride:8*i,attributes:[{attribute:"aTo",format:n,byteOffset:0},{attribute:"aTo64Low",format:n,byteOffset:4*i}]}],modules:[ey,eM],defines:{ATTRIBUTE_TYPE:r,ATTRIBUTE_SIZE:i},moduleSettings:{},varyings:["vCurrent","vCurrent64Low"],bufferMode:35980,disableWarnings:!0}):new eg.p(e,{vs:eL,bufferLayout:[{name:"aFrom",format:n},{name:"aTo",format:s.attributes[0].format}],modules:[eM],defines:{ATTRIBUTE_TYPE:r},varyings:["vCurrent"],disableWarnings:!0})}(e,t)}start(e,t){let i=this.currentLength,r=this.currentStartIndices;if(super.start(e,t,e.duration),e.duration<=0)return void this.transition.cancel();let{buffers:n,attribute:s}=this;eE(n),n[0]=eP({device:this.device,buffer:n[0],attribute:s,fromLength:i,toLength:this.currentLength,fromStartIndices:r,getData:e.enter}),n[1]=eS({device:this.device,source:n[0],target:n[1]}),this.setBuffer(n[1]);let{transform:a}=this,o=a.model,l=Math.floor(this.currentLength/s.size);eI(s)&&(l/=2),o.setVertexCount(l),s.isConstant?(o.setAttributes({aFrom:n[0]}),o.setConstantAttributes({aTo:s.value})):o.setAttributes({aFrom:n[0],aTo:s.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:n[1]})}onUpdate(){let{duration:e,easing:t}=this.settings,{time:i}=this.transition,r=i/e;t&&(r=t(r));let{model:n}=this.transform,s={time:r};n.shaderInputs.setProps({interpolation:s}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}}let eM={name:"interpolation",vs:`\
2303layout(std140) uniform interpolationUniforms {
2304  float time;
2305} interpolation;
2306`,uniformTypes:{time:"f32"}},eL=`\
2307#version 300 es
2308#define SHADER_NAME interpolation-transition-vertex-shader
2309
2310in ATTRIBUTE_TYPE aFrom;
2311in ATTRIBUTE_TYPE aTo;
2312out ATTRIBUTE_TYPE vCurrent;
2313
2314void main(void) {
2315  vCurrent = mix(aFrom, aTo, interpolation.time);
2316  gl_Position = vec4(0.0);
2317}
2318`,ek=`\
2319#version 300 es
2320#define SHADER_NAME interpolation-transition-vertex-shader
2321
2322in ATTRIBUTE_TYPE aFrom;
2323in ATTRIBUTE_TYPE aFrom64Low;
2324in ATTRIBUTE_TYPE aTo;
2325in ATTRIBUTE_TYPE aTo64Low;
2326out ATTRIBUTE_TYPE vCurrent;
2327out ATTRIBUTE_TYPE vCurrent64Low;
2328
2329vec2 mix_fp64(vec2 a, vec2 b, float x) {
2330  vec2 range = sub_fp64(b, a);
2331  return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));
2332}
2333
2334void main(void) {
2335  for (int i=0; i<ATTRIBUTE_SIZE; i++) {
2336    vec2 value = mix_fp64(vec2(aFrom[i], aFrom64Low[i]), vec2(aTo[i], aTo64Low[i]), interpolation.time);
2337    vCurrent[i] = value.x;
2338    vCurrent64Low[i] = value.y;
2339  }
2340  gl_Position = vec4(0.0);
2341}
2342`;function eI(e){return e.isDoublePrecisionBuffer}
2342class eO extends eT{constructor({device:e,attribute:t,timeline:i}){var r,n;super({device:e,attribute:t,timeline:i}),this.type="spring",this.texture=e.createTexture({data:new Uint8Array(4),format:"rgba8unorm",width:1,height:1}),this.framebuffer=(r=e,n=this.texture,r.createFramebuffer({id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,colorAttachments:[n]})),this.transform=function(e,t){let i=ew(t.size),r=ex(t.size);return new eg.p(e,{vs:eB,fs:eD,bufferLayout:[{name:"aPrev",format:r},{name:"aCur",format:r},{name:"aTo",format:t.getBufferLayout().attributes[0].format}],varyings:["vNext"],modules:[eR],defines:{ATTRIBUTE_TYPE:i},parameters:{depthCompare:"always",blendColorOperation:"max",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaOperation:"max",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"}})}(e,t)}start(e,t){let i=this.currentLength,r=this.currentStartIndices;super.start(e,t);let{buffers:n,attribute:s}=this;for(let t=0;t<2;t++)n[t]=eP({device:this.device,buffer:n[t],attribute:s,fromLength:i,toLength:this.currentLength,fromStartIndices:r,getData:e.enter});n[2]=eS({device:this.device,source:n[0],target:n[2]}),this.setBuffer(n[1]);let{model:a}=this.transform;a.setVertexCount(Math.floor(this.currentLength/s.size)),s.isConstant?a.setConstantAttributes({aTo:s.value}):a.setAttributes({aTo:s.getBuffer()})}onUpdate(){let{buffers:e,transform:t,framebuffer:i,transition:r}=this,n=this.settings;t.model.setAttributes({aPrev:e[0],aCur:e[1]}),t.transformFeedback.setBuffers({vNext:e[2]});let s={stiffness:n.stiffness,damping:n.damping};t.model.shaderInputs.setProps({spring:s}),t.run({framebuffer:i,discard:!1,parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]}),eE(e),this.setBuffer(e[1]),this.device.readPixelsToArrayWebGL(i)[0]>0||r.end()}delete(){super.delete(),this.transform.destroy(),this.texture.destroy(),this.framebuffer.destroy()}}let eR={name:"spring",vs:`\
2343layout(std140) uniform springUniforms {
2344  float damping;
2345  float stiffness;
2346} spring;
2347`,uniformTypes:{damping:"f32",stiffness:"f32"}},eB=`\
2348#version 300 es
2349#define SHADER_NAME spring-transition-vertex-shader
2350
2351#define EPSILON 0.00001
2352
2353in ATTRIBUTE_TYPE aPrev;
2354in ATTRIBUTE_TYPE aCur;
2355in ATTRIBUTE_TYPE aTo;
2356out ATTRIBUTE_TYPE vNext;
2357out float vIsTransitioningFlag;
2358
2359ATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {
2360  ATTRIBUTE_TYPE velocity = cur - prev;
2361  ATTRIBUTE_TYPE delta = dest - cur;
2362  ATTRIBUTE_TYPE force = delta * spring.stiffness;
2363  ATTRIBUTE_TYPE resistance = velocity * spring.damping;
2364  return force - resistance + velocity + cur;
2365}
2366
2367void main(void) {
2368  bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;
2369  vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;
2370
2371  vNext = getNextValue(aCur, aPrev, aTo);
2372  gl_Position = vec4(0, 0, 0, 1);
2373  gl_PointSize = 100.0;
2374}
2375`,eD=`\
2376#version 300 es
2377#define SHADER_NAME spring-transition-is-transitioning-fragment-shader
2378
2379in float vIsTransitioningFlag;
2380
2381out vec4 fragColor;
2382
2383void main(void) {
2384  if (vIsTransitioningFlag == 0.0) {
2385    discard;
2386  }
2387  fragColor = vec4(1.0);
2388}`,eF={interpolation:eA,spring:eO};class e${constructor(e,{id:t,timeline:i}){if(!e)throw Error("AttributeTransitionManager is constructed without device");this.id=t,this.device=e,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1}finalize(){for(let e in this.transitions)this._removeTransition(e)}update({attributes:e,transitions:t,numInstances:i}){for(let r in this.numInstances=i||1,e){let i=e[r],n=i.getTransitionSetting(t);n&&this._updateAttribute(r,i,n)}for(let i in this.transitions){let r=e[i];r&&r.getTransitionSetting(t)||this._removeTransition(i)}}hasAttribute(e){let t=this.transitions[e];return t&&t.inProgress}getAttributes(){let e={};for(let t in this.transitions){let i=this.transitions[t];i.inProgress&&(e[t]=i.attributeInTransition)}return e}run(){if(0===this.numInstances)return!1;for(let e in this.transitions)this.transitions[e].update()&&(this.needsRedraw=!0);let e=this.needsRedraw;return this.needsRedraw=!1,e}_removeTransition(e){this.transitions[e].delete(),delete this.transitions[e]}_updateAttribute(e,t,i){let r=this.transitions[e],n=!r||r.type!==i.type;if(n){r&&this._removeTransition(e);let s=eF[i.type];
2388s?this.transitions[e]=new s({attribute:t,timeline:this.timeline,device:this.device}):(x.A.error(`unsupported transition type '${i.type}'`)(),n=!1)}(n||t.needsRedraw())&&(this.needsRedraw=!0,this.transitions[e].start(i,this.numInstances))}}let ez="attributeManager.invalidate";class eN{constructor(e,{id:t="attribute-manager",stats:i,timeline:r}={}){this.mergeBoundsMemoized=(0,ef.A)(w._Z),this.id=t,this.device=e,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new e$(e,{id:`${t}-transitions`,timeline:r}),this.attributeBufferGroups="webgpu"===e.type?new ec(e,{id:t,isTransitionAttribute:e=>this.attributeTransitionManager.hasAttribute(e)}):null,Object.seal(this)}finalize(){for(let e in this.attributeBufferGroups?.finalize(),this.attributes)this.attributes[e].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(e={clearRedrawFlags:!1}){let t=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!e.clearRedrawFlags,t&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(e){this._add(e)}addInstanced(e){this._add(e,{stepMode:"instance"})}remove(e){for(let t of e)void 0!==this.attributes[t]&&(this.attributes[t].delete(),delete this.attributes[t])}invalidate(e,t){let i=this._invalidateTrigger(e,t);(0,ep.A)(ez,this,e,i)}invalidateAll(e){for(let t in this.attributes)this.attributes[t].setNeedsUpdate(t,e);(0,ep.A)(ez,this,"all")}update({data:e,numInstances:t,startIndices:i=null,transitions:r,props:n={},buffers:s={},context:a={}}){let o=!1;for(let r in(0,ep.A)("attributeManager.updateStart",this),this.stats&&this.stats.get("Update Attributes").timeStart(),this.attributes){let l=this.attributes[r],u=l.settings.accessor;l.startIndices=i,l.numInstances=t,n[r]&&x.A.removed(`props.${r}`,`data.attributes.${r}`)(),l.setExternalBuffer(s[r])||l.setBinaryValue("string"==typeof u?s[u]:void 0,e.startIndices)||"string"==typeof u&&!s[u]&&l.setConstantValue(a,n[u])||l.needsUpdate()&&(o=!0,this._updateAttribute({attribute:l,numInstances:t,data:e,props:n,context:a})),this.needsRedraw=this.needsRedraw||l.needsRedraw()}o&&(0,ep.A)("attributeManager.updateEnd",this,t),this.stats&&(this.stats.get("Update Attributes").timeEnd(),o&&this.stats.get("Attributes updated").incrementCount()),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:t,transitions:r})}updateTransition(){let{attributeTransitionManager:e}=this,t=e.run();return this.needsRedraw=this.needsRedraw||t,t}getAttributes(){return{...this.attributes,...this.attributeTransitionManager.getAttributes()}}getBounds(e){let t=e.map(e=>this.attributes[e]?.getBounds());return this.mergeBoundsMemoized(t)}getChangedAttributes(e={clearChangedFlags:!1}){let{attributes:t,attributeTransitionManager:i}=this,r={...i.getAttributes()};for(let n in t){let s=t[n];s.needsRedraw(e)&&!i.hasAttribute(n)&&(r[n]=s)}return r}getBufferLayouts(e){return this.hasBufferGroups()?this.attributeBufferGroups.getBufferLayouts(this.getAttributes(),e):Object.values(this.getAttributes()).map(t=>t.getBufferLayout(e))}hasBufferGroups(){return!!this.attributeBufferGroups?.hasGroups(this.attributes)}getBufferGroupBindings(e,t,i={}){return this.attributeBufferGroups?this.attributeBufferGroups.getBindings(this.getAttributes(),e,t,i):{bufferLayouts:this.getBufferLayouts(t),buffers:{},groupedAttributeIds:new Set}}_add(e,t){for(let i in e){let r=e[i],n={...r,id:i,size:r.isIndexed&&1||r.size||1,...t};this.attributes[i]=new R(this.device,n)}this._mapUpdateTriggersToAttributes()}_mapUpdateTriggersToAttributes(){let e={};for(let t in this.attributes)this.attributes[t].getUpdateTriggers().forEach(i=>{e[i]||(e[i]=[]),e[i].push(t)});this.updateTriggers=e}_invalidateTrigger(e,t){let{attributes:i,updateTriggers:r}=this,n=r[e];return n&&n.forEach(e=>{let r=i[e];r&&r.setNeedsUpdate(r.id,t)}),n}_updateAttribute(e){let{attribute:t,numInstances:i}=e;if((0,ep.A)("attribute.updateStart",t),t.constant)return void t.setConstantValue(e.context,t.value);t.allocate(i)&&(0,ep.A)("attribute.allocate",t,i),t.updateBuffer(e)&&(this.needsRedraw=!0,(0,ep.A)("attribute.updateEnd",t,i))}}var ej=i(28284),eU=i(85066);class eV extends eC.A{get value(){return this._value}_onUpdate(){let{time:e,settings:{fromValue:t,toValue:i,duration:r,easing:n}}=this,s=n(e/r);this._value=(0,eU.Cc)(t,i,s)}}function eW(e,t,i,r,n){let s=t-e;return(i-t)*n+-s*r+s+t}function eG(e,t){if(Array.isArray(e)){let i=0;for(let r=0;r<e.length;r++){let n=e[r]-t[r];i+=n*n}return Math.sqrt(i)}return Math.abs(e-t)}class eH extends eC.A{get value(){return this._currValue}_onUpdate(){let{fromValue:e,toValue:t,damping:i,stiffness:r}=this.settings,{_prevValue:n=e,_currValue:s=e}=this,a=function(e,t,i,r,n){if(Array.isArray(i)){let s=[];for(let a=0;a<i.length;a++)s[a]=eW(e[a],t[a],i[a],r,n);return s}return eW(e,t,i,r,n)}(n,s,t,i,r),o=eG(a,t),l=eG(a,s);o<1e-5&&l<1e-5&&(a=t,this.end()),this._prevValue=s,this._currValue=a}}let eq={interpolation:eV,spring:eH};class eY{constructor(e){this.transitions=new Map,this.timeline=e}get active(){return this.transitions.size>0}add(e,t,i,r){let{transitions:n}=this;if(n.has(e)){let i=n.get(e),{value:r=i.settings.fromValue}=i;t=r,this.remove(e)}if(!(r=O(r)))return;let s=eq[r.type];if(!s)return void x.A.error(`unsupported transition type '${r.type}'`)();let a=new s(this.timeline);a.start({...r,fromValue:t,toValue:i}),n.set(e,a)}remove(e){let{transitions:t}=this;t.has(e)&&(t.get(e).cancel(),t.delete(e))}update(){let e={};for(let[t,i]of this.transitions)i.update(),e[t]=i.value,i.inProgress||this.remove(t);return e}clear(){for(let e of this.transitions.keys())this.remove(e)}}var eZ=i(53666);function eK({newProps:e,oldProps:t,ignoreProps:i={},propTypes:r={},triggerName:n="props"}){if(t===e)return!1;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return`${n} changed shallowly`;for(let s of Object.keys(e))if(!(s in i)){if(!(s in t))return`${n}.${s} added`;let i=eX(e[s],t[s],r[s]);if(i)return`${n}.${s} ${i}`}for(let s of Object.keys(t))if(!(s in i)){if(!(s in e))return`${n}.${s} dropped`;if(!Object.hasOwnProperty.call(e,s)){let i=eX(e[s],t[s],r[s]);if(i)return`${n}.${s} ${i}`}}return!1}function eX(e,t,i){let r=i&&i.equal;return r&&!r(e,t,i)||!r&&(r=e&&t&&e.equals)&&!r.call(e,t)?"changed deeply":r||t===e?null:"changed shallowly"}function eQ(e,t,i){let r=e.updateTriggers[i];r=null==r?{}:r;let n=t.updateTriggers[i];return eK({oldProps:n=null==n?{}:n,newProps:r,triggerName:i})}function eJ(e,t){if(!t)return e;let i={...e,...t};if("defines"in t&&(i.defines={...e.defines,...t.defines}),"modules"in t&&(i.modules=(e.modules||[]).concat(t.modules),t.modules.some(e=>"project64"===e.name))){let e=i.modules.findIndex(e=>"project32"===e.name);e>=0&&i.modules.splice(e,1)}if("inject"in t)if(e.inject){let r={...e.inject};
2388for(let e in t.inject)r[e]=(r[e]||"")+t.inject[e];i.inject=r}else i.inject=t.inject;return i}var e0=i(1609),e1=i(34809),e2=i(85402),e3=i(68416),e6=i(81060);let e4=[0,0,0];function e5(e,t,i=!1){let r=t.projectPosition(e);if(i&&t instanceof e1.A){let[i,n,s=0]=e,a=t.getDistanceScales([i,n]);r[2]=s*a.unitsPerMeter[2]}return r}function e8(e,{viewport:t,modelMatrix:i,coordinateSystem:r,coordinateOrigin:n,offsetMode:s}){let[a,o,l=0]=e;switch(i&&([a,o,l]=e2.Z0([],[a,o,l,1],i)),r){case"default":return e8(e,{viewport:t,modelMatrix:i,coordinateSystem:t.isGeospatial?"lnglat":"cartesian",coordinateOrigin:n,offsetMode:s});case"lnglat":return e5([a,o,l],t,s);case"lnglat-offsets":return e5([a+n[0],o+n[1],l+(n[2]||0)],t,s);case"meter-offsets":return e5((0,e6.dT)(n,[a,o,l]),t,s);case"cartesian":return t.isGeospatial?[a+n[0],o+n[1],l+n[2]]:t.projectPosition([a,o,l]);default:throw Error(`Invalid coordinateSystem: ${r}`)}}let e9={props:{},uniforms:{},name:"picking",uniformTypes:{isActive:"f32",isAttribute:"f32",isHighlightActive:"f32",useByteColors:"f32",highlightedObjectColor:"vec3<f32>",highlightColor:"vec4<f32>"},defaultUniforms:{isActive:!1,isAttribute:!1,isHighlightActive:!1,useByteColors:!0,highlightedObjectColor:[0,0,0],highlightColor:[0,1,1,1]},vs:`\
2389layout(std140) uniform pickingUniforms {
2390  float isActive;
2391  float isAttribute;
2392  float isHighlightActive;
2393  float useByteColors;
2394  vec3 highlightedObjectColor;
2395  vec4 highlightColor;
2396} picking;
2397
2398out vec4 picking_vRGBcolor_Avalid;
2399
2400// Normalize unsigned byte color to 0-1 range
2401vec3 picking_normalizeColor(vec3 color) {
2402  return picking.useByteColors > 0.5 ? color / 255.0 : color;
2403}
2404
2405// Normalize unsigned byte color to 0-1 range
2406vec4 picking_normalizeColor(vec4 color) {
2407  return picking.useByteColors > 0.5 ? color / 255.0 : color;
2408}
2409
2410bool picking_isColorZero(vec3 color) {
2411  return dot(color, vec3(1.0)) < 0.00001;
2412}
2413
2414bool picking_isColorValid(vec3 color) {
2415  return dot(color, vec3(1.0)) > 0.00001;
2416}
2417
2418// Check if this vertex is highlighted 
2419bool isVertexHighlighted(vec3 vertexColor) {
2420  vec3 highlightedObjectColor = picking_normalizeColor(picking.highlightedObjectColor);
2421  return
2422    bool(picking.isHighlightActive) && picking_isColorZero(abs(vertexColor - highlightedObjectColor));
2423}
2424
2425// Set the current picking color
2426void picking_setPickingColor(vec3 pickingColor) {
2427  pickingColor = picking_normalizeColor(pickingColor);
2428
2429  if (bool(picking.isActive)) {
2430    // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable
2431    picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));
2432
2433    if (!bool(picking.isAttribute)) {
2434      // Stores the picking color so that the fragment shader can render it during picking
2435      picking_vRGBcolor_Avalid.rgb = pickingColor;
2436    }
2437  } else {
2438    // Do the comparison with selected item color in vertex shader as it should mean fewer compares
2439    picking_vRGBcolor_Avalid.a = float(isVertexHighlighted(pickingColor));
2440  }
2441}
2442
2443void picking_setPickingAttribute(float value) {
2444  if (bool(picking.isAttribute)) {
2445    picking_vRGBcolor_Avalid.r = value;
2446  }
2447}
2448
2449void picking_setPickingAttribute(vec2 value) {
2450  if (bool(picking.isAttribute)) {
2451    picking_vRGBcolor_Avalid.rg = value;
2452  }
2453}
2454
2455void picking_setPickingAttribute(vec3 value) {
2456  if (bool(picking.isAttribute)) {
2457    picking_vRGBcolor_Avalid.rgb = value;
2458  }
2459}
2460`,fs:`\
2461layout(std140) uniform pickingUniforms {
2462  float isActive;
2463  float isAttribute;
2464  float isHighlightActive;
2465  float useByteColors;
2466  vec3 highlightedObjectColor;
2467  vec4 highlightColor;
2468} picking;
2469
2470in vec4 picking_vRGBcolor_Avalid;
2471
2472/*
2473 * Returns highlight color if this item is selected.
2474 */
2475vec4 picking_filterHighlightColor(vec4 color) {
2476  // If we are still picking, we don't highlight
2477  if (picking.isActive > 0.5) {
2478    return color;
2479  }
2480
2481  bool selected = bool(picking_vRGBcolor_Avalid.a);
2482
2483  if (selected) {
2484    // Blend in highlight color based on its alpha value
2485    float highLightAlpha = picking.highlightColor.a;
2486    float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);
2487    float highLightRatio = highLightAlpha / blendedAlpha;
2488
2489    vec3 blendedRGB = mix(color.rgb, picking.highlightColor.rgb, highLightRatio);
2490    return vec4(blendedRGB, blendedAlpha);
2491  } else {
2492    return color;
2493  }
2494}
2495
2496/*
2497 * Returns picking color if picking enabled else unmodified argument.
2498 */
2499vec4 picking_filterPickingColor(vec4 color) {
2500  if (bool(picking.isActive)) {
2501    if (picking_vRGBcolor_Avalid.a == 0.0) {
2502      discard;
2503    }
2504    return picking_vRGBcolor_Avalid;
2505  }
2506  return color;
2507}
2508
2509/*
2510 * Returns picking color if picking is enabled if not
2511 * highlight color if this item is selected, otherwise unmodified argument.
2512 */
2513vec4 picking_filterColor(vec4 color) {
2514  vec4 highlightColor = picking_filterHighlightColor(color);
2515  return picking_filterPickingColor(highlightColor);
2516}
2517`,getUniforms:function(e={},t){let i={},r=function(e,t=!0){return e??t}(e.useByteColors,!0);return void 0===e.highlightedObjectColor||(null===e.highlightedObjectColor?i.isHighlightActive=!1:(i.isHighlightActive=!0,i.highlightedObjectColor=e.highlightedObjectColor.slice(0,3))),e.highlightColor&&(i.highlightColor=function(e,t=!0){let i=function(e=[0,0,0],t=!0){return t?e.map(e=>e/255):[...e]}(e.slice(0,3),t),r=Number.isFinite(e[3]),n=r?e[3]:1;return[i[0],i[1],i[2],t&&r?n/255:n]}(e.highlightColor,r)),void 0!==e.isActive&&(i.isActive=!!e.isActive,i.isAttribute=!!e.isAttribute),void 0!==e.useByteColors&&(i.useByteColors=!!e.useByteColors),i}},e7=`\
2518  float disabledPickingIndexCount;
2519  vec4 disabledPickingIndices0;
2520  vec4 disabledPickingIndices1;
2521  vec4 disabledPickingIndices2;
2522`;function te(e){return e.replace("  vec4 highlightColor;\n} picking;",`  vec4 highlightColor;
2523${e7}} picking;`)}function tt(e,t){return[e[t]||0,e[t+1]||0,e[t+2]||0,e[t+3]||0]}let ti=`\
2524vec3 picking_getPickingColorFromIndex(float objectIndex) {
2525  if (objectIndex < 0.0 || objectIndex >= 16777215.0) {
2526    return vec3(0.0);
2527  }
2528
2529  for (int i = 0; i < 10; i++) {
2530    if (float(i) >= picking.disabledPickingIndexCount) {
2531      break;
2532    }
2533    vec4 disabledIndices = i < 4
2534      ? picking.disabledPickingIndices0
2535      : (i < 8 ? picking.disabledPickingIndices1 : picking.disabledPickingIndices2);
2536    float disabledIndex = disabledIndices[i - (i / 4) * 4];
2537    if (disabledIndex == objectIndex) {
2538      return vec3(0.0);
2539    }
2540  }
2541
2542  float encodedIndex = objectIndex + 1.0;
2543  return vec3(
2544    mod(encodedIndex, 256.0),
2545    mod(floor(encodedIndex / 256.0), 256.0),
2546    mod(floor(encodedIndex / 65536.0), 256.0)
2547  );
2548}
2549
2550vec3 picking_getPickingColorFromIndex(uint objectIndex) {
2551  return picking_getPickingColorFromIndex(float(objectIndex));
2552}
2553
2554vec3 picking_getPickingColorFromInstanceID() {
2555  return picking_getPickingColorFromIndex(float(gl_InstanceID));
2556}
2557
2558void picking_setPickingColorFromInstanceID() {
2559  picking_setPickingColor(picking_getPickingColorFromInstanceID());
2560}
2561`,tr=`\
2562struct pickingUniforms {
2563  isActive: f32,
2564  isAttribute: f32,
2565  isHighlightActive: f32,
2566  useByteColors: f32,
2567  highlightedObjectColor: vec3<f32>,
2568  highlightColor: vec4<f32>,
2569  disabledPickingIndexCount: f32,
2570  disabledPickingIndices0: vec4<f32>,
2571  disabledPickingIndices1: vec4<f32>,
2572  disabledPickingIndices2: vec4<f32>,
2573};
2574
2575@group(0) @binding(auto) var<uniform> picking: pickingUniforms;
2576
2577fn picking_normalizeColor(color: vec3<f32>) -> vec3<f32> {
2578  return select(color, color / 255.0, picking.useByteColors > 0.5);
2579}
2580
2581fn picking_normalizeColor4(color: vec4<f32>) -> vec4<f32> {
2582  return select(color, color / 255.0, picking.useByteColors > 0.5);
2583}
2584
2585fn picking_isColorZero(color: vec3<f32>) -> bool {
2586  return dot(color, vec3<f32>(1.0)) < 0.00001;
2587}
2588
2589fn picking_isColorValid(color: vec3<f32>) -> bool {
2590  return dot(color, vec3<f32>(1.0)) > 0.00001;
2591}
2592
2593fn picking_getPickingColorFromIndex(objectIndex: u32) -> vec3<f32> {
2594  if (objectIndex >= 16777215u) {
2595    return vec3<f32>(0.0);
2596  }
2597
2598  for (var i = 0; i < 10; i = i + 1) {
2599    if (f32(i) >= picking.disabledPickingIndexCount) {
2600      break;
2601    }
2602    let disabledIndices = select(
2603      picking.disabledPickingIndices2,
2604      select(picking.disabledPickingIndices1, picking.disabledPickingIndices0, i < 4),
2605      i < 8
2606    );
2607    let disabledIndex = disabledIndices[i % 4];
2608    if (disabledIndex == f32(objectIndex)) {
2609      return vec3<f32>(0.0);
2610    }
2611  }
2612
2613  let encodedIndex = objectIndex + 1u;
2614  return vec3<f32>(
2615    f32(encodedIndex % 256u),
2616    f32((encodedIndex / 256u) % 256u),
2617    f32((encodedIndex / 65536u) % 256u)
2618  ) / 255.0;
2619}
2620`;({...e9,vs:`${te(e9.vs)}
2621${ti}`,fs:te(e9.fs),source:tr,uniformTypes:{...e9.uniformTypes,disabledPickingIndexCount:"f32",disabledPickingIndices0:"vec4<f32>",disabledPickingIndices1:"vec4<f32>",disabledPickingIndices2:"vec4<f32>"},defaultUniforms:{...e9.defaultUniforms,useByteColors:!0,disabledPickingIndexCount:0,disabledPickingIndices0:[0,0,0,0],disabledPickingIndices1:[0,0,0,0],disabledPickingIndices2:[0,0,0,0]},getUniforms(e,t){let i=e9.getUniforms(e,t),r=e.disabledPickingIndices||[];return i.disabledPickingIndexCount=r.length,i.disabledPickingIndices0=tt(r,0),i.disabledPickingIndices1=tt(r,4),i.disabledPickingIndices2=tt(r,8),i},inject:{"vs:DECKGL_FILTER_GL_POSITION":`
2622    // for picking depth values
2623    picking_setPickingAttribute(position.z / position.w);
2624  `,"vs:DECKGL_FILTER_COLOR":`
2625  picking_setPickingColor(geometry.pickingColor);
2626  `,"fs:DECKGL_FILTER_COLOR":{order:99,injection:`
2627  // use highlight color if this fragment belongs to the selected object.
2628  color = picking_filterHighlightColor(color);
2629
2630  // use picking color if rendering to picking FBO.
2631  color = picking_filterPickingColor(color);
2632    `}}});var tn=i(82493);let ts={minFilter:"linear",mipmapFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},ta={};var to=i(90961);let tl={boolean:{validate:(e,t)=>
2632!0,equal:(e,t,i)=>!!e==!!t},number:{validate:(e,t)=>Number.isFinite(e)&&(!("max"in t)||e<=t.max)&&(!("min"in t)||e>=t.min)},color:{validate:(e,t)=>t.optional&&!e||tc(e)&&(3===e.length||4===e.length),equal:(e,t,i)=>(0,to.b)(e,t,1)},accessor:{validate(e,t){let i=th(e);return"function"===i||i===th(t.value)},equal:(e,t,i)=>"function"==typeof t||(0,to.b)(e,t,1)},array:{validate:(e,t)=>t.optional&&!e||tc(e),equal(e,t,i){let{compare:r}=i,n=Number.isInteger(r)?r:+!!r;return r?(0,to.b)(e,t,n):e===t}},object:{equal(e,t,i){if(i.ignore)return!0;let{compare:r}=i,n=Number.isInteger(r)?r:+!!r;return r?(0,to.b)(e,t,n):e===t}},function:{validate:(e,t)=>t.optional&&!e||"function"==typeof e,equal:(e,t,i)=>!i.compare&&!1!==i.ignore||e===t},data:{transform:(e,t,i)=>{if(!e)return e;let{dataTransform:r}=i.props;return r?r(e):"string"==typeof e.shape&&e.shape.endsWith("-table")&&Array.isArray(e.data)?e.data:e}},image:{transform:(e,t,i)=>{let r=i.context;return r&&r.device?function(e,t,i,r){if(i instanceof tn.g)return i;i.constructor&&"Object"!==i.constructor.name&&(i={data:i});let n=null;i.compressed&&(n={minFilter:"linear",mipmapFilter:i.data.length>1?"nearest":"linear"});let{width:s,height:a}=i.data,o=t.createTexture({...i,sampler:{...ts,...n,...r},mipLevels:t.getMipLevelCount(s,a)});return"webgl"===t.type?o.generateMipmapsWebGL():"webgpu"===t.type&&t.generateMipmapsWebGPU(o),ta[o.id]=e,o}(i.id,r.device,e,{...t.parameters,...i.props.textureParameters}):null},release:(e,t,i)=>{!function(e,t){t&&t instanceof tn.g&&ta[t.id]===e&&(t.delete(),delete ta[t.id])}(i.id,e)}}};function tu(e,t){return"type"in t?{name:e,...tl[t.type],...t}:"value"in t?{name:e,type:th(t.value),...t}:{name:e,type:"object",value:t}}function tc(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function th(e){return tc(e)?"array":null===e?"null":typeof e}function td(e,t){return Object.prototype.hasOwnProperty.call(e,t)}let tf=0;class tp{constructor(...e){this.props=function(e,t){let i;for(let e=t.length-1;e>=0;e--){let r=t[e];"extensions"in r&&(i=r.extensions)}let r=Object.create(function e(t,i){var r,n;if(!(t instanceof tg.constructor))return{};let s="_mergedDefaultProps";if(i)for(let e of i){let t=e.constructor;t&&(s+=`:${t.extensionName||t.name}`)}let a=td(r=t,n=s)&&r[n];return a||(t[s]=function(t,i){if(!t.prototype)return null;let r=e(Object.getPrototypeOf(t)),n=function(e){let t={},i={},r={};for(let[n,s]of Object.entries(e)){let e=s?.deprecatedFor;if(e)r[n]=Array.isArray(e)?e:[e];else{let e=function(e,t){switch(th(t)){case"object":return tu(e,t);case"array":return tu(e,{type:"array",value:t,compare:!1});case"boolean":return tu(e,{type:"boolean",value:t});case"number":return tu(e,{type:"number",value:t});case"function":return tu(e,{type:"function",value:t,compare:!0});default:return{name:e,type:"unknown",value:t}}}(n,s);t[n]=e,i[n]=e.value}}return{propTypes:t,defaultProps:i,deprecatedProps:r}}(function(e,t){return td(e,t)&&e[t]}(t,"defaultProps")||{}),s=Object.assign(Object.create(null),r,n.defaultProps),a=Object.assign(Object.create(null),r?.[eZ.fW],n.propTypes),o=Object.assign(Object.create(null),r?.[eZ.uH],n.deprecatedProps);for(let t of i){let i=e(t.constructor);i&&(Object.assign(s,i),Object.assign(a,i[eZ.fW]),Object.assign(o,i[eZ.uH]))}return Object.defineProperties(s,{id:{writable:!0,value:function(e){let t=e.componentName;return t||x.A.warn(`${e.name}.componentName not specified`)(),t||e.name}(t)}}),function(e,t){let i={},r={};for(let e in t){let n=t[e],{name:s,value:a}=n;n.async&&(i[s]=a,r[s]=function(e){return{enumerable:!0,set(t){"string"==typeof t||t instanceof Promise||A(t)?this[eZ.YN][e]=t:this[eZ.vf][e]=t},get(){if(this[eZ.vf]){if(e in this[eZ.vf])return this[eZ.vf][e]||this[eZ.jA][e];if(e in this[eZ.YN]){let t=this[eZ.r3]&&this[eZ.r3].internalState;if(t&&t.hasAsyncProp(e))return t.getAsyncProp(e)||this[eZ.jA][e]}}return this[eZ.jA][e]}}}(s))}e[eZ.jA]=i,e[eZ.YN]={},Object.defineProperties(e,r)}(s,a),function(e,t){for(let i in t)Object.defineProperty(e,i,{enumerable:!1,set(e){let r=`${this.id}: ${i}`;for(let r of t[i])td(this,r)||(this[r]=e);x.A.deprecated(r,t[i].join("/"))()}})}(s,o),s[eZ.fW]=a,s[eZ.uH]=o,0!==i.length||td(t,"_propTypes")||(t._propTypes=a),s}(t,i||[]))}(e.constructor,i));r[eZ.r3]=e,r[eZ.YN]={},r[eZ.vf]={};for(let e=0;e<t.length;++e){let i=t[e];for(let e in i)r[e]=i[e]}return Object.freeze(r),r}(this,e),this.id=this.props.id,this.count=tf++}clone(e){let{props:t}=this,i={};for(let e in t[eZ.jA])e in t[eZ.vf]?i[e]=t[eZ.vf][e]:e in t[eZ.YN]&&(i[e]=t[eZ.YN][e]);return new this.constructor({...t,...i,...e})}}tp.componentName="Component",tp.defaultProps={};let tg=tp,tm=Object.freeze({});class tb{constructor(e){this.component=e,this.asyncProps={},this.onAsyncPropUpdated=()=>{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let e in this.asyncProps){let t=this.asyncProps[e];t&&t.type&&t.type.release&&t.type.release(t.resolvedValue,t.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||tm}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(e){return e in this.asyncProps}getAsyncProp(e){let t=this.asyncProps[e];return t&&t.resolvedValue}isAsyncPropLoading(e){if(e){let t=this.asyncProps[e];return!!(t&&t.pendingLoadCount>0&&t.pendingLoadCount!==t.resolvedLoadCount)}for(let e in this.asyncProps)if(this.isAsyncPropLoading(e))return!0;return!1}reloadAsyncProp(e,t){this._watchPromise(e,Promise.resolve(t))}setAsyncProps(e){this.component=e[eZ.r3]||this.component;let t=e[eZ.vf]||{},i=e[eZ.YN]||e,r=e[eZ.jA]||{};for(let e in t){let i=t[e];this._createAsyncPropData(e,r[e]),this._updateAsyncProp(e,i),t[e]=this.getAsyncProp(e)}for(let e in i){let t=i[e];this._createAsyncPropData(e,r[e]),this._updateAsyncProp(e,t)}}_fetch(e,t){return null}_onResolve(e,t){}_onError(e,t){}_updateAsyncProp(e,t){if(this._didAsyncInputValueChange(e,t)){if("string"==typeof t&&(t=this._fetch(e,t)),t instanceof Promise)return void this._watchPromise(e,t);if(A(t))return void this._resolveAsyncIterable(e,t);this._setPropValue(e,t)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps)for(let e in this.oldAsyncProps=Object.create(this.oldProps),this.asyncProps)Object.defineProperty(this.oldAsyncProps,e,{enumerable:!0,value:this.oldProps[e]})}_didAsyncInputValueChange(e,t){let i=this.asyncProps[e];return t!==i.resolvedValue&&t!==i.lastValue&&(i.lastValue=t,!0)}_setPropValue(e,t){this._freezeAsyncOldProps();let i=this.asyncProps[e];
2632i&&(t=this._postProcessValue(i,t),i.resolvedValue=t,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(e,t,i){let r=this.asyncProps[e];r&&i>=r.resolvedLoadCount&&void 0!==t&&(this._freezeAsyncOldProps(),r.resolvedValue=t,r.resolvedLoadCount=i,this.onAsyncPropUpdated(e,t))}_watchPromise(e,t){let i=this.asyncProps[e];if(i){i.pendingLoadCount++;let r=i.pendingLoadCount;t.then(t=>{this.component&&(t=this._postProcessValue(i,t),this._setAsyncPropValue(e,t,r),this._onResolve(e,t))}).catch(t=>{this._onError(e,t)})}}async _resolveAsyncIterable(e,t){if("data"!==e)return void this._setPropValue(e,t);let i=this.asyncProps[e];if(!i)return;i.pendingLoadCount++;let r=i.pendingLoadCount,n=[],s=0;for await(let i of t){if(!this.component)return;let{dataTransform:t}=this.component.props;Object.defineProperty(n=t?t(i,n):n.concat(i),"__diff",{enumerable:!1,value:[{startRow:s,endRow:n.length}]}),s=n.length,this._setAsyncPropValue(e,n,r)}this._onResolve(e,n)}_postProcessValue(e,t){let i=e.type;return i&&this.component&&(i.release&&i.release(e.resolvedValue,i,this.component),i.transform)?i.transform(t,i,this.component):t}_createAsyncPropData(e,t){if(!this.asyncProps[e]){let i=this.component&&this.component.props[eZ.fW];this.asyncProps[e]={type:i&&i[e],lastValue:null,resolvedValue:t,pendingLoadCount:0,resolvedLoadCount:0}}}}class tv extends tb{constructor({attributeManager:e,layer:t}){super(t),this.attributeManager=e,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1,this.disabledPickingIndices=[]}get layer(){return this.component}_fetch(e,t){let i=this.layer,r=i?.props.fetch;return r?r(t,{propName:e,layer:i}):super._fetch(e,t)}_onResolve(e,t){let i=this.layer;if(i){let r=i.props.onDataLoad;"data"===e&&r&&r(t,{propName:e,layer:i})}}_onError(e,t){let i=this.layer;i&&i.raiseError(t,`loading ${e} of ${this.layer}`)}}var ty=i(52135);let t_=Object.freeze([]),tw=(0,ef.A)(({oldViewport:e,viewport:t})=>e.equals(t)),tx=new Uint8ClampedArray(0);function tE(e){return e.rowIndexes||e.pickingColors||e.instancePickingColors}function tS(e){return e.rowIndexes}function tP(e){return e.pickingColors||e.instancePickingColors}let tC={data:{type:"data",value:t_,async:!0},dataComparator:{type:"function",value:null,optional:!0},_dataDiff:{type:"function",value:e=>e&&e.__diff,optional:!0},dataTransform:{type:"function",value:null,optional:!0},onDataLoad:{type:"function",value:null,optional:!0},onError:{type:"function",value:null,optional:!0},fetch:{type:"function",value:(e,{propName:t,layer:i,loaders:r,loadOptions:n,signal:s})=>{let{resourceManager:a}=i.context;n=n||i.getLoadOptions(),r=r||i.props.loaders,s&&(n={...n,core:{...n?.core,fetch:{...n?.core?.fetch,signal:s}}});let o=a.contains(e);return(o||n||(a.add({resourceId:e,data:(0,ty.H)(e,r),persistent:!1}),o=!0),o)?a.subscribe({resourceId:e,onChange:e=>i.internalState?.reloadAsyncProp(t,e),consumerId:i.id,requestId:t}):(0,ty.H)(e,r,n)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:"number",min:0,max:1,value:1},operation:"draw",onHover:{type:"function",value:null,optional:!0},onClick:{type:"function",value:null,optional:!0},onDragStart:{type:"function",value:null,optional:!0},onDrag:{type:"function",value:null,optional:!0},onDragEnd:{type:"function",value:null,optional:!0},coordinateSystem:"default",coordinateOrigin:{type:"array",value:[0,0,0],compare:!0},modelMatrix:{type:"array",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:"XYZ",colorFormat:"RGBA",parameters:{type:"object",value:{},optional:!0,compare:2},loadOptions:{type:"object",value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:"array",value:[],optional:!0,ignore:!0},getPolygonOffset:{type:"function",value:({layerIndex:e})=>[0,-(100*e)]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:"accessor",value:[0,0,128,128]}};class tT extends tg{constructor(){super(...arguments),this.internalState=null,this.lifecycle=eZ.VD.NO_STATE,this.parent=null}static get componentName(){return Object.prototype.hasOwnProperty.call(this,"layerName")?this.layerName:""}get root(){let e=this;for(;e.parent;)e=e.parent;return e}toString(){let e=this.constructor.layerName||this.constructor.name;return`${e}({id: '${this.props.id}'})`}project(e){(0,P.A)(this.internalState);let t=this.internalState.viewport||this.context.viewport,i=e8(e,{viewport:t,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[r,n,s]=(0,e6.VJ)(i,t.pixelProjectionMatrix);return 2===e.length?[r,n]:[r,n,s]}unproject(e){return(0,P.A)(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(e)}projectPosition(e,t){return(0,P.A)(this.internalState),function(e,t){let{viewport:i,coordinateSystem:r,coordinateOrigin:n,modelMatrix:s,fromCoordinateSystem:a,fromCoordinateOrigin:o}=function(e){let{viewport:t,modelMatrix:i,coordinateOrigin:r}
2632=e,{coordinateSystem:n,fromCoordinateSystem:s,fromCoordinateOrigin:a}=e;return"default"===n&&(n=t.isGeospatial?"lnglat":"cartesian"),void 0===s?s=n:"default"===s&&(s=t.isGeospatial?"lnglat":"cartesian"),void 0===a&&(a=r),{viewport:t,coordinateSystem:n,coordinateOrigin:r,modelMatrix:i,fromCoordinateSystem:s,fromCoordinateOrigin:a}}(t),{autoOffset:l=!0}=t,{geospatialOrigin:u=e4,shaderCoordinateOrigin:c=e4,offsetMode:h=!1}=l?(0,e0.ow)(i,r,n):{},d=e8(e,{viewport:i,modelMatrix:s,coordinateSystem:a,coordinateOrigin:o,offsetMode:h});if(h){let e=i.projectPosition(u||c);e3.jb(d,d,e)}return d}(e,{viewport:this.internalState.viewport||this.context.viewport,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...t})}get isComposite(){return!1}get isDrawable(){return!0}setState(e){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,e),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return!!this.internalState&&!this.internalState.isAsyncPropLoading()}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){let e=this.state;return e&&(e.models||e.model&&[e.model])||[]}setShaderModuleProps(...e){for(let t of this.getModels())t.shaderInputs.setProps(...e)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:e}=this.props;return"default"===e||"lnglat"===e||"cartesian"===e}onHover(e,t){return!!this.props.onHover&&(this.props.onHover(e,t)||!1)}onClick(e,t){return!!this.props.onClick&&(this.props.onClick(e,t)||!1)}nullPickingColor(){return[0,0,0]}encodePickingColor(e,t=[]){return t[0]=e+1&255,t[1]=e+1>>8&255,t[2]=e+1>>8>>8&255,t}decodePickingColor(e){(0,P.A)(e instanceof Uint8Array);let[t,i,r]=e;return t+256*i+65536*r-1}getNumInstances(){if(Number.isFinite(this.props.numInstances))return this.props.numInstances;if(this.state&&void 0!==this.state.numInstances)return this.state.numInstances;var e,t,i=this.props.data;if(null===(e=i)||"object"!=typeof e)throw Error("count(): argument not an object");if("function"==typeof i.count)return i.count();if(Number.isFinite(i.size))return i.size;if(Number.isFinite(i.length))return i.length;if(null!==(t=i)&&"object"==typeof t&&t.constructor===Object)return Object.keys(i).length;throw Error("count(): argument not a container")}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){return this.getAttributeManager()?.getBounds(["positions","instancePositions"])}getShaders(e){for(let t of(e=eJ(e,{disableWarnings:!0,modules:this.context.defaultShaderModules}),this.props.extensions))e=eJ(e,t.getShaders.call(this,t));return e}shouldUpdateState(e){return e.changeFlags.propsOrDataChanged}updateState(e){let t=this.getAttributeManager(),{dataChanged:i}=e.changeFlags;if(i&&t)if(Array.isArray(i))for(let e of i)t.invalidateAll(e);else t.invalidateAll();if(t){let{props:i}=e,r=this.internalState.hasPickingBuffer,n=Number.isInteger(i.highlightedObjectIndex)||!!i.pickable||i.extensions.some(e=>e.getNeedsPickingBuffer.call(this,e));if(r!==n){this.internalState.hasPickingBuffer=n;let e=tE(t.attributes);e&&(n&&e.constant&&(e.constant=!1,t.invalidate(e.id)),e.value||n||(e.constant=!0,e.value=tS(t.attributes)?[0xffffff]:[0,0,0]))}}}finalizeState(e){for(let e of this.getModels())e.destroy();let t=this.getAttributeManager();t&&t.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(e){for(let t of this.getModels())t.draw(e.renderPass)}getPickingInfo({info:e,mode:t,sourceLayer:i}){let{index:r}=e;return r>=0&&Array.isArray(this.props.data)&&(e.object=this.props.data[r]),e}raiseError(e,t){t&&(e=Error(`${t}: ${e.message}`,{cause:e})),this.props.onError?.(e)||this.context?.onError?.(e,this)}getNeedsRedraw(e={clearRedrawFlags:!1}){return this._getNeedsRedraw(e)}needsUpdate(){return!!this.internalState&&(this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpd
2632ateParams()))}hasUniformTransition(){return this.internalState?.uniformTransitions.active||!1}activateViewport(e){if(!this.internalState)return;let t=this.internalState.viewport;this.internalState.viewport=e,t&&tw({oldViewport:t,viewport:e})||(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(e="all"){let t=this.getAttributeManager();t&&("all"===e?t.invalidateAll():t.invalidate(e))}updateAttributes(e){let t=!1;for(let i in e)e[i].layoutChanged()&&(t=!0);for(let i of this.getModels())this._setModelAttributes(i,e,t)}_updateAttributes(){let e=this.getAttributeManager();if(!e)return;let t=this.props,i=this.getNumInstances(),r=this.getStartIndices();e.update({data:t.data,numInstances:i,startIndices:r,props:t,transitions:t.transitions,buffers:t.data.attributes,context:this});let n=e.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(n)}_updateAttributeTransition(){let e=this.getAttributeManager();e&&e.updateTransition()}_updateUniformTransition(){let{uniformTransitions:e}=this.internalState;if(e.active){let t=e.update(),i=Object.create(this.props);for(let e in t)Object.defineProperty(i,e,{value:t[e]});return i}return this.props}calculateInstancePickingColors(e,{numInstances:t}){if(e.constant)return;let i=Math.floor(tx.length/4);this.internalState.usesPickingColorCache=!0;let r=t>0&&0===tx[0];if(i<t||r){t>0xffffff&&x.A.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")();let e=Math.floor((tx=_.A.allocate(tx,t,{size:4,copy:!0,maxCount:Math.max(t,0xffffff)})).length/4),n=[0,0,0],s=r?0:i;for(let t=s;t<e;t++)this.encodePickingColor(t,n),tx[4*t+0]=n[0],tx[4*t+1]=n[1],tx[4*t+2]=n[2],tx[4*t+3]=0}e.value=tx.subarray(0,4*t)}_setModelAttributes(e,t,i=!1){if(!Object.keys(t).length)return;let r=this.getAttributeManager();if(r?.hasBufferGroups())return void this._setGroupedModelAttributes(e,r,t);if(i){let i=this.getAttributeManager();e.setBufferLayout(i.getBufferLayouts(e)),t=i.getAttributes()}let n=e.userData?.excludeAttributes||{},s={},a={};for(let i in t){if(n[i])continue;let r=t[i].getValue();for(let n in r){let o=r[n];o instanceof p.h?t[i].settings.isIndexed?e.setIndexBuffer(o):s[n]=o:o&&(a[n]=o)}}e.setAttributes(s),e.setConstantAttributes(a)}_setGroupedModelAttributes(e,t,i){let r=e.userData?.excludeAttributes||{},n=t.getBufferGroupBindings(i,e,r);e.setBufferLayout(n.bufferLayouts);let s={...n.buffers},a={},o=t.getAttributes();for(let t in o){if(r[t]||n.groupedAttributeIds.has(t))continue;let i=o[t],l=i.getValue();for(let t in l){let r=l[t];r instanceof p.h?i.settings.isIndexed?e.setIndexBuffer(r):s[t]=r:r&&(a[t]=r)}}e.setAttributes(s),e.setConstantAttributes(a)}disablePickingIndex(e){let t=this.props.data;if(!("attributes"in t))return void this._disablePickingIndex(e);let i=this.getAttributeManager().attributes,r=tS(i),n=tP(i),s=r&&t.attributes&&t.attributes[r.id];if(s&&s.value){let i=s.value;for(let n=0;n<t.length;n++)i[r.getVertexOffset(n)]===e&&this._disablePickingIndex(n);return}let a=n&&t.attributes&&t.attributes[n.id];if(a&&a.value){let i=a.value,r=this.encodePickingColor(e);for(let e=0;e<t.length;e++){let t=n.getVertexOffset(e);i[t]===r[0]&&i[t+1]===r[1]&&i[t+2]===r[2]&&this._disablePickingIndex(e)}}else this._disablePickingIndex(e)}_disablePickingIndex(e){let t=this.getAttributeManager().attributes,i=tS(t);if(i){let t=i.getVertexOffset(e),r=new Uint32Array(i.getVertexOffset(e+1)-t);r.fill(0xffffff),i.buffer.write(r,t*r.BYTES_PER_ELEMENT);return}let r=tP(t);if(!r){var n;this.internalState&&(n=this.internalState.disabledPickingIndices,10===n.length?x.A.warn("pickMultipleObjects can only exclude 10 previously picked objects for layers without picking buffers")():n.push(e));return}let s=r.getVertexOffset(e),a=r.getVertexOffset(e+1);r.buffer.write(new Uint8Array(a-s),s)}restorePickingColors(){let e=this.getAttributeManager().attributes,t=tE(e);if(!t){this.internalState&&(this.internalState.disabledPickingIndices.length=0);return}let i=tP(e);this.internalState.usesPickingColorCache&&i&&i.value.buffer!==tx.buffer&&(i.value=tx.subarray(0,i.value.length)),t.updateSubBuffer({startOffset:0})}_initialize(){(0,P.A)(!this.internalState),(0,ep.A)("layer.initialize",this);let e=this._getAttributeManager();
2632for(let t of(this.internalState=new tv({attributeManager:e,layer:this}),this._clearChangeFlags(),this.state={},Object.defineProperty(this.state,"attributeManager",{get:()=>(x.A.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),e)}),this.internalState.uniformTransitions=new eY(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context),this.props.extensions))t.initializeState.call(this,this.context,t);this.setChangeFlags({dataChanged:"init",propsChanged:"init",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(e){(0,ep.A)("layer.matched",this,this===e);let{state:t,internalState:i}=e;this!==e&&(this.internalState=i,this.state=t,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let e=this.needsUpdate();if((0,ep.A)("layer.update",this,e),!e)return;this.context.stats.get("Layer updates").incrementCount();let t=this.props,i=this.context,r=this.internalState,n=i.viewport,s=this._updateUniformTransition();r.propsInTransition=s,i.viewport=r.viewport||n,this.props=s;try{let e=this._getUpdateParams(),t=this.getModels();if(i.device)this.updateState(e);else try{this.updateState(e)}catch(e){}for(let t of this.props.extensions)t.updateState.call(this,e,t);this.setNeedsRedraw(),this._updateAttributes();let r=this.getModels()[0]!==t[0];this._postUpdate(e,r)}finally{i.viewport=n,this.props=t,this._clearChangeFlags(),r.needsUpdate=!1,r.resetOldProps()}}_finalize(){for(let e of((0,ep.A)("layer.finalize",this),this.finalizeState(this.context),this.props.extensions))e.finalizeState.call(this,this.context,e)}_drawLayer({renderPass:e,shaderModuleProps:t=null,uniforms:i={},parameters:r={}}){this._updateAttributeTransition();let n=this.props,s=this.context;this.props=this.internalState.propsInTransition||n;try{t&&this.setShaderModuleProps(t);let{getPolygonOffset:n}=this.props,a=n&&n(i)||[0,0];s.device instanceof ej.WebGLDevice&&s.device.setParametersWebGL({polygonOffset:a});let o=s.device instanceof ej.WebGLDevice?null:function(e){let{blendConstant:t,...i}=e;return t?{pipelineParameters:i,renderPassParameters:{blendConstant:t}}:{pipelineParameters:i}}(r);if(function(e,t,i,r){for(let n of e)"webgpu"===n.device.type?(function(e,t){let i=t.props.framebuffer||(t.framebuffer??null);if(!i)return;let r=i.colorAttachments.map(e=>e?.texture?.format??null),n=i.depthStencilAttachment?.texture?.format;(!function(e,t){if(e===t)return!0;if(!e||!t||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}(e.props.colorAttachmentFormats,r)||e.props.depthStencilAttachmentFormat!==n)&&(e.props.colorAttachmentFormats=r,e.props.depthStencilAttachmentFormat=n,e._setPipelineNeedsUpdate("attachment formats"))}(n,t),n.setParameters({...n.parameters,...r?.pipelineParameters})):n.setParameters(i)}(this.getModels(),e,r,o),s.device instanceof ej.WebGLDevice)s.device.withParametersWebGL(r,()=>{let n={renderPass:e,shaderModuleProps:t,uniforms:i,parameters:r,context:s};for(let e of this.props.extensions)e.draw.call(this,n,e);this.draw(n)});else{o?.renderPassParameters&&e.setParameters(o.renderPassParameters);let n={renderPass:e,shaderModuleProps:t,uniforms:i,parameters:r,context:s};for(let e of this.props.extensions)e.draw.call(this,n,e);this.draw(n)}}finally{this.props=n}}getChangeFlags(){return this.internalState?.changeFlags}setChangeFlags(e){if(!this.internalState)return;let{changeFlags:t}=this.internalState;for(let i in e)if(e[i]){let r=!1;if("dataChanged"===i){let n=e[i],s=t[i];n&&Array.isArray(s)&&(t.dataChanged=Array.isArray(n)?s.concat(n):n,r=!0)}t[i]||(t[i]=e[i],r=!0),r&&(0,ep.A)("layer.changeFlag",this,i,e)}let i=!!(t.dataChanged||t.updateTriggersChanged||t.propsChanged||t.extensionsChanged);t.propsOrDataChanged=i,t.somethingChanged=i||t.viewportChanged||t.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(e,t){let i=function(e,t){let i=eK({newProps:e,oldProps:t,propTypes:e[eZ.fW],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),r=function(e,t){if(null===t)return"oldProps is null, initial diff";let i=!1,{dataComparator:r,_dataDiff:n}=e;return r?r(e.data,t.data)||(i="Data comparator detected a change"):e.data!==t.data&&(i="A new data container was supplied"),i&&n&&(i=n(e.data,t.data)||i),i}(e,t),n=!1;return r||(n=function(e,t){if(null===t||"all"in e.updateTriggers&&eQ(e,t,"all"))return{all:!0};let i={},r=!1;for(let n in e.updateTriggers)"all"!==n&&eQ(e,t,n)&&(i[n]=!0,r=!0);return!!r&&i}(e,t)),{dataChanged:r,propsChanged:i,updateTriggersChanged:n,extensionsChanged:function(e,t){if(null===t)return!0;let i=t.extensions,{extensions:r}=e;if(r===i)return!1;if(!i||!r||r.length!==i.length)return!0;for(let e=0;e<r.length;e++)if(!r[e].equals(i[e]))return!0;return!1}(e,t),transitionsChanged:function(e,t){if(!e.transitions)return!1;let i={},r=e[eZ.fW],n=!1;for(let s in e.transitions){let a=r[s],o=a&&a.type;("number"===o||"color"===o||"array"===o)&&eX(e[s],t[s],a)&&(i[s]=!0,n=!0)}return!!n&&i}(e,t)}}(e,t);if(i.updateTriggersChanged)for(let e in i.updateTriggersChanged)i.updateTriggersChanged[e]&&this.invalidateAttribute(e);
2632if(i.transitionsChanged)for(let r in i.transitionsChanged)this.internalState.uniformTransitions.add(r,t[r],e[r],e.transitions?.[r]);return this.setChangeFlags(i)}validateProps(){!function(e){let t=e[eZ.fW];for(let i in t){let r=t[i],{validate:n}=r;if(n&&!n(e[i],r))throw Error(`Invalid prop ${i}: ${e[i]}`)}}(this.props)}updateAutoHighlight(e){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(e)}_updateAutoHighlight(e){let t={highlightedObjectColor:e.picked?e.color:null},{highlightColor:i}=this.props;e.picked&&"function"==typeof i&&(t.highlightColor=i(e)),this.setShaderModuleProps({picking:t}),this.setNeedsRedraw()}_getAttributeManager(){let e=this.context;return new eN(e.device,{id:this.props.id,stats:e.stats,timeline:e.timeline})}_postUpdate(e,t){let{props:i,oldProps:r}=e,n=this.state.model;n?.isInstanced&&n.setInstanceCount(this.getNumInstances());let{autoHighlight:s,highlightedObjectIndex:a,highlightColor:o}=i;if(t||r.autoHighlight!==s||r.highlightedObjectIndex!==a||r.highlightColor!==o){let e={};Array.isArray(o)&&(e.highlightColor=o),(t||r.autoHighlight!==s||a!==r.highlightedObjectIndex)&&(e.highlightedObjectColor=Number.isFinite(a)&&a>=0?this.encodePickingColor(a):null),this.setShaderModuleProps({picking:e})}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(e){if(!this.internalState)return!1;let t=!1;t=this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),r=!!i&&i.getNeedsRedraw(e);if(t=t||r)for(let e of this.props.extensions)e.onNeedsRedraw.call(this,e);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!e.clearRedrawFlags,t}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}}tT.defaultProps=tC,tT.layerName="Layer";let tA=tT,tM={name:"color",dependencies:[],source:`
2633
2634@must_use
2635fn deckgl_premultiplied_alpha(fragColor: vec4<f32>) -> vec4<f32> {
2636    return vec4(fragColor.rgb * fragColor.a, fragColor.a); 
2637};
2638`,getUniforms:e=>({})},tL=`\
2639struct TriangleAttributes {
2640  @location(0) positions: vec3<f32>,
2641  @location(1) texCoords: vec2<f32>,
2642};
2643
2644struct TriangleVaryings {
2645  @builtin(position) position: vec4<f32>,
2646  @location(0) textureCoordinates: vec2<f32>,
2647  @location(1) intensityMinimum: f32,
2648  @location(2) intensityMaximum: f32,
2649};
2650
2651@vertex
2652fn vertexMain(attributes: TriangleAttributes) -> TriangleVaryings {
2653  var output: TriangleVaryings;
2654  output.position = project_position_to_clipspace(
2655    attributes.positions,
2656    vec3<f32>(0.0),
2657    vec3<f32>(0.0)
2658  );
2659  // WebGPU render-target textures use a top-left origin.
2660  output.textureCoordinates = vec2<f32>(attributes.texCoords.x, 1.0 - attributes.texCoords.y);
2661
2662  let maxWeights = textureLoad(maxTexture, vec2<i32>(0), 0);
2663  var maximumValue = select(maxWeights.r, maxWeights.g, triangle.aggregationMode > 0.5);
2664  var minimumValue = maximumValue * triangle.threshold;
2665
2666  if (triangle.colorDomain.y > 0.0) {
2667    maximumValue = triangle.colorDomain.y;
2668    minimumValue = triangle.colorDomain.x;
2669  }
2670
2671  output.intensityMaximum = triangle.intensity / maximumValue;
2672  output.intensityMinimum = triangle.intensity / minimumValue;
2673  return output;
2674}
2675
2676@fragment
2677fn fragmentMain(varyings: TriangleVaryings) -> @location(0) vec4<f32> {
2678  let weights = textureSample(weightsTexture, weightsTextureSampler, varyings.textureCoordinates);
2679  var weight = weights.r;
2680
2681  if (triangle.aggregationMode > 0.5) {
2682    weight /= max(1.0, weights.a);
2683  }
2684
2685  let colorCoordinates = vec2<f32>(
2686    clamp(weight * varyings.intensityMaximum, 0.0, 1.0),
2687    0.5
2688  );
2689  var color = textureSample(colorTexture, colorTextureSampler, colorCoordinates);
2690
2691  if (weight <= 0.0) {
2692    discard;
2693  }
2694
2695  color.a *= min(weight * varyings.intensityMinimum, 1.0) * layer.opacity;
2696  return deckgl_premultiplied_alpha(color);
2697}
2698`,tk=`\
2699#version 300 es
2700#define SHADER_NAME heatp-map-layer-vertex-shader
2701uniform sampler2D maxTexture;
2702in vec3 positions;
2703in vec2 texCoords;
2704out vec2 vTexCoords;
2705out float vIntensityMin;
2706out float vIntensityMax;
2707void main(void) {
2708gl_Position = project_position_to_clipspace(positions, vec3(0.0), vec3(0.0));
2709vTexCoords = texCoords;
2710vec4 maxTexture = texture(maxTexture, vec2(0.5));
2711float maxValue = triangle.aggregationMode < 0.5 ? maxTexture.r : maxTexture.g;
2712float minValue = maxValue * triangle.threshold;
2713if (triangle.colorDomain[1] > 0.) {
2714maxValue = triangle.colorDomain[1];
2715minValue = triangle.colorDomain[0];
2716}
2717vIntensityMax = triangle.intensity / maxValue;
2718vIntensityMin = triangle.intensity / minValue;
2719}
2720`,tI=`\
2721#version 300 es
2722#define SHADER_NAME triangle-layer-fragment-shader
2723precision highp float;
2724uniform sampler2D weightsTexture;
2725uniform sampler2D colorTexture;
2726in vec2 vTexCoords;
2727in float vIntensityMin;
2728in float vIntensityMax;
2729out vec4 fragColor;
2730vec4 getLinearColor(float value) {
2731float factor = clamp(value * vIntensityMax, 0., 1.);
2732vec4 color = texture(colorTexture, vec2(factor, 0.5));
2733color.a *= min(value * vIntensityMin, 1.0);
2734return color;
2735}
2736void main(void) {
2737vec4 weights = texture(weightsTexture, vTexCoords);
2738float weight = weights.r;
2739if (triangle.aggregationMode > 0.5) {
2740weight /= max(1.0, weights.a);
2741}
2742if (weight <= 0.) {
2743discard;
2744}
2745vec4 linearColor = getLinearColor(weight);
2746linearColor.a *= layer.opacity;
2747fragColor = linearColor;
2748}
2749`,tO=`\
2750layout(std140) uniform triangleUniforms {
2751  float aggregationMode;
2752  vec2 colorDomain;
2753  float intensity;
2754  float threshold;
2755} triangle;
2756`,tR={name:"triangle",source:`\
2757struct triangleUniforms {
2758  aggregationMode: f32,
2759  colorDomain: vec2<f32>,
2760  intensity: f32,
2761  threshold: f32,
2762};
2763
2764@group(0) @binding(auto) var<uniform> triangle: triangleUniforms;
2765@group(0) @binding(auto) var colorTexture: texture_2d<f32>;
2766@group(0) @binding(auto) var colorTextureSampler: sampler;
2767@group(0) @binding(auto) var maxTexture: texture_2d<f32>;
2768@group(0) @binding(auto) var weightsTexture: texture_2d<f32>;
2769@group(0) @binding(auto) var weightsTextureSampler: sampler;
2770`,vs:tO,fs:tO,uniformTypes:{aggregationMode:"f32",colorDomain:"vec2<f32>",intensity:"f32",threshold:"f32"}};class tB extends tA{getShaders(){return super.getShaders({source:tL,vs:tk,fs:tI,modules:[f,tM,tR]})}initializeState({device:e}){this.setState({model:this._getModel(e)})}_getModel(e){let{vertexCount:t,data:i}=this.props;
2770return new o.K(e,{...this.getShaders(),id:this.props.id,attributes:i.attributes,bufferLayout:[{name:"positions",format:"float32x3"},{name:"texCoords",format:"float32x2"}],topology:"triangle-strip",vertexCount:t})}draw(){let{model:e}=this.state,{aggregationMode:t,colorDomain:i,intensity:r,threshold:n,colorTexture:s,maxTexture:a,weightsTexture:o}=this.props;e.shaderInputs.setProps({triangle:{aggregationMode:t,colorDomain:i,intensity:r,threshold:n,colorTexture:s,maxTexture:a,weightsTexture:o}}),e.draw(this.context.renderPass)}}tB.layerName="TriangleLayer";class tD extends tA{get isComposite(){return!0}get isDrawable(){return!1}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(e=>e.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(e){}setState(e){super.setState(e),this.setNeedsUpdate()}getPickingInfo({info:e}){let{object:t}=e;return t&&t.__source&&t.__source.parent&&t.__source.parent.id===this.id&&(e.object=t.__source.object,e.index=t.__source.index),e}filterSubLayer(e){return!0}shouldRenderSubLayer(e,t){return t&&t.length}getSubLayerClass(e,t){let{_subLayerProps:i}=this.props;return i&&i[e]&&i[e].type||t}getSubLayerRow(e,t,i){return e.__source={parent:this,object:t,index:i},e}getSubLayerAccessor(e){if("function"==typeof e){let t={index:-1,data:this.props.data,target:[]};return(i,r)=>i&&i.__source?(t.index=i.__source.index,e(i.__source.object,t)):e(i,r)}return e}getSubLayerProps(e={}){let{opacity:t,pickable:i,visible:r,parameters:n,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:o,highlightColor:l,coordinateSystem:u,coordinateOrigin:c,wrapLongitude:h,positionFormat:d,modelMatrix:f,extensions:p,fetch:g,operation:m,_subLayerProps:b}=this.props,v={id:"",updateTriggers:{},opacity:t,pickable:i,visible:r,parameters:n,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:o,highlightColor:l,coordinateSystem:u,coordinateOrigin:c,wrapLongitude:h,positionFormat:d,modelMatrix:f,extensions:p,fetch:g,operation:m},y=b&&e.id&&b[e.id],_=y&&y.updateTriggers,w=e.id||"sublayer";if(y){let t=this.props[eZ.fW],i=e.type?e.type._propTypes:{};for(let e in y){let r=i[e]||t[e];r&&"accessor"===r.type&&(y[e]=this.getSubLayerAccessor(y[e]))}}for(let t of(Object.assign(v,e,y),v.id=`${this.props.id}-${w}`,v.updateTriggers={all:this.props.updateTriggers?.all,...e.updateTriggers,..._},p)){let e=t.getSubLayerProps.call(this,t);e&&Object.assign(v,e,{updateTriggers:Object.assign(v.updateTriggers,e.updateTriggers)})}return v}_updateAutoHighlight(e){for(let t of this.getSubLayers())t.updateAutoHighlight(e)}_getAttributeManager(){return null}_postUpdate(e,t){let i=this.internalState.subLayers,r=!i||this.needsUpdate();if(r){let e=this.renderLayers();i=(0,M.B)(e,Boolean),this.internalState.subLayers=i}for(let e of((0,ep.A)("compositeLayer.renderLayers",this,r,i),i))e.parent=this}}tD.layerName="CompositeLayer";let tF=tD;class t$ extends tF{initializeAggregationLayer(e){super.initializeState(this.context),this.setState({ignoreProps:function(e,t){let i={};for(let r in e)t.includes(r)||(i[r]=e[r]);return i}(this.constructor._propTypes,e.data.props),dimensions:e})}updateState(e){super.updateState(e);let{changeFlags:t}=e;if(t.extensionsChanged){let e=this.getShaders({});e&&e.defines&&(e.defines.NON_INSTANCED_MODEL=1),this.updateShaders(e)}this._updateAttributes()}updateAttributes(e){this.setState({changedAttributes:e})}getAttributes(){return this.getAttributeManager().getAttributes()}getModuleSettings(){let{viewport:e,mousePosition:t,device:i}=this.context;return Object.assign(Object.create(this.props),{viewport:e,mousePosition:t,picking:{isActive:0},devicePixelRatio:i.canvasContext.cssToDeviceRatio()})}updateShaders(e){}isAggregationDirty(e,t={}){let{props:i,oldProps:r,changeFlags:n}=e,{compareAll:s=!1,dimension:a}=t,{ignoreProps:o}=this.state,{props:l,accessors:u=[]}=a,{updateTriggersChanged:c}=n;if(n.dataChanged)return!0;if(c){if(c.all)return!0;for(let e of u)if(c[e])return!0}if(s)return!!n.extensionsChanged||eK({oldProps:r,newProps:i,ignoreProps:o,propTypes:this.constructor._propTypes});for(let e of l)if(i[e]!==r[e])return!0;return!1}isAttributeChanged(e){let{changedAttributes:t}=this.state;return e?t&&void 0!==t[e]:!function(e){let t=!0;for(let i in e){t=!1;break}return t}(t)}_getAttributeManager(){return new eN(this.context.device,{id:this.props.id,stats:this.context.stats})}}t$.layerName="AggregationLayer";let tz=t$,tN=`\
2771#version 300 es
2772in vec3 positions;
2773in vec3 positions64Low;
2774in float weights;
2775out vec4 weightsTexture;
2776void main()
2777{
2778weightsTexture = vec4(weights * weight.weightsScale, 0., 0., 1.);
2779float radiusTexels = project_pixel_size(weight.radiusPixels) * weight.textureWidth / (weight.commonBounds.z - weight.commonBounds.x);
2780gl_PointSize = radiusTexels * 2.;
2781vec3 commonPosition = project_position(positions, positions64Low);
2782gl_Position.xy = (commonPosition.xy - weight.commonBounds.xy) / (weight.commonBounds.zw - weight.commonBounds.xy) ;
2783gl_Position.xy = (gl_Position.xy * 2.) - (1.);
2784gl_Position.w = 1.0;
2785}
2786`,tj=`\
2787#version 300 es
2788in vec4 weightsTexture;
2789out vec4 fragColor;
2790float gaussianKDE(float u){
2791return pow(2.71828, -u*u/0.05555)/(1.77245385*0.166666);
2792}
2793void main()
2794{
2795float dist = length(gl_PointCoord - vec2(0.5, 0.5));
2796if (dist > 0.5) {
2797discard;
2798}
2799fragColor = weightsTexture * gaussianKDE(2. * dist);
2800DECKGL_FILTER_COLOR(fragColor, geometry);
2801}
2802`,tU=`\
2803#version 300 es
2804uniform sampler2D inTexture;
2805out vec4 outTexture;
2806void main()
2807{
2808int yIndex = gl_VertexID / int(maxWeight.textureSize);
2809int xIndex = gl_VertexID - (yIndex * int(maxWeight.textureSize));
2810vec2 uv = (0.5 + vec2(float(xIndex), float(yIndex))) / maxWeight.textureSize;
2811outTexture = texture(inTexture, uv);
2812gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
2813gl_PointSize = 1.0;
2814}
2815`,tV=`\
2816#version 300 es
2817in vec4 outTexture;
2818out vec4 fragColor;
2819void main() {
2820fragColor = outTexture;
2821fragColor.g = outTexture.r / max(1.0, outTexture.a);
2822}
2823`,tW=`\
2824struct MaxWeightVaryings {
2825  @builtin(position) position: vec4<f32>,
2826  @location(0) weights: vec4<f32>,
2827};
2828
2829const MAX_WEIGHT_REDUCTION_SIZE: u32 = 16u;
2830
2831@vertex
2832fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> MaxWeightVaryings {
2833  var output: MaxWeightVaryings;
2834  let textureSize = u32(maxWeight.textureSize);
2835  let reducedTextureSize =
2836    (textureSize + MAX_WEIGHT_REDUCTION_SIZE - 1u) / MAX_WEIGHT_REDUCTION_SIZE;
2837  let blockCoordinates = vec2<u32>(
2838    vertexIndex % reducedTextureSize,
2839    vertexIndex / reducedTextureSize
2840  );
2841  var maximumWeights = vec4<f32>(0.0);
2842
2843  for (var y = 0u; y < MAX_WEIGHT_REDUCTION_SIZE; y++) {
2844    for (var x = 0u; x < MAX_WEIGHT_REDUCTION_SIZE; x++) {
2845      let textureCoordinates = blockCoordinates * MAX_WEIGHT_REDUCTION_SIZE + vec2<u32>(x, y);
2846
2847      if (textureCoordinates.x < textureSize && textureCoordinates.y < textureSize) {
2848        let weights = textureLoad(inTexture, vec2<i32>(textureCoordinates), 0);
2849        maximumWeights.r = max(maximumWeights.r, weights.r);
2850        maximumWeights.g = max(maximumWeights.g, weights.r / max(1.0, weights.a));
2851        maximumWeights.b = max(maximumWeights.b, weights.b);
2852        maximumWeights.a = max(maximumWeights.a, weights.a);
2853      }
2854    }
2855  }
2856
2857  output.position = vec4<f32>(0.0, 0.0, 0.0, 1.0);
2858  output.weights = maximumWeights;
2859  return output;
2860}
2861
2862@fragment
2863fn fragmentMain(varyings: MaxWeightVaryings) -> @location(0) vec4<f32> {
2864  return varyings.weights;
2865}
2866`,tG=`\
2867struct WeightAttributes {
2868  @builtin(vertex_index) vertexIndex: u32,
2869  @location(0) instancePositions: vec3<f32>,
2870  @location(1) instancePositions64Low: vec3<f32>,
2871  @location(2) instanceWeights: f32,
2872};
2873
2874struct WeightVaryings {
2875  @builtin(position) position: vec4<f32>,
2876  @location(0) pointCoordinates: vec2<f32>,
2877  @location(1) weights: vec4<f32>,
2878};
2879
2880const WEIGHT_QUAD_POSITIONS = array<vec2<f32>, 6>(
2881  vec2<f32>(-1.0, -1.0),
2882  vec2<f32>(1.0, -1.0),
2883  vec2<f32>(-1.0, 1.0),
2884  vec2<f32>(-1.0, 1.0),
2885  vec2<f32>(1.0, -1.0),
2886  vec2<f32>(1.0, 1.0)
2887);
2888
2889@vertex
2890fn vertexMain(attributes: WeightAttributes) -> WeightVaryings {
2891  var output: WeightVaryings;
2892  let commonPosition = project_position_vec3_f64(
2893    attributes.instancePositions,
2894    attributes.instancePositions64Low
2895  );
2896  let clipPosition =
2897    (commonPosition.xy - weight.commonBounds.xy) /
2898    (weight.commonBounds.zw - weight.commonBounds.xy) * 2.0 - vec2<f32>(1.0);
2899  let radiusTexels =
2900    project_pixel_size_float(weight.radiusPixels) * weight.textureWidth /
2901    (weight.commonBounds.z - weight.commonBounds.x);
2902  let offset = WEIGHT_QUAD_POSITIONS[attributes.vertexIndex];
2903
2904  output.position = vec4<f32>(
2905    clipPosition + offset * radiusTexels * 2.0 / weight.textureWidth,
2906    0.0,
2907    1.0
2908  );
2909  output.pointCoordinates = (offset + vec2<f32>(1.0)) * 0.5;
2910  output.weights = vec4<f32>(attributes.instanceWeights * weight.weightsScale, 0.0, 0.0, 1.0);
2911  return output;
2912}
2913
2914@fragment
2915fn fragmentMain(varyings: WeightVaryings) -> @location(0) vec4<f32> {
2916  let distanceFromCenter = length(varyings.pointCoordinates - vec2<f32>(0.5));
2917  if (distanceFromCenter > 0.5) {
2918    discard;
2919  }
2920
2921  let gaussian = exp(-pow(2.0 * distanceFromCenter, 2.0) / 0.05555) /
2922    (1.77245385 * 0.166666);
2923  return varyings.weights * gaussian;
2924}
2925`,tH={name:"weight",source:`\
2926struct weightUniforms {
2927  commonBounds: vec4<f32>,
2928  radiusPixels: f32,
2929  textureWidth: f32,
2930  weightsScale: f32,
2931};
2932
2933@group(0) @binding(auto) var<uniform> weight: weightUniforms;
2934`,vs:`\
2935layout(std140) uniform weightUniforms {
2936  vec4 commonBounds;
2937  float radiusPixels;
2938  float textureWidth;
2939  float weightsScale;
2940} weight;
2941`,uniformTypes:{commonBounds:"vec4<f32>",radiusPixels:"f32",textureWidth:"f32",weightsScale:"f32"}},tq={name:"maxWeight",source:`\
2942struct maxWeightUniforms {
2943  textureSize: f32,
2944};
2945
2946@group(0) @binding(auto) var<uniform> maxWeight: maxWeightUniforms;
2947@group(0) @binding(auto) var inTexture: texture_2d<f32>;
2948`,vs:`\
2949layout(std140) uniform maxWeightUniforms {
2950  float textureSize;
2951} maxWeight;
2952`,uniformTypes:{textureSize:"f32"}},tY={format:"rgba8unorm",dimension:"2d",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}},tZ=[0,0],tK={SUM:0,MEAN:1},tX=["float32-renderable-webgl","texture-blend-float-webgl"],tQ={data:{props:["radiusPixels"]}};class tJ extends tz{getShaders(e){let t=[f];return e.modules&&(t=[...t,...e.modules]),super.getShaders({...e,modules:t})}initializeState(){super.initializeAggregationLayer(tQ),this.setState({colorDomain:tZ}
2952),this._setupTextureParams(),this._setupAttributes(),this._setupResources()}shouldUpdateState({changeFlags:e}){return e.somethingChanged}updateState(e){super.updateState(e),this._updateHeatmapState(e)}_updateHeatmapState(e){let{props:t,oldProps:i}=e,r=this._getChangeFlags(e);if((r.dataChanged||r.viewportChanged)&&(r.boundsChanged=this._updateBounds(r.dataChanged),this._updateTextureRenderingBounds()),r.dataChanged||r.boundsChanged){if(clearTimeout(this.state.updateTimer),this.setState({isWeightMapDirty:!0}),r.dataChanged){let e=this.getShaders({vs:tN,fs:tj});this._createWeightsTransform(e)}}else r.viewportZoomChanged&&this._debouncedUpdateWeightmap();t.colorRange!==i.colorRange&&this._updateColorTexture(e),this.state.isWeightMapDirty&&this._updateWeightmap(),this.setState({zoom:e.context.viewport.zoom})}renderLayers(){let{weightsTexture:e,triPositionBuffer:t,triTexCoordBuffer:i,maxWeightsTexture:r,colorTexture:n,colorDomain:s}=this.state,{updateTriggers:a,intensity:o,threshold:l,aggregation:u}=this.props;return new(this.getSubLayerClass("triangle",tB))(this.getSubLayerProps({id:"triangle-layer",updateTriggers:a}),{coordinateSystem:"default",data:{attributes:{positions:t,texCoords:i}},vertexCount:4,maxTexture:r,colorTexture:n,aggregationMode:tK[u]||0,weightsTexture:e,intensity:o,threshold:l,colorDomain:s})}finalizeState(e){super.finalizeState(e);let{weightsTransform:t,weightsTexture:i,maxWeightTransform:r,maxWeightsTexture:n,triPositionBuffer:s,triTexCoordBuffer:a,colorTexture:o,updateTimer:l}=this.state;t?.destroy(),i?.destroy(),r?.destroy(),n?.destroy(),s?.destroy(),a?.destroy(),o?.destroy(),l&&clearTimeout(l)}_getAttributeManager(){return new eN(this.context.device,{id:this.props.id,stats:this.context.stats})}_getChangeFlags(e){let t={},{dimensions:i}=this.state;t.dataChanged=this.isAttributeChanged()&&"attribute changed"||this.isAggregationDirty(e,{compareAll:!0,dimension:i.data})&&"aggregation is dirty",t.viewportChanged=e.changeFlags.viewportChanged;let{zoom:r}=this.state;return e.context.viewport&&e.context.viewport.zoom===r||(t.viewportZoomChanged=!0),t}_createTextures(){let{textureSize:e,format:t}=this.state;this.setState({weightsTexture:this.context.device.createTexture({...tY,width:e,height:e,format:t}),maxWeightsTexture:this.context.device.createTexture({...tY,width:1,height:1,format:t})})}_setupAttributes(){let e=this.getAttributeManager();"webgpu"===this.context.device.type?(e.addInstanced({instancePositions:{size:3,type:"float64",accessor:"getPosition",transform:e=>[e[0],e[1],e[2]??0]},instanceWeights:{size:1,accessor:"getWeight"}}),this.setState({positionAttributeName:"instancePositions"})):(e.add({positions:{size:3,type:"float64",accessor:"getPosition"},weights:{size:1,accessor:"getWeight"}}),this.setState({positionAttributeName:"positions"}))}_setupTextureParams(){let{device:e}=this.context,{weightsTextureSize:t}=this.props,i=Math.min(t,e.limits.maxTextureDimension2D),r="webgpu"===e.type,n=r?e.getTextureFormatCapabilities("rgba16float").blend:tX.every(t=>e.features.has(t));this.setState({textureSize:i,format:n?r?"rgba16float":"rgba32float":"rgba8unorm",weightsScale:n?1:1/255}),n||x.A.warn(`HeatmapLayer: ${this.id} rendering to float texture not supported, falling back to low precision format`)()}_createWeightsTransform(e){let{weightsTransform:t}=this.state,{weightsTexture:i}=this.state,r="webgpu"===this.context.device.type,n=this.getAttributeManager();t?.destroy(),t=new u(this.context.device,{id:`${this.id}-weights-transform`,...e,source:tG,bufferLayout:n.getBufferLayouts({isInstanced:r}),vertexCount:r?6:1,...r?{colorAttachmentFormats:[i.format],isInstanced:!0,instanceCount:this.getNumInstances()}:{},targetTexture:i,parameters:{depthWriteEnabled:!1,blend:!0,blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"},topology:r?"triangle-list":"point-list",modules:[...e.modules,tH]}),this.setState({weightsTransform:t})}_setupResources(){this._createTextures();let{device:e}=this.context,{textureSize:t,weightsTexture:i,maxWeightsTexture:r}=this.state,n=this.getShaders({vs:tN,fs:tj});this._createWeightsTransform(n);let s=this.getShaders({source:tW,vs:tU,fs:tV,modules:[tq]}),a=new u(e,{id:`${this.id}-max-weights-transform`,targetTexture:r,...s,..."webgpu"===e.type?{colorAttachmentFormats:[r.format]}:{},vertexCount:"webgpu"===e.type?Math.ceil(t/16)**2:t*t,topology:"point-list",parameters:{depthWriteEnabled:!1,blend:!0,blendColorOperation:"max",blendAlphaOperation:"max",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"}});a.model.shaderInputs.setProps({maxWeight:{inTexture:i,textureSize:t}}),this.setState({weightsTexture:i,maxWeightsTexture:r,maxWeightTransform:a,zoom:null,triPositionBuffer:e.createBuffer({byteLength:48}),triTexCoordBuffer:e.createBuffer({byteLength:48})})}updateShaders(e){this._createWeightsTransform({vs:tN,fs:tj,...e})}_updateMaxWeightValue(){let{maxWeightTransform:e}=this.state;e.run({parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]})}_updateBounds(e=!1){var t;let{viewport:i}=this.context,r=[i.unproject([0,0]),i.unproject([i.width,0]),i.unproject([0,i.height]),i.unproject([i.width,i.height])].map(e=>e.map(Math.fround)),n=function(e){let t=e.map(e=>e[0]),i=e.map(e=>e[1]),r=Math.min.apply(null,t),n=Math.max.apply(null,t);return[r,Math.min.apply(null,i),n,Math.max.apply(null,i)]}(r),s={visibleWorldBounds:n,viewportCorners:r},a=!1;if(e||!this.state.worldBounds||(t=this.state.worldBounds,(!(n[0]>=t[0])||!(n[2]<=t[2])||!(n[1]>=t[1])||!(n[3]<=t[3]))&&1)){let e=this._worldToCommonBounds(n),t=this._commonToWorldBounds(e);"lnglat"===this.props.coordinateSystem&&(t[1]=Math.max(t[1],-85.051129),t[3]=Math.min(t[3],85.051129),t[0]=Math.max(t[0],-360),t[2]=Math.min(t[2],360));let i=this._worldToCommonBounds(t);s.worldBounds=t,s.normalizedCommonBounds=i,a=!0}return this.setState(s),a}_updateTextureRenderingBounds(){let{triPositionBuffer:e,triTexCoordBuffer:t,normalizedCommonBounds:i,viewportCorners:r}=this.state,{viewport:n}=this.context;e.write(s(r,3));let a=r.map(e=>(function(e,t){let[i,r,n,s]=t;return[(e[0]-i)/(n-i),(e[1]-r)/(s-r)]})(n.projectPosition(e),i));t.write(s(a,2))}
2952_updateColorTexture(e){let{colorRange:t}=e.props,{colorTexture:i}=this.state,r=function(e,t=!1,i=Float32Array){let r;if(Number.isFinite(e[0]))r=new i(e);else{r=new i(4*e.length);let t=0;for(let i=0;i<e.length;i++){let n=e[i];r[t++]=n[0],r[t++]=n[1],r[t++]=n[2],r[t++]=Number.isFinite(n[3])?n[3]:255}}if(t)for(let e=0;e<r.length;e++)r[e]/=255;return r}(t,!1,Uint8Array);i?.destroy(),i=this.context.device.createTexture({...tY,data:r,width:t.length,height:1}),this.setState({colorTexture:i})}_updateWeightmap(){let{radiusPixels:e,colorDomain:t,aggregation:i}=this.props,{worldBounds:r,textureSize:n,weightsScale:s,weightsTexture:a}=this.state,o=this.state.weightsTransform;this.state.isWeightMapDirty=!1;let l=this._worldToCommonBounds(r,{useLayerCoordinateSystem:!0});if(t&&"SUM"===i){let{viewport:e}=this.context,i=e.distanceScales.metersPerUnit[2]*(l[2]-l[0])/n;this.state.colorDomain=[t[0]*i*s,t[1]*i*s]}else this.state.colorDomain=t||tZ;let u=this.getAttributeManager().getAttributes(),c=this.getModuleSettings();if(this._setModelAttributes(o.model,u),"webgpu"===this.context.device.type){let e=this.getNumInstances();o.model.setVertexCount(6*(e>0)),o.model.setInstanceCount(e)}else o.model.setVertexCount(this.getNumInstances());let{viewport:h,devicePixelRatio:d,coordinateSystem:f,coordinateOrigin:p}=c,{modelMatrix:g}=this.props;o.model.shaderInputs.setProps({project:{viewport:h,devicePixelRatio:d,modelMatrix:g,coordinateSystem:f,coordinateOrigin:p},weight:{radiusPixels:e,commonBounds:l,textureWidth:n,weightsScale:s,weightsTexture:a}}),o.run({parameters:{viewport:[0,0,n,n]},clearColor:[0,0,0,0]}),this._updateMaxWeightValue()}_debouncedUpdateWeightmap(e=!1){let{updateTimer:t}=this.state,{debounceTimeout:i}=this.props;e?(t=null,this._updateBounds(!0),this._updateTextureRenderingBounds(),this.setState({isWeightMapDirty:!0})):(this.setState({isWeightMapDirty:!1}),clearTimeout(t),t=setTimeout(this._debouncedUpdateWeightmap.bind(this,!0),i)),this.setState({updateTimer:t})}_worldToCommonBounds(e,t={}){let i,r,{useLayerCoordinateSystem:n=!1}=t,[s,a,o,l]=e,{viewport:u}=this.context,{textureSize:c}=this.state,{coordinateSystem:h}=this.props,d=n&&("lnglat-offsets"===h||"meter-offsets"===h),f=d?u.projectPosition(this.props.coordinateOrigin):[0,0],p=2*c/u.scale;return n&&!d?(i=this.projectPosition([s,a,0]),r=this.projectPosition([o,l,0])):(i=u.projectPosition([s,a,0]),r=u.projectPosition([o,l,0])),function(e,t,i){let[r,n,s,a]=e,o=s-r,l=a-n,u=o,c=l;o/l<t/i?u=t/i*l:c=i/t*o,u<t&&(u=t,c=i);let h=(s+r)/2,d=(a+n)/2;return[h-u/2,d-c/2,h+u/2,d+c/2]}([i[0]-f[0],i[1]-f[1],r[0]-f[0],r[1]-f[1]],p,p)}_commonToWorldBounds(e){let[t,i,r,n]=e,{viewport:s}=this.context,a=s.unprojectPosition([t,i]),o=s.unprojectPosition([r,n]);return a.slice(0,2).concat(o.slice(0,2))}}tJ.layerName="HeatmapLayer",tJ.defaultProps={getPosition:{type:"accessor",value:e=>e.position},getWeight:{type:"accessor",value:1},intensity:{type:"number",min:0,value:1},radiusPixels:{type:"number",min:1,max:100,value:50}
2952,colorRange:[[255,255,178],[254,217,118],[254,178,76],[253,141,60],[240,59,32],[189,0,38]],threshold:{type:"number",min:0,max:1,value:.05},colorDomain:{type:"array",value:null,optional:!0},aggregation:"SUM",weightsTextureSize:{type:"number",min:128,max:2048,value:2048},debounceTimeout:{type:"number",min:0,max:1e3,value:500}};let t0=tJ},65558:(e,t,i)=>{let r;i.d(t,{P:()=>c});var n=i(34722),s=i(85066),a=i(47696),o=i(68416),l=i(26966);let u=[0,0,0];class c extends n.M{static get ZERO(){return r||Object.freeze(r=new c(0,0,0)),r}constructor(e=0,t=0,i=0){super(-0,-0,-0),1==arguments.length&&(0,s.cy)(e)?this.copy(e):(s.$W.debug&&((0,a.ws)(e),(0,a.ws)(t),(0,a.ws)(i)),this[0]=e,this[1]=t,this[2]=i)}set(e,t,i){return this[0]=e,this[1]=t,this[2]=i,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return s.$W.debug&&((0,a.ws)(e.x),(0,a.ws)(e.y),(0,a.ws)(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=(0,a.ws)(e)}angle(e){return(0,o.g7)(this,e)}cross(e){return(0,o.$A)(this,this,e),this.check()}rotateX({radians:e,origin:t=u}){return(0,o.eL)(this,this,t,e),this.check()}rotateY({radians:e,origin:t=u}){return(0,o.Z8)(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=u}){return(0,o.x6)(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return(0,o.Z0)(this,this,e),this.check()}transformAsVector(e){return(0,l.cL)(this,this,e),this.check()}transformByMatrix3(e){return(0,o.ei)(this,this,e),this.check()}transformByMatrix2(e){return(0,l.J4)(this,this,e),this.check()}transformByQuaternion(e){return(0,o.gL)(this,this,e),this.check()}}},65603:(e,t,i)=>{i.d(t,{Wk:()=>s});let r=`\
2953out vec4 transform_output;
2954void main() {
2955  transform_output = vec4(0);
2956}`,n=`#version 300 es
2957${r}`;function s(e){let{input:t,inputChannels:i,output:r}=e||{};if(!t)return n;if(!i)throw Error("inputChannels");let s=function(e){switch(e){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw Error(`invalid channels: ${e}`)}}(i),a=function(e,t){switch(t){case 1:return`vec4(${e}, 0.0, 0.0, 1.0)`;case 2:return`vec4(${e}, 0.0, 1.0)`;case 3:return`vec4(${e}, 1.0)`;case 4:return e;default:throw Error(`invalid channels: ${t}`)}}(t,i);return`\
2958#version 300 es
2959in ${s} ${t};
2960out vec4 ${r};
2961void main() {
2962  ${r} = ${a};
2963}`}},67153:(e,t,i)=>{i.d(t,{eh:()=>n,gM:()=>s,x:()=>r});let r=globalThis;globalThis.document;let n=globalThis.process||{};globalThis.console;let s=globalThis.navigator||{}},67267:(e,t,i)=>{i.d(t,{Cc:()=>a,WQ:()=>n,Z0:()=>c,ZF:()=>o,ei:()=>u,jb:()=>h,l0:()=>l,ze:()=>s});var r=i(72382);function n(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e}function s(e,t){return e[0]=-t[0],e[1]=-t[1],e}function a(e,t,i,r){let n=t[0],s=t[1];return e[0]=n+r*(i[0]-n),e[1]=s+r*(i[1]-s),e}function o(e,t,i){let r=t[0],n=t[1];return e[0]=i[0]*r+i[2]*n,e[1]=i[1]*r+i[3]*n,e}function l(e,t,i){let r=t[0],n=t[1];return e[0]=i[0]*r+i[2]*n+i[4],e[1]=i[1]*r+i[3]*n+i[5],e}function u(e,t,i){let r=t[0],n=t[1];return e[0]=i[0]*r+i[3]*n+i[6],e[1]=i[1]*r+i[4]*n+i[7],e}function c(e,t,i){let r=t[0],n=t[1];return e[0]=i[0]*r+i[4]*n+i[12],e[1]=i[1]*r+i[5]*n+i[13],e}let h=function(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e};!function(){let e=new r.tb(2);r.tb!=Float32Array&&(e[0]=0,e[1]=0)}()},68416:(e,t,i)=>{i.d(t,{$A:()=>s,Z0:()=>a,Z8:()=>c,eL:()=>u,ei:()=>o,g7:()=>d,gL:()=>l,jb:()=>f,x6:()=>h,ze:()=>n});var r=i(72382);function n(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function s(e,t,i){let r=t[0],n=t[1],s=t[2],a=i[0],o=i[1],l=i[2];return e[0]=n*l-s*o,e[1]=s*a-r*l,e[2]=r*o-n*a,e}function a(e,t,i){let r=t[0],n=t[1],s=t[2],a=i[3]*r+i[7]*n+i[11]*s+i[15];return a=a||1,e[0]=(i[0]*r+i[4]*n+i[8]*s+i[12])/a,e[1]=(i[1]*r+i[5]*n+i[9]*s+i[13])/a,e[2]=(i[2]*r+i[6]*n+i[10]*s+i[14])/a,e}function o(e,t,i){let r=t[0],n=t[1],s=t[2];return e[0]=r*i[0]+n*i[3]+s*i[6],e[1]=r*i[1]+n*i[4]+s*i[7],e[2]=r*i[2]+n*i[5]+s*i[8],e}function l(e,t,i){let r=i[0],n=i[1],s=i[2],a=i[3],o=t[0],l=t[1],u=t[2],c=n*u-s*l,h=s*o-r*u,d=r*l-n*o,f=n*d-s*h,p=s*c-r*d,g=r*h-n*c,m=2*a;return c*=m,h*=m,d*=m,f*=2,p*=2,g*=2,e[0]=o+c+f,e[1]=l+h+p,e[2]=u+d+g,e}function u(e,t,i,r){let n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[0],s[1]=n[1]*Math.cos(r)-n[2]*Math.sin(r),s[2]=n[1]*Math.sin(r)+n[2]*Math.cos(r),e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e}function c(e,t,i,r){let n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[2]*Math.sin(r)+n[0]*Math.cos(r),s[1]=n[1],s[2]=n[2]*
2963Math.cos(r)-n[0]*Math.sin(r),e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e}function h(e,t,i,r){let n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[0]*Math.cos(r)-n[1]*Math.sin(r),s[1]=n[0]*Math.sin(r)+n[1]*Math.cos(r),s[2]=n[2],e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e}function d(e,t){let i=e[0],r=e[1],n=e[2],s=t[0],a=t[1],o=t[2],l=Math.sqrt((i*i+r*r+n*n)*(s*s+a*a+o*o));return Math.acos(Math.min(Math.max(l&&(e[0]*t[0]+e[1]*t[1]+e[2]*t[2])/l,-1),1))}let f=function(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e};!function(){let e=new r.tb(3);r.tb!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0)}()},69173:(e,t,i)=>{i.d(t,{$h:()=>g,B8:()=>s,I0:()=>p,Qr:()=>f,Tl:()=>l,Z8:()=>d,a4:()=>a,e$:()=>c,eL:()=>h,fN:()=>m,hs:()=>u,lw:()=>o,mg:()=>n,t5:()=>v,v3:()=>b});var r=i(72382);function n(e,t){if(e===t){let i=t[1],r=t[2],n=t[3],s=t[6],a=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=i,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=s,e[11]=t[14],e[12]=n,e[13]=a,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function s(e,t){let i=t[0],r=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],u=t[7],c=t[8],h=t[9],d=t[10],f=t[11],p=t[12],g=t[13],m=t[14],b=t[15],v=i*o-r*a,y=i*l-n*a,_=i*u-s*a,w=r*l-n*o,x=r*u-s*o,E=n*u-s*l,S=c*g-h*p,P=c*m-d*p,C=c*b-f*p,T=h*m-d*g,A=h*b-f*g,M=d*b-f*m,L=v*M-y*A+_*T+w*C-x*P+E*S;return L?(L=1/L,e[0]=(o*M-l*A+u*T)*L,e[1]=(n*A-r*M-s*T)*L,e[2]=(g*E-m*x+b*w)*L,e[3]=(d*x-h*E-f*w)*L,e[4]=(l*C-a*M-u*P)*L,e[5]=(i*M-n*C+s*P)*L,e[6]=(m*_-p*E-b*y)*L,e[7]=(c*E-d*_+f*y)*L,e[8]=(a*A-o*C+u*S)*L,e[9]=(r*C-i*A-s*S)*L,e[10]=(p*x-g*_+b*v)*L,e[11]=(h*_-c*x-f*v)*L,e[12]=(o*P-a*T-l*S)*L,e[13]=(i*T-r*P+n*S)*L,e[14]=(g*y-p*w-m*v)*L,e[15]=(c*w-h*y+d*v)*L,e):null}function a(e){let t=e[0],i=e[1],r=e[2],n=e[3],s=e[4],a=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],d=e[11],f=e[12],p=e[13],g=e[14],m=e[15],b=t*a-i*s,v=t*o-r*s,y=i*o-r*a,_=u*p-c*f,w=u*g-h*f,x=c*g-h*p;return l*(t*x-i*w+r*_)-n*(s*x-a*w+o*_)+m*(u*y-c*v+h*b)-d*(f*y-p*v+g*b)}function o(e,t,i){let r=t[0],n=t[1],s=t[2],a=t[3],o=t[4],l=t[5],u=t[6],c=t[7],h=t[8],d=t[9],f=t[10],p=t[11],g=t[12],m=t[13],b=t[14],v=t[15],y=i[0],_=i[1],w=i[2],x=i[3];return e[0]=y*r+_*o+w*h+x*g,e[1]=y*n+_*l+w*d+x*m,e[2]=y*s+_*u+w*f+x*b,e[3]=y*a+_*c+w*p+x*v,y=i[4],_=i[5],w=i[6],x=i[7],e[4]=y*r+_*o+w*h+x*g,e[5]=y*n+_*l+w*d+x*m,e[6]=y*s+_*u+w*f+x*b,e[7]=y*a+_*c+w*p+x*v,y=i[8],_=i[9],w=i[10],x=i[11],e[8]=y*r+_*o+w*h+x*g,e[9]=y*n+_*l+w*d+x*m,e[10]=y*s+_*u+w*f+x*b,e[11]=y*a+_*c+w*p+x*v,y=i[12],_=i[13],w=i[14],x=i[15],e[12]=y*r+_*o+w*h+x*g,e[13]=y*n+_*l+w*d+x*m,e[14]=y*s+_*u+w*f+x*b,e[15]=y*a+_*c+w*p+x*v,e}function l(e,t,i){let r,n,s,a,o,l,u,c,h,d,f,p,g=i[0],m=i[1],b=i[2];return t===e?(e[12]=t[0]*g+t[4]*m+t[8]*b+t[12],e[13]=t[1]*g+t[5]*m+t[9]*b+t[13],e[14]=t[2]*g+t[6]*m+t[10]*b+t[14],e[15]=t[3]*g+t[7]*m+t[11]*b+t[15]):(r=t[0],n=t[1],s=t[2],a=t[3],o=t[4],l=t[5],u=t[6],c=t[7],h=t[8],d=t[9],f=t[10],p=t[11],e[0]=r,e[1]=n,e[2]=s,e[3]=a,e[4]=o,e[5]=l,e[6]=u,e[7]=c,e[8]=h,e[9]=d,e[10]=f,e[11]=p,e[12]=r*g+o*m+h*b+t[12],e[13]=n*g+l*m+d*b+t[13],e[14]=s*g+u*m+f*b+t[14],e[15]=a*g+c*m+p*b+t[15]),e}function u(e,t,i){let r=i[0],n=i[1],s=i[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function c(e,t,i,n){let s,a,o,l,u,c,h,d,f,p,g,m,b,v,y,_,w,x,E,S,P,C,T,A,M=n[0],L=n[1],k=n[2],I=Math.sqrt(M*M+L*L+k*k);return I<r.p8?null:(M*=I=1/I,L*=I,k*=I,a=Math.sin(i),o=1-(s=Math.cos(i)),l=t[0],u=t[1],c=t[2],h=t[3],d=t[4],f=t[5],p=t[6],g=t[7],m=t[8],b=t[9],v=t[10],y=t[11],_=M*M*o+s,w=L*M*o+k*a,x=k*M*o-L*a,E=M*L*o-k*a,S=L*L*o+s,P=k*L*o+M*a,C=M*k*o+L*a,T=L*k*o-M*a,A=k*k*o+s,e[0]=l*_+d*w+m*x,e[1]=u*_+f*w+b*x,e[2]=c*_+p*w+v*x,e[3]=h*_+g*w+y*x,e[4]=l*E+d*S+m*P,e[5]=u*E+f*S+b*P,e[6]=c*E+p*S+v*P,e[7]=h*E+g*S+y*P,e[8]=l*C+d*T+m*A,e[9]=u*C+f*T+b*A,e[10]=c*C+p*T+v*A,e[11]=h*C+g*T+y*A,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function h(e,t,i){let r=Math.sin(i),n=Math.cos(i),s=t[4],a=t[5],o=t[6],l=t[7],u=t[8],c=t[9],h=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=s*n+u*r,e[5]=a*n+c*r,e[6]=o*n+h*r,e[7]=l*n+d*r,e[8]=u*n-s*r,e[9]=c*n-a*r,e[10]=h*n-o*r,e[11
2963]=d*n-l*r,e}function d(e,t,i){let r=Math.sin(i),n=Math.cos(i),s=t[0],a=t[1],o=t[2],l=t[3],u=t[8],c=t[9],h=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*n-u*r,e[1]=a*n-c*r,e[2]=o*n-h*r,e[3]=l*n-d*r,e[8]=s*r+u*n,e[9]=a*r+c*n,e[10]=o*r+h*n,e[11]=l*r+d*n,e}function f(e,t,i){let r=Math.sin(i),n=Math.cos(i),s=t[0],a=t[1],o=t[2],l=t[3],u=t[4],c=t[5],h=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*n+u*r,e[1]=a*n+c*r,e[2]=o*n+h*r,e[3]=l*n+d*r,e[4]=u*n-s*r,e[5]=c*n-a*r,e[6]=h*n-o*r,e[7]=d*n-l*r,e}function p(e,t){let i=t[0],r=t[1],n=t[2],s=t[3],a=i+i,o=r+r,l=n+n,u=i*a,c=r*a,h=r*o,d=n*a,f=n*o,p=n*l,g=s*a,m=s*o,b=s*l;return e[0]=1-h-p,e[1]=c+b,e[2]=d-m,e[3]=0,e[4]=c-b,e[5]=1-u-p,e[6]=f+g,e[7]=0,e[8]=d+m,e[9]=f-g,e[10]=1-u-h,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function g(e,t,i,r,n,s,a){let o=1/(i-t),l=1/(n-r),u=1/(s-a);return e[0]=2*s*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*s*l,e[6]=0,e[7]=0,e[8]=(i+t)*o,e[9]=(n+r)*l,e[10]=(a+s)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=a*s*2*u,e[15]=0,e}let m=function(e,t,i,r,n){let s=1/Math.tan(t/2);if(e[0]=s/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=n&&n!==1/0){let t=1/(r-n);e[10]=(n+r)*t,e[14]=2*n*r*t}else e[10]=-1,e[14]=-2*r;return e},b=function(e,t,i,r,n,s,a){let o=1/(t-i),l=1/(r-n),u=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+i)*o,e[13]=(n+r)*l,e[14]=(a+s)*u,e[15]=1,e};function v(e,t,i,n){let s,a,o,l,u,c,h,d,f,p,g=t[0],m=t[1],b=t[2],v=n[0],y=n[1],_=n[2],w=i[0],x=i[1],E=i[2];if(Math.abs(g-w)<r.p8&&Math.abs(m-x)<r.p8&&Math.abs(b-E)<r.p8)return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e;return s=1/Math.sqrt((d=g-w)*d+(f=m-x)*f+(p=b-E)*p),d*=s,f*=s,p*=s,(s=Math.sqrt((a=y*p-_*f)*a+(o=_*d-v*p)*o+(l=v*f-y*d)*l))?(a*=s=1/s,o*=s,l*=s):(a=0,o=0,l=0),(s=Math.sqrt((u=f*l-p*o)*u+(c=p*a-d*l)*c+(h=d*o-f*a)*h))?(u*=s=1/s,c*=s,h*=s):(u=0,c=0,h=0),e[0]=a,e[1]=u,e[2]=d,e[3]=0,e[4]=o,e[5]=c,e[6]=f,e[7]=0,e[8]=l,e[9]=h,e[10]=p,e[11]=0,e[12]=-(a*g+o*m+l*b),e[13]=-(u*g+c*m+h*b),e[14]=-(d*g+f*m+p*b),e[15]=1,e}},70278:(e,t,i)=>{i.d(t,{Hd:()=>o,j8:()=>l,kL:()=>a});var r=i(20296),n=i(52975);let s=r.h.DEBUG_DATA_MAX_LENGTH;class a{device;id;ready;usage;props;isReady=!0;destroyed=!1;generation=0;updateTimestamp;debugData=new ArrayBuffer(0);_debugDataEnabled;_maxDebugDataByteLength;_ownsBuffer;_buffer;get buffer(){return this._buffer}get byteLength(){return this._buffer.byteLength}get[Symbol.toStringTag](){return"DynamicBuffer"}toString(){return`DynamicBuffer:"${this.id}":${this.byteLength}B`}toJSON(){return this.toString()}constructor(e,t){let{debugData:i=!1,buffer:a,ownsBuffer:o=!0,...l}=t;if(a&&a.device!==e)throw Error("DynamicBuffer adopted buffers must belong to the supplied device");if(a&&(void 0!==l.byteLength||void 0!==l.data))throw Error("DynamicBuffer cannot combine an adopted buffer with byteLength or data");let u=t.id||a?.id||(0,n.L)("dynamic-buffer"),c={...l,id:u,usage:l.usage??a?.usage,indexType:l.indexType??a?.indexType};(c.usage||0)&r.h.INDEX&&!c.indexType&&(l.data instanceof Uint32Array?c.indexType="uint32":l.data instanceof Uint16Array?c.indexType="uint16":l.data instanceof Uint8Array&&(c.indexType="uint8")),delete c.data,delete c.byteOffset,this.device=e,this.id=u,this.props=c,this.usage=c.usage||0,this._debugDataEnabled=!!i,this._maxDebugDataByteLength="object"==typeof i&&void 0!==i.maxByteLength?i.maxByteLength:s,this._ownsBuffer=o,this._buffer=a??this.device.createBuffer({...l,id:u}),this.ready=Promise.resolve(this._buffer),this.updateTimestamp=this._buffer.updateTimestamp,this._resetDebugData(this._buffer.byteLength),l.data&&this._writeDebugData(l.data,l.byteOffset||0)}write(e,t=0){this._buffer.write(e,t),this._touch(),this._writeDebugData(e,t)}async mapAndWriteAsync(e,t=0,i=this.byteLength-t){let r=null;await this._buffer.mapAndWriteAsync(async(t,n)=>
2963{await e(t,n),r=new Uint8Array(t.slice(0,i))},t,i),this._touch(),r&&this._writeDebugData(r,t)}async readAsync(e=0,t=this.byteLength-e){let i=await this._buffer.readAsync(e,t);return this._writeDebugData(i,e)&&this._touch(),i}async mapAndReadAsync(e,t=0,i=this.byteLength-t){let r=null,n=await this._buffer.mapAndReadAsync(async(t,i)=>(r=new Uint8Array(t.slice(0)),await e(t,i)),t,i);return r&&this._writeDebugData(r,t)&&this._touch(),n}resize(e){let{byteLength:t,preserveData:i=!1}=e;if(t===this.byteLength)return!1;let r=Math.min(e.copyByteLength??Math.min(this.byteLength,t),this.byteLength,t),n=this._buffer,s=this.debugData.slice(0),{data:a,byteOffset:o,...l}=this.props,u=this.device.createBuffer({...l,byteLength:t});return i&&r>0&&this._copyBufferContents(n,u,r),this._buffer=u,this._resetDebugData(t),i&&s.byteLength>0&&this._writeDebugData(s,0),this._ownsBuffer&&n.destroy(),this._ownsBuffer=!0,this.generation++,this._touch(),!0}ensureSize(e,t){return!(e<=this.byteLength)&&this.resize({byteLength:e,preserveData:t?.preserveData})}getBinding(e){return e?.offset===void 0&&e?.size===void 0?this._buffer:{buffer:this._buffer,offset:e?.offset,size:e?.size}}destroy(){this.destroyed||(this._ownsBuffer&&this._buffer.destroy(),this.destroyed=!0,this.debugData=new ArrayBuffer(0))}_copyBufferContents(e,t,i){let r="webgpu"===this.device.type?4*Math.ceil(i/4):i,n=this.device.createCommandEncoder();n.copyBufferToBuffer({sourceBuffer:e,destinationBuffer:t,size:r}),this.device.submit(n.finish())}_touch(){this.updateTimestamp=this.device.incrementTimestamp()}_resetDebugData(e){if(!this._debugDataEnabled){this.debugData=new ArrayBuffer(0);return}this.debugData=new ArrayBuffer(Math.min(e,this._maxDebugDataByteLength))}_writeDebugData(e,t){if(!this._debugDataEnabled||0===this.debugData.byteLength||t>=this.debugData.byteLength)return!1;let i=ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),r=new Uint8Array(this.debugData),n=Math.min(i.byteLength,r.byteLength-t);return r.set(i.subarray(0,n),t),n>0}}function o(e){return null!==e&&"object"==typeof e&&"buffer"in e}function l(e){var t;return{buffer:(t=e.buffer)instanceof a?t.buffer:t,offset:e.offset,size:e.size}}},70309:(e,t,i)=>{i.d(t,{l:()=>a});var r=i(72868),n=i(38758),s=i(39713);class a{options={disableWarnings:!1};modules;moduleUniforms;moduleBindings;directBindings={};constructor(e,t){for(let i of(Object.assign(this.options,t),(0,n.$Q)(Object.values(e).filter(h))))e[i.name]=i;for(let[t,i]of(r.R.log(1,"Creating ShaderInputs with modules",Object.keys(e))(),this.modules=e,this.moduleUniforms={},this.moduleBindings={},Object.entries(e)))i&&(this._addModule(i),i.name&&t!==i.name&&!this.options.disableWarnings&&r.R.warn(`Module name: ${t} vs ${i.name}`)())}destroy(){}setProps(e){for(let t of(e.bindings&&Object.assign(this.directBindings,e.bindings),Object.keys(e))){if("bindings"===t)continue;let i=e[t]||{},n=this.modules[t];if(n){let e=this.moduleUniforms[t],r=this.moduleBindings[t],{uniforms:a,bindings:l}=function(e,t={}){let i={bindings:{},uniforms:{}};return Object.keys(e).forEach(r=>{let n=e[r];Object.prototype.hasOwnProperty.call(t,r)||(0,s.H9)(n)||"number"==typeof n||"boolean"==typeof n?i.uniforms[r]=n:i.bindings[r]=n}),i}(n.getUniforms?.(i,e)||i,n.uniformTypes);this.moduleUniforms[t]=o(e,a,n.uniformTypes),this.moduleBindings[t]={...r,...l}}else this.options.disableWarnings||r.R.warn(`Module ${t} not found`)()}}getModules(){return Object.values(this.modules)}addModules(e){for(let t of(0,n.$Q)(e)){let e=t.name;this.modules[e]||(this.modules[e]=t,this._addModule(t))}}getUniformValues(){return this.moduleUniforms}getBindingValues(){let e={};for(let t of Object.values(this.moduleBindings))Object.assign(e,t);return Object.assign(e,this.directBindings),e}getModuleBindingValues(e){let t=this.moduleBindings[e];return t?{...t}:{}}getDebugTable(){let e={};for(let[t,i]of Object.entries(this.moduleUniforms))for(let[r,n]of Object.entries(i))e[`${t}.${r}`]={type:this.modules[t].uniformTypes?.[r],value:String(n)};return e}_addModule(e){let t=e.name;this.moduleUniforms[t]=o({},e.defaultUniforms||{},e.uniformTypes),this.moduleBindings[t]={}}}function o(e={},t={},i={}){let r={...e};for(let[n,s]of Object.entries(t))void 0!==s&&(r[n]=function e(t,i,r){if(!r||"string"==typeof r)return l(i);if(Array.isArray(r)){if(u(i)||!Array.isArray(i))return l(i);let n=Array.isArray(t)&&!u(t)?[...t]:[],s=n.slice();for(let t=0;t<i.length;t++){let a=i[t];void 0!==a&&(s[t]=e(n[t],a,r[0]))}return s}if(!c(i))return l(i);let n=c(t)?t:{},s={...n};for(let[t,a]of Object.entries(i))void 0!==a&&(s[t]=e(n[t],a,r[t]));return s}(e[n],s,i[n]));return r}function l(e){return ArrayBuffer.isView(e)?Array.prototype.slice.call(e):Array.isArray(e)?u(e)?e.slice():e.map(e=>void 0===e?void 0:l(e)):c(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,void 0===t?void 0:l(t)])):e}function u(e){return ArrayBuffer.isView(e)||Array.isArray(e)&&(0===e.length||"number"==typeof e[0])}function c(e){return!!e&&"object"==typeof e&&!Array.isArray(e)&&!ArrayBuffer.isView(e)}function h(e){return!!e?.dependencies}},71011:(e,t,i)=>{i.d(t,{U0:()=>e_,_P:()=>ey,Ry:()=>ew});var r=i(18976),n=i(38758),s=i(48766);let a=[[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/,"#version 300 es\n"],[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g,"textureLod("],[/\btexture(2D|2DProj|Cube)(EXT)?\(/g,"texture("]],o=[...a,[c("attribute"),"in $1"],[c("varying"),"out $1"]],l=[...a,[c("varying"),"in $1"]];function u(e,t){for(let[i,r]of t)e=e.replace(i,r);return e}function c(e){return RegExp(`\\b${e}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`,"g")}var h=i(95042);function d(e,t,i="glsl"){let r="";for(let n in e){let s=e[n],a="wgsl"===i?"fn":"void";if(r+=`${a} ${s.signature} {
2964`,s.header&&(r+=`  ${s.header}`),t[n]){let e=t[n];for(let t of(e.sort((e,t)=>
2964e.order-t.order),e))r+=`  ${t.injection}
2965`}s.footer&&(r+=`  ${s.footer}`),r+="}\n"}return r}function f(e){let t={vertex:{},fragment:{}};for(let i of e){let e,r;"string"!=typeof i?r=(e=i).hook:(e={},r=i);let n=(r=r.trim()).indexOf(":"),s=r.slice(0,n),a=r.slice(n+1),o=r.replace(/\(.+/,""),l=Object.assign(e,{signature:a});switch(s){case"vs":t.vertex[o]=l;break;case"fs":t.fragment[o]=l;break;default:throw Error(s)}}return t}var p=i(3617);let g="(?:var<\\s*(uniform|storage(?:\\s*,\\s*[A-Za-z_][A-Za-z0-9_]*)?)\\s*>|var)\\s+([A-Za-z_][A-Za-z0-9_]*)",m=[RegExp(`@binding\\(\\s*(auto|\\d+)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${g}`,"g"),RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto|\\d+)\\s*\\)\\s*${g}`,"g")],b=[RegExp(`@binding\\(\\s*(auto|\\d+)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${g}`,"g"),RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto|\\d+)\\s*\\)\\s*${g}`,"g")],v=[RegExp(`@binding\\(\\s*(\\d+)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${g}`,"g"),RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(\\d+)\\s*\\)\\s*${g}`,"g")],y=[RegExp(`@binding\\(\\s*(auto)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${g}`,"g"),RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto)\\s*\\)\\s*${g}`,"g"),RegExp(`@binding\\(\\s*(auto)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)(?:[\\s\\n\\r]*@[A-Za-z_][^\\n\\r]*)*[\\s\\n\\r]*${g}`,"g"),RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto)\\s*\\)(?:[\\s\\n\\r]*@[A-Za-z_][^\\n\\r]*)*[\\s\\n\\r]*${g}`,"g")];function _(e){let t=e.split(""),i=0,r=0,n=!1,s=!1,a=!1;for(;i<e.length;){let o=e[i],l=e[i+1];if(s){a?a=!1:"\\"===o?a=!0:'"'===o&&(s=!1),i++;continue}if(n){"\n"===o||"\r"===o?n=!1:t[i]=" ",i++;continue}if(r>0){if("/"===o&&"*"===l){t[i]=" ",t[i+1]=" ",r++,i+=2;continue}if("*"===o&&"/"===l){t[i]=" ",t[i+1]=" ",r--,i+=2;continue}"\n"!==o&&"\r"!==o&&(t[i]=" "),i++;continue}if('"'===o){s=!0,i++;continue}if("/"===o&&"/"===l){t[i]=" ",t[i+1]=" ",n=!0,i+=2;continue}if("/"===o&&"*"===l){t[i]=" ",t[i+1]=" ",r=1,i+=2;continue}i++}return t.join("")}function w(e,t){let i=_(e),r=[];for(let n of t){let s;for(n.lastIndex=0,s=n.exec(i);s;){let a=n===t[0],o=s.index,l=s[0].length;r.push({match:e.slice(o,o+l),index:o,length:l,bindingToken:s[a?1:2],groupToken:s[a?2:1],accessDeclaration:s[3]?.trim(),name:s[4]}),s=n.exec(i)}}return r.sort((e,t)=>e.index-t.index)}function x(e,t,i){let r=w(e,t);if(!r.length)return e;let n="",s=0;for(let t of r)n+=e.slice(s,t.index),n+=i(t),s=t.index+t.length;return n+e.slice(s)}function E(e){return/@binding\(\s*auto\s*\)/.test(_(e))}let S=[RegExp(`@binding\\(\\s*(\\d+)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${g}\\s*:\\s*([^;]+);`,"g"),RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(\\d+)\\s*\\)\\s*${g}\\s*:\\s*([^;]+);`,"g")];function P(e,t=[]){let i=_(e),r=new Map;for(let e of t)r.set(C(e.name,e.group,e.location),e.moduleName);let n=[];for(let e of S){let t;for(e.lastIndex=0,t=e.exec(i);t;){let s=e===S[0],a=Number(t[s?1:2]),o=Number(t[s?2:1]),l=t[3]?.trim(),u=t[4],c=t[5].trim(),h=r.get(C(u,o,a));n.push(function(e){var t;let i={name:e.name,group:e.group,binding:e.binding,owner:e.owner,kind:"unknown",moduleName:e.moduleName,resourceType:e.resourceType};if(e.accessDeclaration){let t=e.accessDeclaration.split(",").map(e=>e.trim());if("uniform"===t[0])return{...i,kind:"uniform",access:"uniform"};if("storage"===t[0]){let e=t[1]||"read_write";return{...i,kind:"read"===e?"read-only-storage":"storage",access:e}}}return"sampler"===e.resourceType||"sampler_comparison"===e.resourceType?{...i,kind:"sampler",samplerKind:"sampler_comparison"===e.resourceType?"comparison":"filtering"}:e.resourceType.startsWith("texture_storage_")?{...i,kind:"storage-texture",access:function(e){let t=/,\s*([A-Za-z_][A-Za-z0-9_]*)\s*>$/.exec(e);return t?.[1]}(e.resourceType),viewDimension:T(e.resourceType)}:e.resourceType.startsWith("texture_")?{...i,kind:"texture",viewDimension:T(e.resourceType),sampleType:(t=e.resourceType).startsWith("texture_depth_")?"depth":t.includes("<i32>")?"sint":t.includes("<u32>")?"uint":t.includes("<f32>")?"float":void 0,multisampled:e.resourceType.startsWith("texture_multisampled_")}:i}({name:u,group:o,binding:a,owner:h?"module":"application",moduleName:h,accessDeclaration:l,resourceType:c})),t=e.exec(i)}}return n.sort((e,t)=>
2965e.group!==t.group?e.group-t.group:e.binding!==t.binding?e.binding-t.binding:e.name.localeCompare(t.name))}function C(e,t,i){return`${t}:${i}:${e}`}function T(e){return e.includes("cube_array")?"cube-array":e.includes("2d_array")?"2d-array":e.includes("cube")?"cube":e.includes("3d")?"3d":e.includes("2d")?"2d":e.includes("1d")?"1d":void 0}function A(e,t={}){let i=M(e),r=function(e){let t=[],i=0;for(let r of e){if("}"===r.value&&0===i)return null;t.push(i),"{"===r.value?i++:"}"===r.value&&i--}return 0===i?t:null}(i);if(!r)return null;let n=function(e,t){let i=new Map;for(let r=0;r<e.length;r++){if(0!==t[r]||"alias"!==e[r].value)continue;let n=e[r+1]?.value;if(!z(n)||e[r+2]?.value!=="="||i.has(n))return null;let s=D(e,t,r+3,";");if(s<0||s===r+3)return null;i.set(n,$(e.slice(r+3,s))),r=s}return i}(i,r);if(!n)return null;let s=function(e,t,i){let r=[],n=new Set,s=new Set;for(let a=0;a<e.length;a++){if(0!==t[a]||"var"!==e[a].value)continue;let o=F(e,t,a),l=e.slice(o,a),u=k(l,"group"),c=k(l,"binding");if(null===u||null===c||void 0===u!=(void 0===c))return null;if(void 0===u||void 0===c)continue;let h=a+1,d=[];if(e[h]?.value==="<"){let t=R(e,h,"<",">");if(t<0)return null;let i=B(e.slice(h+1,t),",");if(!i)return null;d=i.map($),h=t+1}let f=e[h]?.value;if(!z(f)||e[h+1]?.value!==":")return null;let p=D(e,t,h+2,";");if(p<0||p===h+2)return null;let g=L($(e.slice(h+2,p)),i);if(!g)return null;let m=function(e){let{name:t,group:i,location:r,addressSpace:n,resourceType:s}=e,a={name:t,group:i,location:r};if("uniform"===n[0]&&1===n.length)return{...a,type:"uniform"};if("storage"===n[0]&&n.length<=2){let e=n[1]||"read";return"read"===e?{...a,type:"read-only-storage"}:"read_write"===e?{...a,type:"storage"}:null}return n.length>0?null:"sampler"===s||"sampler_comparison"===s?{...a,type:"sampler",..."sampler_comparison"===s?{samplerType:"comparison"}:{}}:"texture_external"===s?{...a,type:"external-texture"}:function(e,t){let i=/^texture_storage_(1d|2d|2d_array|3d)<([A-Za-z0-9_]+),(read|write|read_write)>$/.exec(t);if(!i)return null;let r={read:"read-only",write:"write-only",read_write:"read-write"}[i[3]];return{...e,type:"storage",format:i[2],access:r,viewDimension:O(i[1])}}(a,s)||function(e,t){let i=/^texture_(multisampled_)?(1d|2d|2d_array|cube|cube_array|3d)<(f32|i32|u32)>$/.exec(t);if(i){if(i[1]&&"2d"!==i[2])return null;let t={f32:"float",i32:"sint",u32:"uint"}[i[3]];return{...e,type:"texture",viewDimension:O(i[2]),sampleType:t,multisampled:!!i[1]}}let r=/^texture_depth_(multisampled_)?(2d|2d_array|cube|cube_array)$/.exec(t);return!r||r[1]&&"2d"!==r[2]?null:{...e,type:"texture",viewDimension:O(r[2]),sampleType:"depth",multisampled:!!r[1]}}(a,s)}({name:f,group:u,location:c,addressSpace:d,resourceType:g}),b=`${u}:${c}`;if(!m||n.has(b)||s.has(f))return null;r.push(m),n.add(b),s.add(f),a=p}return function(e){for(let t of e){if("sampler"!==t.type||t.samplerType||!t.name.endsWith("Sampler"))continue;let i=t.name.slice(0,-7),r=e.find(e=>"texture"===e.type&&e.name===i&&e.group===t.group);r?.sampleType==="depth"&&(t.samplerType="non-filtering")}}(r),r.sort((e,t)=>e.group-t.group||e.location-t.location||e.name.localeCompare(t.name))}(i,r,n);if(!s)return null;if(!1===t.scanVertexAttributes)return{attributes:[],bindings:s};let a=function(e,t){let i=new Map;for(let r=0;r<e.length;r++){if(0!==t[r]||"struct"!==e[r].value)continue;let n=e[r+1]?.value,s=r+2;if(!z(n)||i.has(n)||e[s]?.value!=="{")return null;let a=R(e,s,"{","}");if(a<0)return null;i.set(n,e.slice(s+1,a)),r=a}return i}(i,r);if(!a)return null;let o=function(e,t,i,r,n){let s=function(e,t){let i=[],r=new Set;for(let n=0;n<e.length;n++){if(0!==t[n]||"fn"!==e[n].value)continue;let s=e[n+1]?.value,a=n+2;if(!z(s)||r.has(s)||e[a]?.value!=="(")return null;let o=R(e,a,"(",")");if(o<0)return null;let l=F(e,t,n);i.push({name:s,vertex:I(e.slice(l,n),"vertex"),parameters:e.slice(a+1,o)}),r.add(s),n=o}return i}(e,t);if(!s)return null;let a=s.filter(e=>e.vertex),o=n?a.find(e=>e.name===n):1===a.length?a[0]:void 0;if(!o)return 0!==a.length||n?null:[];let l=B(o.parameters,",");if(!l)return null;let u=[],c=new Set,h=new Set,d=new Set;for(let e of l)if(e.length>0&&!function e(t){let{declaration:i,aliases:r,structures:n,attributes:s,attributeLocations:a,attributeNames:o,visitedStructures:l}=t,u=function(e,t){let i=B(e,":");return i&&2===i.length?i[0].length:-1}(i,":");if(u<1||u===i.length-1)return!1;let c=function(e){for(let t=e.length-1;t>=0;t--)if(z(e[t].value))return e[t].value;return null}(i.slice(0,u)),h=k(i.slice(0,u),"location"),d=I(i.slice(0,u),"builtin"),f=L($(i.slice(u+1)),r);if(!c||null===h||!f||void 0!==h&&d)return!1;if(void 0!==h){var p;let e=(p=f,/^(?:i32|u32|f32|f16|vec[234]<(?:i32|u32|f32|f16)>)$/.test(p)?p:null);return!(!e||a.has(h)||o.has(c))&&(s.push({name:c,location:h,type:e}),a.add(h),o.add(c),!0)}if(d)return!0;let g=n.get(f);if(!g||l.has(f))return!1;let m=B(g,",");if(!m)return!1;for(let i of(l.add(f),m))if(i.length>0&&!e({...t,declaration:i}))return!1;return l.delete(f),!0}({declaration:e,aliases:i,structures:r,attributes:u,attributeLocations:c,attributeNames:h,visitedStructures:d}))return null;return u.sort((e,t)=>
2965e.location-t.location||e.name.localeCompare(t.name))}(i,r,n,a,t.vertexEntryPoint);return o?{attributes:o,bindings:s}:null}function M(e){let t=_(e),i=/[A-Za-z_][A-Za-z0-9_]*|(?:0[xX][0-9A-Fa-f]+|\d+)|[@(){}<>\[\]:,;=]/g,r=[],n=i.exec(t);for(;n;)r.push({value:n[0],index:n.index}),n=i.exec(t);return r}function L(e,t,i=new Set){let r=M(e),n="";for(let e of r){let r=t.get(e.value);if(!r){n+=function(e){let t=/^(vec[234]|mat[234]x[234])([fiuh])$/.exec(e);if(!t)return e;let i={f:"f32",i:"i32",u:"u32",h:"f16"}[t[2]];return`${t[1]}<${i}>`}(e.value);continue}if(i.has(e.value))return null;let s=new Set(i);s.add(e.value);let a=L(r,t,s);if(!a)return null;n+=a}return n}function k(e,t){let i;for(let r=0;r<e.length;r++)if("@"===e[r].value&&e[r+1]?.value===t){if(void 0!==i||e[r+2]?.value!=="("||!/^\d+$/.test(e[r+3]?.value||"")||e[r+4]?.value!==")")return null;i=Number(e[r+3].value)}return i}function I(e,t){return e.some((i,r)=>"@"===i.value&&e[r+1]?.value===t)}function O(e){return e.replace("_","-")}function R(e,t,i,r){let n=0;for(let s=t;s<e.length;s++)if(e[s].value===i)n++;else if(e[s].value===r&&0==--n)return s;return -1}function B(e,t){let i=[],r=0,n={"(":0,"<":0,"[":0,"{":0},s=Object.keys(n),a={")":"(",">":"<","]":"[","}":"{"};for(let o=0;o<e.length;o++){let l=e[o].value;if(l===t&&s.every(e=>0===n[e])){i.push(e.slice(r,o)),r=o+1;continue}if(l in n)n[l]++;else if(l in a){let e=a[l];if(n[e]--,n[e]<0)return null}}return s.every(e=>0===n[e])?(i.push(e.slice(r)),i):null}function D(e,t,i,r){for(let n=i;n<e.length;n++)if(0===t[n]&&e[n].value===r)return n;return -1}function F(e,t,i){for(let r=i-1;r>=0;r--)if(";"===e[r].value&&0===t[r]||"}"===e[r].value&&1===t[r])return r+1;return 0}function $(e){return e.map(e=>e.value).join("")}function z(e){return!!(e&&/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))}let N="([a-zA-Z_][a-zA-Z0-9_]*)",j=/^\s*\#\s*if\s+(.+?)\s*(?:\/\/.*)?$/,U=RegExp(`^\\s*\\#\\s*ifdef\\s*${N}\\s*$`),V=RegExp(`^\\s*\\#\\s*ifndef\\s*${N}\\s*(?:\\/\\/.*)?$`),W=/^\s*\#\s*else\s*(?:\/\/.*)?$/,G=/^\s*\#\s*endif\s*$/,H=RegExp(`^\\s*\\#\\s*ifdef\\s*${N}\\s*(?:\\/\\/.*)?$`),q=/^\s*\#\s*endif\s*(?:\/\/.*)?$/;function Y(e,t){let i=e.split("\n"),r=[],n=[],s=!0;for(let e of i){let i=e.match(j),a=e.match(H)||e.match(U),o=e.match(V),l=e.match(W),u=e.match(q)||e.match(G);if(i){let e=function(e,t){let i=e.trim();if(/^[+-]?\d+(?:\.\d+)?$/.test(i))return 0!==Number(i);if("true"===i)return!0;if("false"===i)return!1;let r=i.match(RegExp(`^!\\s*${N}$`));if(r)return!t[r[1]];let n=i.match(RegExp(`^${N}$`));if(n)return!!t[n[1]];let s=i.match(RegExp(`^defined\\s*\\(\\s*${N}\\s*\\)$`));if(s)return void 0!==t[s[1]];let a=i.match(RegExp(`^!\\s*defined\\s*\\(\\s*${N}\\s*\\)$`));if(a)return void 0===t[a[1]];throw Error(`Unsupported #if expression "${e}"`)}(i[1],t?.defines||{}),r=s&&e;n.push({parentActive:s,branchTaken:e,active:r}),s=r}else if(a||o){let e=(a||o)?.[1],i=!!t?.defines?.[e],r=a?i:!i,l=s&&r;n.push({parentActive:s,branchTaken:r,active:l}),s=l}else if(l){let e=n[n.length-1];if(!e)throw Error("Encountered #else without matching #if, #ifdef or #ifndef");e.active=e.parentActive&&!e.branchTaken,e.branchTaken=!0,s=e.active}else u?(n.pop(),s=!n.length||n[n.length-1].active):s&&r.push(e)}if(n.length>0)throw Error("Unterminated conditional block in shader source");return r.join("\n")}var Z=i(37148);function K(e){let{primitiveType:t,components:i}=Z.Co.getAttributeShaderTypeInfo(e),r="i32"===t?"int":"u32"===t?"uint":"float";return 1===i?r:`${"int"===r?"i":"uint"===r?"u":""}vec${i}`}function X(e){let t=[],i=/@location\s*\(\s*(\d+)\s*\)/g,r=i.exec(e);for(;r;)t.push(Number(r[1])),r=i.exec(e);return t}function Q(e){let t=[],i=/(?:^|,)\s*(?:@[A-Za-z_][\w]*(?:\([^)]*\))?\s*)*([A-Za-z_][\w]*)\s*:/gm,r=i.exec(e);for(;r;)t.push(r[1]),r=i.exec(e);return t}function J(e,t,i,r){let n=0,s=0,a=!1;for(let o=t;o<e.length;o++){let t=e[o],l=e[o+1];if(a){"\n"===t&&(a=!1);continue}if(s>0){"/"===t&&"*"===l?(s++,o++):"*"===t&&"/"===l&&(s--,o++);continue}if("/"===t&&"/"===l){a=!0,o++;continue}if("/"===t&&"*"===l){s=1,o++;continue}if(t===i&&n++,t===r&&0==--n)return o}return -1}function ee(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function et(e,t,i){let r=RegExp(`\\bfn\\s+${el(t)}
2965\\s*\\(`,"g").exec(e);if(!r)throw Error(`ShaderPlugin varyings require WGSL ${i} entry point "${t}"`);let n=e.indexOf("(",r.index),s=eo(e,n,"(",")"),a=e.indexOf("{",s),o=eo(e,a,"{","}");if(s<0||a<0||o<0)throw Error(`Unable to parse WGSL ${i} entry point "${t}"`);return{openParenthesis:n,closeParenthesis:s,openBrace:a,closeBrace:o,parameters:e.slice(n+1,s)}}function ei(e,t){let i=er(e,t);if(!i)throw Error(`Unable to find WGSL stage I/O struct "${t}"`);return i}function er(e,t){let i=RegExp(`\\bstruct\\s+${el(t)}\\s*\\{`,"g").exec(e);if(!i)return null;let r=e.indexOf("{",i.index),n=eo(e,r,"{","}");return n<0?null:{openBrace:r,closeBrace:n,body:e.slice(r+1,n)}}function en(e,t,i){let r=t;if("/"===e[r]&&"/"===e[r+1]){let t=e.indexOf("\n",r+2);return t<0||t>i?i:t+1}if("/"===e[r]&&"*"===e[r+1]){let t=1;for(r+=2;r<i&&t>0;)"/"===e[r]&&"*"===e[r+1]?(t++,r+=2):"*"===e[r]&&"/"===e[r+1]?(t--,r+=2):r++}return r}function es(e){let t=[],i=/@location\s*\(\s*(\d+)\s*\)/g,r=i.exec(e);for(;r;)t.push(Number(r[1])),r=i.exec(e);return t}function ea(e){let t=[],i=/(?:^|,)\s*(?:@[A-Za-z_][\w]*(?:\([^)]*\))?\s*)*([A-Za-z_][\w]*)\s*:/gm,r=i.exec(e);for(;r;)t.push(r[1]),r=i.exec(e);return t}function eo(e,t,i,r){let n=0,s=0,a=!1;for(let o=t;o<e.length;o++){let t=e[o],l=e[o+1];if(a){"\n"===t&&(a=!1);continue}if(s>0){"/"===t&&"*"===l?(s++,o++):"*"===t&&"/"===l&&(s--,o++);continue}if("/"===t&&"/"===l){a=!0,o++;continue}if("/"===t&&"*"===l){s=1,o++;continue}if(t===i&&n++,t===r&&0==--n)return o}return -1}function el(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}let eu=`
2966
2967${s.O_}
2968`,ec=`\
2969precision highp float;
2970`;function eh(e,t){let{source:i,stage:n,language:a="glsl",modules:c,defines:g={},hookFunctions:m=[],inject:b={},pluginInjections:v={},pluginVertexInputs:y={},pluginVaryings:_={},prologue:w=!0,log:x}=t;(0,p.v)("string"==typeof i,"shader source must be a string");let E="glsl"===a?({name:function(e,t="unnamed"){let i=/#define[^\S\r\n]*SHADER_NAME[^\S\r\n]*([A-Za-z0-9_-]+)\s*/.exec(e);return i?i[1]:t}(i,void 0),language:"glsl",version:function(e){let t=100,i=e.match(/[^\s]+/g);if(i&&i.length>=2&&"#version"===i[0]){let e=parseInt(i[1],10);Number.isFinite(e)&&(t=e)}if(100!==t&&300!==t)throw Error(`Invalid GLSL version ${t}`);return t}(i)}).version:-1,S=e.shaderLanguageVersion,P=100===E?"#version 100":"#version 300 es",C=i.split("\n").slice(1).join("\n"),T={};
2970c.forEach(e=>{Object.assign(T,e.defines)}),Object.assign(T,g);let A="";switch(a){case"wgsl":break;case"glsl":A=w?`\
2971${P}
2972
2973// ----- PROLOGUE -------------------------
2974#define SHADER_TYPE_${n.toUpperCase()}
2975
2976${function(e){switch(e?.gpu.toLowerCase()){case"apple":return`\
2977#define APPLE_GPU
2978// Apple optimizes away the calculation necessary for emulated fp64
2979#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
2980#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
2981// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
2982#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
2983`;case"nvidia":return`\
2984#define NVIDIA_GPU
2985// Nvidia optimizes away the calculation necessary for emulated fp64
2986#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
2987`;case"intel":return`\
2988#define INTEL_GPU
2989// Intel optimizes away the calculation necessary for emulated fp64
2990#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
2991// Intel's built-in 'tan' function doesn't have acceptable precision
2992#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
2993// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
2994#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
2995`;case"amd":return`\
2996#define AMD_GPU
2997`;default:return`\
2998#define DEFAULT_GPU
2999// Prevent driver from optimizing away the calculation necessary for emulated fp64
3000#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
3001// Headless Chrome's software shader 'tan' function doesn't have acceptable precision
3002#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
3003// If the GPU doesn't have full 32 bits precision, will causes overflow
3004#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
3005`}}(e)}
3006${"fragment"===n?ec:""}
3007
3008// ----- APPLICATION DEFINES -------------------------
3009
3010${function(e={}){let t="";for(let i in e){let r=e[i];(r||Number.isFinite(r))&&(t+=`#define ${i.toUpperCase()} ${e[i]}
3011`)}return t}(T)}
3012
3013`:`${P}
3014`}let M=f(m),L={},k={},I={};for(let e in ef(v,L,k,I),b){let t="string"==typeof b[e]?{injection:b[e],order:0}:b[e],i=/^(v|f)s:(#)?([\w-]+)$/.exec(e);if(i){let r=i[2],n=i[3];r?"decl"===n?k[e]=[t]:I[e]=[t]:L[e]=[t]}else I[e]=[t]}if("vertex"===n){let e=function(e,t){let i=[];for(let[r,n]of Object.entries(t))(function(e,t){let i=ee(t);if(RegExp(`\\b(?:in|attribute)\\s+(?:(?:lowp|mediump|highp)\\s+)?[A-Za-z_][A-Za-z0-9_]*\\s+${i}\\s*(?:\\[|;)`).test(e))throw Error(`ShaderPlugin vertex input "${t}" conflicts with an existing GLSL input`)})(e,r),i.push(`in ${K(n)} ${r};`);return i.join("\n")}(C,y);e&&(k["vs:#decl"]=k["vs:#decl"]||[],k["vs:#decl"].push({injection:e,order:Number.MIN_SAFE_INTEGER}))}let O=function(e,t,i){let r=[],n=[];for(let[o,l]of Object.entries(i)){var s=e,a=o;if(RegExp(`\\b(?:flat\\s+|smooth\\s+)?(?:in|out|varying)\\s+(?:(?:lowp|mediump|highp)\\s+)?[A-Za-z_][A-Za-z0-9_]*\\s+${el(a)}\\s*(?:\\[|;)`).test(s))throw Error(`ShaderPlugin varying "${a}" conflicts with existing GLSL stage I/O`);let i="flat"===l.interpolation?"flat ":"",u="vertex"===t?"out":"in";r.push(`${i}${u} ${K(l.type)} ${o};`),"vertex"===t&&n.push(`${o} = ${function(e){let{primitiveType:t,components:i}=Z.Co.getAttributeShaderTypeInfo(e),r="u32"===t?"0u":"i32"===t?"0":"0.0";return 1===i?r:`${K(e)}(${r})`}(l.type)};`)}return{declarations:r.join("\n"),initialization:n.join("\n")}}(C,n,_);if(O.declarations){let e="vertex"===n?"vs:#decl":"fs:#decl";k[e]=k[e]||[],k[e].push({injection:O.declarations,order:Number.MIN_SAFE_INTEGER})}for(let e of(O.initialization&&(I["vs:#main-start"]=I["vs:#main-start"]||[],I["vs:#main-start"].push({injection:O.initialization,order:Number.MIN_SAFE_INTEGER})),c)){x&&(0,r.ZG)(e,C,x),A+=ep(e,n,x);let t=e.instance?.normalizedInjections[n]||{};for(let e in t){let i=/^(v|f)s:#([\w-]+)$/.exec(e);if(i){let r="decl"===i[2]?k:I;r[e]=r[e]||[],r[e].push(t[e])}else L[e]=L[e]||[],L[e].push(t[e])}}return A+="// ----- MAIN SHADER SOURCE -------------------------",A+=eu,A=(0,s.bv)(A,n,k)+d(M[n],L)+C,A=(0,s.bv)(A,n,I),"glsl"===a&&E!==S&&(A=function(e,t){if(300!==Number(e.match(/^#version[ \t]+(\d+)/m)?.[1]||100))throw Error("luma.gl v9 only supports GLSL 3.00 shader sources");switch(t){case"vertex":return u(e,o);case"fragment":return u(e,l);default:throw Error(t)}}(A,n)),"glsl"===a&&(0,h.N1)(A,n,x),A.trim()}function ed(e){return function(t){let i={};for(let r of e){let e=r.getUniforms?.(t,i);Object.assign(i,e)}return i}}function ef(e,t,i,r){for(let n in e){let s=/^(v|f)s:(#)?([\w-]+)$/.exec(n);if(s){let a=s[2],o=s[3],l=a?"decl"===o?i:r:t;l[n]=l[n]||[],l[n].push(...e[n])}else r[n]=r[n]||[],r[n].push(...e[n])}}function ep(e,t,i){let r;switch(t){case"vertex":r=e.vs||"";break;case"fragment":r=e.fs||"";break;case"wgsl":r=e.source||"";break;default:(0,p.v)(!1)}if(!e.name)throw Error("Shader module must have a name");(0,h.mY)(e,t,{log:i});let n=e.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),s=`\
3015// ----- MODULE ${e.name} ---------------
3016
3017`;return"wgsl"!==t&&(s+=`#define MODULE_${n}
3018`),s+=`${r}
3019`}function eg(e,t,i){if(0===e&&t>=100)throw Error(`Application binding "${i}" in group 0 uses reserved binding ${t}. Application-owned explicit group-0 bindings must stay below 100.`)}function em(e,t,i,r){if(0===t&&i<100)throw Error(`Module "${e}" binding "${r}" in group 0 uses reserved application binding ${i}. Module-owned explicit group-0 bindings must be 100 or higher.`)}function eb(e,t,i,r){let n=e.get(t)||new Set;if(n.has(i))throw Error(`Duplicate WGSL binding assignment for ${r}: group ${t}, binding ${i}.`);n.add(i),e.set(t,n)}function ev(e,t,i){return`${e}:${t}:${i}`}class ey{static defaultShaderAssemblers={};_hookFunctions=[];_defaultModules=[];static getDefaultShaderAssembler(e){return((0,p.v)("glsl"===e||"wgsl"===e),"wgsl"===e)?(ey.defaultShaderAssemblers.wgsl=ey.defaultShaderAssemblers.wgsl||new ew,ey.defaultShaderAssemblers.wgsl):(ey.defaultShaderAssemblers.glsl=ey.defaultShaderAssemblers.glsl||new e_,ey.defaultShaderAssemblers.glsl)}addDefaultModule(e){this._defaultModules.find(t=>t.name===("string"==typeof e?e:e.name))||this._defaultModules.push(e)}removeDefaultModule(e){let t="string"==typeof e?e:e.name;this._defaultModules=this._defaultModules.filter(e=>e.name!==t)}addShaderHook(e,t){t&&(e=Object.assign(t,{hook:e})),this._hookFunctions.push(e)}_getModuleList(e=[]){let t=Array(this._defaultModules.length+e.length),i={},n=0;for(let e=0,r=this._defaultModules.length;e<r;++e){let r=this._defaultModules[e],s=r.name;t[n++]=r,i[s]=!0}for(let r=0,s=e.length;r<s;++r){let s=e[r],a=s.name;i[a]||(t[n++]=s,i[a]=!0)}return t.length=n,(0,r.$g)(t),t}}class e_ extends ey{shaderLanguage="glsl";assembleGLSLShaderPair(e){let t=this._getModuleList(e.modules),i=this._hookFunctions;return{...function(e){let{vs:t,fs:i}=e,r=(0,n.$Q)(e.modules||[]);return{vs:eh(e.platformInfo,{...e,source:t,stage:"vertex",modules:r}),fs:eh(e.platformInfo,{...e,source:i,stage:"fragment",modules:r}),getUniforms:ed(r)}}({...e,vs:e.vs,fs:e.fs,modules:t,hookFunctions:i}),modules:t}}}class ew extends ey{shaderLanguage="wgsl";_wgslBindingRegistry=new Map;assembleWGSLShader(e){let t=this._getModuleList(e.modules),i=this._hookFunctions,a=ew.getShaderPreprocessorDefines(e,t),o="wgsl"===e.platformInfo.shaderLanguage&&e.source?Y(e.source,{defines:a}):e.source,{source:l,getUniforms:u,bindingAssignments:c}=function(e){let t=(0,n.$Q)(e.modules||[]),{source:i,bindingAssignments:a}=function(e,t){var i,n,a,o,l,u,c,h,g,_;let{source:S,stage:P,modules:C,defines:T={},hookFunctions:A=[],inject:M={},pluginInjections:L={},pluginVertexInputs:k={},pluginVaryings:I={},vertexEntryPoint:O="vertexMain",fragmentEntryPoint:R="fragmentMain",log:B}=t;(0,p.v)("string"==typeof S,"shader source must be a string");let D=function(e,t,i){let r=Object.entries(i);if(0===r.length)return{source:e,declarations:"",initialization:""};let n=function(e,t){let i=RegExp(`\\bfn\\s+${ee(t)}\\s*\\(`,"g").exec(e);if(!i)throw Error(`ShaderPlugin vertex inputs require WGSL vertex entry point "${t}"`);
3019let r=e.indexOf("(",i.index),n=J(e,r,"(",")");if(n<0)throw Error(`Unable to parse WGSL vertex entry point "${t}" parameters`);return{openParenthesis:r,closeParenthesis:n}}(e,t),s=e.slice(n.openParenthesis+1,n.closeParenthesis),a=function(e,t){let i=X(t),r=new Set(Q(t));for(let n of function(e){let t=[],i=/:\s*([A-Za-z_][\w]*)\b/g,r=i.exec(e);for(;r;)t.push(r[1]),r=i.exec(e);return t}(t)){let t=function(e,t){let i=RegExp(`\\bstruct\\s+${ee(t)}\\s*\\{`,"g").exec(e);if(!i)return null;let r=e.indexOf("{",i.index),n=J(e,r,"{","}");return n<0?null:e.slice(r+1,n)}(e,n);if(null!==t)for(let e of(i.push(...X(t)),Q(t)))r.add(e)}return{locations:i,names:r}}(e,s),o=new Set(a.locations),l=[],u=[],c=[];for(let[t,i]of r){if(a.names.has(t)||function(e,t){let i=ee(t),r=RegExp(`\\b(?:var(?:<[^>]+>)?|let|const)\\s+${i}\\b`,"g"),n=r.exec(e);for(;n;){if(0===function(e,t){let i=0,r=0,n=!1;for(let s=0;s<t;s++){let t=e[s],a=e[s+1];if(n){"\n"===t&&(n=!1);continue}if(r>0){"/"===t&&"*"===a?(r++,s++):"*"===t&&"/"===a&&(r--,s++);continue}"/"===t&&"/"===a?(n=!0,s++):"/"===t&&"*"===a?(r=1,s++):"{"===t?i++:"}"===t&&i--}return i}(e,n.index))return!0;n=r.exec(e)}return!1}(e,t))throw Error(`ShaderPlugin vertex input "${t}" conflicts with an existing WGSL shader input or variable`);let r=function(e){let t=0;for(;e.has(t);)t++;return t}(o);o.add(r);let n=`_luma_${t}`;l.push(`@location(${r}) ${n}: ${i}`),u.push(`var<private> ${t}: ${i};`),c.push(`${t} = ${n};`)}let h=s.trim()?",\n  ":"\n  ",d=s.trim()?"":"\n",f=`${s}${h}${l.join(",\n  ")}${d}`;return{source:e.slice(0,n.openParenthesis+1)+f+e.slice(n.closeParenthesis),declarations:u.join("\n"),initialization:c.join("\n")}}(Y(S,{defines:T}),O,k),F=function(e,t,i,r){let n=Object.entries(r);if(0===n.length)return{source:e,declarations:"",vertexInitialization:"",fragmentInitialization:""};let s=e,a=et(s,t,"vertex"),o=function(e,t){let i=e.slice(t.closeParenthesis+1,t.openBrace),r=/->\s*([A-Za-z_][\w]*)\s*$/.exec(i.trim());if(!r||null===er(e,r[1]))throw Error("ShaderPlugin varyings require the WGSL vertex entry point to return a named struct");return r[1]}(s,a),l=et(s,i,"fragment"),u=function(e,t){let i=[];for(let r of function(e,t){let i=[],r=0,n=0,s=0;for(let t=0;t<e.length;t++){let a=e[t];"("===a&&n++,")"===a&&n--,"<"===a&&s++,">"===a&&s--,","===a&&0===n&&0===s&&(i.push(e.slice(r,t)),r=t+1)}return i.push(e.slice(r)),i}(t.parameters,",")){let t=/(?:@[A-Za-z_][\w]*(?:\([^)]*\))?\s*)*([A-Za-z_][\w]*)\s*:\s*([A-Za-z_][\w]*)\s*$/.exec(r.trim());t&&er(e,t[2])&&i.push({name:t[1],type:t[2]})}if(1!==i.length)throw Error(`ShaderPlugin varyings require exactly one named WGSL fragment input struct; found ${i.length}`);return i[0]}(s,l),c=ei(s,o),h=ei(s,u.type),d=new Set([...ea(a.parameters),...ea(c.body),...ea(l.parameters),...ea(h.body)]),f=new Set([...es(c.body),...es(h.body)]),p=[],g=[],m=[],b=[];for(let[e,t]of n){if(d.has(e)||function(e,t){let i=RegExp(`\\b(?:var(?:<[^>]+>)?|let|const)\\s+${el(t)}\\b`,"g"),r=i.exec(e);for(;r;){if(0===function(e,t){let i=0;for(let r=0;r<t;r++){let n=en(e,r,t);if(n!==r){r=n-1;continue}"{"===e[r]&&i++,"}"===e[r]&&i--}return i}(e,r.index))return!0;r=i.exec(e)}return!1}(s,e))throw Error(`ShaderPlugin varying "${e}" conflicts with existing WGSL stage I/O or a module variable`);let i=function(e){let t=0;for(;e.has(t);)t++;return t}(f);f.add(i);let r="flat"===t.interpolation?" @interpolate(flat)":"";p.push(`  @location(${i})${r} ${e}: ${t.type},`),g.push(`var<private> ${e}: ${t.type};`),m.push(`${e} = ${function(e){let{primitiveType:t,components:i}=Z.Co.getAttributeShaderTypeInfo(e),r=`${t}(0)`;return 1===i?r:`${e}(${r})`}(t.type)};`),b.push(`${e} = ${u.name}.${e};`)}for(let e of(function(e,t,i,r){let n=RegExp(`\\b${el(t)}\\s*\\(`,"g"),s=n.exec(e);for(;s;){if(s.index<i||s.index>r)throw Error(`ShaderPlugin varying output struct "${t}" is constructed outside the selected vertex entry point`);s=n.exec(e)}}(s,o,a.openBrace,a.closeBrace),a=et(s=function(e,t,i,r){let n=RegExp(`\\b${el(t)}\\s*\\(`,"g"),s=[],a=n.exec(e);for(;a;){if(a.index>i.openBrace&&a.index<i.closeBrace){let r=e.indexOf("(",a.index),n=eo(e,r,"(",")");if(n<0||n>i.closeBrace)throw Error(`Unable to parse WGSL output constructor "${t}"`);s.push({openParenthesis:r,closeParenthesis:n})}a=n.exec(e)}for(let t of s.sort((e,t)=>
3019t.closeParenthesis-e.closeParenthesis)){let i=e.slice(t.openParenthesis+1,t.closeParenthesis).trim()?", ":"";e=e.slice(0,t.closeParenthesis)+i+r.join(", ")+e.slice(t.closeParenthesis)}return e}(s,o,a,n.map(([e])=>e)),t,"vertex"),s=function(e,t,i){let r=function(e,t,i){let r=[],n=t;for(;n<i;)if(n=en(e,n,i),"return"!==e.slice(n,n+6)||/[A-Za-z0-9_]/.test(e[n+6]||""))n++;else{let t=n+6,s=function(e,t,i){let r=0,n=0;for(let s=t;s<i;s++){let t=en(e,s,i);if(t!==s){s=t-1;continue}let a=e[s];if("("===a&&r++,")"===a&&r--,"["===a&&n++,"]"===a&&n--,";"===a&&0===r&&0===n)return s}return -1}(e,t,i);if(s<0)throw Error("Unable to parse WGSL return statement in selected vertex entry point");r.push({start:n,expressionStart:t,semicolon:s}),n=s+1}return r}(e,t.openBrace+1,t.closeBrace);for(let t=r.length-1;t>=0;t--){let n=r[t],s=e.slice(n.expressionStart,n.semicolon).trim();if(!s)throw Error("ShaderPlugin varying vertex entry point cannot use an empty return");let a=`_luma_vertexOutput${t}`,o=i.map(e=>`${a}.${e} = ${e};`).join("\n"),l=`{
3020var ${a} = ${s};
3021${o}
3022return ${a};
3023}`;e=e.slice(0,n.start)+l+e.slice(n.semicolon+1)}return e}(s,a,n.map(([e])=>e)),(o===u.type?[o]:[o,u.type]).map(e=>ei(s,e).closeBrace).sort((e,t)=>t-e)))s=s.slice(0,e)+`${p.join("\n")}
3024`+s.slice(e);if(l=et(s,i,"fragment"),!RegExp(`\\b${el(u.name)}
3024\\s*:`).test(l.parameters))throw Error(`Unable to preserve WGSL fragment input "${u.name}"`);return{source:s,declarations:g.join("\n"),vertexInitialization:m.join("\n"),fragmentInitialization:b.join("\n")}}(D.source,O,R,I),$=F.source,z="",N=f(A),j={},U={},V={};for(let e in ef(L,j,U,V),M){let t="string"==typeof M[e]?{injection:M[e],order:0}:M[e],i=/^(v|f)s:(#)?([\w-]+)$/.exec(e);if(i){let r=i[2],n=i[3];r?"decl"===n?U[e]=[t]:V[e]=[t]:j[e]=[t]}else V[e]=[t]}i=D.declarations,n=D.initialization,a=U,o=V,i&&(a["vs:#decl"]=a["vs:#decl"]||[],a["vs:#decl"].push({injection:i,order:Number.MIN_SAFE_INTEGER})),n&&(o["vs:#main-start"]=o["vs:#main-start"]||[],o["vs:#main-start"].push({injection:n,order:Number.MIN_SAFE_INTEGER})),l=F,u=U,c=V,l.declarations&&(u["vs:#decl"]=u["vs:#decl"]||[],u["vs:#decl"].push({injection:l.declarations,order:Number.MIN_SAFE_INTEGER})),l.vertexInitialization&&(c["vs:#main-start"]=c["vs:#main-start"]||[],c["vs:#main-start"].push({injection:l.vertexInitialization,order:Number.MIN_SAFE_INTEGER})),l.fragmentInitialization&&(c["fs:#main-start"]=c["fs:#main-start"]||[],c["fs:#main-start"].push({injection:l.fragmentInitialization,order:Number.MIN_SAFE_INTEGER}));let W=function(e){let t=w(e,b),i=new Map;for(let e of t){if("auto"===e.bindingToken)continue;let t=Number(e.bindingToken),r=Number(e.groupToken);eg(r,t,e.name),eb(i,r,t,`application binding "${e.name}"`)}let r={sawSupportedBindingDeclaration:t.length>0},n=x(e,b,e=>(function(e,t,i){let{match:r,bindingToken:n,groupToken:s,name:a}=e,o=Number(s);if("auto"===n){let e=function(e,t){let i=t.get(e)||new Set,r=0;for(;i.has(r);)r++;return r}(o,t);return eg(o,e,a),eb(t,o,e,`application binding "${a}"`),r.replace(/@binding\(\s*auto\s*\)/,`@binding(${e})`)}return i.sawSupportedBindingDeclaration=!0,r})(e,i,r));if(E(e)&&!r.sawSupportedBindingDeclaration)throw Error('Unsupported @binding(auto) declaration form in application WGSL. Use adjacent "@group(N)" and "@binding(auto)" decorators followed by a bindable "var" declaration.');return{source:n}}($),G=function(e){let t=new Map;for(let i of w(e,v)){let e=Number(i.bindingToken),r=Number(i.groupToken);eg(r,e,i.name),eb(t,r,e,`application binding "${i.name}"`)}return t}(W.source),H=function(e,t,i,r){let n=new Map;if(!t)return n;for(let s of e)for(let e of function(e,t){let i=[];for(let r of w(Y(e.source||"",{defines:t}),m))i.push({name:r.name,group:Number(r.groupToken)});return i}(s,r)){let r=ev(e.group,s.name,e.name),a=t.get(r);if(void 0!==a){let t=n.get(e.group)||new Map,s=t.get(a);if(s&&s!==r)throw Error(`Duplicate WGSL binding reservation for modules "${s}" and "${r}": group ${e.group}, binding ${a}.`);eb(i,e.group,a,`registered module binding "${r}"`),t.set(a,r),n.set(e.group,t)}}return n}(C,t._bindingRegistry,G,T),q=[];for(let e of C){B&&(0,r.ZG)(e,$,B);let i=function(e,t,i){let r=[],n={sawSupportedBindingDeclaration:w(e,m).length>0,nextHintedBindingLocation:"number"==typeof t.firstBindingSlot?t.firstBindingSlot:null},s=x(e,m,e=>(function(e,t){let{module:i,context:r,bindingAssignments:n,relocationState:s}=t,{match:a,bindingToken:o,groupToken:l,name:u}=e,c=Number(l);if("auto"===o){let e=ev(c,i.name,u),t=r.bindingRegistry?.get(e),o=void 0!==t?t:function(e,t,i,r,n){let s=t.get(e)||new Set,a=new Set,o=`${e}:`,l=`${o}${i}:`;for(let[e,t]of n||[])e.startsWith(l)&&a.add(t);let u=r??(0===e?100:s.size>0?Math.max(...s)+1:0);for(;s.has(u)||a.has(u);)u++;for(let[e,t]of n||[])t===u&&e.startsWith(o)&&n?.delete(e);return u}(c,r.usedBindingsByGroup,i.name,s.nextHintedBindingLocation??void 0,r.bindingRegistry);return(em(i.name,c,o,u),void 0!==t&&function(e,t,i,r){let n=e.get(t);if(!n)return!1;let s=n.get(i);if(!s)return!1;if(s!==r)throw Error(`Registered module binding "${r}" collided with "${s}": group ${t}, binding ${i}.`);return!0}(r.reservedBindingKeysByGroup,c,o,e))?n.push({moduleName:i.name,name:u,group:c,location:o}):(eb(r.usedBindingsByGroup,c,o,`module "${i.name}" binding "${u}"`),r.bindingRegistry?.set(e,o),n.push({moduleName:i.name,name:u,group:c,location:o}),null!==s.nextHintedBindingLocation&&void 0===t&&(s.nextHintedBindingLocation=o+1)),a.replace(/@binding\(\s*auto\s*\)/,`@binding(${o})`)}let h=Number(o);return em(i.name,c,h,u),eb(r.usedBindingsByGroup,c,h,`module "${i.name}" binding "${u}"`),n.push({moduleName:i.name,name:u,group:c,location:h}),a})(e,{module:t,context:i,bindingAssignments:r,relocationState:n}));if(E(e)&&!n.sawSupportedBindingDeclaration)throw Error(`Unsupported @binding(auto) declaration form in module "${t.name}". Use adjacent "@group(N)" and "@binding(auto)" decorators followed by a bindable "var" declaration.`);return{source:s,bindingAssignments:r}}(Y(ep(e,"wgsl",B),{defines:T}),e,{usedBindingsByGroup:G,bindingRegistry:t._bindingRegistry,reservedBindingKeysByGroup:H});q.push(...i.bindingAssignments),z+=i.source;let n=(h=e,{...h.instance?.normalizedInjections.vertex||{},...h.instance?.normalizedInjections.fragment||{}});for(let e in n){let t=/^(v|f)s:#([\w-]+)$/.exec(e);if(t){let i="decl"===t[2]?U:V;i[e]=i[e]||[],i[e].push(n[e])}else j[e]=j[e]||[],j[e].push(n[e])}}return z+=eu,z=(0,s.bv)(z,P,function(e){let t=[...e["vs:#decl"]||[],...e["fs:#decl"]||[]];return t.length?{"vs:#decl":t}:{}}(U),!1,"wgsl",{vertex:O,fragment:R})+(g=N,_=j,d(g.vertex,_,"wgsl")+d(g.fragment,_,"wgsl"))+function(e){if(0===e.length)return"";let t="// ----- MODULE WGSL BINDING ASSIGNMENTS ---------------\n";for(let i of e)t+=`// ${i.moduleName}.${i.name} -> @group(${i.group}) @binding(${i.location})
3025`;return t+"\n"}(q)+W.source,function(e){let t=w(e,m==m||m===b?y:m).find(e=>"auto"===e.bindingToken);if(!t)return;let i=function(e,t){let i,r,n=/^\/\/ ----- MODULE ([^\n]+) ---------------$/gm;for(r=n.exec(e);r&&r.index<=t;)i=r[1],r=n.exec(e);return i}(e,t.index);if(i)throw Error(`Unresolved @binding(auto) for module "${i}" binding "${t.name}" remained in assembled WGSL source.`);if(function(e,t){let i=e.indexOf(eu);return!(i>=0)||t>i}(e,t.index))throw Error(`Unresolved @binding(auto) for application binding "${t.name}" remained in assembled WGSL source.`);throw Error(`Unresolved @binding(auto) remained in assembled WGSL source near "${t.match.replace(/\s+/g," ").trim()}".`)}(z=(0,s.bv)(z,P,V,!1,"wgsl",{vertex:O,fragment:R})),{source:z,bindingAssignments:q}}(e.platformInfo,{...e,source:e.source,stage:"vertex",modules:t});return{source:i,getUniforms:ed(t),bindingAssignments:a,bindingTable:P(i,a),shaderLayout:A(i,{vertexEntryPoint:e.vertexEntryPoint,scanVertexAttributes:e.scanVertexAttributes})}}({...e,source:o,defines:a,_bindingRegistry:this._wgslBindingRegistry,modules:t,hookFunctions:i}),h="wgsl"===e.platformInfo.shaderLanguage?Y(l,{defines:a}):l;return{source:h,getUniforms:u,modules:t,bindingAssignments:c,bindingTable:P(h,c),shaderLayout:A(h,{vertexEntryPoint:e.vertexEntryPoint,scanVertexAttributes:e.scanVertexAttributes})}}static getShaderPreprocessorDefines(e,t){return{...ew.getPlatformPreprocessorDefines(e.platformInfo),...t.reduce((e,t)=>
3025(Object.assign(e,t.defines),e),{}),...e.defines}}static getPlatformPreprocessorDefines(e){let t=e.limits||{};return{LUMA_SUPPORTS_VERTEX_STORAGE_BUFFERS:"webgpu"===e.type&&(t.maxStorageBuffersInVertexStage||0)>0,LUMA_FP32_TAN_PRECISION_WORKAROUND:"webgpu"===e.type&&"nvidia"!==e.gpu.toLowerCase()&&"amd"!==e.gpu.toLowerCase(),LUMA_FP64_INTEGER_ARITHMETIC:"webgpu"===e.type&&"apple"===e.gpu.toLowerCase()}}}},72382:(e,t,i)=>{i.d(t,{p8:()=>r,tb:()=>n});let r=1e-6,n="undefined"!=typeof Float32Array?Float32Array:Array},72868:(e,t,i)=>{i.d(t,{R:()=>r});let r=new(i(45518)).hW({id:"luma.gl"})},73544:(e,t,i)=>{i.d(t,{C:()=>n});var r=i(24486);class n extends r.F{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(e,t){super(e,t,n.defaultProps),this.shaderLayout=t.shaderLayout}static defaultProps={...r.F.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0}}},75659:(e,t,i)=>{i.d(t,{Ef:()=>l,JO:()=>u,Lv:()=>o,TC:()=>a});var r=i(72868),n=i(37148),s=i(47097);function a(e){return e.attributes?e.attributes.map(e=>e.attribute):[e.name]}function o(e){return Object.fromEntries(e.attributes.map(e=>[e.name,e.location]))}function l(e){let t=1/0;for(let i of e)void 0!==i&&(t=Math.min(t,i));return t}function u(e,t,i){var a=t;for(let e of a)(e.attributes&&e.format||!e.attributes&&!e.format)&&r.R.warn(`BufferLayout ${e.name} must have either 'attributes' or 'format' field`)();let o=new Map;for(let e of t){let t=function(e){if("number"==typeof e.byteStride)return e.byteStride;if(e.attributes){let t=0;for(let i of e.attributes)t+=s.E.getVertexFormatInfo(i.format).byteLength;return t}return s.E.getVertexFormatInfo(e.format).byteLength}(e);if(e.attributes)for(let i of e.attributes)o.has(i.attribute)||o.set(i.attribute,{bufferName:e.name,stepMode:e.stepMode,vertexFormat:i.format,byteOffset:i.byteOffset,byteStride:t});else e.format&&!o.has(e.name)&&o.set(e.name,{bufferName:e.name,stepMode:e.stepMode,vertexFormat:e.format,byteOffset:0,byteStride:t})}return e.attributes.map(e=>{let t=o.get(e.name);!t&&i?.warnOnMissingBufferLayout&&r.R.warn(`layout for attribute "${e.name}" not present in buffer layout`)();let a=n.Co.getAttributeShaderTypeInfo(e.type),l=t?.vertexFormat||s.E.getCompatibleVertexFormat(a);return{attributeName:e.name,bufferName:t?.bufferName||e.name,location:e.location,vertexFormat:l,byteOffset:t?.byteOffset??0,byteStride:t?.byteStride??s.E.getVertexFormatInfo(l).byteLength,stepMode:t?.stepMode||e.stepMode||(e.name.startsWith("instance")?"instance":"vertex")}}).sort((e,t)=>e.location-t.location)}},76850:(e,t,i)=>{i.d(t,{B:()=>n}),i(85972);var r=i(87358);function n(){return"object"==typeof r&&"[object process]"===String(r),!0}},79149:(e,t,i)=>{i.d(t,{L:()=>d});var r=i(12253),n=i(47097),s=i(23323);function a(e){return!!(e&&"object"==typeof e&&"struct"===e.type)}function o(e,t){return 1===t?e:`vec${t}<${e}>`}function l(e,t){return Math.ceil(e/t)*t}var u=i(5346);class c{buffer;ownsDataBuffer;constructor(e,t){this.buffer=e,this.ownsDataBuffer=t}get ownsBuffer(){return this.ownsDataBuffer}transferBufferOwnership(e){if(e.buffer!==this.buffer)throw Error("GPUData ownership can only be transferred to the same buffer");e.ownsDataBuffer=this.ownsDataBuffer,this.ownsDataBuffer=!1}destroy(){this.ownsDataBuffer&&(this.buffer.destroy(),this.ownsDataBuffer=!1)}}class h extends c{dataType;format;length;valueLength;stride;byteOffset;byteStride;rowByteLength;readbackMetadata;valueOffsets;nullBitmap;valueByteLength;constructor(e){let t,{buffer:i,format:r,length:c,valueLength:h,stride:d,byteOffset:f=0,byteStride:p,rowByteLength:g,ownsBuffer:m=!1,readbackMetadata:b,valueOffsets:v,nullBitmap:y,valueByteLength:_,dataType:w}=e;super(i,m);let x=a(t=r?"string"==typeof r?r:function(e,t){let i=Object.entries(e);if(0===i.length)throw Error("GPUData struct format must declare at least one field");return"packed"===t?function(e){let t=[],i=0,r=0;for(let[s,a]of e){let e=n.E.getVertexFormatInfo(a);if(e.webglOnly)throw Error(`Packed GPUData struct field "${s}" uses WebGL-only format ${a}`);i=l(i,Math.min(4,e.byteLength)),t.push([s,Object.freeze({format:a,byteOffset:i,byteLength:e.byteLength})]),i+=e.byteLength,r+=e.components}return Object.freeze({type:"struct",layout:"packed",fields:Object.freeze(Object.fromEntries(t)),components:r,byteStride:l(i,4),rowByteLength:i})}(i):function(e){let t=Object.fromEntries(e.map(([e,t])=>[e,function(e){let t=n.E.getVertexFormatInfo(e);switch(t.type){case"float32":return o("f32",t.components);case"sint32":return o("i32",t.components);case"uint32":return o("u32",t.components);default:return o("u32",Math.ceil(t.byteLength/4))}}(t)])),i=(0,s.Pr)(t,{layout:"wgsl-storage"}),r=[],a=0,l=0;for(let[t,s]of e){let e=n.E.getVertexFormatInfo(s),o=4*i.fields[t].offset;r.push([t,Object.freeze({format:s,byteOffset:o,byteLength:e.byteLength})]),a=Math.max(a,o+e.byteLength),l+=e.components}return Object.freeze({type:"struct",layout:"wgsl-storage",fields:Object.freeze(Object.fromEntries(r)),components:l,byteStride:i.byteLength,rowByteLength:a})}(i)}(r,e.layout??"wgsl-storage"):void 0)?t:void 0,E="string"==typeof t?(0,u.Ft)(t):void 0;if(this.dataType=w,this.format=t,this.length=c,this.valueLength=h??c,this.stride=d??E?.components??x?.components??p??g??1,this.byteOffset=f,this.rowByteLength=g??x?.rowByteLength??E?.byteLength??p??this.stride,this.byteStride=p??x?.byteStride??this.rowByteLength,x){if(this.rowByteLength<x.rowByteLength)throw Error(`GPUData rowByteLength ${this.rowByteLength} is smaller than struct format row byte length ${x.rowByteLength}`);if(this.byteStride<Math.max(x.byteStride,this.rowByteLength))throw Error(`GPUData byteStride ${this.byteStride} is smaller than its struct row layout`)}this.readbackMetadata=b,this.valueOffsets=v,this.nullBitmap=y,this.valueByteLength=_}getChild(e){if(!a(this.format))return null;let t=this.format.fields[e];return t?new r.I({buffer:this.buffer,format:t.format,length:this.length,byteOffset:this.byteOffset+t.byteOffset,byteStride:this.byteStride}):null}getChildAt(e){if(!a(this.format))return null;let t=Object.values(this.format.fields)[e];return t?new r.I({buffer:this.buffer,format:t.format,length:this.length,byteOffset:this.byteOffset+t.byteOffset,byteStride:this.byteStride}):null}}let d=h},79265:(e,t,i)=>{i.d(t,{i:()=>r});let r={name:"fp32",source:`\
3026#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
3027const FP32_TWO_PI: f32 = 6.2831854820251465;
3028const FP32_PI_2: f32 = 1.5707963705062866;
3029const FP32_PI_16: f32 = 0.1963495463132858;
3030
3031const FP32_SIN_TABLE_0: f32 = 0.19509032368659973;
3032const FP32_SIN_TABLE_1: f32 = 0.3826834261417389;
3033const FP32_SIN_TABLE_2: f32 = 0.5555702447891235;
3034const FP32_SIN_TABLE_3: f32 = 0.7071067690849304;
3035
3036const FP32_COS_TABLE_0: f32 = 0.9807852506637573;
3037const FP32_COS_TABLE_1: f32 = 0.9238795042037964;
3038const FP32_COS_TABLE_2: f32 = 0.8314695954322815;
3039const FP32_COS_TABLE_3: f32 = 0.7071067690849304;
3040
3041const FP32_INVERSE_FACTORIAL_3: f32 = 1.666666716337204e-01;
3042const FP32_INVERSE_FACTORIAL_5: f32 = 8.333333767950535e-03;
3043const FP32_INVERSE_FACTORIAL_7: f32 = 1.9841270113829523e-04;
3044const FP32_INVERSE_FACTORIAL_9: f32 = 2.75573188446287533e-06;
3045const FP32_OVERFLOW: f32 = 3.402823466e+38;
3046
3047fn sin_taylor_fp32(a: f32) -> f32 {
3048  if (a == 0.0) {
3049    return 0.0;
3050  }
3051
3052  let x = -a * a;
3053  var sum = a;
3054  var term = a;
3055
3056  term = term * x;
3057  sum = sum + term * FP32_INVERSE_FACTORIAL_3;
3058  term = term * x;
3059  sum = sum + term * FP32_INVERSE_FACTORIAL_5;
3060  term = term * x;
3061  sum = sum + term * FP32_INVERSE_FACTORIAL_7;
3062  term = term * x;
3063  sum = sum + term * FP32_INVERSE_FACTORIAL_9;
3064
3065  return sum;
3066}
3067
3068fn tan_taylor_fp32(a: f32) -> f32 {
3069  if (a == 0.0) {
3070    return 0.0;
3071  }
3072
3073  let z = floor(a / FP32_TWO_PI);
3074  let reduced = a - FP32_TWO_PI * z;
3075
3076  var quadrantValue = floor(reduced / FP32_PI_2 + 0.5);
3077  let quadrant = i32(quadrantValue);
3078  if (quadrant < -2 || quadrant > 2) {
3079    return FP32_OVERFLOW;
3080  }
3081
3082  var angle = reduced - FP32_PI_2 * quadrantValue;
3083  quadrantValue = floor(angle / FP32_PI_16 + 0.5);
3084  let tableIndex = i32(quadrantValue);
3085  let absoluteTableIndex = abs(tableIndex);
3086  if (absoluteTableIndex > 4) {
3087    return FP32_OVERFLOW;
3088  }
3089
3090  angle = angle - FP32_PI_16 * quadrantValue;
3091  let sinAngle = sin_taylor_fp32(angle);
3092  let cosAngle = sqrt(1.0 - sinAngle * sinAngle);
3093
3094  var tableCos = 0.0;
3095  var tableSin = 0.0;
3096  if (absoluteTableIndex == 1) {
3097    tableCos = FP32_COS_TABLE_0;
3098    tableSin = FP32_SIN_TABLE_0;
3099  } else if (absoluteTableIndex == 2) {
3100    tableCos = FP32_COS_TABLE_1;
3101    tableSin = FP32_SIN_TABLE_1;
3102  } else if (absoluteTableIndex == 3) {
3103    tableCos = FP32_COS_TABLE_2;
3104    tableSin = FP32_SIN_TABLE_2;
3105  } else if (absoluteTableIndex == 4) {
3106    tableCos = FP32_COS_TABLE_3;
3107    tableSin = FP32_SIN_TABLE_3;
3108  }
3109
3110  var sinReduced = sinAngle;
3111  var cosReduced = cosAngle;
3112  if (tableIndex > 0) {
3113    sinReduced = tableCos * sinAngle + tableSin * cosAngle;
3114    cosReduced = tableCos * cosAngle - tableSin * sinAngle;
3115  } else if (tableIndex < 0) {
3116    sinReduced = tableCos * sinAngle - tableSin * cosAngle;
3117    cosReduced = tableCos * cosAngle + tableSin * sinAngle;
3118  }
3119
3120  var sinValue = 0.0;
3121  var cosValue = 0.0;
3122  if (quadrant == 0) {
3123    sinValue = sinReduced;
3124    cosValue = cosReduced;
3125  } else if (quadrant == 1) {
3126    sinValue = cosReduced;
3127    cosValue = -sinReduced;
3128  } else if (quadrant == -1) {
3129    sinValue = -cosReduced;
3130    cosValue = sinReduced;
3131  } else {
3132    sinValue = -sinReduced;
3133    cosValue = -cosReduced;
3134  }
3135
3136  return sinValue / cosValue;
3137}
3138
3139fn tan_fp32(a: f32) -> f32 {
3140  return tan_taylor_fp32(a);
3141}
3142#else
3143fn tan_fp32(a: f32) -> f32 {
3144  return tan(a);
3145}
3146#endif
3147`,vs:`\
3148#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
3149
3150// All these functions are for substituting tan() function from Intel GPU only
3151const float TWO_PI = 6.2831854820251465;
3152const float PI_2 = 1.5707963705062866;
3153const float PI_16 = 0.1963495463132858;
3154
3155const float SIN_TABLE_0 = 0.19509032368659973;
3156const float SIN_TABLE_1 = 0.3826834261417389;
3157const float SIN_TABLE_2 = 0.5555702447891235;
3158const float SIN_TABLE_3 = 0.7071067690849304;
3159
3160const float COS_TABLE_0 = 0.9807852506637573;
3161const float COS_TABLE_1 = 0.9238795042037964;
3162const float COS_TABLE_2 = 0.8314695954322815;
3163const float COS_TABLE_3 = 0.7071067690849304;
3164
3165const float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!
3166const float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!
3167const float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!
3168const float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!
3169
3170float sin_taylor_fp32(float a) {
3171  float r, s, t, x;
3172
3173  if (a == 0.0) {
3174    return 0.0;
3175  }
3176
3177  x = -a * a;
3178  s = a;
3179  r = a;
3180
3181  r = r * x;
3182  t = r * INVERSE_FACTORIAL_3;
3183  s = s + t;
3184
3185  r = r * x;
3186  t = r * INVERSE_FACTORIAL_5;
3187  s = s + t;
3188
3189  r = r * x;
3190  t = r * INVERSE_FACTORIAL_7;
3191  s = s + t;
3192
3193  r = r * x;
3194  t = r * INVERSE_FACTORIAL_9;
3195  s = s + t;
3196
3197  return s;
3198}
3199
3200void sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {
3201  if (a == 0.0) {
3202    sin_t = 0.0;
3203    cos_t = 1.0;
3204  }
3205  sin_t = sin_taylor_fp32(a);
3206  cos_t = sqrt(1.0 - sin_t * sin_t);
3207}
3208
3209float tan_taylor_fp32(float a) {
3210    float sin_a;
3211    float cos_a;
3212
3213    if (a == 0.0) {
3214        return 0.0;
3215    }
3216
3217    // 2pi range reduction
3218    float z = floor(a / TWO_PI);
3219    float r = a - TWO_PI * z;
3220
3221    float t;
3222    float q = floor(r / PI_2 + 0.5);
3223    int j = int(q);
3224
3225    if (j < -2 || j > 2) {
3226        return 1.0 / 0.0;
3227    }
3228
3229    t = r - PI_2 * q;
3230
3231    q = floor(t / PI_16 + 0.5);
3232    int k = int(q);
3233    int abs_k = int(abs(float(k)));
3234
3235    if (abs_k > 4) {
3236        return 1.0 / 0.0;
3237    } else {
3238        t = t - PI_16 * q;
3239    }
3240
3241    float u = 0.0;
3242    float v = 0.0;
3243
3244    float sin_t, cos_t;
3245    float s, c;
3246    sincos_taylor_fp32(t, sin_t, cos_t);
3247
3248    if (k == 0) {
3249        s = sin_t;
3250        c = cos_t;
3251    } else {
3252        if (abs(float(abs_k) - 1.0) < 0.5) {
3253            u = COS_TABLE_0;
3254            v = SIN_TABLE_0;
3255        } else if (abs(float(abs_k) - 2.0) < 0.5) {
3256            u = COS_TABLE_1;
3257            v = SIN_TABLE_1;
3258        } else if (abs(float(abs_k) - 3.0) < 0.5) {
3259            u = COS_TABLE_2;
3260            v = SIN_TABLE_2;
3261        } else if (abs(float(abs_k) - 4.0) < 0.5) {
3262            u = COS_TABLE_3;
3263            v = SIN_TABLE_3;
3264        }
3265        if (k > 0) {
3266            s = u * sin_t + v * cos_t;
3267            c = u * cos_t - v * sin_t;
3268        } else {
3269            s = u * sin_t - v * cos_t;
3270            c = u * cos_t + v * sin_t;
3271        }
3272    }
3273
3274    if (j == 0) {
3275        sin_a = s;
3276        cos_a = c;
3277    } else if (j == 1) {
3278        sin_a = c;
3279        cos_a = -s;
3280    } else if (j == -1) {
3281        sin_a = -c;
3282        cos_a = s;
3283    } else {
3284        sin_a = -s;
3285        cos_a = -c;
3286    }
3287    return sin_a / cos_a;
3288}
3289#endif
3290
3291float tan_fp32(float a) {
3292#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
3293  return tan_taylor_fp32(a);
3294#else
3295  return tan(a);
3296#endif
3297}
3298`}},81060:(e,t,i)=>{i.d(t,{dT:()=>_,Os:()=>E,Fe:()=>T,wZ:()=>S,gW:()=>M,nI:()=>y,fO:()=>b,om:()=>x,rY:()=>w,Gw:()=>g,xJ:()=>C,mY:()=>v,iV:()=>m,VJ:()=>P});var r=i(85402);function n(e,t){let i=r.Z0([],t,e);return r.hs(i,i,1/i[3]),i}function s(e,t,i){return e<t?t:e>i?i:e}let a=Math.log2||function(e){return Math.log(e)*Math.LOG2E};var o=i(69173),l=i(68416),u=i(67267);function c(e,t){if(!e)throw Error(t||"@math.gl/web-mercator: assertion failed.")}let h=Math.PI,d=h/4,f=h/180,p=180/h;function g(e){let[t,i]=e;c(Number.isFinite(t)),c(Number.isFinite(i)&&i>=-90&&i<=90,"invalid latitude");let r=512*(h+Math.log(Math.tan(d+i*f*.5)))/(2*h);return[512*(t*f+h)/(2*h),r]}function m(e){let[t,i]=e,r=2*(Math.atan(Math.exp(i/512*(2*h)-h))-d);return[(t/512*(2*h)-h)*p,r*p]}function b(e){let{latitude:t}=e;return c(Number.isFinite(t)),a(4003e4*Math.cos(t*f))-9}function v(e){return 512/4003e4/Math.cos(e*f)}function y(e){let{latitude:t,longitude:i,highPrecision:r=!1}=e;c(Number.isFinite(t)&&Number.isFinite(i));let n=Math.cos(t*f),s=512/360/n,a=512/4003e4/n,o={unitsPerMeter:[a,a,a],metersPerUnit:[1/a,1/a,1/a],unitsPerDegree:[512/360,s,a],degreesPerUnit:[1/(512/360),1/s,1/a]};if(r){let e=f*Math.tan(t*f)/n,i=512/4003e4*e,r=i/s*a;o.unitsPerDegree2=[0,512/360*e/2,i],o.unitsPerMeter2=[r,0,r]}return o}function _(e,t){let[i,r,n]=e,[s,a,o]=t,{unitsPerMeter:l,unitsPerMeter2:u}=y({longitude:i,latitude:r,highPrecision:!0}),c=g(e);c[0]+=s*(l[0]+u[0]*a),c[1]+=a*(l[1]+u[1]*a);let h=m(c);return Number.isFinite(n)||Number.isFinite(o)?[h[0],h[1],(n||0)+(o||0)]:h}function w(e){let{height:t,pitch:i,bearing:r,altitude:n,scale:s,center:a}=e,u=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];o.Tl(u,u,[0,0,-n]),o.eL(u,u,-i*f),o.Qr(u,u,r*f);let c=s/t;return o.hs(u,u,[c,c,c]),a&&o.Tl(u,u,l.ze([],a)),u}function x(e){let{width:t,height:i,altitude:r,pitch:n=0,offset:a,center:o,scale:l,nearZMultiplier:u=1,farZMultiplier:c=1}=e,{fovy:h=E(1.5)}=e;void 0!==r&&(h=E(r));let d=h*f,p=n*f,g=S(h),m=g;o&&(m+=o[2]*l/Math.cos(p)/i);let b=d*(.5+(a?a[1]:0)/i),v=Math.sin(b)*m/Math.sin(s(Math.PI/2-p-b,.01,Math.PI-.01));return{fov:d,aspect:t/i,focalDistance:g,near:u,far:Math.min((Math.sin(p)*v+m)*c,10*m)}}function E(e){return 2*Math.atan(.5/e)*p}function S(e){return .5/Math.tan(.5*e*f)}function P(e,t){let[i,r,s=0]=e;return c(Number.isFinite(i)&&Number.isFinite(r)&&Number.isFinite(s)),n(t,[i,r,s,1])}function C(e,t,i=0){let[r,s,a]=e;if(c(Number.isFinite(r)&&Number.isFinite(s),"invalid pixel coordinate"),Number.isFinite(a))return n(t,[r,s,a,1]);let o=n(t,[r,s,0,1]),l=n(t,[r,s,1,1]),h=o[2],d=l[2];return u.Cc([],o,l,h===d?0:((i||0)-h)/(d-h))}function T(e){let{width:t,height:i,bounds:r,minExtent:n=0,maxZoom:
3298o=24,offset:l=[0,0]}=e,[[u,h],[d,f]]=r,p=function(e=0){return"number"==typeof e?{top:e,bottom:e,left:e,right:e}:(c(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}(e.padding),b=g([u,s(f,-85.051129,85.051129)]),v=g([d,s(h,-85.051129,85.051129)]),y=[Math.max(Math.abs(v[0]-b[0]),n),Math.max(Math.abs(v[1]-b[1]),n)],_=[t-p.left-p.right-2*Math.abs(l[0]),i-p.top-p.bottom-2*Math.abs(l[1])];c(_[0]>0&&_[1]>0);let w=_[0]/y[0],x=_[1]/y[1],E=(p.right-p.left)/2/w,S=(p.top-p.bottom)/2/x,P=m([(v[0]+b[0])/2+E,(v[1]+b[1])/2+S]),C=Math.min(o,a(Math.abs(Math.min(w,x))));return c(Number.isFinite(C)),{longitude:P[0],latitude:P[1],zoom:C}}let A=Math.PI/180;function M(e,t=0){let i,r,{width:n,height:s,unproject:a}=e,o={targetZ:t},l=a([0,s],o),u=a([n,s],o);return(e.fovy?.5*e.fovy*A:Math.atan(.5/e.altitude))>(90-e.pitch)*A-.01?(i=L(e,0,t),r=L(e,n,t)):(i=a([0,0],o),r=a([n,0],o)),[l,u,r,i]}function L(e,t,i){let{pixelUnprojectionMatrix:r}=e,s=n(r,[t,0,1,1]),a=n(r,[t,e.height,1,1]),o=(i*e.distanceScales.unitsPerMeter[2]-s[2])/(a[2]-s[2]),l=m(u.Cc([],s,a,o));return l.push(i),l}},81075:(e,t,i)=>{i.d(t,{JP:()=>a,h1:()=>l,UE:()=>o,vE:()=>n,K7:()=>s,Ak:()=>c,Y0:()=>u});let r=globalThis.Float16Array;function n(e){let t=e.includes("norm"),i=!t&&!e.startsWith("float"),r=e.startsWith("s"),[n,s,a]=h[e]||["uint8 ","i32",1];return{signedType:n,primitiveType:s,byteLength:a,normalized:t,integer:i,signed:r}}function s(e){switch(e){case"uint8":return"unorm8";case"sint8":return"snorm8";case"uint16":return"unorm16";case"sint16":return"snorm16";default:return e}}function a(e,t){switch(t){case 1:return e;case 2:return e+e%2;default:return e+(4-e%4)%4}}function o(e){let t=ArrayBuffer.isView(e)?e.constructor:e;if(r&&t===r)return"float16";if(t===Uint8ClampedArray)return"uint8";let i=Object.values(h).find(e=>t===e[4]);if(!i)throw Error(t.name);return i[0]}function l(e){return o(e)}function u(e){if("float16"===e)return r??Uint16Array;let t=h[e];if(!t)throw Error(e);let[,,,,i]=t;return i}function c(e){return u(e)}let h={uint8:["uint8","u32",1,!1,Uint8Array],sint8:["sint8","i32",1,!1,Int8Array],unorm8:["uint8","f32",1,!0,Uint8Array],snorm8:["sint8","f32",1,!0,Int8Array],uint16:["uint16","u32",2,!1,Uint16Array],sint16:["sint16","i32",2,!1,Int16Array],unorm16:["uint16","u32",2,!0,Uint16Array],snorm16:["sint16","i32",2,!0,Int16Array],float16:["float16","f16",2,!1,Uint16Array],float32:["float32","f32",4,!1,Float32Array],uint32:["uint32","u32",4,!1,Uint32Array],sint32:["sint32","i32",4,!1,Int32Array]}},81258:(e,t,i)=>{i.d(t,{Oy:()=>o,Pz:()=>a,c0:()=>l,z2:()=>s});var r=i(72868);let n=!1;async function s(){u()}function a(e,t){return u(),e}async function o(e){u()}function l(e){return null}function u(){n||(n=!0,r.R.warn("Import @luma.gl/webgl/debug before enabling WebGL debugging.")())}},81870:(e,t,i)=>{function r(e,t){var i;let r=Number.isFinite(i=t)&&i>0?Math.floor(i):65535,n=Math.max(1,Math.ceil(e)),s=Math.min(n,r),a=Math.min(Math.ceil(n/s),r),o=Math.ceil(n/s/a);if(o>r)throw Error(`WebGPU dispatch requires ${n} workgroups, exceeding the 3D dispatch limit of ${r} per dimension`);return{x:s,y:a,z:o}}function n(e,t="workgroupId"){return`((${t}.z * ${e.y}u + ${t}.y) * ${e.x}u + ${t}.x)`}function s(e,t,i="workgroupId",r="localId"){return`(${n(e,i)} * ${t}u + ${r}.x)`}i.d(t,{B:()=>n,BB:()=>r,vL:()=>s})},82139:(e,t,i)=>{i.d(t,{d:()=>l});var r=i(22158);let n=["Adapter","GPU","GPU Type","GPU Backend","Frame Rate","CPU Time","GPU Time","GPU Memory","Buffer Memory","Texture Memory","External Buffer Memory","External Texture Memory","Swap Chain Texture"],s=new WeakMap,a=new WeakMap;class o{stats=new Map;getStats(e){return this.get(e)}get(e){this.stats.has(e)||this.stats.set(e,new r.Uz({id:e}));let t=this.stats.get(e);return"GPU Time and Memory"===e&&function(e,t){let i=e.stats,r=!1;for(let n of t)i[n]||(e.get(n),r=!0);let n=Object.keys(i).length,o=s.get(e);if(!r&&o?.orderedStatNames===t&&o.statCount===n)return;let l={},u=a.get(t);for(let e of(u||(u=new Set(t),a.set(t,u)),t))i[e]&&(l[e]=i[e]);for(let[e,t]of Object.entries(i))u.has(e)||(l[e]=t);for(let e of Object.keys(i))delete i[e];Object.assign(i,l),s.set(e,{orderedStatNames:t,statCount:n})}(t,n),t}}let l=new o},82220:(e,t,i)=>{i.d(t,{p:()=>a});var r=i(20296),n=i(65603),s=i(52471);class a{device;model;transformFeedback;static defaultProps={...s.K.defaultProps,feedbackBufferMode:"separate",outputs:void 0,feedbackBuffers:void 0};static isSupported(e){return e?.info?.type==="webgl"}constructor(e,t=a.defaultProps){if(!a.isSupported(e))throw Error("BufferTransform not yet implemented on WebGPU");this.device=e,this.model=new s.K(this.device,{id:t.id||"buffer-transform-model",fs:t.fs||(0,n.Wk)(),topology:t.topology||"point-list",varyings:t.outputs||t.varyings,...t,bufferMode:t.bufferMode||("interleaved"===t.feedbackBufferMode?35980:35981)}),this.transformFeedback=this.device.createTransformFeedback({layout:this.model.pipeline.shaderLayout,buffers:t.feedbackBuffers}),this.model.setTransformFeedback(this.transformFeedback)}destroy(){this.model&&this.model.destroy()}delete(){this.destroy()}run(e){e?.inputBuffers&&this.model.setAttributes(e.inputBuffers),e?.outputBuffers&&this.transformFeedback.setBuffers(e.outputBuffers);let t=this.device.beginRenderPass({discard:!0,...e});this.model.draw(t),t.end()}getBuffer(e){return this.transformFeedback.getBuffer(e)}readAsync(e){let t=this.getBuffer(e);if(!t)throw Error("BufferTransform#getBuffer");if(t instanceof r.h)return t.readAsync();let{buffer:i,byteOffset:n=0,byteLength:s=i.byteLength}=t;return i.readAsync(n,s)}}},82493:(e,t,i)=>{i.d(t,{g:()=>l});var r=i(24486),n=i(94122),s=i(72868),a=i(10991);let o={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"};class l extends r.F{static SAMPLE=4;static STORAGE=8;static RENDER=16;static COPY_SRC=1;static COPY_DST=2;static TEXTURE=4;static RENDER_ATTACHMENT=16;dimension;baseDimension;format;width;height;depth;mipLevels;samples;byteAlignment;
3298ready=Promise.resolve(this);isReady=!0;updateTimestamp;get[Symbol.toStringTag](){return"Texture"}toString(){return`Texture(${this.id},${this.format},${this.width}x${this.height})`}constructor(e,t,i){if(super(e,t=l.normalizeProps(e,t),l.defaultProps),this.dimension=this.props.dimension,this.baseDimension=o[this.dimension],this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.mipLevels=this.props.mipLevels,this.samples=this.props.samples||1,"cube"===this.dimension&&(this.depth=6),void 0===this.props.width||void 0===this.props.height)if(e.isExternalImage(t.data)){let i=e.getExternalImageSize(t.data);this.width=i?.width||1,this.height=i?.height||1}else this.width=1,this.height=1,(void 0===this.props.width||void 0===this.props.height)&&s.R.warn(`${this} created with undefined width or height. This is deprecated. Use DynamicTexture instead.`)();this.byteAlignment=i?.byteAlignment||1,this.updateTimestamp=e.incrementTimestamp()}clone(e){return this.device.createTexture({...this.props,...e})}setSampler(e){this.sampler=e instanceof n.L?e:this.device.createSampler(e)}copyImageData(e){let{data:t,depth:i,...r}=e;this.writeData(t,{...r,depthOrArrayLayers:r.depthOrArrayLayers??i})}computeMemoryLayout(e={}){let{width:t=this.width,height:i=this.height,depthOrArrayLayers:r=this.depth}=this._normalizeTextureReadOptions(e),{format:n,byteAlignment:s}=this;return a.vz.computeMemoryLayout({format:n,width:t,height:i,depth:r,byteAlignment:s})}readBuffer(e,t){throw Error("readBuffer not implemented")}readDataAsync(e){throw Error("readBuffer not implemented")}writeBuffer(e,t){throw Error("readBuffer not implemented")}writeData(e,t){throw Error("readBuffer not implemented")}readDataSyncWebGL(e){throw Error("readDataSyncWebGL not available")}generateMipmapsWebGL(){throw Error("generateMipmapsWebGL not available")}static normalizeProps(e,t){let i={...t},{width:r,height:n}=i;return"number"==typeof r&&(i.width=Math.max(1,Math.ceil(r))),"number"==typeof n&&(i.height=Math.max(1,Math.ceil(n))),i}_initializeData(e){this.device.isExternalImage(e)?this.copyExternalImage({image:e,width:this.width,height:this.height,depth:this.depth,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}):e&&this.copyImageData({data:e,mipLevel:0,x:0,y:0,z:0,aspect:"all"})}_normalizeCopyImageDataOptions(e){let{data:t,depth:i,...r}=e,n=this._normalizeTextureWriteOptions({...r,depthOrArrayLayers:r.depthOrArrayLayers??i});return{data:t,depth:n.depthOrArrayLayers,...n}}_normalizeCopyExternalImageOptions(e){let t=l._omitUndefined(e),i=t.mipLevel??0,r=this._getMipLevelSize(i),n=this.device.getExternalImageSize(e.image),s={...l.defaultCopyExternalImageOptions,...r,...n,...t};return s.width=Math.min(s.width,r.width-s.x),s.height=Math.min(s.height,r.height-s.y),s.depth=Math.min(s.depth,r.depthOrArrayLayers-s.z),s}_normalizeCopyElementImageOptions(e){let t=l._omitUndefined(e),i=t.mipLevel??0,r=this._getMipLevelSize(i),n={...l.defaultCopyElementImageOptions,...r,...t};return n.width=Math.min(n.width,r.width-n.x),n.height=Math.min(n.height,r.height-n.y),n.depth=Math.min(n.depth,r.depthOrArrayLayers-n.z),n}_normalizeTextureReadOptions(e){let t=l._omitUndefined(e),i=t.mipLevel??0,r=this._getMipLevelSize(i),n={...l.defaultTextureReadOptions,...r,...t};return n.width=Math.min(n.width,r.width-n.x),n.height=Math.min(n.height,r.height-n.y),n.depthOrArrayLayers=Math.min(n.depthOrArrayLayers,r.depthOrArrayLayers-n.z),n}
3298_getSupportedColorReadOptions(e){let t=this._normalizeTextureReadOptions(e),i=a.vz.getInfo(this.format);switch(this._validateColorReadAspect(t),this._validateColorReadFormat(i),this.dimension){case"2d":case"cube":case"cube-array":case"2d-array":case"3d":return t;default:throw Error(`${this} color readback does not support ${this.dimension} textures`)}}_validateColorReadAspect(e){if("all"!==e.aspect)throw Error(`${this} color readback only supports aspect 'all'`)}_validateColorReadFormat(e){if(e.compressed)throw Error(`${this} color readback does not support compressed formats (${this.format})`);switch(e.attachment){case"color":return;case"depth":throw Error(`${this} color readback does not support depth formats (${this.format})`);case"stencil":throw Error(`${this} color readback does not support stencil formats (${this.format})`);case"depth-stencil":throw Error(`${this} color readback does not support depth-stencil formats (${this.format})`);default:throw Error(`${this} color readback does not support format ${this.format}`)}}_normalizeTextureWriteOptions(e){let t=l._omitUndefined(e),i=t.mipLevel??0,r=this._getMipLevelSize(i),n={...l.defaultTextureWriteOptions,...r,...t};n.width=Math.min(n.width,r.width-n.x),n.height=Math.min(n.height,r.height-n.y),n.depthOrArrayLayers=Math.min(n.depthOrArrayLayers,r.depthOrArrayLayers-n.z);let s=a.vz.computeMemoryLayout({format:this.format,width:n.width,height:n.height,depth:n.depthOrArrayLayers,byteAlignment:this.byteAlignment}),o=s.bytesPerPixel*n.width;if(n.bytesPerRow=t.bytesPerRow??s.bytesPerRow,n.rowsPerImage=t.rowsPerImage??n.height,n.bytesPerRow<o)throw Error(`bytesPerRow (${n.bytesPerRow}) must be at least ${o} for ${this.format}`);if(n.rowsPerImage<n.height)throw Error(`rowsPerImage (${n.rowsPerImage}) must be at least ${n.height} for ${this.format}`);let u=this.device.getTextureFormatInfo(this.format).bytesPerPixel;if(u&&n.bytesPerRow%u!=0)throw Error(`bytesPerRow (${n.bytesPerRow}) must be a multiple of bytesPerPixel (${u}) for ${this.format}`);return n}_getMipLevelSize(e){let t=Math.max(1,this.width>>e);return{width:t,height:"1d"===this.baseDimension?1:Math.max(1,this.height>>e),depthOrArrayLayers:"3d"===this.dimension?Math.max(1,this.depth>>e):this.depth}}getAllocatedByteLength(){let e=0;for(let t=0;t<this.mipLevels;t++){let{width:i,height:r,depthOrArrayLayers:n}=this._getMipLevelSize(t);e+=a.vz.computeMemoryLayout({format:this.format,width:i,height:r,depth:n,byteAlignment:1}).byteLength}return e*this.samples}static _omitUndefined(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}static defaultProps={...r.F.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",usage:l.SAMPLE|l.RENDER|l.COPY_DST,width:void 0,height:void 0,depth:1,mipLevels:1,samples:void 0,sampler:{},view:void 0};static defaultCopyDataOptions={data:void 0,byteOffset:0,bytesPerRow:void 0,rowsPerImage:void 0,width:void 0,height:void 0,depthOrArrayLayers:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all"};static defaultCopyExternalImageOptions={image:void 0,sourceX:0,sourceY:0,width:void 0,height:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1};static defaultCopyElementImageOptions={element:void 0,width:void 0,height:void 0,sourceX:0,sourceY:0,sourceWidth:void 0,sourceHeight:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1};static defaultTextureReadOptions={x:0,y:0,z:0,width:void 0,height:void 0,depthOrArrayLayers:1,mipLevel:0,aspect:"all"};static defaultTextureWriteOptions={byteOffset:0,bytesPerRow:void 0,rowsPerImage:void 0,x:0,y:0,z:0,width:void 0,height:void 0,depthOrArrayLayers:1,mipLevel:0,aspect:"all"}}},85066:(e,t,i)=>{i.d(t,{$W:()=>r,Cc:()=>function e(t,i,r){return s(t)?t.map((t,n)=>e(t,i[n],r)):r*i+(1-r)*t},Fl:()=>n,aI:()=>function e(t,i,n){let a=r.EPSILON;n&&(r.EPSILON=n);try{if(t===i)return!0;if(s(t)&&s(i)){if(t.length!==i.length)return!1;for(let r=0;r<t.length;++r)if(!e(t[r],i[r]))return!1;return!0}if(t&&t.equals)return t.equals(i);if(i&&i.equals)return i.equals(t);if("number"==typeof t&&"number"==typeof i)return Math.abs(t-i)<=r.EPSILON*Math.max(1,Math.abs(t),Math.abs(i));return!1}finally{r.EPSILON=a}},cy:()=>s,qE:()=>a}),globalThis.mathgl=globalThis.mathgl||{config:{EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1}};let r=globalThis.mathgl.config;function n(e,{precision:t=r.precision}={}){return e=Math.round(e/r.EPSILON)*r.EPSILON,`${parseFloat(e.toPrecision(t))}`}function s(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function a(e,t,i){return function(e,t,i){if(s(e)){i=i||(e.clone?e.clone():Array(e.length));for(let r=0;r<i.length&&r<e.length;++r){let n="number"==typeof e?e:e[r];i[r]=t(n,r,i)}return i}return t(e)}(e,e=>Math.max(t,Math.min(i,e)))}},85303:(e,t,i)=>{i.d(t,{r:()=>n});var r=i(24486);
3298class n extends r.F{get[Symbol.toStringTag](){return"RenderPipeline"}shaderLayout;bufferLayout;linkStatus="pending";hash="";sharedRenderPipeline=null;get isPending(){return"pending"===this.linkStatus||"pending"===this.vs.compilationStatus||this.fs?.compilationStatus==="pending"}get isErrored(){return"error"===this.linkStatus||"error"===this.vs.compilationStatus||this.fs?.compilationStatus==="error"}constructor(e,t){super(e,t,n.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[],this.sharedRenderPipeline=this.props._sharedRenderPipeline||null}static defaultProps={...r.F.defaultProps,vs:null,vertexEntryPoint:"vertexMain",vsConstants:{},fs:null,fragmentEntryPoint:"fragmentMain",fsConstants:{},shaderLayout:null,bufferLayout:[],topology:"triangle-list",colorAttachmentFormats:void 0,depthStencilAttachmentFormat:void 0,parameters:{},varyings:void 0,bufferMode:void 0,disableWarnings:!1,_sharedRenderPipeline:void 0,_uniformBlockLayouts:[],bindings:void 0,bindGroups:void 0}}},85402:(e,t,i)=>{i.d(t,{Z0:()=>s,hs:()=>n});var r=i(72382);function n(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e}function s(e,t,i){let r=t[0],n=t[1],s=t[2],a=t[3];return e[0]=i[0]*r+i[4]*n+i[8]*s+i[12]*a,e[1]=i[1]*r+i[5]*n+i[9]*s+i[13]*a,e[2]=i[2]*r+i[6]*n+i[10]*s+i[14]*a,e[3]=i[3]*r+i[7]*n+i[11]*s+i[15]*a,e}!function(){let e=new r.tb(4);r.tb!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0)}()},85972:(e,t,i)=>{i.d(t,{b:()=>n});var r=i(87358);function n(e){if("undefined"!=typeof window&&window.process?.type==="renderer"||void 0!==r&&r.versions?.electron)return!0;let t="undefined"!=typeof navigator&&navigator.userAgent,i=e||t;return!!(i&&i.indexOf("Electron")>=0)}},87208:(e,t,i)=>{function r(e,t=()=>!0){return Array.isArray(e)?function e(t,i,r){let n=-1;for(;++n<t.length;){let s=t[n];Array.isArray(s)?e(s,i,r):i(s)&&r.push(s)}return r}(e,t,[]):t(e)?[e]:[]}function n({target:e,source:t,start:i=0,count:r=1}){let n=t.length,s=r*n,a=0;for(let r=i;a<n;a++)e[r++]=t[a];for(;a<s;)a<s-a?(e.copyWithin(i+a,i,i+a),a*=2):(e.copyWithin(i+a,i,i+s-a),a=s);return e}i.d(t,{B:()=>r,R:()=>n})},88057:(e,t,i)=>{i.d(t,{g:()=>s});var r=i(22192),n=i(72868);class s{static defaultProps={...r.M.defaultProps};static getDefaultShaderFactory(e){let t=e.getModuleData("@luma.gl/core");return t.defaultShaderFactory||=new s(e),t.defaultShaderFactory}device;_cache={};get[Symbol.toStringTag](){return"ShaderFactory"}toString(){return`${this[Symbol.toStringTag]}(${this.device.id})`}constructor(e){this.device=e}createShader(e){if(!this.device.props._cacheShaders)return this.device.createShader(e);let t=this._hashShader(e),i=this._cache[t];if(i)i.useCount++,this.device.props.debugFactories&&n.R.log(3,`${this}: Reusing shader ${i.resource.id} count=${i.useCount}`)();else{let r=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[t]=i={resource:r,useCount:1},this.device.props.debugFactories&&n.R.log(3,`${this}: Created new shader ${r.id}`)()}return i.resource}release(e){if(!this.device.props._cacheShaders)return void e.destroy();let t=this._hashShader(e),i=this._cache[t];if(i)if(i.useCount--,0===i.useCount)this.device.props._destroyShaders&&(delete this._cache[t],i.resource.destroy(),this.device.props.debugFactories&&n.R.log(3,`${this}: Releasing shader ${e.id}, destroyed`)());else if(i.useCount<0)throw Error(`ShaderFactory: Shader ${e.id} released too many times`);else this.device.props.debugFactories&&n.R.log(3,`${this}: Releasing shader ${e.id} count=${i.useCount}`)()}_hashShader(e){return`${e.stage}:${e.source}`}}},90961:(e,t,i)=>{i.d(t,{b:()=>function e(t,i,r){if(t===i)return!0;if(!r||!t||!i)return!1;if(Array.isArray(t)){if(!Array.isArray(i)||t.length!==i.length)return!1;for(let n=0;n<t.length;n++)if(!e(t[n],i[n],r-1))return!1;return!0}if(Array.isArray(i))return!1;if("object"==typeof t&&"object"==typeof i){let n=Object.keys(t),s=Object.keys(i);if(n.length!==s.length)return!1;for(let s of n)if(!i.hasOwnProperty(s)||!e(t[s],i[s],r-1))return!1;return!0}return!1}})},90994:(e,t,i)=>{i.d(t,{A:()=>r});function r(e){let t,i={};return r=>{for(let n in r)if(!function(e,t){if(e===t)return!0;
3298if(Array.isArray(e)){let i=e.length;if(!t||t.length!==i)return!1;for(let r=0;r<i;r++)if(e[r]!==t[r])return!1;return!0}return!1}(r[n],i[n])){t=e(r),i=r;break}return t}}},92386:(e,t,i)=>{i.d(t,{A:()=>n});let r="#define SMOOTH_EDGE_RADIUS 0.5",n={name:"geometry",source:`\
3299const SMOOTH_EDGE_RADIUS: f32 = 0.5;
3300
3301struct VertexGeometry {
3302  position: vec4<f32>,
3303  worldPosition: vec3<f32>,
3304  worldPositionAlt: vec3<f32>,
3305  normal: vec3<f32>,
3306  uv: vec2<f32>,
3307  pickingColor: vec3<f32>,
3308};
3309
3310var<private> geometry_: VertexGeometry = VertexGeometry(
3311  vec4<f32>(0.0, 0.0, 1.0, 0.0),
3312  vec3<f32>(0.0, 0.0, 0.0),
3313  vec3<f32>(0.0, 0.0, 0.0),
3314  vec3<f32>(0.0, 0.0, 0.0),
3315  vec2<f32>(0.0, 0.0),
3316  vec3<f32>(0.0, 0.0, 0.0)
3317);
3318
3319struct FragmentGeometry {
3320  uv: vec2<f32>,
3321};
3322
3323var<private> fragmentGeometry: FragmentGeometry;
3324
3325fn smoothedge(edge: f32, x: f32) -> f32 {
3326  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
3327}
3328`,vs:`\
3329${r}
3330
3331struct VertexGeometry {
3332  vec4 position;
3333  vec3 worldPosition;
3334  vec3 worldPositionAlt;
3335  vec3 normal;
3336  vec2 uv;
3337  vec3 pickingColor;
3338} geometry = VertexGeometry(
3339  vec4(0.0, 0.0, 1.0, 0.0),
3340  vec3(0.0),
3341  vec3(0.0),
3342  vec3(0.0),
3343  vec2(0.0),
3344  vec3(0.0)
3345);
3346`,fs:`\
3347${r}
3348
3349struct FragmentGeometry {
3350  vec2 uv;
3351};
3352FragmentGeometry geometry;
3353
3354float smoothedge(float edge, float x) {
3355  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
3356}
3357`}},93614:(e,t,i)=>{i.d(t,{r:()=>s});var r=i(81075);class n{getDataTypeInfo(e){return(0,r.vE)(e)}getNormalizedDataType(e){return(0,r.K7)(e)}alignTo(e,t){return(0,r.JP)(e,t)}getDataType(e){return(0,r.h1)(e)}getTypedArrayConstructor(e){return(0,r.Ak)(e)}}let s=new n},94122:(e,t,i)=>{i.d(t,{L:()=>n});var r=i(24486);class n extends r.F{static defaultProps={...r.F.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"none",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1};get[Symbol.toStringTag](){return"Sampler"}constructor(e,t){super(e,t=n.normalizeProps(e,t),n.defaultProps)}static normalizeProps(e,t){return t}}},95042:(e,t,i)=>{i.d(t,{N1:()=>u,Uj:()=>a,V$:()=>l,mY:()=>o});var r=i(3617);let n=/^(?:uniform\s+)?(?:(?:lowp|mediump|highp)\s+)?[A-Za-z0-9_]+(?:<[^>]+>)?\s+([A-Za-z0-9_]+)(?:\s*\[[^\]]+\])?\s*;/,s=/((?:layout\s*\([^)]*\)\s*)*)uniform\s+([A-Za-z_][A-Za-z0-9_]*)\s*\{([\s\S]*?)\}\s*([A-Za-z_][A-Za-z0-9_]*)?\s*;/g;function a(e){return`${e.name}Uniforms`}function o(e,t,i={}){let s=function(e,t){let i=Object.keys(e.uniformTypes||{});if(!i.length)return null;let r=function(e,t){let i="wgsl"===t?e.source:"vertex"===t?e.vs:e.fs;return i?function(e,t,i){let r="wgsl"===t?function(e,t){let i=RegExp(`\\bstruct\\s+${t}\\b`,"m").exec(e);if(!i)return null;let r=e.indexOf("{",i.index);if(r<0)return null;let n=0;for(let t=r;t<e.length;t++){let i=e[t];if("{"===i){n++;continue}if("}"===i&&0==--n)return e.slice(r+1,t)}return null}(e,i):function(e,t){let i=l(e).find(e=>e.blockName===t);return i?.body||null}(e,i);if(!r)return null;let s=[];for(let e of r.split("\n")){let i=e.replace(/\/\/.*$/,"").trim();if(!i||i.startsWith("#"))continue;let r="wgsl"===t?i.match(/^([A-Za-z0-9_]+)\s*:/):i.match(n);r&&s.push(r[1])}return s}(i,"wgsl"===t?"wgsl":"glsl",a(e)):null}(e,t);return r?{moduleName:e.name,uniformBlockName:a(e),stage:t,expectedUniformNames:i,actualUniformNames:r,matches:function(e,t){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}(i,r)}:null}(e,t);if(!s||s.matches)return s;let u=function(e){let{expectedUniformNames:t,actualUniformNames:i}=e,r=t.filter(e=>!i.includes(e)),n=i.filter(e=>!t.includes(e)),s=[`Expected ${t.length} fields, found ${i.length}.`],a=function(e,t){let i=Math.min(e.length,t.length);for(let r=0;r<i;r++)if(e[r]!==t[r])return`First mismatch at field ${r+1}: expected ${e[r]}, found ${t[r]}.`;return e.length>t.length?`Shader block ends after field ${t.length}; expected next field ${e[t.length]}.`:t.length>e.length?`Shader block has extra field ${t.length}: ${t[e.length]}.`:null}(t,i);return a&&s.push(a),r.length&&s.push(`Missing from shader block (${r.length}): ${c(r)}.`),n.length&&s.push(`Unexpected in shader block (${n.length}): ${c(n)}.`),t.length<=12&&i.length<=12&&(r.length||n.length)&&(s.push(`Expected: ${t.join(", ")}.`),s.push(`Actual: ${i.join(", ")}.`)),`${e.moduleName}: ${e.stage} shader uniform block ${e.uniformBlockName} does not match module.uniformTypes. ${s.join(" ")}`}(s);return i.log?.error?.(u,s)(),!1!==i.throwOnError&&(0,r.v)(!1,u),s}function l(e){let t=[];for(let i of e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"").matchAll(s)){let e=i[1]?.trim()||null;t.push({blockName:i[2],body:i[3],instanceName:i[4]||null,layoutQualifier:e,hasLayoutQualifier:!!e,isStd140:!!(e&&/\blayout\s*\([^)]*\bstd140\b[^)]*\)/.exec(e))})}return t}function u(e,t,i,r){let n=l(e).filter(e=>!e.isStd140),s=new Set;for(let e of n){if(s.has(e.blockName))continue;s.add(e.blockName);let n=r?.label?`${r.label} `:"",a=e.hasLayoutQualifier?`declares ${e.layoutQualifier.replace(/\s+/g," ").trim()} instead of layout(std140)`:"does not declare layout(std140)",o=`${n}${t} shader uniform block ${e.blockName} ${a}. luma.gl host-side shader block packing assumes explicit layout(std140) for GLSL uniform blocks. Add \`layout(std140)\` to the block declaration.`;i?.warn?.(o,e)()}return n}function c(e,t=8){if(e.length<=t)return e.join(", ");let i=e.length-t;return`${e.slice(0,t).join(", ")}, ... (${i} more)`}},95675:(e,t,i)=>{i.d(t,{v:()=>r});function r(e,t){if(!e)throw Error(t||"loader assertion failed.")}},95871:(e,t,i)=>{i.d(t,{R:()=>s});var r=i(20296);
3357class n{poolSize=20;bufferPools;constructor(){this.bufferPools=new Map}createOrReuse(e,t){if(t>e.limits.maxBufferSize)throw Error(`Buffer pool cannot allocate ${t} bytes: device.limits.maxBufferSize is ${e.limits.maxBufferSize}`);let i=this.bufferPools.get(e),n=i?i.findIndex(e=>e.byteLength>=t):-1;if(n<0)return e.createBuffer({usage:r.h.VERTEX|r.h.STORAGE|r.h.COPY_DST|r.h.COPY_SRC,byteLength:t});let[s]=i.splice(n,1);return s}recycle(e){let t=e.device;this.bufferPools.has(t)||this.bufferPools.set(t,[]);let i=this.bufferPools.get(t),r=i.findIndex(t=>t.byteLength>e.byteLength);r<0?i.push(e):i.splice(r,0,e),this.purge()}purge(){for(let[e,t]of this.bufferPools){let i=e.isLost?0:this.poolSize;for(;t.length>i;)t.shift().destroy();0===t.length&&this.bufferPools.delete(e)}}}let s=new n}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.