x-runtime-lib 0.9.62 → 0.9.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x-runtime-lib",
3
- "version": "0.9.62",
3
+ "version": "0.9.64",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -25,22 +25,22 @@
25
25
  "prepare": "husky"
26
26
  },
27
27
  "dependencies": {
28
- "@sindresorhus/base62": "^1.0.0",
29
28
  "axios": "^1.18.0",
30
- "echarts": "^6.1.0",
31
- "lodash-es": "^4.18.1",
32
- "mitt": "^3.0.1",
33
29
  "quickjs-emscripten": "^0.32.0",
34
30
  "three": "^0.184.0",
35
31
  "vue": "^3.5.38",
36
32
  "vuetify": "^4.1.2"
37
33
  },
38
34
  "devDependencies": {
35
+ "@sindresorhus/base62": "^1.0.0",
39
36
  "@tresjs/cientos": "^5.8.1",
40
37
  "@types/lodash-es": "^4.17.12",
41
38
  "@types/node": "^26.0.0",
39
+ "echarts": "^6.1.0",
42
40
  "husky": "^9.1.7",
43
41
  "lint-staged": "^17.0.7",
42
+ "lodash-es": "^4.18.1",
43
+ "mitt": "^3.0.1",
44
44
  "oxfmt": "^0.55.0",
45
45
  "oxlint": "^1.70.0",
46
46
  "sass": "^1.101.0",
@@ -49,11 +49,11 @@
49
49
  "vite": "^8.0.16",
50
50
  "x-config-oxfmt": "^0.1.3",
51
51
  "x-config-oxlint": "^0.1.2",
52
- "x-config-vite-lib": "^0.1.10"
52
+ "x-config-vite-lib": "^0.1.13"
53
53
  },
54
54
  "peerDependencies": {
55
- "x-error-lib": "^0.5.21",
56
- "x-essential-lib": "^0.9.37"
55
+ "x-error-lib": "^0.5.23",
56
+ "x-essential-lib": "^0.9.39"
57
57
  },
58
58
  "lint-staged": {
59
59
  "*": "oxfmt --no-error-on-unmatched-pattern"
@@ -1,240 +0,0 @@
1
- import{r as e,t}from"./rolldown-runtime.81faoggt.js";import{computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createVNode as o,defineComponent as s,getCurrentInstance as c,getCurrentScope as l,hasInjectionContext as u,inject as d,mergeDefaults as f,nextTick as p,onBeforeUnmount as m,onMounted as h,onScopeDispose as g,onUnmounted as _,openBlock as v,provide as y,reactive as b,readonly as x,ref as S,render as C,shallowReadonly as w,shallowRef as T,toRefs as ee,toValue as E,unref as D,useAttrs as te,useSlots as ne,watch as O,watchEffect as k}from"vue";import*as A from"three";import{AdditiveBlending as j,Audio as M,AudioListener as re,AudioLoader as ie,Box2 as ae,Box3 as oe,BufferAttribute as N,BufferGeometry as se,Color as P,DoubleSide as ce,Euler as le,FramebufferTexture as ue,HalfFloatType as de,InterleavedBuffer as fe,InterleavedBufferAttribute as F,Line3 as I,MOUSE as L,Material as pe,MathUtils as R,Matrix4 as z,Mesh as B,MeshBasicMaterial as me,NoToneMapping as he,Object3D as V,OrthographicCamera as ge,PerspectiveCamera as H,Plane as U,PlaneGeometry as _e,Quaternion as ve,REVISION as W,RawShaderMaterial as ye,Ray as be,Raycaster as xe,ShaderMaterial as Se,Sphere as Ce,SphereGeometry as we,Spherical as Te,TOUCH as G,Triangle as Ee,UniformsUtils as De,UnsignedByteType as Oe,Vector2 as K,Vector3 as q,Vector4 as ke,WebGLRenderTarget as Ae,WebGLRenderer as je}from"three";import"three/examples/jsm/helpers/RectAreaLightHelper.js";function Me(e,t){return l()?(g(e,t),!0):!1}function Ne(){let e=new Set,t=t=>{e.delete(t)};return{on:n=>{e.add(n);let r=()=>t(n);return Me(r),{off:r}},off:t,trigger:(...t)=>Promise.all(Array.from(e).map(e=>e(...t))),clear:()=>{e.clear()}}}const Pe=new WeakMap,Fe=(...e)=>{let t=e[0],n=c()?.proxy??l();if(n==null&&!u())throw Error(`injectLocal must be called in setup`);return n&&Pe.has(n)&&t in Pe.get(n)?Pe.get(n)[t]:d(...e)};function Ie(e,t){let n=c()?.proxy??l();if(n==null)throw Error(`provideLocal must be called in setup`);Pe.has(n)||Pe.set(n,Object.create(null));let r=Pe.get(n);return r[e]=t,y(e,t)}function Le(e,t){let n=t?.injectionKey||Symbol(e.name||`InjectionState`),r=t?.defaultValue;return[(...t)=>{let r=e(...t);return Ie(n,r),r},()=>Fe(n,r)]}const Re=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;const ze=Object.prototype.toString,Be=e=>ze.call(e)===`[object Object]`,Ve=()=>{};function He(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}function Ue(e,t={}){let n,r,i=Ve,a=e=>{clearTimeout(e),i(),i=Ve},o;return s=>{let c=E(e),l=E(t.maxWait);return n&&a(n),c<=0||l!==void 0&&l<=0?(r&&=(a(r),void 0),Promise.resolve(s())):new Promise((e,u)=>{i=t.rejectOnCancel?u:e,o=s,l&&!r&&(r=setTimeout(()=>{n&&a(n),r=void 0,e(o())},l)),n=setTimeout(()=>{r&&a(r),r=void 0,e(s())},c)})}}function We(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function Ge(e){return Array.isArray(e)?e:[e]}function Ke(e){return e||c()}function qe(e,t=200,n={}){return He(Ue(t,n),e)}function Je(e,t=200,n={}){let r=S(E(e)),i=qe(()=>{r.value=e.value},t,n);return O(e,()=>i()),w(r)}function Ye(e,t=!0,n){Ke(n)?h(e,n):t?e():p(e)}function Xe(e,t,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=T(!1),o;function s(){o&&=(clearTimeout(o),void 0)}function c(){a.value=!1,s()}function l(...n){i&&e(),s(),a.value=!0,o=setTimeout(()=>{a.value=!1,o=void 0,e(...n)},E(t))}return r&&(a.value=!0,Re&&l()),Me(c),{isPending:w(a),start:l,stop:c}}function Ze(e=1e3,t={}){let{controls:r=!1,callback:i}=t,a=Xe(i??Ve,e,t),o=n(()=>!a.isPending.value);return r?{ready:o,...a}:o}function Qe(e,t,n){return O(e,t,{...n,immediate:!0})}function $e(e,t,n){let r=O(e,(e,i,a)=>{e&&(n?.once&&p(()=>r()),t(e,i,a))},{...n,once:!1});return r}const et=Re?window:void 0;Re&&window.document,Re&&window.navigator,Re&&window.location;function tt(e){let t=E(e);return t?.$el??t}function J(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),r=n(()=>{let t=Ge(E(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return Qe(()=>[r.value?.map(e=>tt(e))??[et].filter(e=>e!=null),Ge(E(r.value?e[1]:e[0])),Ge(D(r.value?e[2]:e[1])),E(r.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=Be(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}function nt(){let e=T(!1),t=c();return t&&h(()=>{e.value=!0},t),e}function rt(e){let t=nt();return n(()=>(t.value,!!e()))}function it(e,t={}){let{immediate:r=!0,fpsLimit:i=null,window:a=et,once:o=!1}=t,s=T(!1),c=n(()=>{let e=E(i);return e?1e3/e:null}),l=0,u=null;function d(t){if(!s.value||!a)return;l||=t;let n=t-l;if(c.value&&n<c.value){u=a.requestAnimationFrame(d);return}if(l=t,e({delta:n,timestamp:t}),o){s.value=!1,u=null;return}u=a.requestAnimationFrame(d)}function f(){!s.value&&a&&(s.value=!0,l=0,u=a.requestAnimationFrame(d))}function p(){s.value=!1,u!=null&&a&&(a.cancelAnimationFrame(u),u=null)}return r&&f(),Me(p),{isActive:w(s),pause:p,resume:f}}const at=Symbol(`vueuse-ssr-width`);function ot(){let e=u()?Fe(at,null):null;return typeof e==`number`?e:void 0}function st(e,t={}){let{window:r=et,ssrWidth:i=ot()}=t,a=rt(()=>r&&`matchMedia`in r&&typeof r.matchMedia==`function`),o=T(typeof i==`number`),s=T(),c=T(!1);return k(()=>{if(o.value){o.value=!a.value,c.value=E(e).split(`,`).some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),r=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||r);return n&&a&&(a=i>=We(n[1])),r&&a&&(a=i<=We(r[1])),t?!a:a});return}a.value&&(s.value=r.matchMedia(E(e)),c.value=s.value.matches)}),J(s,`change`,e=>{c.value=e.matches},{passive:!0}),n(()=>c.value)}function ct(e={}){let{window:t=et}=e,n=T(1),r=st(()=>`(resolution: ${n.value}dppx)`,e),i=Ve;return t&&(i=Qe(r,()=>n.value=t.devicePixelRatio)),{pixelRatio:w(n),stop:i}}function lt(e,t,r={}){let{window:i=et,...a}=r,o,s=rt(()=>i&&`ResizeObserver`in i),c=()=>{o&&=(o.disconnect(),void 0)},l=O(n(()=>{let t=E(e);return Array.isArray(t)?t.map(e=>tt(e)):[tt(t)]}),e=>{if(c(),s.value&&i){o=new ResizeObserver(t);for(let t of e)t&&o.observe(t,a)}},{immediate:!0,flush:`post`}),u=()=>{c(),l()};return Me(u),{isSupported:s,stop:u}}function ut(e,t={width:0,height:0},r={}){let{window:i=et,box:a=`content-box`}=r,o=n(()=>{var t;return(t=tt(e))==null||(t=t.namespaceURI)==null?void 0:t.includes(`svg`)}),s=T(t.width),c=T(t.height),{stop:l}=lt(e,([t])=>{let n=a===`border-box`?t.borderBoxSize:a===`content-box`?t.contentBoxSize:t.devicePixelContentBoxSize;if(i&&o.value){let t=tt(e);if(t){let e=t.getBoundingClientRect();s.value=e.width,c.value=e.height}}else if(n){let e=Ge(n);s.value=e.reduce((e,{inlineSize:t})=>e+t,0),c.value=e.reduce((e,{blockSize:t})=>e+t,0)}else s.value=t.contentRect.width,c.value=t.contentRect.height},r);Ye(()=>{let n=tt(e);n&&(s.value=`offsetWidth`in n?n.offsetWidth:t.width,c.value=`offsetHeight`in n?n.offsetHeight:t.height)});let u=O(()=>tt(e),e=>{s.value=e?t.width:0,c.value=e?t.height:0});function d(){l(),u()}return{width:s,height:c,stop:d}}const dt={ctrl:`control`,command:`meta`,cmd:`meta`,option:`alt`,up:`arrowup`,down:`arrowdown`,left:`arrowleft`,right:`arrowright`};function ft(e={}){let{reactive:t=!1,target:r=et,aliasMap:i=dt,passive:a=!0,onEventFired:o=Ve}=e,s=b(new Set),c={toJSON(){return{}},current:s},l=t?b(c):c,u=new Set,d=new Map([[`Meta`,u],[`Shift`,new Set],[`Alt`,new Set]]),f=new Set;function p(e,n){e in l&&(t?l[e]=n:l[e].value=n)}function m(){s.clear();for(let e of f)p(e,!1)}function h(e,t,n){if(!(!e||typeof t.getModifierState!=`function`)){for(let[e,r]of d)if(t.getModifierState(e)){n.forEach(e=>r.add(e));break}}}function g(e,t){if(e)return;let n=`${t[0].toUpperCase()}${t.slice(1)}`,r=d.get(n);if(![`shift`,`alt`].includes(t)||!r)return;let i=Array.from(r),a=i.indexOf(t);i.forEach((e,t)=>{t>=a&&(s.delete(e),p(e,!1))}),r.clear()}function _(e,t){let n=e.key?.toLowerCase(),r=[e.code?.toLowerCase(),n].filter(Boolean);if(n){n&&(t?s.add(n):s.delete(n));for(let e of r)f.add(e),p(e,t);h(t,e,[...s,...r]),g(t,n),n===`meta`&&!t&&(u.forEach(e=>{s.delete(e),p(e,!1)}),u.clear())}}J(r,`keydown`,e=>(_(e,!0),o(e)),{passive:a}),J(r,`keyup`,e=>(_(e,!1),o(e)),{passive:a}),J(`blur`,m,{passive:a}),J(`focus`,m,{passive:a});let v=new Proxy(l,{get(e,r,a){if(typeof r!=`string`)return Reflect.get(e,r,a);if(r=r.toLowerCase(),r in i&&(r=i[r]),!(r in l))if(/[+_-]/.test(r)){let e=r.split(/[+_-]/g).map(e=>e.trim());l[r]=n(()=>e.map(e=>E(v[e])).every(Boolean))}else l[r]=T(!1);let o=Reflect.get(e,r,a);return t?E(o):o}});return v}function pt(e={}){let{window:t=et,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:i=!0,includeScrollbar:a=!0,type:o=`inner`}=e,s=T(n),c=T(r),l=()=>{if(t)if(o===`outer`)s.value=t.outerWidth,c.value=t.outerHeight;else if(o===`visual`&&t.visualViewport){let{width:e,height:n,scale:r}=t.visualViewport;s.value=Math.round(e*r),c.value=Math.round(n*r)}else a?(s.value=t.innerWidth,c.value=t.innerHeight):(s.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};l(),Ye(l);let u={passive:!0};return J(`resize`,l,u),t&&o===`visual`&&t.visualViewport&&J(t.visualViewport,`resize`,l,u),i&&O(st(`(orientation: portrait)`),()=>l()),{width:s,height:c}}new Map(Object.entries({Æ:`Ae`,Ð:`D`,Ø:`O`,Þ:`Th`,ß:`ss`,æ:`ae`,ð:`d`,ø:`o`,þ:`th`,Đ:`D`,đ:`d`,Ħ:`H`,ħ:`h`,ı:`i`,IJ:`IJ`,ij:`ij`,ĸ:`k`,Ŀ:`L`,ŀ:`l`,Ł:`L`,ł:`l`,ʼn:`'n`,Ŋ:`N`,ŋ:`n`,Œ:`Oe`,œ:`oe`,Ŧ:`T`,ŧ:`t`,ſ:`s`}));function mt(e){return typeof e==`function`}function ht(e){return typeof e==`number`&&!Number.isNaN(e)}function gt(e){return _t(e,`[object Object]`)}function _t(e,t){return Object.prototype.toString.call(e)===t}var vt=class{nativeEvent;NONE=0;CAPTURING_PHASE=1;AT_TARGET=2;BUBBLING_PHASE=3;relatedTarget=null;get altKey(){return this.getFromNative(`altKey`,!1)}get button(){return this.getFromNative(`button`,0)}get buttons(){return this.getFromNative(`buttons`,0)}get clientX(){return this.getFromNative(`clientX`,0)}get clientY(){return this.getFromNative(`clientY`,0)}get ctrlKey(){return this.getFromNative(`ctrlKey`,!1)}get layerX(){return this.getFromNative(`layerX`,0)}get layerY(){return this.getFromNative(`layerY`,0)}get metaKey(){return this.getFromNative(`metaKey`,!1)}get movementX(){return this.getFromNative(`movementX`,0)}get movementY(){return this.getFromNative(`movementY`,0)}get offsetX(){return this.getFromNative(`offsetX`,0)}get offsetY(){return this.getFromNative(`offsetY`,0)}get pageX(){return this.getFromNative(`pageX`,0)}get pageY(){return this.getFromNative(`pageY`,0)}get screenX(){return this.getFromNative(`screenX`,0)}get screenY(){return this.getFromNative(`screenY`,0)}get shiftKey(){return this.getFromNative(`shiftKey`,!1)}get x(){return this.getFromNative(`x`,0)}get y(){return this.getFromNative(`y`,0)}get detail(){return this.getFromNative(`detail`,0)}get view(){return this.getFromNative(`view`,null)}get which(){return this.getFromNative(`which`,0)}get cancelBubble(){return this.getFromNative(`cancelBubble`,!1)}get composed(){return this.getFromNative(`composed`,!1)}get eventPhase(){return this.getFromNative(`eventPhase`,0)}get isTrusted(){return this.getFromNative(`isTrusted`,!1)}get returnValue(){return this.getFromNative(`returnValue`,!1)}get timeStamp(){return this.getFromNative(`timeStamp`,0)}get cancelable(){return this.getFromNative(`cancelable`,!1)}get defaultPrevented(){return this.getFromNative(`defaultPrevented`,!1)}constructor(e){this.nativeEvent=e}getFromNative(e,t){return e in this.nativeEvent?this.nativeEvent[e]:t}};const yt=new q;var Y=class e extends vt{type;bubbles;internalPointer;intersection;camera;currentObject;object;propagationState;get pointerId(){return this.internalPointer.id}get pointerType(){return this.internalPointer.type}get pointerState(){return this.internalPointer.state}get distance(){return this.intersection.distance}get distanceToRay(){return this.intersection.distanceToRay}get point(){return this.intersection.point}get index(){return this.intersection.index}get face(){return this.intersection.face}get faceIndex(){return this.intersection.faceIndex}get uv(){return this.intersection.uv}get uv1(){return this.intersection.uv1}get normal(){return this.intersection.normal}get instanceId(){return this.intersection.instanceId}get pointOnLine(){return this.intersection.pointOnLine}get batchId(){return this.intersection.batchId}get pointerPosition(){return this.intersection.pointerPosition}get pointerQuaternion(){return this.intersection.pointerQuaternion}get pointOnFace(){return this.intersection.pointOnFace}get localPoint(){return this.intersection.localPoint}get details(){return this.intersection.details}get target(){return this.object}get currentTarget(){return this.currentObject}get eventObject(){return this.currentObject}get srcElement(){return this.currentObject}_pointer;get pointer(){return this._pointer??=(yt.copy(this.intersection.point).project(this.camera),new K(yt.x,yt.y)),this._pointer}_ray;get ray(){if(this._ray!=null)return this._ray;switch(this.intersection.details.type){case`screen-ray`:case`ray`:case`sphere`:return this._ray=new be(this.intersection.pointerPosition,new q(0,0,-1).applyQuaternion(this.intersection.pointerQuaternion));case`lines`:return this._ray=new be(this.intersection.details.line.start,this.intersection.details.line.end.clone().sub(this.intersection.details.line.start).normalize())}}_intersections=[];get intersections(){return this._intersections??=[{...this.intersection,eventObject:this.currentObject}],this._intersections}_unprojectedPoint;get unprojectedPoint(){if(this._unprojectedPoint==null){let e=this.pointer;this._unprojectedPoint=new q(e.x,e.y,0).unproject(this.camera)}return this._unprojectedPoint}get stopped(){return this.propagationState.stoppedImmediate||this.propagationState.stopped}get stoppedImmediate(){return this.propagationState.stoppedImmediate}get delta(){throw Error(`not supported`)}constructor(e,t,n,r,i,a,o=i.object,s=o,c={stopped:!t,stoppedImmediate:!1}){super(n),this.type=e,this.bubbles=t,this.internalPointer=r,this.intersection=i,this.camera=a,this.currentObject=o,this.object=s,this.propagationState=c}stopPropagation(){this.propagationState.stopped=!0}stopImmediatePropagation(){this.propagationState.stoppedImmediate=!0}retarget(t){return new e(this.type,this.bubbles,this.nativeEvent,this.internalPointer,this.intersection,this.camera,t,this.target,this.propagationState)}},bt=class e extends Y{get deltaX(){return this.nativeEvent.deltaX}get deltaY(){return this.nativeEvent.deltaY}get deltaZ(){return this.nativeEvent.deltaZ}constructor(e,t,n,r,i,a){super(`wheel`,!0,e,t,n,r,i,a)}retarget(t){return new e(this.nativeEvent,this.internalPointer,this.intersection,this.camera,t,this.target)}};function X(e){xt(e,e.currentObject)}function xt(e,t){if(t==null)return;let n=wt(t,e.type);if(n!=null&&n.length>0){let r=e.retarget(t),i=n.length;for(let e=0;e<i&&!r.stoppedImmediate;e++)n[e](r)}e.stopped||xt(e,t.parent)}const St={click:`onClick`,contextmenu:`onContextMenu`,dblclick:`onDoubleClick`,pointercancel:`onPointerCancel`,pointerdown:`onPointerDown`,pointerenter:`onPointerEnter`,pointerleave:`onPointerLeave`,pointermove:`onPointerMove`,pointerout:`onPointerOut`,pointerover:`onPointerOver`,pointerup:`onPointerUp`,wheel:`onWheel`},Ct=Object.keys(St);function wt(e,t){if(e._listeners!=null&&t in e._listeners)return e._listeners[t];let n;if(e.isVoidObject&&t===`click`&&e.parent?.__r3f!=null&&(n=e.parent.__r3f.root.getState().onPointerMissed),e.__r3f!=null&&(n=e.__r3f.handlers[St[t]]),n!=null)return[n]}const Tt=new we(1e10),Et=new Map;function Dt(e){let t=Et.get(e);return t??(t=new B(Tt),t.isVoidObject=!0,t.parent=e,t.pointerEventsOrder=-1/0,Et.set(e,t)),t}function Ot(e,t,n){let r=t.normal??t.face?.normal;return r==null?!1:(e.setFromNormalAndCoplanarPoint(r,t.localPoint),e.applyMatrix4(n),!0)}function kt(e,t,n){if(t===`none`||t===`listener`&&!e)return!1;if(n===`all`)return!0;if(typeof n==`function`)return({id:e,type:t,state:r})=>n(e,t,r);let r,i;return`deny`in n?(i=!0,r=n.deny):(i=!1,r=n.allow),Array.isArray(r)?e=>At(r.includes(e.type),i):e=>At(r===e.type,i)}function At(e,t){return t?!e:e}function jt(e,t,n,r=!1,i,a,o){let s=r||Mt(e,t),c=t.pointerEvents??i,l=c??t.defaultPointerEvents??`listener`,u=t.pointerEventsType??a??`all`,d=t.pointerEventsOrder??o??0,f=kt(s,l,u),p=n.length;if(p===1)(f===!0||typeof f==`function`&&f(n[0]))&&Nt(n[0],t,l,u,d);else if(f===!0)for(let e=0;e<p;e++)Nt(n[e],t,l,u,d);else if(typeof f==`function`)for(let e=0;e<p;e++){let r=n[e];f(r)&&Nt(r,t,l,u,d)}if(t.children.length===0||t.intersectChildren===!1)return;let m=t.interactableDescendants??t.children,h=m.length;for(let t=0;t<h;t++)jt(e,m[t],n,s,c,u,d)}function Mt(e,t){if(t.ancestorsHaveListeners||e===`pointer`&&t.ancestorsHavePointerListeners||e===`wheel`&&t.ancestorsHaveWheelListeners||t.__r3f!=null&&t.__r3f?.eventCount>0&&(e===`wheel`&&t.__r3f.handlers.onWheel!=null||e===`pointer`&&Object.keys(t.__r3f.handlers).some(e=>e!=`onWheel`)))return!0;if(t._listeners==null)return!1;if(e===`wheel`){let e=t._listeners.wheel;return e!=null&&e.length>0}let n=Object.entries(t._listeners),r=n.length;for(let e=0;e<r;e++){let t=n[e];if(t[0]!==`wheel`&&Ct.includes(t[0])&&t[1]!=null&&t[1].length>0)return!0}return!1}function Nt({intersector:e,options:t},n,r,i,a){t.filter?.(n,r,i,a)!==!1&&e.executeIntersection(n,a)}function Pt(e,t,{customSort:n=Ft}={},r){let i,a,o,s=e.length;for(let c=0;c<s;c++){let s=e[c];if(r?.(s)===!1)continue;let l=t?.[c];(i==null||n(s,l,i,a)<0)&&(o=c,i=s,a=l)}return o}function Ft(e,t=0,n,r=0){return t==r?e.distance-n.distance:r-t}const It=1e7;function Lt(e,t,n,r,i,a=0){let o=t.direction.clone().multiplyScalar(It),s=It;return{distance:s+a,object:Dt(e),point:o,normal:t.origin.clone().sub(o).normalize(),details:n(o,s),pointerPosition:r,pointerQuaternion:i,pointOnFace:o,localPoint:o}}function Rt(e,t,n){for(;n>0;)e.push(t),--n}const zt=Symbol(`buttonsDownTime`),Bt=Symbol(`buttonsClickTime`);globalThis.pointerEventspointerMap??=new Map,V.prototype.setPointerCapture=function(e){Vt(e)?.setCapture(this)},V.prototype.releasePointerCapture=function(e){let t=Vt(e);t==null||!t.hasCaptured(this)||t.setCapture(void 0)},V.prototype.hasPointerCapture=function(e){return Vt(e)?.hasCaptured(this)??!1};function Vt(e){return globalThis.pointerEventspointerMap?.get(e)}var Ht=class{id;type;state;intersector;getCamera;onMoveCommited;parentSetPointerCapture;parentReleasePointerCapture;options;prevIntersection;intersection;prevEnabled=!0;enabled=!0;wheelIntersection;pointerEntered=[];pointerEnteredHelper=[];pointerCapture;buttonsDownTime=new Map;buttonsDown=new Set;wasMoved=!1;onFirstMove=[];constructor(e,t,n,r,i,a,o,s,c={}){this.id=e,this.type=t,this.state=n,this.intersector=r,this.getCamera=i,this.onMoveCommited=a,this.parentSetPointerCapture=o,this.parentReleasePointerCapture=s,this.options=c,globalThis.pointerEventspointerMap?.set(e,this)}getPointerCapture(){return this.pointerCapture}hasCaptured(e){return this.pointerCapture?.object===e}setCapture(e){this.pointerCapture?.object!==e&&(this.clearPointerCapture(),e!=null&&this.intersection!=null&&(this.pointerCapture={object:e,intersection:this.intersection},this.parentSetPointerCapture?.()))}getButtonsDown(){return this.buttonsDown}getIntersection(){return this.intersection}getEnabled(){return this.enabled}setEnabled(e,t,n=!0){this.enabled!==e&&(!e&&this.pointerCapture!=null&&this.clearPointerCapture(),this.enabled=e,n&&this.commit(t,!1))}computeIntersection(e,t,n){return this.pointerCapture==null?(this.intersector.startIntersection(n),jt(e,t,[this]),this.intersector.finalizeIntersection(t)):this.intersector.intersectPointerCapture(this.pointerCapture,n)}setIntersection(e){this.intersection=e}commit(e,t){let n=this.getCamera(),r=this.prevEnabled?this.prevIntersection:void 0,i=this.enabled?this.intersection:void 0;r!=null&&r.object!=i?.object&&X(new Y(`pointerout`,!0,e,this,r,n));let a=this.pointerEntered;this.pointerEntered=[],this.pointerEnteredHelper.length=0,Ut(i?.object,this.pointerEntered,a,this.pointerEnteredHelper);let o=a.length;for(let t=0;t<o;t++){let i=a[t];X(new Y(`pointerleave`,!1,e,this,r,n,i))}i!=null&&r?.object!=i.object&&X(new Y(`pointerover`,!0,e,this,i,n));for(let t=this.pointerEnteredHelper.length-1;t>=0;t--){let r=this.pointerEnteredHelper[t];X(new Y(`pointerenter`,!1,e,this,i,n,r))}if(t&&i!=null&&X(new Y(`pointermove`,!0,e,this,i,n)),this.prevIntersection=this.intersection,this.prevEnabled=this.enabled,!this.wasMoved&&this.intersector.isReady()){this.wasMoved=!0;let e=this.onFirstMove.length;for(let t=0;t<e;t++)this.onFirstMove[t](n);this.onFirstMove.length=0}this.onMoveCommited?.(this)}move(e,t){this.intersection=this.computeIntersection(`pointer`,e,t),this.commit(t,!0)}over(e,t){this.wasMoved||(this.intersection=this.computeIntersection(`pointer`,e,t),this.commit(t,!1))}emitMove(e){this.intersection!=null&&X(new Y(`pointermove`,!0,e,this,this.intersection,this.getCamera()))}down(e){if(this.buttonsDown.add(e.button),!this.enabled)return;if(!this.wasMoved){this.onFirstMove.push(this.down.bind(this,e));return}if(this.intersection==null)return;X(new Y(`pointerdown`,!0,e,this,this.intersection,this.getCamera()));let{object:t}=this.intersection;t[zt]??=new Map,t[zt].set(e.button,e.timeStamp),this.buttonsDownTime.set(e.button,e.timeStamp)}up(e){if(this.buttonsDown.delete(e.button),!this.enabled)return;if(!this.wasMoved){this.onFirstMove.push(this.up.bind(this,e));return}if(this.intersection==null)return;let{clickThesholdMs:t,contextMenuButton:n=2,dblClickThresholdMs:r=500,clickThresholdMs:i=t??300}=this.options;this.clearPointerCapture();let a=Wt(this.buttonsDownTime,this.intersection.object[zt],e.button,e.timeStamp,i),o=this.getCamera();if(a&&e.button===n&&X(new Y(`contextmenu`,!0,e,this,this.intersection,o)),X(new Y(`pointerup`,!0,e,this,this.intersection,o)),!a||e.button===n)return;X(new Y(`click`,!0,e,this,this.intersection,o));let{object:s}=this.intersection,c=s[Bt]??=new Map,l=c.get(e.button);if(l==null||e.timeStamp-l>r){c.set(e.button,e.timeStamp);return}X(new Y(`dblclick`,!0,e,this,this.intersection,o)),c.delete(e.button)}cancel(e){this.buttonsDown.clear(),this.buttonsDownTime.clear(),this.clearPointerCapture(),this.onFirstMove.length=0,!(!this.enabled||!this.wasMoved||this.intersection==null)&&X(new Y(`pointercancel`,!0,e,this,this.intersection,this.getCamera()))}wheel(e,t,n=!1){if(!this.enabled)return;if(!this.wasMoved&&n){this.onFirstMove.push(this.wheel.bind(this,e,t,n));return}n||(this.wheelIntersection=this.computeIntersection(`wheel`,e,t));let r=n?this.intersection:this.wheelIntersection;r!=null&&X(new bt(t,this,r,this.getCamera()))}emitWheel(e,t=!1){if(!this.enabled)return;if(!this.wasMoved&&t){this.onFirstMove.push(this.emitWheel.bind(this,e,t));return}let n=t?this.intersection:this.wheelIntersection;n!=null&&X(new bt(e,this,n,this.getCamera()))}exit(e){(this.buttonsDown.size>0||this.pointerCapture!=null)&&this.cancel(e),this.wasMoved&&(this.intersection=void 0,this.commit(e,!1)),this.onFirstMove.length=0,this.wasMoved=!1}clearPointerCapture(){this.pointerCapture!=null&&(this.parentReleasePointerCapture?.(),this.pointerCapture=void 0)}};function Ut(e,t,n,r){if(e==null)return;let i=n.indexOf(e);i==-1?r.push(e):n.splice(i,1),t.push(e),Ut(e.parent,t,n,r)}function Wt(e,t,n,r,i){if(t==null)return!1;let a=t.get(n);return!(a==null||r-a>i||a!=e.get(n))}const Gt=new Ee,Kt=new Ee,qt=new K,Jt=new K,Yt=new K,Xt=new q,Zt=new z,Qt=new q;function $t(e,t,n){Qt.copy(t).applyMatrix4(Zt.copy(n.matrixWorld).invert());let r=n.geometry.attributes.uv;if(r==null||!(r instanceof N))return!1;let i;return en(n,(e,t,a)=>{n.getVertexPosition(e,Gt.a),n.getVertexPosition(t,Gt.b),n.getVertexPosition(a,Gt.c);let o=Gt.closestPointToPoint(Qt,Xt).distanceTo(Qt);i!=null&&o>=i||(i=o,Kt.copy(Gt),qt.fromBufferAttribute(r,e),Jt.fromBufferAttribute(r,t),Yt.fromBufferAttribute(r,a))}),i==null?!1:(Kt.closestPointToPoint(Qt,Xt),Kt.getInterpolation(Xt,qt,Jt,Yt,e),!0)}function en(e,t){let n=e.geometry.drawRange;if(e.geometry.index!=null){let r=e.geometry.index,i=Math.max(0,n.start),a=Math.min(r.count,n.start+n.count);for(let e=i;e<a;e+=3)t(r.getX(e),r.getX(e+1),r.getX(e+2));return}let r=e.geometry.attributes.position;if(r==null)return;let i=Math.max(0,n.start),a=Math.min(r.count,n.start+n.count);for(let e=i;e<a;e+=3)t(e,e+1,e+2)}new z,new I,new q,new U,new be,new K,new q(0,0,0),new q(0,0,1);const tn=new z,nn=new q;new q(0,0,-1),new U;const rn=new K,an=new q;var on=class{prepareTransformation;options;raycaster=new xe;cameraQuaternion=new ve;fromPosition=new q;fromQuaternion=new ve;coords=new K;viewPlane=new U;intersects=[];pointerEventsOrders=[];constructor(e,t){this.prepareTransformation=e,this.options=t}isReady(){return!0}intersectPointerCapture({intersection:e,object:t},n){let r=e.details;if(r.type!=`screen-ray`)throw Error(`unable to process a pointer capture of type "${e.details.type}" with a camera ray intersector`);if(!this.startIntersection(n))return e;this.viewPlane.constant-=r.distanceViewPlane;let i=this.raycaster.ray.intersectPlane(this.viewPlane,new q);if(i==null)return e;e.object.updateWorldMatrix(!0,!1),Ot(this.viewPlane,e,e.object.matrixWorld);let a=e.uv;return e.object instanceof B&&$t(rn,i,e.object)&&(a=rn.clone()),{...e,details:{...r,direction:this.raycaster.ray.direction.clone(),screenPoint:this.coords.clone()},uv:a,object:t,point:i,pointOnFace:i,pointerPosition:this.raycaster.ray.origin.clone(),pointerQuaternion:this.cameraQuaternion.clone()}}startIntersection(e){let t=this.prepareTransformation(e,this.coords);return t==null?!1:(t.updateWorldMatrix(!0,!1),t.matrixWorld.decompose(this.fromPosition,this.fromQuaternion,nn),this.raycaster.setFromCamera(this.coords,t),this.viewPlane.setFromNormalAndCoplanarPoint(t.getWorldDirection(an),this.raycaster.ray.origin),!0)}executeIntersection(e,t){let n=this.intersects.length;e.raycast(this.raycaster,this.intersects),Rt(this.pointerEventsOrders,t,this.intersects.length-n)}finalizeIntersection(e){let t=this.fromPosition.clone(),n=this.cameraQuaternion.clone(),r=this.raycaster.ray.direction.clone(),i=Pt(this.intersects,this.pointerEventsOrders,this.options),a=i==null?void 0:this.intersects[i];return this.intersects.length=0,this.pointerEventsOrders.length=0,a==null?Lt(e,this.raycaster.ray,(e,t)=>({type:`screen-ray`,distanceViewPlane:t,screenPoint:this.coords.clone(),direction:r}),t,n):(a.object.updateWorldMatrix(!0,!1),tn.copy(a.object.matrixWorld).invert(),Object.assign(a,{details:{type:`screen-ray`,distanceViewPlane:this.viewPlane.distanceToPoint(a.point),screenPoint:this.coords.clone(),direction:r},pointOnFace:a.point,pointerPosition:t,pointerQuaternion:n,localPoint:a.point.clone().applyMatrix4(tn)}))}};new q,new K,new z,new q,new ve,new U,new Ce,new q,new q,new q,new q(1e-4,1e-4,1e-4),new z;let sn=23412;function cn(){return sn++}function ln(e,t,n){if(!(t instanceof globalThis.MouseEvent))return n.set(0,0);let{width:r,height:i,top:a,left:o}=e.getBoundingClientRect(),s=t.clientX-o,c=t.clientY-a;return n.set(s/r*2-1,-(c/i)*2+1)}function un(e,t,n,r){return dn(e,typeof t==`function`?t:()=>t,n,ln.bind(null,e),e.setPointerCapture.bind(e),t=>{e.hasPointerCapture(t)&&e.releasePointerCapture(t)},{pointerTypePrefix:`screen-`,...r})}function dn(e,t,n,r,i,a,o={}){let s=o?.forwardPointerCapture??!0,c=new Map,l=o.pointerTypePrefix??`forward-`,u=(e,u)=>{let d=c.get(e.pointerId);return d??(d=new Ht(cn(),`${l}${e.pointerType}`,e.pointerState,new on((e,n)=>(r(e,n),t()),o),t,void 0,s?i.bind(null,e.pointerId):void 0,s?a.bind(null,e.pointerId):void 0,o),u!=`move`&&u!=`wheel`&&(d.setIntersection(d.computeIntersection(`pointer`,n,e)),d.commit(e,!1)),c.set(e.pointerId,d),d)},d=new Map,f=new Map,p=[],m=[],h=(e,t,r)=>{switch(e){case`move`:r.move(n,t);return;case`over`:r.move(n,t);return;case`wheel`:r.wheel(n,t);return;case`cancel`:r.cancel(t);return;case`down`:if(!fn(t))return;r.down(t);return;case`up`:if(!fn(t))return;r.up(t);return;case`exit`:f.delete(r),d.delete(r),r.exit(t);return}},g=(e,t)=>{let n=u(t,e);e===`move`&&f.set(n,t),e===`wheel`&&d.set(n,t),o.batchEvents??!0?m.push({type:e,event:t}):h(e,t,n)},_=g.bind(null,`move`),v=g.bind(null,`over`),y=g.bind(null,`cancel`),b=g.bind(null,`down`),x=g.bind(null,`up`),S=g.bind(null,`wheel`),C=g.bind(null,`exit`);return e.addEventListener(`pointermove`,_),e.addEventListener(`pointerover`,v),e.addEventListener(`pointercancel`,y),e.addEventListener(`pointerdown`,b),e.addEventListener(`pointerup`,x),e.addEventListener(`wheel`,S),e.addEventListener(`pointerleave`,C),{destroy(){e.removeEventListener(`pointermove`,_),e.removeEventListener(`pointerover`,v),e.removeEventListener(`pointercancel`,y),e.removeEventListener(`pointerdown`,b),e.removeEventListener(`pointerup`,x),e.removeEventListener(`wheel`,S),e.removeEventListener(`pointerleave`,C),f.clear(),d.clear()},update(){let e=m.length;for(let t=0;t<e;t++){let{type:e,event:n}=m[t],r=u(n,e);if(e===`move`&&(p.push(r),f.get(r)!=n)){r.emitMove(n);continue}if(e===`wheel`&&d.get(r)!=n){r.emitWheel(n);continue}h(e,n,r)}if(m.length=0,o.intersectEveryFrame??!1)for(let[e,t]of f.entries())p.includes(e)||e.move(n,t);p.length=0}}}function fn(e){return e.button!=null}
2
- /*! #__NO_SIDE_EFFECTS__ */
3
- const pn=e=>t=>gt(t)&&e in t&&!!t[e],mn=pn(`isCamera`),hn=pn(`isPerspectiveCamera`);function gn(){try{let e=import.meta.env?.MODE;if(e)return e}catch{}return typeof process<`u`&&process.env,`production`}gn();const _n=`[TresJS ▲ ■ ●] `;function vn(...e){typeof e[0]==`string`?e[0]=_n+e[0]:e.unshift(_n),console.warn(...e)}const yn=({sizes:e})=>{let t=S([]),r=n(()=>t.value[0]),i=e=>{let n=mn(e)?e:t.value.find(t=>t.uuid===e);n&&(t.value=[n,...t.value.filter(({uuid:e})=>e!==n.uuid)])};return k(()=>{e.aspectRatio.value&&t.value.forEach(t=>{hn(t)&&(t.aspect=e.aspectRatio.value,t.updateProjectionMatrix())})}),{activeCamera:r,cameras:t,registerCamera:(e,n=!1)=>{t.value.some(({uuid:t})=>t===e.uuid)||(t.value.push(e),n&&i(e.uuid))},deregisterCamera:e=>{t.value=t.value.filter(({uuid:t})=>t!==e.uuid)},setActiveCamera:i}};function bn(){let e=new Map,t=new Set,n=0,r=!1,i=()=>{let n=Array.from(e.entries()).sort((e,t)=>{let n=e[1].priority-t[1].priority;return n===0?e[1].addI-t[1].addI:n});t.clear(),n.forEach(e=>t.add(e[0]))},a=n=>{e.delete(n),t.delete(n)};return{on:(t,i=0)=>{e.set(t,{priority:i,addI:n++});let o=()=>a(t);return Me(o),r=!0,{off:o}},off:a,trigger:(...e)=>(r&&=(i(),!1),Promise.all(Array.from(t).map(t=>t(...e)))),dispose:()=>{e.clear(),t.clear()},get count(){return e.size}}}const xn=S({}),Sn=e=>Object.assign(xn.value,e),Cn=(e,t,n)=>{if(!mt(e.setPixelRatio))return;let r=0;if(n&&Array.isArray(n)&&n.length>=2){let[e,i]=n;r=R.clamp(t,e,i)}else r=ht(n)?n:t;r!==e.getPixelRatio?.()&&e.setPixelRatio(r)},wn=Number.parseInt(W.replace(`dev`,``));function Tn(){if(wn>=179){let e=new A.Timer;return{getDelta:()=>e.getDelta(),getElapsed:()=>e.getElapsed(),update:()=>e.update(),start:()=>{typeof document<`u`&&e.connect(document)},stop:()=>e.disconnect()}}else{let e=new A.Clock;return{getDelta:()=>e.getDelta(),getElapsed:()=>e.elapsedTime,update:()=>{},start:()=>e.start(),stop:()=>e.stop()}}}const En=(e,{fpsLimit:t}={})=>{let n=Tn(),r={before:Ne(),after:Ne()},{pause:i,resume:a,isActive:o}=it(()=>{n.update();let t={delta:n.getDelta(),elapsed:n.getElapsed()};r.before.trigger(t),e(),r.after.trigger(t)},{immediate:!1,fpsLimit:t});return{start:()=>{n.start(),a()},stop:()=>{n.stop(),i()},isActive:o,onBeforeLoop:r.before.on,onLoop:r.after.on}};var Dn=class extends Error{name=`TresRendererError`;constructor(e,t,n){super(e,n),this.code=t}};function On({scene:e,canvas:t,options:r,fpsLimit:i,contextParts:{sizes:a,camera:o}}){let s=mt(r.renderer)?r.renderer({sizes:a,scene:e,camera:o,canvas:t}):new je({...r,canvas:tt(t)}),c=S(E(r.renderMode)===`manual`?0:1),l=n(()=>E(r.renderMode)===`on-demand`&&c.value===0),u=()=>e.value.traverse(e=>{e instanceof B&&e.material instanceof pe&&(e.material.needsUpdate=!0)}),d=(e=1)=>{l.value&&(c.value=Math.min(60,c.value+e))},f=()=>{if(E(r.renderMode)!==`manual`)throw Error(`advance can only be called in manual render mode.`);c.value=1},m=()=>{E(r.renderMode)===`on-demand`&&d()},h=n(()=>E(r.renderMode)===`always`),g=e=>gt(e)&&`isRenderer`in e&&!!e.isRenderer,v=Ne(),y=Ne(),b=!1,x=S(!1),C=S(null),w=async()=>{try{g(s)&&await s.init(),x.value=!0}catch(e){let t=new Dn(e instanceof Error?e.message:`Unknown error`,`INITIALIZATION_FAILED`,{cause:e instanceof Error?e:void 0});C.value=t,console.error(`[TresJS] Renderer initialization failed. This may occur if:
4
- - WebGPU is not supported by your browser
5
- - GPU is not available or lacks required features
6
- - GPU drivers are outdated
7
- Error details: ${t.message}`,t),y.trigger(t)}},T=Ne(),ee=()=>{c.value=h.value?1:Math.max(0,c.value-1),T.trigger(s)},D=t=>{o.activeCamera.value&&(s.render(e.value,o.activeCamera.value),t())},te=e=>{D=e},ne=En(()=>{c.value&&D(ee)},{fpsLimit:i});v.on(()=>{x.value&&ne.start()}),O([a.width,a.height,x],()=>{x.value&&(s.setSize(a.width.value,a.height.value),!b&&s.domElement.width&&s.domElement.height&&(b=!0,p(()=>{v.trigger(s)})),m())},{immediate:!0}),k(()=>{x.value&&Cn(s,a.pixelRatio.value,E(r.dpr))}),w(),E(r.renderMode)===`on-demand`&&d(),E(r.renderMode)===`manual`&&Ze(100,{callback:f});let A=n(()=>{let e=E(r.clearColor),t=E(r.clearAlpha),n=typeof e==`string`&&e.length===9&&e.startsWith(`#`);return n&&t!==void 0&&vn(`clearColor with alpha (e.g. ${e}) and clearAlpha cannot both be set, using clearColor as source of truth`),n?{alpha:Number.parseInt(e.slice(7,9),16)/255,color:e.slice(0,7)}:{alpha:t,color:e}});return k(()=>{if(!x.value)return;let e=A.value;e.color===void 0||e.alpha===void 0||s.setClearColor(e.color,e.alpha)}),k(()=>{if(!x.value)return;let e=r.toneMapping;e&&(s.toneMapping=e)}),k(()=>{if(!x.value)return;let e=r.toneMappingExposure;e&&(s.toneMappingExposure=e)}),k(()=>{if(!x.value)return;let e=r.outputColorSpace;e&&(s.outputColorSpace=e)}),k(()=>{if(!x.value)return;let e=r.shadows;e!==void 0&&(s.shadowMap.enabled=e,u())}),k(()=>{if(!x.value)return;let e=r.shadowMapType;e!==void 0&&(s.shadowMap.type=e,u())}),_(()=>{s.dispose(),`forceContextLoss`in s&&s.forceContextLoss()}),{loop:ne,instance:s,advance:f,onReady:v.on,onRender:T.on,onError:y.on,invalidate:d,canBeInvalidated:l,mode:E(r.renderMode),replaceRenderFunction:te,isInitialized:x,error:C}}function kn(e,t,r=10){let{pixelRatio:i}=ct(),a=E(e)?pt():ut(n(()=>E(t).parentElement)),o=x(Je(a.width,r)),s=x(Je(a.height,r));return{width:o,height:s,pixelRatio:i,aspectRatio:n(()=>o.value/s.value)}}function An({canvas:e,contextParts:{scene:t,camera:n,renderer:r}}){let{update:i,destroy:a}=un(E(e),()=>E(n.activeCamera),t.value),{off:o}=r.loop.onLoop(i);_(a),_(o);let s=Dt(t.value),c=Ne();return s.addEventListener(`click`,c.trigger),{onPointerMissed:c.on}}const[jn,Mn]=Le(({scene:e,canvas:t,fpsLimit:n,windowSize:r,rendererOptions:i})=>{let a=T(e),o=kn(r,t),s=yn({sizes:o}),c=On({scene:a,canvas:t,options:i,fpsLimit:n,contextParts:{sizes:o,camera:s}}),l=An({canvas:t,contextParts:{scene:a,camera:s,renderer:c}}),u={sizes:o,scene:a,camera:s,renderer:c,controls:S(null),extend:Sn,events:l};return u.scene.value.__tres={root:u,objects:[],isUnmounting:!1},u},{injectionKey:`useTres`}),Nn=()=>{let e=Mn();if(!e)throw Error(`useTresContext must be used together with useTresContextProvider.
8
- You probably tried to use it above or on the same level as a TresCanvas component.
9
- It should be used in child components of a TresCanvas instance.`);return e};function Pn(){let{scene:e,renderer:t,camera:n,sizes:r,controls:i,extend:a,events:o}=Nn();return{scene:e,renderer:t.instance,camera:n.activeCamera,sizes:r,controls:i,extend:a,events:o,invalidate:t.invalidate,advance:t.advance}}const Fn=()=>{let e=Pn(),{renderer:t}=Nn(),n=bn(),r=bn();t.loop.onBeforeLoop(t=>{n.trigger({...e,...t})}),t.loop.onLoop(t=>{r.trigger({...e,...t})});let i=t.replaceRenderFunction;return{stop:t.loop.stop,start:t.loop.start,isActive:t.loop.isActive,onBeforeRender:n.on,onRender:r.on,render:i}};A.Mesh;const In=parseInt(W.replace(/\D+/g,``));var Ln=Object.defineProperty,Rn=(e,t,n)=>t in e?Ln(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zn=(e,t,n)=>(Rn(e,typeof t==`symbol`?t:t+``,n),n);const Bn=(()=>{let e=class extends B{constructor(t,n={}){super(t),this.isReflector=!0,this.type=`Reflector`,this.camera=new H;let r=this,i=n.color===void 0?new P(8355711):new P(n.color),a=n.textureWidth||512,o=n.textureHeight||512,s=n.clipBias||0,c=n.shader||e.ReflectorShader,l=n.multisample===void 0?4:n.multisample,u=new U,d=new q,f=new q,p=new q,m=new z,h=new q(0,0,-1),g=new ke,_=new q,v=new q,y=new ke,b=new z,x=this.camera,S=new Ae(a,o,{samples:l,type:de}),C=new Se({uniforms:De.clone(c.uniforms),fragmentShader:c.fragmentShader,vertexShader:c.vertexShader});C.uniforms.tDiffuse.value=S.texture,C.uniforms.color.value=i,C.uniforms.textureMatrix.value=b,this.material=C,this.onBeforeRender=function(e,t,n){if(f.setFromMatrixPosition(r.matrixWorld),p.setFromMatrixPosition(n.matrixWorld),m.extractRotation(r.matrixWorld),d.set(0,0,1),d.applyMatrix4(m),_.subVectors(f,p),_.dot(d)>0)return;_.reflect(d).negate(),_.add(f),m.extractRotation(n.matrixWorld),h.set(0,0,-1),h.applyMatrix4(m),h.add(p),v.subVectors(f,h),v.reflect(d).negate(),v.add(f),x.position.copy(_),x.up.set(0,1,0),x.up.applyMatrix4(m),x.up.reflect(d),x.lookAt(v),x.far=n.far,x.updateMatrixWorld(),x.projectionMatrix.copy(n.projectionMatrix),b.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),b.multiply(x.projectionMatrix),b.multiply(x.matrixWorldInverse),b.multiply(r.matrixWorld),u.setFromNormalAndCoplanarPoint(d,f),u.applyMatrix4(x.matrixWorldInverse),g.set(u.normal.x,u.normal.y,u.normal.z,u.constant);let i=x.projectionMatrix;y.x=(Math.sign(g.x)+i.elements[8])/i.elements[0],y.y=(Math.sign(g.y)+i.elements[9])/i.elements[5],y.z=-1,y.w=(1+i.elements[10])/i.elements[14],g.multiplyScalar(2/g.dot(y)),i.elements[2]=g.x,i.elements[6]=g.y,i.elements[10]=g.z+1-s,i.elements[14]=g.w,r.visible=!1;let a=e.getRenderTarget(),o=e.xr.enabled,c=e.shadowMap.autoUpdate,l=e.toneMapping,C=!1;C=`outputColorSpace`in e?e.outputColorSpace===`srgb`:e.outputEncoding===3001,e.xr.enabled=!1,e.shadowMap.autoUpdate=!1,`outputColorSpace`in e?e.outputColorSpace=`srgb-linear`:e.outputEncoding=3e3,e.toneMapping=he,e.setRenderTarget(S),e.state.buffers.depth.setMask(!0),e.autoClear===!1&&e.clear(),e.render(t,x),e.xr.enabled=o,e.shadowMap.autoUpdate=c,e.toneMapping=l,`outputColorSpace`in e?e.outputColorSpace=C?`srgb`:`srgb-linear`:e.outputEncoding=C?3001:3e3,e.setRenderTarget(a);let w=n.viewport;w!==void 0&&e.state.viewport(w),r.visible=!0},this.getRenderTarget=function(){return S},this.dispose=function(){S.dispose(),r.material.dispose()}}},t=e;return zn(t,`ReflectorShader`,{uniforms:{color:{value:null},tDiffuse:{value:null},textureMatrix:{value:null}},vertexShader:`
10
- uniform mat4 textureMatrix;
11
- varying vec4 vUv;
12
-
13
- #include <common>
14
- #include <logdepthbuf_pars_vertex>
15
-
16
- void main() {
17
-
18
- vUv = textureMatrix * vec4( position, 1.0 );
19
-
20
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
21
-
22
- #include <logdepthbuf_vertex>
23
-
24
- }`,fragmentShader:`
25
- uniform vec3 color;
26
- uniform sampler2D tDiffuse;
27
- varying vec4 vUv;
28
-
29
- #include <logdepthbuf_pars_fragment>
30
-
31
- float blendOverlay( float base, float blend ) {
32
-
33
- return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );
34
-
35
- }
36
-
37
- vec3 blendOverlay( vec3 base, vec3 blend ) {
38
-
39
- return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );
40
-
41
- }
42
-
43
- void main() {
44
-
45
- #include <logdepthbuf_fragment>
46
-
47
- vec4 base = texture2DProj( tDiffuse, vUv );
48
- gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
49
-
50
- #include <tonemapping_fragment>
51
- #include <${In>=154?`colorspace_fragment`:`encodings_fragment`}>
52
-
53
- }`}),t})();var Vn=Object.defineProperty,Hn=(e,t,n)=>t in e?Vn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Un=(e,t,n)=>(Hn(e,typeof t==`symbol`?t:t+``,n),n),Wn=class{constructor(){Un(this,`_listeners`)}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let t=this._listeners[e.type];if(t!==void 0){e.target=this;let n=t.slice(0);for(let t=0,r=n.length;t<r;t++)n[t].call(this,e);e.target=null}}},Gn=Object.defineProperty,Kn=(e,t,n)=>t in e?Gn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Z=(e,t,n)=>(Kn(e,typeof t==`symbol`?t:t+``,n),n);const qn=new le(0,0,0,`YXZ`),Jn=new q,Yn={type:`change`},Xn={type:`lock`},Zn={type:`unlock`},Qn=.002,$n=Math.PI/2;var er=class extends Wn{constructor(e,t){super(),Z(this,`camera`),Z(this,`domElement`),Z(this,`isLocked`),Z(this,`minPolarAngle`),Z(this,`maxPolarAngle`),Z(this,`pointerSpeed`),Z(this,`onMouseMove`,e=>{!this.domElement||this.isLocked===!1||(qn.setFromQuaternion(this.camera.quaternion),qn.y-=e.movementX*Qn*this.pointerSpeed,qn.x-=e.movementY*Qn*this.pointerSpeed,qn.x=Math.max($n-this.maxPolarAngle,Math.min($n-this.minPolarAngle,qn.x)),this.camera.quaternion.setFromEuler(qn),this.dispatchEvent(Yn))}),Z(this,`onPointerlockChange`,()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(Xn),this.isLocked=!0):(this.dispatchEvent(Zn),this.isLocked=!1))}),Z(this,`onPointerlockError`,()=>{console.error(`THREE.PointerLockControls: Unable to use Pointer Lock API`)}),Z(this,`connect`,e=>{this.domElement=e||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener(`mousemove`,this.onMouseMove),this.domElement.ownerDocument.addEventListener(`pointerlockchange`,this.onPointerlockChange),this.domElement.ownerDocument.addEventListener(`pointerlockerror`,this.onPointerlockError))}),Z(this,`disconnect`,()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener(`mousemove`,this.onMouseMove),this.domElement.ownerDocument.removeEventListener(`pointerlockchange`,this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener(`pointerlockerror`,this.onPointerlockError))}),Z(this,`dispose`,()=>{this.disconnect()}),Z(this,`getObject`,()=>this.camera),Z(this,`direction`,new q(0,0,-1)),Z(this,`getDirection`,e=>e.copy(this.direction).applyQuaternion(this.camera.quaternion)),Z(this,`moveForward`,e=>{Jn.setFromMatrixColumn(this.camera.matrix,0),Jn.crossVectors(this.camera.up,Jn),this.camera.position.addScaledVector(Jn,e)}),Z(this,`moveRight`,e=>{Jn.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(Jn,e)}),Z(this,`lock`,()=>{this.domElement&&this.domElement.requestPointerLock()}),Z(this,`unlock`,()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}},tr=Object.defineProperty,nr=(e,t,n)=>t in e?tr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q=(e,t,n)=>(nr(e,typeof t==`symbol`?t:t+``,n),n);const rr=new be,ir=new U,ar=Math.cos(Math.PI/180*70),or=(e,t)=>(e%t+t)%t;var sr=class extends Wn{constructor(e,t){super(),Q(this,`object`),Q(this,`domElement`),Q(this,`enabled`,!0),Q(this,`target`,new q),Q(this,`minDistance`,0),Q(this,`maxDistance`,1/0),Q(this,`minZoom`,0),Q(this,`maxZoom`,1/0),Q(this,`minPolarAngle`,0),Q(this,`maxPolarAngle`,Math.PI),Q(this,`minAzimuthAngle`,-1/0),Q(this,`maxAzimuthAngle`,1/0),Q(this,`enableDamping`,!1),Q(this,`dampingFactor`,.05),Q(this,`enableZoom`,!0),Q(this,`zoomSpeed`,1),Q(this,`enableRotate`,!0),Q(this,`rotateSpeed`,1),Q(this,`enablePan`,!0),Q(this,`panSpeed`,1),Q(this,`screenSpacePanning`,!0),Q(this,`keyPanSpeed`,7),Q(this,`zoomToCursor`,!1),Q(this,`autoRotate`,!1),Q(this,`autoRotateSpeed`,2),Q(this,`reverseOrbit`,!1),Q(this,`reverseHorizontalOrbit`,!1),Q(this,`reverseVerticalOrbit`,!1),Q(this,`keys`,{LEFT:`ArrowLeft`,UP:`ArrowUp`,RIGHT:`ArrowRight`,BOTTOM:`ArrowDown`}),Q(this,`mouseButtons`,{LEFT:L.ROTATE,MIDDLE:L.DOLLY,RIGHT:L.PAN}),Q(this,`touches`,{ONE:G.ROTATE,TWO:G.DOLLY_PAN}),Q(this,`target0`),Q(this,`position0`),Q(this,`zoom0`),Q(this,`_domElementKeyEvents`,null),Q(this,`getPolarAngle`),Q(this,`getAzimuthalAngle`),Q(this,`setPolarAngle`),Q(this,`setAzimuthalAngle`),Q(this,`getDistance`),Q(this,`getZoomScale`),Q(this,`listenToKeyEvents`),Q(this,`stopListenToKeyEvents`),Q(this,`saveState`),Q(this,`reset`),Q(this,`update`),Q(this,`connect`),Q(this,`dispose`),Q(this,`dollyIn`),Q(this,`dollyOut`),Q(this,`getScale`),Q(this,`setScale`),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>l.phi,this.getAzimuthalAngle=()=>l.theta,this.setPolarAngle=e=>{let t=or(e,2*Math.PI),r=l.phi;r<0&&(r+=2*Math.PI),t<0&&(t+=2*Math.PI);let i=Math.abs(t-r);2*Math.PI-i<i&&(t<r?t+=2*Math.PI:r+=2*Math.PI),u.phi=t-r,n.update()},this.setAzimuthalAngle=e=>{let t=or(e,2*Math.PI),r=l.theta;r<0&&(r+=2*Math.PI),t<0&&(t+=2*Math.PI);let i=Math.abs(t-r);2*Math.PI-i<i&&(t<r?t+=2*Math.PI:r+=2*Math.PI),u.theta=t-r,n.update()},this.getDistance=()=>n.object.position.distanceTo(n.target),this.listenToKeyEvents=e=>{e.addEventListener(`keydown`,Se),this._domElementKeyEvents=e},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener(`keydown`,Se),this._domElementKeyEvents=null},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent(r),n.update(),s=o.NONE},this.update=(()=>{let t=new q,i=new q(0,1,0),a=new ve().setFromUnitVectors(e.up,i),p=a.clone().invert(),m=new q,h=new ve,g=2*Math.PI;return function(){let _=n.object.position;a.setFromUnitVectors(e.up,i),p.copy(a).invert(),t.copy(_).sub(n.target),t.applyQuaternion(a),l.setFromVector3(t),n.autoRotate&&s===o.NONE&&te(E()),n.enableDamping?(l.theta+=u.theta*n.dampingFactor,l.phi+=u.phi*n.dampingFactor):(l.theta+=u.theta,l.phi+=u.phi);let v=n.minAzimuthAngle,y=n.maxAzimuthAngle;isFinite(v)&&isFinite(y)&&(v<-Math.PI?v+=g:v>Math.PI&&(v-=g),y<-Math.PI?y+=g:y>Math.PI&&(y-=g),v<=y?l.theta=Math.max(v,Math.min(y,l.theta)):l.theta=l.theta>(v+y)/2?Math.max(v,l.theta):Math.min(y,l.theta)),l.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,l.phi)),l.makeSafe(),n.enableDamping===!0?n.target.addScaledVector(f,n.dampingFactor):n.target.add(f),n.zoomToCursor&&w||n.object.isOrthographicCamera?l.radius=ae(l.radius):l.radius=ae(l.radius*d),t.setFromSpherical(l),t.applyQuaternion(p),_.copy(n.target).add(t),n.object.matrixAutoUpdate||n.object.updateMatrix(),n.object.lookAt(n.target),n.enableDamping===!0?(u.theta*=1-n.dampingFactor,u.phi*=1-n.dampingFactor,f.multiplyScalar(1-n.dampingFactor)):(u.set(0,0,0),f.set(0,0,0));let b=!1;if(n.zoomToCursor&&w){let r=null;if(n.object instanceof H&&n.object.isPerspectiveCamera){let e=t.length();r=ae(e*d);let i=e-r;n.object.position.addScaledVector(S,i),n.object.updateMatrixWorld()}else if(n.object.isOrthographicCamera){let e=new q(C.x,C.y,0);e.unproject(n.object),n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/d)),n.object.updateProjectionMatrix(),b=!0;let i=new q(C.x,C.y,0);i.unproject(n.object),n.object.position.sub(i).add(e),n.object.updateMatrixWorld(),r=t.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),n.zoomToCursor=!1;r!==null&&(n.screenSpacePanning?n.target.set(0,0,-1).transformDirection(n.object.matrix).multiplyScalar(r).add(n.object.position):(rr.origin.copy(n.object.position),rr.direction.set(0,0,-1).transformDirection(n.object.matrix),Math.abs(n.object.up.dot(rr.direction))<ar?e.lookAt(n.target):(ir.setFromNormalAndCoplanarPoint(n.object.up,n.target),rr.intersectPlane(ir,n.target))))}else n.object instanceof ge&&n.object.isOrthographicCamera&&(b=d!==1,b&&(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/d)),n.object.updateProjectionMatrix()));return d=1,w=!1,b||m.distanceToSquared(n.object.position)>c||8*(1-h.dot(n.object.quaternion))>c?(n.dispatchEvent(r),m.copy(n.object.position),h.copy(n.object.quaternion),b=!1,!0):!1}})(),this.connect=e=>{n.domElement=e,n.domElement.style.touchAction=`none`,n.domElement.addEventListener(`contextmenu`,Ee),n.domElement.addEventListener(`pointerdown`,U),n.domElement.addEventListener(`pointercancel`,W),n.domElement.addEventListener(`wheel`,xe)},this.dispose=()=>{var e,t,r,i,a,o;n.domElement&&(n.domElement.style.touchAction=`auto`),(e=n.domElement)==null||e.removeEventListener(`contextmenu`,Ee),(t=n.domElement)==null||t.removeEventListener(`pointerdown`,U),(r=n.domElement)==null||r.removeEventListener(`pointercancel`,W),(i=n.domElement)==null||i.removeEventListener(`wheel`,xe),(a=n.domElement)==null||a.ownerDocument.removeEventListener(`pointermove`,_e),(o=n.domElement)==null||o.ownerDocument.removeEventListener(`pointerup`,W),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener(`keydown`,Se)};let n=this,r={type:`change`},i={type:`start`},a={type:`end`},o={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},s=o.NONE,c=1e-6,l=new Te,u=new Te,d=1,f=new q,p=new K,m=new K,h=new K,g=new K,_=new K,v=new K,y=new K,b=new K,x=new K,S=new q,C=new K,w=!1,T=[],ee={};function E(){return 2*Math.PI/60/60*n.autoRotateSpeed}function D(){return .95**n.zoomSpeed}function te(e){n.reverseOrbit||n.reverseHorizontalOrbit?u.theta+=e:u.theta-=e}function ne(e){n.reverseOrbit||n.reverseVerticalOrbit?u.phi+=e:u.phi-=e}let O=(()=>{let e=new q;return function(t,n){e.setFromMatrixColumn(n,0),e.multiplyScalar(-t),f.add(e)}})(),k=(()=>{let e=new q;return function(t,r){n.screenSpacePanning===!0?e.setFromMatrixColumn(r,1):(e.setFromMatrixColumn(r,0),e.crossVectors(n.object.up,e)),e.multiplyScalar(t),f.add(e)}})(),A=(()=>{let e=new q;return function(t,r){let i=n.domElement;if(i&&n.object instanceof H&&n.object.isPerspectiveCamera){let a=n.object.position;e.copy(a).sub(n.target);let o=e.length();o*=Math.tan(n.object.fov/2*Math.PI/180),O(2*t*o/i.clientHeight,n.object.matrix),k(2*r*o/i.clientHeight,n.object.matrix)}else i&&n.object instanceof ge&&n.object.isOrthographicCamera?(O(t*(n.object.right-n.object.left)/n.object.zoom/i.clientWidth,n.object.matrix),k(r*(n.object.top-n.object.bottom)/n.object.zoom/i.clientHeight,n.object.matrix)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),n.enablePan=!1)}})();function j(e){n.object instanceof H&&n.object.isPerspectiveCamera||n.object instanceof ge&&n.object.isOrthographicCamera?d=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),n.enableZoom=!1)}function M(e){j(d/e)}function re(e){j(d*e)}function ie(e){if(!n.zoomToCursor||!n.domElement)return;w=!0;let t=n.domElement.getBoundingClientRect(),r=e.clientX-t.left,i=e.clientY-t.top,a=t.width,o=t.height;C.x=r/a*2-1,C.y=-(i/o)*2+1,S.set(C.x,C.y,1).unproject(n.object).sub(n.object.position).normalize()}function ae(e){return Math.max(n.minDistance,Math.min(n.maxDistance,e))}function oe(e){p.set(e.clientX,e.clientY)}function N(e){ie(e),y.set(e.clientX,e.clientY)}function se(e){g.set(e.clientX,e.clientY)}function P(e){m.set(e.clientX,e.clientY),h.subVectors(m,p).multiplyScalar(n.rotateSpeed);let t=n.domElement;t&&(te(2*Math.PI*h.x/t.clientHeight),ne(2*Math.PI*h.y/t.clientHeight)),p.copy(m),n.update()}function ce(e){b.set(e.clientX,e.clientY),x.subVectors(b,y),x.y>0?M(D()):x.y<0&&re(D()),y.copy(b),n.update()}function le(e){_.set(e.clientX,e.clientY),v.subVectors(_,g).multiplyScalar(n.panSpeed),A(v.x,v.y),g.copy(_),n.update()}function ue(e){ie(e),e.deltaY<0?re(D()):e.deltaY>0&&M(D()),n.update()}function de(e){let t=!1;switch(e.code){case n.keys.UP:A(0,n.keyPanSpeed),t=!0;break;case n.keys.BOTTOM:A(0,-n.keyPanSpeed),t=!0;break;case n.keys.LEFT:A(n.keyPanSpeed,0),t=!0;break;case n.keys.RIGHT:A(-n.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),n.update())}function fe(){if(T.length==1)p.set(T[0].pageX,T[0].pageY);else{let e=.5*(T[0].pageX+T[1].pageX),t=.5*(T[0].pageY+T[1].pageY);p.set(e,t)}}function F(){if(T.length==1)g.set(T[0].pageX,T[0].pageY);else{let e=.5*(T[0].pageX+T[1].pageX),t=.5*(T[0].pageY+T[1].pageY);g.set(e,t)}}function I(){let e=T[0].pageX-T[1].pageX,t=T[0].pageY-T[1].pageY,n=Math.sqrt(e*e+t*t);y.set(0,n)}function pe(){n.enableZoom&&I(),n.enablePan&&F()}function R(){n.enableZoom&&I(),n.enableRotate&&fe()}function z(e){if(T.length==1)m.set(e.pageX,e.pageY);else{let t=Ae(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);m.set(n,r)}h.subVectors(m,p).multiplyScalar(n.rotateSpeed);let t=n.domElement;t&&(te(2*Math.PI*h.x/t.clientHeight),ne(2*Math.PI*h.y/t.clientHeight)),p.copy(m)}function B(e){if(T.length==1)_.set(e.pageX,e.pageY);else{let t=Ae(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);_.set(n,r)}v.subVectors(_,g).multiplyScalar(n.panSpeed),A(v.x,v.y),g.copy(_)}function me(e){let t=Ae(e),r=e.pageX-t.x,i=e.pageY-t.y,a=Math.sqrt(r*r+i*i);b.set(0,a),x.set(0,(b.y/y.y)**+n.zoomSpeed),M(x.y),y.copy(b)}function he(e){n.enableZoom&&me(e),n.enablePan&&B(e)}function V(e){n.enableZoom&&me(e),n.enableRotate&&z(e)}function U(e){var t,r;n.enabled!==!1&&(T.length===0&&((t=n.domElement)==null||t.ownerDocument.addEventListener(`pointermove`,_e),(r=n.domElement)==null||r.ownerDocument.addEventListener(`pointerup`,W)),De(e),e.pointerType===`touch`?Ce(e):ye(e))}function _e(e){n.enabled!==!1&&(e.pointerType===`touch`?we(e):be(e))}function W(e){var t,r,i;Oe(e),T.length===0&&((t=n.domElement)==null||t.releasePointerCapture(e.pointerId),(r=n.domElement)==null||r.ownerDocument.removeEventListener(`pointermove`,_e),(i=n.domElement)==null||i.ownerDocument.removeEventListener(`pointerup`,W)),n.dispatchEvent(a),s=o.NONE}function ye(e){let t;switch(e.button){case 0:t=n.mouseButtons.LEFT;break;case 1:t=n.mouseButtons.MIDDLE;break;case 2:t=n.mouseButtons.RIGHT;break;default:t=-1}switch(t){case L.DOLLY:if(n.enableZoom===!1)return;N(e),s=o.DOLLY;break;case L.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(n.enablePan===!1)return;se(e),s=o.PAN}else{if(n.enableRotate===!1)return;oe(e),s=o.ROTATE}break;case L.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(n.enableRotate===!1)return;oe(e),s=o.ROTATE}else{if(n.enablePan===!1)return;se(e),s=o.PAN}break;default:s=o.NONE}s!==o.NONE&&n.dispatchEvent(i)}function be(e){if(n.enabled!==!1)switch(s){case o.ROTATE:if(n.enableRotate===!1)return;P(e);break;case o.DOLLY:if(n.enableZoom===!1)return;ce(e);break;case o.PAN:if(n.enablePan===!1)return;le(e);break}}function xe(e){n.enabled===!1||n.enableZoom===!1||s!==o.NONE&&s!==o.ROTATE||(e.preventDefault(),n.dispatchEvent(i),ue(e),n.dispatchEvent(a))}function Se(e){n.enabled===!1||n.enablePan===!1||de(e)}function Ce(e){switch(ke(e),T.length){case 1:switch(n.touches.ONE){case G.ROTATE:if(n.enableRotate===!1)return;fe(),s=o.TOUCH_ROTATE;break;case G.PAN:if(n.enablePan===!1)return;F(),s=o.TOUCH_PAN;break;default:s=o.NONE}break;case 2:switch(n.touches.TWO){case G.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;pe(),s=o.TOUCH_DOLLY_PAN;break;case G.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;R(),s=o.TOUCH_DOLLY_ROTATE;break;default:s=o.NONE}break;default:s=o.NONE}s!==o.NONE&&n.dispatchEvent(i)}function we(e){switch(ke(e),s){case o.TOUCH_ROTATE:if(n.enableRotate===!1)return;z(e),n.update();break;case o.TOUCH_PAN:if(n.enablePan===!1)return;B(e),n.update();break;case o.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;he(e),n.update();break;case o.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;V(e),n.update();break;default:s=o.NONE}}function Ee(e){n.enabled!==!1&&e.preventDefault()}function De(e){T.push(e)}function Oe(e){delete ee[e.pointerId];for(let t=0;t<T.length;t++)if(T[t].pointerId==e.pointerId){T.splice(t,1);return}}function ke(e){let t=ee[e.pointerId];t===void 0&&(t=new K,ee[e.pointerId]=t),t.set(e.pageX,e.pageY)}function Ae(e){return ee[(e.pointerId===T[0].pointerId?T[1]:T[0]).pointerId]}this.dollyIn=(e=D())=>{re(e),n.update()},this.dollyOut=(e=D())=>{M(e),n.update()},this.getScale=()=>d,this.setScale=e=>{j(e),n.update()},this.getZoomScale=()=>D(),t!==void 0&&this.connect(t),this.update()}},cr=class extends sr{constructor(e,t){super(e,t),this.screenSpacePanning=!1,this.mouseButtons.LEFT=L.PAN,this.mouseButtons.RIGHT=L.ROTATE,this.touches.ONE=G.PAN,this.touches.TWO=G.DOLLY_ROTATE}}
54
- /*!
55
- * camera-controls
56
- * https://github.com/yomotsu/camera-controls
57
- * (c) 2017 @yomotsu
58
- * Released under the MIT License.
59
- */
60
- ;Object.freeze({NONE:0,ROTATE:1,TRUCK:2,SCREEN_PAN:4,OFFSET:8,DOLLY:16,ZOOM:32,TOUCH_ROTATE:64,TOUCH_TRUCK:128,TOUCH_SCREEN_PAN:256,TOUCH_OFFSET:512,TOUCH_DOLLY:1024,TOUCH_ZOOM:2048,TOUCH_DOLLY_TRUCK:4096,TOUCH_DOLLY_SCREEN_PAN:8192,TOUCH_DOLLY_OFFSET:16384,TOUCH_DOLLY_ROTATE:32768,TOUCH_ZOOM_TRUCK:65536,TOUCH_ZOOM_OFFSET:131072,TOUCH_ZOOM_SCREEN_PAN:262144,TOUCH_ZOOM_ROTATE:524288}),Math.PI*2,Math.PI/2,Math.PI/180,/Mac/.test(globalThis?.navigator?.platform);var lr=e(t(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):n.Stats=r()})(e,function(){var e=function(){function t(e){return i.appendChild(e.dom),e}function n(e){for(var t=0;t<i.children.length;t++)i.children[t].style.display=t===e?`block`:`none`;r=e}var r=0,i=document.createElement(`div`);i.style.cssText=`position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000`,i.addEventListener(`click`,function(e){e.preventDefault(),n(++r%i.children.length)},!1);var a=(performance||Date).now(),o=a,s=0,c=t(new e.Panel(`FPS`,`#0ff`,`#002`)),l=t(new e.Panel(`MS`,`#0f0`,`#020`));if(self.performance&&self.performance.memory)var u=t(new e.Panel(`MB`,`#f08`,`#201`));return n(0),{REVISION:16,dom:i,addPanel:t,showPanel:n,begin:function(){a=(performance||Date).now()},end:function(){s++;var e=(performance||Date).now();if(l.update(e-a,200),e>o+1e3&&(c.update(1e3*s/(e-o),100),o=e,s=0,u)){var t=performance.memory;u.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){a=this.end()},domElement:i,setMode:n}};return e.Panel=function(e,t,n){var r=1/0,i=0,a=Math.round,o=a(window.devicePixelRatio||1),s=80*o,c=48*o,l=3*o,u=2*o,d=3*o,f=15*o,p=74*o,m=30*o,h=document.createElement(`canvas`);h.width=s,h.height=c,h.style.cssText=`width:80px;height:48px`;var g=h.getContext(`2d`);return g.font=`bold `+9*o+`px Helvetica,Arial,sans-serif`,g.textBaseline=`top`,g.fillStyle=n,g.fillRect(0,0,s,c),g.fillStyle=t,g.fillText(e,l,u),g.fillRect(d,f,p,m),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(d,f,p,m),{dom:h,update:function(c,_){r=Math.min(r,c),i=Math.max(i,c),g.fillStyle=n,g.globalAlpha=1,g.fillRect(0,0,s,f),g.fillStyle=t,g.fillText(a(c)+` `+e+` (`+a(r)+`-`+a(i)+`)`,l,u),g.drawImage(h,d+o,f,p-o,m,d,f,p-o,m),g.fillRect(d+p-o,f,o,m),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(d+p-o,f,o,a((1-c/_)*m))}}},e})}))(),1),ur=class{constructor({trackGPU:e=!1,trackCPT:t=!1,trackHz:n=!1,trackFPS:r=!0,logsPerSecond:i=4,graphsPerSecond:a=30,samplesLog:o=40,samplesGraph:s=10,precision:c=2}={}){this.gl=null,this.ext=null,this.gpuDevice=null,this.gpuBackend=null,this.renderer=null,this.activeQuery=null,this.gpuQueries=[],this.threeRendererPatched=!1,this.webgpuNative=!1,this.gpuQuerySet=null,this.gpuResolveBuffer=null,this.gpuReadBuffers=[],this.gpuWriteBufferIndex=0,this.gpuFrameCount=0,this.pendingResolve=null,this.frameTimes=[],this.frameTimesHead=0,this.renderCount=0,this.cpuStartTime=0,this.totalCpuDuration=0,this.totalGpuDuration=0,this.totalGpuDurationCompute=0,this.averageFps={logs:[],graph:[]},this.averageCpu={logs:[],graph:[]},this.averageGpu={logs:[],graph:[]},this.averageGpuCompute={logs:[],graph:[]},this.trackGPU=e,this.trackCPT=t,this.trackHz=n,this.trackFPS=r,this.samplesLog=o,this.samplesGraph=s,this.precision=c,this.logsPerSecond=i,this.graphsPerSecond=a;let l=performance.now();this.prevGraphTime=l,this.beginTime=l,this.prevTextTime=l,this.prevCpuTime=l}async init(e){if(!e){console.error(`Stats: The "canvas" parameter is undefined.`);return}if(!this.handleThreeRenderer(e)&&!await this.handleWebGPURenderer(e)&&!this.handleNativeWebGPU(e))if(this.initializeWebGL(e)){this.trackGPU&&this.initializeGPUTracking();return}else console.error(`Stats-gl: Failed to initialize WebGL context`)}handleNativeWebGPU(e){return e&&typeof e.createCommandEncoder==`function`&&typeof e.createQuerySet==`function`&&e.queue?(this.gpuDevice=e,this.webgpuNative=!0,this.trackGPU&&e.features?.has(`timestamp-query`)&&(this.initializeWebGPUTiming(),this.onWebGPUTimestampSupported()),!0):!1}initializeWebGPUTiming(){if(this.gpuDevice){this.gpuQuerySet=this.gpuDevice.createQuerySet({type:`timestamp`,count:2}),this.gpuResolveBuffer=this.gpuDevice.createBuffer({size:16,usage:GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC});for(let e=0;e<2;e++)this.gpuReadBuffers.push(this.gpuDevice.createBuffer({size:16,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}))}}handleThreeRenderer(e){return e.isWebGLRenderer&&!this.threeRendererPatched?(this.patchThreeRenderer(e),this.gl=e.getContext(),this.trackGPU&&this.initializeGPUTracking(),!0):!1}async handleWebGPURenderer(e){return e.isWebGPURenderer?(this.renderer=e,(this.trackGPU||this.trackCPT)&&(e.backend.trackTimestamp=!0,e._initialized||await e.init(),e.hasFeature(`timestamp-query`)&&this.onWebGPUTimestampSupported()),this.info=e.info,this.gpuBackend=e.backend,this.gpuDevice=e.backend?.device||null,this.patchThreeWebGPU(e),!0):!1}onWebGPUTimestampSupported(){}initializeWebGL(e){if(e instanceof WebGL2RenderingContext)this.gl=e;else if(e instanceof HTMLCanvasElement||e instanceof OffscreenCanvas){if(this.gl=e.getContext(`webgl2`),!this.gl)return console.error(`Stats: Unable to obtain WebGL2 context.`),!1}else return console.error(`Stats: Invalid input type. Expected WebGL2RenderingContext, HTMLCanvasElement, or OffscreenCanvas.`),!1;return!0}initializeGPUTracking(){this.gl&&(this.ext=this.gl.getExtension(`EXT_disjoint_timer_query_webgl2`),this.ext&&this.onGPUTrackingInitialized())}onGPUTrackingInitialized(){}getTimestampWrites(){if(!(!this.webgpuNative||!this.gpuQuerySet))return{querySet:this.gpuQuerySet,beginningOfPassWriteIndex:0,endOfPassWriteIndex:1}}begin(e){this.beginProfiling(),!this.webgpuNative&&(!this.gl||!this.ext||(this.activeQuery&&this.gl.endQuery(this.ext.TIME_ELAPSED_EXT),this.activeQuery=this.gl.createQuery(),this.activeQuery&&this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT,this.activeQuery)))}end(e){if(this.renderCount++,this.webgpuNative&&e&&this.gpuQuerySet&&this.gpuResolveBuffer&&this.gpuReadBuffers.length>0){this.gpuFrameCount++;let t=this.gpuReadBuffers[this.gpuWriteBufferIndex];t.mapState===`unmapped`&&(e.resolveQuerySet(this.gpuQuerySet,0,2,this.gpuResolveBuffer,0),e.copyBufferToBuffer(this.gpuResolveBuffer,0,t,0,16)),this.endProfiling();return}this.gl&&this.ext&&this.activeQuery&&(this.gl.endQuery(this.ext.TIME_ELAPSED_EXT),this.gpuQueries.push({query:this.activeQuery}),this.activeQuery=null),this.endProfiling()}async resolveTimestampsAsync(){if(!this.webgpuNative||this.gpuReadBuffers.length===0)return this.totalGpuDuration;if(this.pendingResolve)return this.pendingResolve;let e=(this.gpuWriteBufferIndex+1)%2,t=this.gpuReadBuffers[e];if(this.gpuWriteBufferIndex=(this.gpuWriteBufferIndex+1)%2,this.gpuFrameCount<2||t.mapState!==`unmapped`)return this.totalGpuDuration;this.pendingResolve=this._resolveTimestamps(t);try{return await this.pendingResolve}finally{this.pendingResolve=null}}async _resolveTimestamps(e){try{await e.mapAsync(GPUMapMode.READ);let t=new BigInt64Array(e.getMappedRange()),n=t[0],r=t[1];e.unmap();let i=Number(r-n);return this.totalGpuDuration=i/1e6,this.totalGpuDuration}catch{return this.totalGpuDuration}}processGpuQueries(){if(!(!this.gl||!this.ext)){this.totalGpuDuration=0;for(let e=this.gpuQueries.length-1;e>=0;e--){let t=this.gpuQueries[e],n=this.gl.getQueryParameter(t.query,this.gl.QUERY_RESULT_AVAILABLE),r=this.gl.getParameter(this.ext.GPU_DISJOINT_EXT);if(n&&!r){let n=this.gl.getQueryParameter(t.query,this.gl.QUERY_RESULT)*1e-6;this.totalGpuDuration+=n,this.gl.deleteQuery(t.query),this.gpuQueries.splice(e,1)}}}}processWebGPUTimestamps(){this.totalGpuDuration=this.info.render.timestamp,this.totalGpuDurationCompute=this.info.compute.timestamp}beginProfiling(){this.cpuStartTime=performance.now()}endProfiling(){this.totalCpuDuration+=performance.now()-this.cpuStartTime}calculateFps(){let e=performance.now(),t=e-1e3;for(this.frameTimes.push(e);this.frameTimesHead<this.frameTimes.length&&this.frameTimes[this.frameTimesHead]<=t;)this.frameTimesHead++;return this.frameTimesHead>128&&(this.frameTimes=this.frameTimes.slice(this.frameTimesHead),this.frameTimesHead=0),Math.round(this.frameTimes.length-this.frameTimesHead)}updateAverages(){this.addToAverage(this.totalCpuDuration,this.averageCpu),this.addToAverage(this.totalGpuDuration,this.averageGpu),this.info&&this.totalGpuDurationCompute!==void 0&&this.addToAverage(this.totalGpuDurationCompute,this.averageGpuCompute)}addToAverage(e,t){for(t.logs.push(e);t.logs.length>this.samplesLog;)t.logs.shift();for(t.graph.push(e);t.graph.length>this.samplesGraph;)t.graph.shift()}resetCounters(){this.renderCount=0,this.totalCpuDuration=0,this.beginTime=performance.now()}getData(){let e=this.averageFps.logs,t=this.averageCpu.logs,n=this.averageGpu.logs,r=this.averageGpuCompute.logs;return{fps:e.length>0?e[e.length-1]:0,cpu:t.length>0?t[t.length-1]:0,gpu:n.length>0?n[n.length-1]:0,gpuCompute:r.length>0?r[r.length-1]:0}}patchThreeWebGPU(e){let t=e.info.reset,n=this;e.info.reset=function(){n.beginProfiling(),t.call(this)}}patchThreeRenderer(e){let t=e.render,n=this;e.render=function(e,r){n.begin(),t.call(this,e,r),n.end()},this.threeRendererPatched=!0}dispose(){if(this.gl){if(this.activeQuery&&this.ext){try{this.gl.endQuery(this.ext.TIME_ELAPSED_EXT)}catch{}this.gl.deleteQuery(this.activeQuery),this.activeQuery=null}for(let e of this.gpuQueries)this.gl.deleteQuery(e.query);this.gpuQueries.length=0}this.gpuQuerySet&&=(this.gpuQuerySet.destroy(),null),this.gpuResolveBuffer&&=(this.gpuResolveBuffer.destroy(),null);for(let e of this.gpuReadBuffers)e.mapState===`mapped`&&e.unmap(),e.destroy();this.gpuReadBuffers.length=0,this.gpuFrameCount=0,this.pendingResolve=null,this.webgpuNative=!1,this.gl=null,this.ext=null,this.info=void 0,this.gpuDevice=null,this.gpuBackend=null,this.renderer=null,this.frameTimes.length=0,this.frameTimesHead=0,this.averageFps.logs.length=0,this.averageFps.graph.length=0,this.averageCpu.logs.length=0,this.averageCpu.graph.length=0,this.averageGpu.logs.length=0,this.averageGpu.graph.length=0,this.averageGpuCompute.logs.length=0,this.averageGpuCompute.graph.length=0}},dr=class{constructor(e,t,n){this.id=0,this.name=e,this.fg=t,this.bg=n,this.gradient=null,this.PR=Math.round(typeof window<`u`&&window.devicePixelRatio||1),this.WIDTH=90*this.PR,this.HEIGHT=48*this.PR,this.TEXT_X=3*this.PR,this.TEXT_Y=2*this.PR,this.GRAPH_X=3*this.PR,this.GRAPH_Y=15*this.PR,this.GRAPH_WIDTH=84*this.PR,this.GRAPH_HEIGHT=30*this.PR,this.canvas=typeof document<`u`?document.createElement(`canvas`):new OffscreenCanvas(this.WIDTH,this.HEIGHT),this.canvas.width=this.WIDTH,this.canvas.height=this.HEIGHT,this.canvas.style.width=`90px`,this.canvas.style.height=`48px`,this.canvas.style.position=`absolute`,this.canvas.style.cssText=`width:90px;height:48px;background-color: transparent !important;`,this.context=this.canvas.getContext(`2d`),this.initializeCanvas()}createGradient(){if(!this.context)throw Error(`No context`);let e=this.context.createLinearGradient(0,this.GRAPH_Y,0,this.GRAPH_Y+this.GRAPH_HEIGHT),t,n=this.fg;switch(this.fg.toLowerCase()){case`#0ff`:t=`#006666`;break;case`#0f0`:t=`#006600`;break;case`#ff0`:t=`#666600`;break;case`#e1e1e1`:t=`#666666`;break;default:t=this.bg;break}return e.addColorStop(0,t),e.addColorStop(1,n),e}initializeCanvas(){this.context&&(this.context.imageSmoothingEnabled=!1,this.context.font=`bold `+9*this.PR+`px Helvetica,Arial,sans-serif`,this.context.textBaseline=`top`,this.gradient=this.createGradient(),this.context.fillStyle=this.bg,this.context.fillRect(0,0,this.WIDTH,this.HEIGHT),this.context.fillStyle=this.fg,this.context.fillText(this.name,this.TEXT_X,this.TEXT_Y),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH,this.GRAPH_HEIGHT))}update(e,t,n=0,r=``){if(!this.context||!this.gradient)return;let i=Math.min(1/0,e),a=Math.max(t,e);this.context.globalAlpha=1,this.context.fillStyle=this.bg,this.context.fillRect(0,0,this.WIDTH,this.GRAPH_Y);let o=`${e.toFixed(n)} ${this.name}`;this.context.fillStyle=this.fg,this.context.fillText(o,this.TEXT_X,this.TEXT_Y);let s=this.TEXT_X+this.context.measureText(o).width;r&&(this.context.fillStyle=`#f90`,this.context.fillText(r,s,this.TEXT_Y),s+=this.context.measureText(r).width),this.context.fillStyle=this.fg,this.context.fillText(` (${i.toFixed(n)}-${parseFloat(a.toFixed(n))})`,s,this.TEXT_Y)}updateGraph(e,t){if(!this.context||!this.gradient)return;e===0&&t===0&&(t=1),t=Math.max(t,e,.1),e=Math.max(e,0);let n=Math.round(this.GRAPH_X),r=Math.round(this.GRAPH_Y),i=Math.round(this.GRAPH_WIDTH),a=Math.round(this.GRAPH_HEIGHT),o=Math.round(this.PR);this.context.drawImage(this.canvas,n+o,r,i-o,a,n,r,i-o,a),this.context.fillStyle=this.bg,this.context.fillRect(n+i-o,r,o,a);let s=Math.min(a,Math.round(e/t*a));s>0&&(this.context.globalAlpha=.9,this.context.fillStyle=this.gradient,this.context.fillRect(n+i-o,r+(a-s),o,s)),this.context.globalAlpha=1}},fr=class extends dr{constructor(e,t,n){super(e,t,n),this.vsyncValue=0,this.SMALL_HEIGHT=9*this.PR,this.HEIGHT=this.SMALL_HEIGHT,this.WIDTH=35*this.PR,this.TEXT_Y=0*this.PR,this.canvas.height=this.HEIGHT,this.canvas.width=this.WIDTH,this.canvas.style.height=`9px`,this.canvas.style.width=`35px`,this.canvas.style.cssText=`
61
- width: 35px;
62
- height: 9px;
63
- position: absolute;
64
- top: 0;
65
- left: 0;
66
- background-color: transparent !important;
67
- pointer-events: none;
68
- `,this.initializeCanvas()}initializeCanvas(){this.context&&(this.context.imageSmoothingEnabled=!1,this.context.font=`bold `+9*this.PR+`px Helvetica,Arial,sans-serif`,this.context.textBaseline=`top`,this.context.globalAlpha=1)}update(e,t,n=0){this.context&&(this.vsyncValue=e,this.context.clearRect(0,0,this.WIDTH,this.HEIGHT),this.context.globalAlpha=1,this.context.fillStyle=this.bg,this.context.fillText(`${e.toFixed(0)}Hz`,this.TEXT_X,this.TEXT_Y))}updateGraph(e,t){}setOffset(e,t){this.canvas.style.transform=`translate(${e}px, ${t}px)`}},pr=class extends dr{constructor(e){super(e,`#fff`,`#111`),this.currentBitmap=null,this.sourceAspect=1,this.initializeCanvas()}initializeCanvas(){this.context&&(this.context.imageSmoothingEnabled=!0,this.context.font=`bold `+9*this.PR+`px Helvetica,Arial,sans-serif`,this.context.textBaseline=`top`,this.context.fillStyle=`#000`,this.context.fillRect(0,0,this.WIDTH,this.HEIGHT),this.drawLabelOverlay())}drawLabelOverlay(){this.context&&(this.context.fillStyle=`rgba(0, 0, 0, 0.5)`,this.context.fillRect(0,0,this.WIDTH,this.GRAPH_Y),this.context.fillStyle=this.fg,this.context.fillText(this.name,this.TEXT_X,this.TEXT_Y))}setSourceSize(e,t){this.sourceAspect=e/t}updateTexture(e){if(!this.context)return;this.currentBitmap&&this.currentBitmap.close(),this.currentBitmap=e,this.context.fillStyle=`#000`,this.context.fillRect(0,0,this.WIDTH,this.HEIGHT);let t=this.WIDTH/this.HEIGHT,n,r,i,a;this.sourceAspect>t?(n=this.WIDTH,r=this.WIDTH/this.sourceAspect,i=0,a=(this.HEIGHT-r)/2):(r=this.HEIGHT,n=this.HEIGHT*this.sourceAspect,i=(this.WIDTH-n)/2,a=0),this.context.drawImage(e,i,a,n,r),this.drawLabelOverlay()}setLabel(e){this.name=e,this.drawLabelOverlay()}update(e,t,n=0,r=``){}updateGraph(e,t){}dispose(){this.currentBitmap&&=(this.currentBitmap.close(),null)}},mr=class{constructor(e,t=90,n=48){this.previewFbo=null,this.previewTexture=null,this.gl=e,this.previewWidth=t,this.previewHeight=n,this.pixels=new Uint8Array(t*n*4),this.flippedPixels=new Uint8Array(t*n*4),this.initResources()}resize(e,t){e===this.previewWidth&&t===this.previewHeight||(this.previewWidth=e,this.previewHeight=t,this.pixels=new Uint8Array(e*t*4),this.flippedPixels=new Uint8Array(e*t*4),this.dispose(),this.initResources())}initResources(){let e=this.gl;this.previewTexture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.previewTexture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA8,this.previewWidth,this.previewHeight,0,e.RGBA,e.UNSIGNED_BYTE,null),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),this.previewFbo=e.createFramebuffer(),e.bindFramebuffer(e.FRAMEBUFFER,this.previewFbo),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.previewTexture,0),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindTexture(e.TEXTURE_2D,null)}async capture(e,t,n,r=`default`){let i=this.gl,a=i.getParameter(i.READ_FRAMEBUFFER_BINDING),o=i.getParameter(i.DRAW_FRAMEBUFFER_BINDING);i.bindFramebuffer(i.READ_FRAMEBUFFER,e),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,this.previewFbo),i.blitFramebuffer(0,0,t,n,0,0,this.previewWidth,this.previewHeight,i.COLOR_BUFFER_BIT,i.LINEAR),i.bindFramebuffer(i.READ_FRAMEBUFFER,this.previewFbo),i.readPixels(0,0,this.previewWidth,this.previewHeight,i.RGBA,i.UNSIGNED_BYTE,this.pixels),i.bindFramebuffer(i.READ_FRAMEBUFFER,a),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,o);let s=this.flipY(this.pixels,this.previewWidth,this.previewHeight),c=new ImageData(new Uint8ClampedArray(s),this.previewWidth,this.previewHeight);return createImageBitmap(c)}flipY(e,t,n){let r=t*4;for(let t=0;t<n;t++){let i=t*r,a=(n-1-t)*r;this.flippedPixels.set(e.subarray(i,i+r),a)}return this.flippedPixels}removeSource(e){}dispose(){let e=this.gl;this.previewFbo&&=(e.deleteFramebuffer(this.previewFbo),null),this.previewTexture&&=(e.deleteTexture(this.previewTexture),null)}},hr=class{constructor(e,t=90,n=48){this.previewTexture=null,this.stagingBuffer=null,this.blitPipeline=null,this.sampler=null,this.bindGroupLayout=null,this.initialized=!1,this.device=e,this.previewWidth=t,this.previewHeight=n,this.pixelsBuffer=new Uint8ClampedArray(t*n*4)}resize(e,t){e===this.previewWidth&&t===this.previewHeight||(this.previewWidth=e,this.previewHeight=t,this.pixelsBuffer=new Uint8ClampedArray(e*t*4),this.previewTexture&&this.previewTexture.destroy(),this.stagingBuffer&&this.stagingBuffer.destroy(),this.previewTexture=null,this.stagingBuffer=null,this.initialized&&this.createSizeResources())}createSizeResources(){let e=this.device;this.previewTexture=e.createTexture({size:{width:this.previewWidth,height:this.previewHeight},format:`rgba8unorm`,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC});let t=Math.ceil(this.previewWidth*4/256)*256;this.stagingBuffer=e.createBuffer({size:t*this.previewHeight,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ})}async initResources(){if(this.initialized)return;let e=this.device;this.createSizeResources(),this.sampler=e.createSampler({minFilter:`linear`,magFilter:`linear`});let t=e.createShaderModule({code:`
69
- @group(0) @binding(0) var texSampler: sampler;
70
- @group(0) @binding(1) var texInput: texture_2d<f32>;
71
-
72
- struct VertexOutput {
73
- @builtin(position) position: vec4f,
74
- @location(0) uv: vec2f
75
- }
76
-
77
- @vertex
78
- fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
79
- var positions = array<vec2f, 3>(
80
- vec2f(-1.0, -1.0),
81
- vec2f(3.0, -1.0),
82
- vec2f(-1.0, 3.0)
83
- );
84
- var uvs = array<vec2f, 3>(
85
- vec2f(0.0, 1.0),
86
- vec2f(2.0, 1.0),
87
- vec2f(0.0, -1.0)
88
- );
89
-
90
- var output: VertexOutput;
91
- output.position = vec4f(positions[vertexIndex], 0.0, 1.0);
92
- output.uv = uvs[vertexIndex];
93
- return output;
94
- }
95
-
96
- @fragment
97
- fn fragmentMain(@location(0) uv: vec2f) -> @location(0) vec4f {
98
- return textureSample(texInput, texSampler, uv);
99
- }
100
- `});this.bindGroupLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:`filtering`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:`float`}}]}),this.blitPipeline=e.createRenderPipeline({layout:e.createPipelineLayout({bindGroupLayouts:[this.bindGroupLayout]}),vertex:{module:t,entryPoint:`vertexMain`},fragment:{module:t,entryPoint:`fragmentMain`,targets:[{format:`rgba8unorm`}]},primitive:{topology:`triangle-list`}}),this.initialized=!0}async capture(e){if(await this.initResources(),!this.previewTexture||!this.stagingBuffer||!this.blitPipeline||!this.sampler||!this.bindGroupLayout)return null;let t=this.device,n=t.createBindGroup({layout:this.bindGroupLayout,entries:[{binding:0,resource:this.sampler},{binding:1,resource:e.createView()}]}),r=t.createCommandEncoder(),i=r.beginRenderPass({colorAttachments:[{view:this.previewTexture.createView(),loadOp:`clear`,storeOp:`store`,clearValue:{r:0,g:0,b:0,a:1}}]});i.setPipeline(this.blitPipeline),i.setBindGroup(0,n),i.draw(3),i.end();let a=Math.ceil(this.previewWidth*4/256)*256;r.copyTextureToBuffer({texture:this.previewTexture},{buffer:this.stagingBuffer,bytesPerRow:a},{width:this.previewWidth,height:this.previewHeight}),t.queue.submit([r.finish()]),await this.stagingBuffer.mapAsync(GPUMapMode.READ);let o=new Uint8Array(this.stagingBuffer.getMappedRange());for(let e=0;e<this.previewHeight;e++){let t=e*a,n=e*this.previewWidth*4;this.pixelsBuffer.set(o.subarray(t,t+this.previewWidth*4),n)}this.stagingBuffer.unmap();let s=new ImageData(new Uint8ClampedArray(this.pixelsBuffer),this.previewWidth,this.previewHeight);return createImageBitmap(s)}dispose(){this.previewTexture&&this.previewTexture.destroy(),this.stagingBuffer&&this.stagingBuffer.destroy(),this.previewTexture=null,this.stagingBuffer=null,this.blitPipeline=null,this.sampler=null,this.bindGroupLayout=null,this.initialized=!1}};function gr(e,t){return e.isWebGLRenderTarget&&e.__webglFramebuffer?{framebuffer:e.__webglFramebuffer,width:e.width||1,height:e.height||1}:null}function _r(e,t){return e.isRenderTarget&&e.texture&&t.get&&t.get(e.texture)?.texture||null}const vr=class e extends ur{constructor({trackGPU:t=!1,trackCPT:n=!1,trackHz:r=!1,trackFPS:i=!0,logsPerSecond:a=4,graphsPerSecond:o=30,samplesLog:s=40,samplesGraph:c=10,precision:l=2,minimal:u=!1,horizontal:d=!0,mode:f=0}={}){super({trackGPU:t,trackCPT:n,trackHz:r,trackFPS:i,logsPerSecond:a,graphsPerSecond:o,samplesLog:s,samplesGraph:c,precision:l}),this.fpsPanel=null,this.msPanel=null,this.gpuPanel=null,this.gpuPanelCompute=null,this.vsyncPanel=null,this.workerCpuPanel=null,this.texturePanels=new Map,this.texturePanelRow=null,this.textureCaptureWebGL=null,this.textureCaptureWebGPU=null,this.textureSourcesWebGL=new Map,this.textureSourcesWebGPU=new Map,this.texturePreviewWidth=90,this.texturePreviewHeight=48,this.lastRendererWidth=0,this.lastRendererHeight=0,this.textureUpdatePending=!1,this.updateCounter=0,this.lastMin={},this.lastMax={},this.lastValue={},this.VSYNC_RATES=[{refreshRate:60,frameTime:16.67},{refreshRate:75,frameTime:13.33},{refreshRate:90,frameTime:11.11},{refreshRate:120,frameTime:8.33},{refreshRate:144,frameTime:6.94},{refreshRate:165,frameTime:6.06},{refreshRate:240,frameTime:4.17}],this.detectedVSync=null,this.frameTimeHistory=[],this.HISTORY_SIZE=120,this.VSYNC_THRESHOLD=.05,this.lastFrameTime=0,this.externalData=null,this.hasNewExternalData=!1,this.isWorker=!1,this.averageWorkerCpu={logs:[],graph:[]},this.handleClick=e=>{e.preventDefault(),this.showPanel(++this.mode%this.dom.children.length)},this.handleResize=()=>{this.fpsPanel&&this.resizePanel(this.fpsPanel),this.msPanel&&this.resizePanel(this.msPanel),this.workerCpuPanel&&this.resizePanel(this.workerCpuPanel),this.gpuPanel&&this.resizePanel(this.gpuPanel),this.gpuPanelCompute&&this.resizePanel(this.gpuPanelCompute)},this.mode=f,this.horizontal=d,this.minimal=u,this.dom=document.createElement(`div`),this.initializeDOM(),this._panelId=0,this.trackFPS&&(this.fpsPanel=this.addPanel(new e.Panel(`FPS`,`#0ff`,`#002`)),this.msPanel=this.addPanel(new e.Panel(`CPU`,`#0f0`,`#020`))),this.trackGPU&&(this.gpuPanel=this.addPanel(new e.Panel(`GPU`,`#ff0`,`#220`))),this.trackCPT&&(this.gpuPanelCompute=this.addPanel(new e.Panel(`CPT`,`#e1e1e1`,`#212121`))),this.trackHz===!0&&(this.vsyncPanel=new fr(``,`#f0f`,`#202`),this.dom.appendChild(this.vsyncPanel.canvas),this.vsyncPanel.setOffset(56,35)),this.setupEventListeners()}initializeDOM(){this.dom.style.cssText=`
101
- position: fixed;
102
- top: 0;
103
- left: 0;
104
- opacity: 0.9;
105
- z-index: 10000;
106
- ${this.minimal?`cursor: pointer;`:``}
107
- `}setupEventListeners(){this.minimal?(this.dom.addEventListener(`click`,this.handleClick),this.showPanel(this.mode)):window.addEventListener(`resize`,this.handleResize)}updateTexturePreviewDimensions(){if(!this.renderer)return;let e=this.renderer.domElement?.width||0,t=this.renderer.domElement?.height||0;if(e===this.lastRendererWidth&&t===this.lastRendererHeight||e===0||t===0)return;this.lastRendererWidth=e,this.lastRendererHeight=t;let n=e/t,r,i;if(n>1.875?(r=90,i=Math.round(90/n)):(i=48,r=Math.round(48*n)),r=Math.max(r,16),i=Math.max(i,16),r!==this.texturePreviewWidth||i!==this.texturePreviewHeight){this.texturePreviewWidth=r,this.texturePreviewHeight=i,this.textureCaptureWebGL&&this.textureCaptureWebGL.resize(r,i),this.textureCaptureWebGPU&&this.textureCaptureWebGPU.resize(r,i);for(let n of this.texturePanels.values())n.setSourceSize(e,t)}}onWebGPUTimestampSupported(){}onGPUTrackingInitialized(){}setData(t){if(this.externalData=t,this.hasNewExternalData=!0,!this.isWorker&&this.msPanel){this.isWorker=!0,this.workerCpuPanel=new e.Panel(`WRK`,`#f90`,`#220`);let t=this.msPanel.id+1;this.workerCpuPanel.id=t,this.gpuPanel&&this.gpuPanel.id>=t&&(this.gpuPanel.id++,this.resizePanel(this.gpuPanel)),this.gpuPanelCompute&&this.gpuPanelCompute.id>=t&&(this.gpuPanelCompute.id++,this.resizePanel(this.gpuPanelCompute));let n=this.msPanel.canvas;n.nextSibling?this.dom.insertBefore(this.workerCpuPanel.canvas,n.nextSibling):this.dom.appendChild(this.workerCpuPanel.canvas),this.resizePanel(this.workerCpuPanel),this._panelId++}}update(){this.externalData?this.updateFromExternalData():this.updateFromInternalData()}updateFromExternalData(){let e=this.externalData;this.endProfiling(),this.addToAverage(this.totalCpuDuration,this.averageCpu),this.totalCpuDuration=0,this.hasNewExternalData&&=(this.addToAverage(e.cpu,this.averageWorkerCpu),this.addToAverage(e.fps,this.averageFps),this.addToAverage(e.gpu,this.averageGpu),this.addToAverage(e.gpuCompute,this.averageGpuCompute),!1),this.renderPanels()}updateFromInternalData(){this.endProfiling(),this.webgpuNative?this.resolveTimestampsAsync():this.info?this.processWebGPUTimestamps():this.processGpuQueries(),this.updateAverages(),this.resetCounters(),this.renderPanels()}renderPanels(){let e=performance.now();if(!this.isWorker){for(this.frameTimes.push(e);this.frameTimes.length>0&&this.frameTimes[0]<=e-1e3;)this.frameTimes.shift();let t=Math.round(this.frameTimes.length);this.addToAverage(t,this.averageFps)}let t=e>=this.prevTextTime+1e3/this.logsPerSecond,n=e>=this.prevGraphTime+1e3/this.graphsPerSecond,r=this.isWorker?` ⛭`:``;if(this.updatePanelComponents(this.fpsPanel,this.averageFps,0,t,n,r),this.updatePanelComponents(this.msPanel,this.averageCpu,this.precision,t,n,``),this.workerCpuPanel&&this.isWorker&&this.updatePanelComponents(this.workerCpuPanel,this.averageWorkerCpu,this.precision,t,n,` ⛭`),this.gpuPanel&&this.updatePanelComponents(this.gpuPanel,this.averageGpu,this.precision,t,n,r),this.trackCPT&&this.gpuPanelCompute&&this.updatePanelComponents(this.gpuPanelCompute,this.averageGpuCompute,this.precision,t,n,r),t&&(this.prevTextTime=e),n&&(this.prevGraphTime=e,this.texturePanels.size>0&&!this.textureUpdatePending&&(this.textureUpdatePending=!0,this.updateTexturePanels().finally(()=>{this.textureUpdatePending=!1})),this.captureStatsGLNodes()),this.vsyncPanel!==null){this.detectVSync(e);let n=this.detectedVSync?.refreshRate||0;t&&n>0&&this.vsyncPanel.update(n,n)}}resetCounters(){this.renderCount=0,this.totalCpuDuration=0,this.beginTime=performance.now()}resizePanel(e){e.canvas.style.position=`absolute`,this.minimal?e.canvas.style.display=`none`:(e.canvas.style.display=`block`,this.horizontal?(e.canvas.style.top=`0px`,e.canvas.style.left=e.id*e.WIDTH/e.PR+`px`):(e.canvas.style.left=`0px`,e.canvas.style.top=e.id*e.HEIGHT/e.PR+`px`))}addPanel(e){return e.canvas&&(this.dom.appendChild(e.canvas),e.id=this._panelId,this.resizePanel(e),this._panelId++),e}showPanel(e){for(let t=0;t<this.dom.children.length;t++){let n=this.dom.children[t];n.style.display=t===e?`block`:`none`}this.mode=e}addTexturePanel(e){this.texturePanelRow||(this.texturePanelRow=document.createElement(`div`),this.texturePanelRow.style.cssText=`
108
- position: absolute;
109
- top: 48px;
110
- left: 0;
111
- display: flex;
112
- flex-direction: row;
113
- `,this.dom.appendChild(this.texturePanelRow));let t=new pr(e);return t.canvas.style.position=`relative`,t.canvas.style.left=``,t.canvas.style.top=``,this.texturePanelRow.appendChild(t.canvas),this.texturePanels.set(e,t),t}setTexture(e,t){this.updateTexturePreviewDimensions(),this.gl&&!this.textureCaptureWebGL&&(this.textureCaptureWebGL=new mr(this.gl,this.texturePreviewWidth,this.texturePreviewHeight)),this.gpuDevice&&!this.textureCaptureWebGPU&&(this.textureCaptureWebGPU=new hr(this.gpuDevice,this.texturePreviewWidth,this.texturePreviewHeight));let n=this.texturePanels.get(e);if(t.isWebGLRenderTarget&&this.gl){let r=gr(t,this.gl);r&&(this.textureSourcesWebGL.set(e,{target:t,...r}),n&&n.setSourceSize(r.width,r.height));return}if(t.isRenderTarget&&this.gpuBackend){let r=_r(t,this.gpuBackend);r&&(this.textureSourcesWebGPU.set(e,r),n&&t.width&&t.height&&n.setSourceSize(t.width,t.height));return}if(t&&typeof t.createView==`function`){this.textureSourcesWebGPU.set(e,t);return}}setTextureWebGL(e,t,n,r){this.updateTexturePreviewDimensions(),this.gl&&!this.textureCaptureWebGL&&(this.textureCaptureWebGL=new mr(this.gl,this.texturePreviewWidth,this.texturePreviewHeight)),this.textureSourcesWebGL.set(e,{target:{isWebGLRenderTarget:!0},framebuffer:t,width:n,height:r});let i=this.texturePanels.get(e);i&&i.setSourceSize(n,r)}setTextureBitmap(e,t,n,r){let i=this.texturePanels.get(e);i&&(n!==void 0&&r!==void 0&&i.setSourceSize(n,r),i.updateTexture(t))}removeTexturePanel(e){let t=this.texturePanels.get(e);t&&(t.dispose(),t.canvas.remove(),this.texturePanels.delete(e),this.textureSourcesWebGL.delete(e),this.textureSourcesWebGPU.delete(e))}async updateTexturePanels(){if(this.updateTexturePreviewDimensions(),this.textureCaptureWebGL)for(let[e,t]of this.textureSourcesWebGL){let n=this.texturePanels.get(e);if(n){let r=t.framebuffer,i=t.width,a=t.height;t.target.isWebGLRenderTarget&&t.target.__webglFramebuffer&&(r=t.target.__webglFramebuffer,i=t.target.width||i,a=t.target.height||a);let o=await this.textureCaptureWebGL.capture(r,i,a,e);o&&n.updateTexture(o)}}if(this.textureCaptureWebGPU)for(let[e,t]of this.textureSourcesWebGPU){let n=this.texturePanels.get(e);if(n){let e=await this.textureCaptureWebGPU.capture(t);e&&n.updateTexture(e)}}}captureStatsGLNodes(){let e=this._statsGLCaptures;if(!(!e||e.size===0||!this.renderer))for(let t of e.values())t.capture&&t.capture(this.renderer)}detectVSync(e){if(this.lastFrameTime===0){this.lastFrameTime=e;return}let t=e-this.lastFrameTime;if(this.lastFrameTime=e,this.frameTimeHistory.push(t),this.frameTimeHistory.length>this.HISTORY_SIZE&&this.frameTimeHistory.shift(),this.frameTimeHistory.length<60)return;let n=this.frameTimeHistory.reduce((e,t)=>e+t)/this.frameTimeHistory.length,r=this.frameTimeHistory.reduce((e,t)=>e+(t-n)**2,0)/this.frameTimeHistory.length;if(Math.sqrt(r)>2){this.detectedVSync=null;return}let i=null,a=1/0;for(let e of this.VSYNC_RATES){let t=Math.abs(n-e.frameTime);t<a&&(a=t,i=e)}i&&a/i.frameTime<=this.VSYNC_THRESHOLD?this.detectedVSync=i:this.detectedVSync=null}updatePanelComponents(e,t,n,r,i,a=``){if(!e||t.logs.length===0)return;let o=String(e.id);o in this.lastMin||(this.lastMin[o]=1/0,this.lastMax[o]=0,this.lastValue[o]=0);let s=t.logs[t.logs.length-1];this.lastMax[o]=Math.max(...t.logs),this.lastMin[o]=Math.min(this.lastMin[o],s),this.lastValue[o]=this.lastValue[o]*.7+s*.3;let c=Math.max(Math.max(...t.logs),...t.graph.slice(-this.samplesGraph));this.updateCounter++,r&&e.update(this.lastValue[o],this.lastMax[o],n,a),i&&e.updateGraph(s,c)}updatePanel(e,t,n=2){if(!e||t.logs.length===0)return;let r=performance.now();e.name in this.lastMin||(this.lastMin[e.name]=1/0,this.lastMax[e.name]=0,this.lastValue[e.name]=0);let i=t.logs[t.logs.length-1],a=Math.max(...t.logs.slice(-30));this.lastMin[e.name]=Math.min(this.lastMin[e.name],i),this.lastMax[e.name]=Math.max(this.lastMax[e.name],i),this.lastValue[e.name]=this.lastValue[e.name]*.7+i*.3;let o=Math.max(a,...t.graph.slice(-this.samplesGraph));this.updateCounter++,this.updateCounter%(this.logsPerSecond*2)==0&&(this.lastMax[e.name]=a,this.lastMin[e.name]=i),e.update&&(r>=this.prevCpuTime+1e3/this.logsPerSecond&&e.update(this.lastValue[e.name],i,this.lastMax[e.name],o,n),r>=this.prevGraphTime+1e3/this.graphsPerSecond&&(e.updateGraph(i,o),this.prevGraphTime=r))}get domElement(){return this.dom}dispose(){this.minimal?this.dom.removeEventListener(`click`,this.handleClick):window.removeEventListener(`resize`,this.handleResize),this.textureCaptureWebGL&&=(this.textureCaptureWebGL.dispose(),null),this.textureCaptureWebGPU&&=(this.textureCaptureWebGPU.dispose(),null);for(let e of this.texturePanels.values())e.dispose();this.texturePanels.clear(),this.textureSourcesWebGL.clear(),this.textureSourcesWebGPU.clear();let e=this._statsGLCaptures;if(e){for(let t of e.values())t.dispose&&t.dispose();e.clear()}this.texturePanelRow&&=(this.texturePanelRow.remove(),null),this.dom.remove(),this.fpsPanel=null,this.msPanel=null,this.gpuPanel=null,this.gpuPanelCompute=null,this.vsyncPanel=null,this.workerCpuPanel=null,this.frameTimeHistory.length=0,this.averageWorkerCpu.logs.length=0,this.averageWorkerCpu.graph.length=0,super.dispose()}};vr.Panel=dr,vr.PanelTexture=pr;let yr=vr;const $={diffuse:`csm_DiffuseColor`,roughness:`csm_Roughness`,metalness:`csm_Metalness`,emissive:`csm_Emissive`,ao:`csm_AO`,fragNormal:`csm_FragNormal`,clearcoat:`csm_Clearcoat`,clearcoatRoughness:`csm_ClearcoatRoughness`,clearcoatNormal:`csm_ClearcoatNormal`,transmission:`csm_Transmission`,thickness:`csm_Thickness`,iridescence:`csm_Iridescence`,pointSize:`csm_PointSize`,fragColor:`csm_FragColor`,depthAlpha:`csm_DepthAlpha`,unlitFac:`csm_UnlitFac`,position:`csm_Position`,positionRaw:`csm_PositionRaw`,normal:`csm_Normal`};`${$.position}`,`${$.positionRaw}`,`${$.normal}`,`${$.depthAlpha}`,`${$.pointSize}`,`${$.diffuse}`,`${$.fragColor}`,`${$.fragNormal}`,`${$.unlitFac}`,`${$.emissive}`,`${$.roughness}`,`${$.metalness}`,`${$.iridescence}`,`${$.ao}`,`${$.clearcoat}`,`${$.clearcoatRoughness}`,`${$.clearcoatNormal}`,`${$.transmission}`,`${$.thickness}`,A.ShaderChunk.lights_physical_fragment,A.ShaderChunk.transmission_fragment,`${$.normal}`,`${$.normal}`,`${$.position}`,`${$.position}`,`${$.positionRaw}`,`${$.positionRaw}`,`${$.pointSize}`,`${$.pointSize}`,`${$.diffuse}`,`${$.diffuse}`,`${$.fragColor}`,`${$.fragColor}${$.unlitFac}`,`${$.emissive}`,`${$.emissive}`,`${$.roughness}`,`${$.roughness}`,`${$.metalness}`,`${$.metalness}`,`${$.ao}`,`${$.ao}`,`${$.fragNormal}`,`${$.fragNormal}`,`${$.depthAlpha}`,`${$.depthAlpha}`,`${$.depthAlpha}`,`${$.depthAlpha}`,`${$.clearcoat}`,`${$.clearcoat}`,`${$.clearcoatRoughness}`,`${$.clearcoatRoughness}`,`${$.clearcoatNormal}`,`${$.transmission}`,`${$.transmission}`,`${$.thickness}`,`${$.thickness}`,`${$.iridescence}`,`${$.iridescence}`,$.clearcoat,$.clearcoatNormal,$.clearcoatRoughness,$.transmission,$.iridescence,A.Material,new z,new q,new q,new z,new oe,Array.from({length:8},()=>new q),new q,new q,new q,new q,new q,new q,Object.freeze(new q(0,0,1)),(()=>{let e=new B;return e.matrixAutoUpdate=!1,e.matrixWorldAutoUpdate=!1,e})(),new P(`black`),new K(1,1),new A.Vector3,new A.Vector3,new A.Vector3;var br=s({__name:`KeyboardControls`,props:{makeDefault:{type:Boolean,required:!1,default:!0},camera:{type:Object,required:!1},domElement:{type:null,required:!1},moveSpeed:{type:Number,required:!1,default:.2},selector:{type:String,required:!1}},emits:[`isLock`,`change`],setup(e,{expose:t,emit:n}){let a=e,o=n,{moveSpeed:s}=ee(a),{camera:c,controls:l,renderer:u,invalidate:d}=Pn();O(a,()=>{d()});let f=S(0),p=S(0),{KeyW:m,KeyA:h,KeyS:g,KeyD:_,Up:y,Down:b,Left:x,Right:C}=ft();k(()=>{h.value||x.value?f.value=-s.value:_.value||C.value?f.value=s.value:f.value=0,m.value||y.value?p.value=s.value:g.value||b.value?p.value=-s.value:p.value=0}),t({instance:l});let w=e=>{o(`isLock`,e)},T=e=>{o(`change`,e)},E=new q,te=new q,ne=new ve,A=(e,t)=>{if(!c.value?.position&&!E)return;let n=c.value,r=e*.001;n?.translateZ(-t),ne.set(te.x*r,te.y*r,te.z*r,1).normalize(),n?.quaternion.multiply(ne),(f.value||p.value)&&(d(),o(`change`,l.value))},{onBeforeRender:j}=Fn();return j(({delta:e})=>{l.value instanceof er&&l.value?.isLocked&&(A(e,p.value),l.value.moveRight(f.value))}),(t,n)=>D(u)?(v(),r(D(Or),{key:0,selector:e.selector,"make-default":e.makeDefault,camera:e.camera||D(c),"dom-element":e.domElement||D(u).domElement,onIsLock:w,onChange:T},null,8,[`selector`,`make-default`,`camera`,`dom-element`])):i(`v-if`,!0)}});const xr={makeDefault:!1,autoRotate:!1,autoRotateSpeed:2,enableDamping:!0,dampingFactor:.05,enablePan:!0,keyPanSpeed:7,maxAzimuthAngle:1/0,minAzimuthAngle:-1/0,maxPolarAngle:Math.PI,minPolarAngle:0,minDistance:0,maxDistance:1/0,minZoom:0,maxZoom:1/0,enableZoom:!0,zoomSpeed:1,enableRotate:!0,rotateSpeed:1,target:()=>[0,0,0]};function Sr(e,t,n){let{controls:r,invalidate:i}=Pn();O(t,()=>{i()}),$e(e,a=>{a.addEventListener(`change`,()=>{i(),a&&n(`change`,e.value)}),a.addEventListener(`start`,()=>{e.value&&n(`start`,e.value)}),a.addEventListener(`end`,()=>{e.value&&n(`end`,e.value)}),t.makeDefault?r.value=a:r.value=null},{once:!0});let{onBeforeRender:a}=Fn();a(()=>{e.value&&e.value.enabled&&(t.enableDamping||t.autoRotate)&&e.value.update()}),_(()=>{e.value&&e.value.dispose()})}const Cr=[`args`,`target`,`auto-rotate`,`auto-rotate-speed`,`enable-damping`,`damping-factor`,`enable-pan`,`key-pan-speed`,`keys`,`max-azimuth-angle`,`min-azimuth-angle`,`max-polar-angle`,`min-polar-angle`,`min-distance`,`max-distance`,`min-zoom`,`max-zoom`,`touches`,`enable-zoom`,`zoom-speed`,`enable-rotate`,`rotate-speed`,`mouse-buttons`,`screen-space-panning`];var wr=s({__name:`MapControls`,props:f({makeDefault:{type:Boolean,required:!1},camera:{type:Object,required:!1},domElement:{type:null,required:!1},target:{type:null,required:!1},enableDamping:{type:Boolean,required:!1},dampingFactor:{type:Number,required:!1},autoRotate:{type:Boolean,required:!1},autoRotateSpeed:{type:Number,required:!1},enablePan:{type:Boolean,required:!1},keyPanSpeed:{type:Number,required:!1},keys:{type:Object,required:!1},maxAzimuthAngle:{type:Number,required:!1},minAzimuthAngle:{type:Number,required:!1},maxPolarAngle:{type:Number,required:!1},minPolarAngle:{type:Number,required:!1},minDistance:{type:Number,required:!1},maxDistance:{type:Number,required:!1},minZoom:{type:Number,required:!1},maxZoom:{type:Number,required:!1},touches:{type:Object,required:!1},enableZoom:{type:Boolean,required:!1},zoomSpeed:{type:Number,required:!1},enableRotate:{type:Boolean,required:!1},rotateSpeed:{type:Number,required:!1},mouseButtons:{type:Object,required:!1},screenSpacePanning:{type:Boolean,required:!1}},{...xr,touches:()=>({ONE:G.PAN,TWO:G.DOLLY_ROTATE}),mouseButtons:()=>({LEFT:L.PAN,MIDDLE:L.DOLLY,RIGHT:L.ROTATE}),screenSpacePanning:!1}),emits:[`change`,`start`,`end`],setup(e,{expose:t,emit:n}){let r=e,o=n,{camera:s,renderer:c,extend:l}=Pn(),u=T(null);return l({MapControls:cr}),Sr(u,r,o),t({instance:u}),(t,n)=>(e.camera||D(s))&&(e.domElement||D(c).domElement)?(v(),a(`TresMapControls`,{key:0,ref_key:`controlsRef`,ref:u,args:[e.camera||D(s),e.domElement||D(c).domElement],target:e.target,"auto-rotate":e.autoRotate,"auto-rotate-speed":e.autoRotateSpeed,"enable-damping":e.enableDamping,"damping-factor":e.dampingFactor,"enable-pan":e.enablePan,"key-pan-speed":e.keyPanSpeed,keys:e.keys,"max-azimuth-angle":e.maxAzimuthAngle,"min-azimuth-angle":e.minAzimuthAngle,"max-polar-angle":e.maxPolarAngle,"min-polar-angle":e.minPolarAngle,"min-distance":e.minDistance,"max-distance":e.maxDistance,"min-zoom":e.minZoom,"max-zoom":e.maxZoom,touches:e.touches,"enable-zoom":e.enableZoom,"zoom-speed":e.zoomSpeed,"enable-rotate":e.enableRotate,"rotate-speed":e.rotateSpeed,"mouse-buttons":e.mouseButtons,"screen-space-panning":e.screenSpacePanning},null,8,Cr)):i(`v-if`,!0)}});const Tr=[`args`,`target`,`auto-rotate`,`auto-rotate-speed`,`enable-damping`,`damping-factor`,`enable-pan`,`key-pan-speed`,`keys`,`max-azimuth-angle`,`min-azimuth-angle`,`max-polar-angle`,`min-polar-angle`,`min-distance`,`max-distance`,`min-zoom`,`max-zoom`,`touches`,`enable-zoom`,`zoom-speed`,`enable-rotate`,`rotate-speed`,`mouse-buttons`,`screen-space-panning`];var Er=s({__name:`OrbitControls`,props:f({mouseButtons:{type:Object,required:!1},makeDefault:{type:Boolean,required:!1},camera:{type:Object,required:!1},domElement:{type:null,required:!1},target:{type:null,required:!1},enableDamping:{type:Boolean,required:!1},dampingFactor:{type:Number,required:!1},autoRotate:{type:Boolean,required:!1},autoRotateSpeed:{type:Number,required:!1},enablePan:{type:Boolean,required:!1},keyPanSpeed:{type:Number,required:!1},keys:{type:Object,required:!1},maxAzimuthAngle:{type:Number,required:!1},minAzimuthAngle:{type:Number,required:!1},maxPolarAngle:{type:Number,required:!1},minPolarAngle:{type:Number,required:!1},minDistance:{type:Number,required:!1},maxDistance:{type:Number,required:!1},minZoom:{type:Number,required:!1},maxZoom:{type:Number,required:!1},touches:{type:Object,required:!1},enableZoom:{type:Boolean,required:!1},zoomSpeed:{type:Number,required:!1},enableRotate:{type:Boolean,required:!1},rotateSpeed:{type:Number,required:!1},screenSpacePanning:{type:Boolean,required:!1}},{...xr,touches:()=>({ONE:G.ROTATE,TWO:G.DOLLY_PAN}),mouseButtons:()=>({LEFT:L.ROTATE,MIDDLE:L.DOLLY,RIGHT:L.PAN}),screenSpacePanning:!0}),emits:[`change`,`start`,`end`],setup(e,{expose:t,emit:n}){let r=e,o=n,{camera:s,renderer:c,extend:l}=Pn(),u=T(null);return l({OrbitControls:sr}),Sr(u,r,o),t({instance:u}),(t,n)=>(e.camera||D(s))&&(e.domElement||D(c).domElement)?(v(),a(`TresOrbitControls`,{ref_key:`controlsRef`,ref:u,key:(e.camera||D(s))?.uuid,args:[e.camera||D(s),e.domElement||D(c).domElement],target:e.target,"auto-rotate":e.autoRotate,"auto-rotate-speed":e.autoRotateSpeed,"enable-damping":e.enableDamping,"damping-factor":e.dampingFactor,"enable-pan":e.enablePan,"key-pan-speed":e.keyPanSpeed,keys:e.keys,"max-azimuth-angle":e.maxAzimuthAngle,"min-azimuth-angle":e.minAzimuthAngle,"max-polar-angle":e.maxPolarAngle,"min-polar-angle":e.minPolarAngle,"min-distance":e.minDistance,"max-distance":e.maxDistance,"min-zoom":e.minZoom,"max-zoom":e.maxZoom,touches:e.touches,"enable-zoom":e.enableZoom,"zoom-speed":e.zoomSpeed,"enable-rotate":e.enableRotate,"rotate-speed":e.rotateSpeed,"mouse-buttons":e.mouseButtons,"screen-space-panning":e.screenSpacePanning},null,8,Tr)):i(`v-if`,!0)}});const Dr=[`args`];var Or=s({__name:`PointerLockControls`,props:{makeDefault:{type:Boolean,required:!1,default:!1},camera:{type:Object,required:!1},domElement:{type:null,required:!1},selector:{type:String,required:!1}},emits:[`isLock`,`change`],setup(e,{expose:t,emit:n}){let r=e,o=n,{camera:s,renderer:c,extend:l,controls:u,invalidate:d}=Pn();O(r,()=>{d()});let f=T(null),p;l({PointerLockControls:er});let m=()=>o(`isLock`,!0),h=()=>o(`isLock`,!1),g=()=>d();return O(f,(e,t)=>{if(t&&(t.removeEventListener(`lock`,m),t.removeEventListener(`unlock`,h),t.removeEventListener(`change`,g)),!e){u.value=null;return}r.makeDefault&&(u.value=e),e.addEventListener(`lock`,m),e.addEventListener(`unlock`,h),e.addEventListener(`change`,g),p=document.getElementById(r.selector||``)||c.domElement,J(p,`click`,()=>{e.lock(),d()})}),_(()=>{let e=f.value;e&&(e.removeEventListener(`lock`,m),e.removeEventListener(`unlock`,h),e.removeEventListener(`change`,g),e.dispose())}),t({instance:u}),(t,n)=>(e.camera||D(s))&&(e.domElement||D(c).domElement)?(v(),a(`TresPointerLockControls`,{key:0,ref_key:`controlsRef`,ref:f,args:[e.camera||D(s),e.domElement||D(c).domElement]},null,8,Dr)):i(`v-if`,!0)}});function kr(e,t,...n){let r=T(),{scene:i}=Pn(),a;return k(()=>{e&&E(e)&&t&&(r.value=a=new t(E(e),...n)),a&&(a.traverse(e=>e.raycast=()=>null),i.value.add(a))}),m(()=>{r.value=void 0,i.value.remove(a),a.dispose?.()}),Fn().onBeforeRender(()=>{r.value?.update?.()}),r}var Ar=s({__name:`component`,props:{type:{type:null,required:!0},args:{type:Array,required:!1}},setup(e){let t=e,n=T(),r=T();return k(()=>{n.value&&n.value.parent&&(r.value=n.value.parent)}),kr(r,t.type,...t.args??[]),(e,t)=>(v(),a(`TresObject3D`,{ref_key:`objRef`,ref:n},null,512))}});s({name:`Stats`,props:{showPanel:{type:Number,default:0}},setup(e,{expose:t}){let n=new lr.default;t({instance:n});let r=document.body;n.showPanel(e.showPanel||0),r?.appendChild(n.dom);let{onBeforeRender:i,onRender:a}=Fn();i(()=>n.begin(),-1/0),a(()=>n.end(),1/0),_(()=>{r?.removeChild(n.dom)})}}),s({name:`StatsGl`,props:[`logsPerSecond`,`samplesLog`,`samplesGraph`,`precision`,`horizontal`,`minimal`,`mode`],setup(e,{expose:t}){let n=new yr({logsPerSecond:e.logsPerSecond,samplesLog:e.samplesLog,samplesGraph:e.samplesGraph,precision:e.precision,horizontal:e.horizontal,minimal:e.minimal,mode:e.mode});t({instance:n});let r=document.body,i=n.domElement;r?.appendChild(i);let{renderer:a}=Nn(),{onRender:o}=Fn();n.init(a.instance),o(()=>n.update(),1/0),_(()=>{r?.removeChild(i)})}}),new P,s({name:`BakeShadows`,setup(){let{renderer:e}=Pn();k(()=>{e instanceof je&&(e.shadowMap.autoUpdate=!1,e.shadowMap.needsUpdate=!0)})}});var jr=class e extends B{static Geometry;isLensflare=!0;type=`Lensflare`;addElement(e){}dispose(){}constructor(){super(e.Geometry,new me({opacity:0,transparent:!0})),this.frustumCulled=!1,this.renderOrder=1/0;let t=new q,n=new q,r=new ue(16,16),i=new ue(16,16),a=Oe,o=e.Geometry,s=new ye({uniforms:{scale:{value:null},screenPosition:{value:null}},vertexShader:`
114
-
115
- precision highp float;
116
-
117
- uniform vec3 screenPosition;
118
- uniform vec2 scale;
119
-
120
- attribute vec3 position;
121
-
122
- void main() {
123
-
124
- gl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );
125
-
126
- }`,fragmentShader:`
127
-
128
- precision highp float;
129
-
130
- void main() {
131
-
132
- gl_FragColor = vec4( 1.0, 0.0, 1.0, 1.0 );
133
-
134
- }`,depthTest:!0,depthWrite:!1,transparent:!1}),c=new ye({uniforms:{map:{value:r},scale:{value:null},screenPosition:{value:null}},vertexShader:`
135
-
136
- precision highp float;
137
-
138
- uniform vec3 screenPosition;
139
- uniform vec2 scale;
140
-
141
- attribute vec3 position;
142
- attribute vec2 uv;
143
-
144
- varying vec2 vUV;
145
-
146
- void main() {
147
-
148
- vUV = uv;
149
-
150
- gl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );
151
-
152
- }`,fragmentShader:`
153
-
154
- precision highp float;
155
-
156
- uniform sampler2D map;
157
-
158
- varying vec2 vUV;
159
-
160
- void main() {
161
-
162
- gl_FragColor = texture2D( map, vUV );
163
-
164
- }`,depthTest:!1,depthWrite:!1,transparent:!1}),l=new B(o,s),u=[],d=Mr.Shader,f=new ye({name:d.name,uniforms:{map:{value:null},occlusionMap:{value:i},color:{value:new P(16777215)},scale:{value:new K},screenPosition:{value:new q}},vertexShader:d.vertexShader,fragmentShader:d.fragmentShader,blending:j,transparent:!0,depthWrite:!1}),p=new B(o,f);this.addElement=function(e){u.push(e)};let m=new K,h=new K,g=new ae,_=new ke;this.onBeforeRender=function(e,d,v){e.getCurrentViewport(_);let y=e.getRenderTarget(),b=y===null?Oe:y.texture.type;a!==b&&(r.dispose(),i.dispose(),r.type=i.type=b,a=b);let x=_.w/_.z,S=_.z/2,C=_.w/2,w=16/_.w;if(m.set(w*x,w),g.min.set(_.x,_.y),g.max.set(_.x+(_.z-16),_.y+(_.w-16)),n.setFromMatrixPosition(this.matrixWorld),n.applyMatrix4(v.matrixWorldInverse),!(n.z>0)&&(t.copy(n).applyMatrix4(v.projectionMatrix),h.x=_.x+t.x*S+S-8,h.y=_.y+t.y*C+C-8,g.containsPoint(h))){e.copyFramebufferToTexture(r,h);let n=s.uniforms;n.scale.value=m,n.screenPosition.value=t,e.renderBufferDirect(v,null,o,s,l,null),e.copyFramebufferToTexture(i,h),n=c.uniforms,n.scale.value=m,n.screenPosition.value=t,e.renderBufferDirect(v,null,o,c,l,null);let a=-t.x*2,d=-t.y*2;for(let n=0,r=u.length;n<r;n++){let r=u[n],i=f.uniforms;i.color.value.copy(r.color),i.map.value=r.texture,i.screenPosition.value.x=t.x+a*r.distance,i.screenPosition.value.y=t.y+d*r.distance,w=r.size/_.w;let s=_.w/_.z;i.scale.value.set(w*s,w),f.uniformsNeedUpdate=!0,e.renderBufferDirect(v,null,o,f,p,null)}}},this.dispose=function(){s.dispose(),c.dispose(),f.dispose(),r.dispose(),i.dispose();for(let e=0,t=u.length;e<t;e++)u[e].texture.dispose()}}},Mr=class{texture;size;distance;color;static Shader;constructor(e,t=1,n=0,r=new P(16777215)){this.texture=e,this.size=t,this.distance=n,this.color=r}};Mr.Shader={name:`LensflareElementShader`,uniforms:{map:{value:null},occlusionMap:{value:null},color:{value:null},scale:{value:null},screenPosition:{value:null}},vertexShader:`
165
-
166
- precision highp float;
167
-
168
- uniform vec3 screenPosition;
169
- uniform vec2 scale;
170
-
171
- uniform sampler2D occlusionMap;
172
-
173
- attribute vec3 position;
174
- attribute vec2 uv;
175
-
176
- varying vec2 vUV;
177
- varying float vVisibility;
178
-
179
- void main() {
180
-
181
- vUV = uv;
182
-
183
- vec2 pos = position.xy;
184
-
185
- vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );
186
- visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );
187
- visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );
188
- visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );
189
- visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );
190
- visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );
191
- visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );
192
- visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );
193
- visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );
194
-
195
- vVisibility = visibility.r / 9.0;
196
- vVisibility *= 1.0 - visibility.g / 9.0;
197
- vVisibility *= visibility.b / 9.0;
198
-
199
- gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );
200
-
201
- }`,fragmentShader:`
202
-
203
- precision highp float;
204
-
205
- uniform sampler2D map;
206
- uniform vec3 color;
207
-
208
- varying vec2 vUV;
209
- varying float vVisibility;
210
-
211
- void main() {
212
-
213
- vec4 texture = texture2D( map, vUV );
214
- texture.a *= vVisibility;
215
- gl_FragColor = texture;
216
- gl_FragColor.rgb *= color;
217
-
218
- }`},jr.Geometry=(function(){let e=new se,t=new fe(new Float32Array([-1,-1,0,0,0,1,-1,0,1,0,1,1,0,1,1,-1,1,0,0,1]),5);return e.setIndex([0,1,2,0,2,3]),e.setAttribute(`position`,new F(t,3,0,!1)),e.setAttribute(`uv`,new F(t,2,3,!1)),e})(),R.clamp,R.lerp,s({name:`GlobalAudio`,props:[`src`,`loop`,`volume`,`playbackRate`,`playTrigger`,`stopTrigger`],async setup(e,{expose:t,emit:n}){let{camera:r,renderer:i}=Nn(),a=new re;r.activeCamera.value?.add(a);let o=new M(a),s=new ie;t({instance:o}),_(()=>{o&&o.disconnect()}),O(()=>[e.playbackRate],()=>o.setPlaybackRate(e.playbackRate??1),{immediate:!0}),O(()=>[e.volume],()=>o.setVolume(e.volume??.5),{immediate:!0}),O(()=>[e.loop],()=>o.setLoop(e.loop??!1),{immediate:!0}),O(()=>[e.src],async()=>{let t=await s.loadAsync(e.src);o.setBuffer(t)},{immediate:!0}),J(document.getElementById(e.playTrigger??``)||i.instance.domElement,`click`,()=>{o.isPlaying?o.pause():o.play(),n(`isPlaying`,o.isPlaying)});let c=document.getElementById(e.stopTrigger??``);return c&&J(c,`click`,()=>{o.stop(),n(`isPlaying`,o.isPlaying)}),null}});var Nr=`void main() {
219
- gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
220
- }`,Pr=`#include <common>
221
-
222
- uniform float uWidth;
223
- uniform float uHeight;
224
-
225
- void main() {
226
-
227
- vec4 mvPosition = modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0);
228
-
229
- vec2 quad = position.xy;
230
-
231
- vec2 alignedPosition = quad * vec2(uWidth, uHeight);
232
-
233
- mvPosition.xy += alignedPosition;
234
-
235
- gl_Position = projectionMatrix * mvPosition;
236
- }`,Fr=`#include <common>
237
-
238
- void main() {
239
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
240
- }`;const Ir=new q(0,0,0),Lr=new q(0,0,0),Rr=new q(0,0,0);function zr(e,t,n){let r=Ir.setFromMatrixPosition(e.matrixWorld);r.project(t);let i=n.width/2,a=n.height/2;return[(Number.isNaN(r.x)?0:r.x)*i+i,-(r.y*a)+a,r.z]}function Br(e,t){let n=Ir.setFromMatrixPosition(e.matrixWorld),r=Lr.setFromMatrixPosition(t.matrixWorld),i=n.sub(r),a=t.getWorldDirection(Rr);return i.angleTo(a)>Math.PI/2}function Vr(e,t,n,r){let i=Ir.setFromMatrixPosition(e.matrixWorld),a=i.clone();a.project(t),n.setFromCamera(new K(a.x,a.y),t);let o=n.intersectObjects(r,!0);if(o.length>0){let e=o[0].distance;return i.distanceTo(n.ray.origin)<e}return!0}function Hr(e,t=new q(0,0,0),n){let{width:r,height:i}=n,a=r/i,o=Ir,s=Lr;s.copy(t);let c=e.getWorldPosition(o).distanceTo(s);if(e instanceof ge)return 1;let l=e.fov*Math.PI/180;return r/(2*Math.tan(l/2)*c*a)}function Ur(e,t){if(t instanceof ge)return t.zoom;if(t instanceof H){let n=Ir.setFromMatrixPosition(e.matrixWorld),r=Lr.setFromMatrixPosition(t.matrixWorld),i=t.fov*Math.PI/180,a=n.distanceTo(r);return 1/(2*Math.tan(i/2)*a)}else return 1}function Wr(e,t,n){if(t instanceof H||t instanceof ge){let r=Ir.setFromMatrixPosition(e.matrixWorld),i=Lr.setFromMatrixPosition(t.matrixWorld),a=r.distanceTo(i),o=(n[1]-n[0])/(t.far-t.near),s=n[1]-o*t.far;return Math.round(o*a+s)}}const Gr=e=>Math.abs(e)<1e-10?0:e;function Kr(e,t,n=``){let r=`matrix3d(`;for(let n=0;n!==16;n++)r+=Gr(t[n]*e.elements[n])+(n===15?`)`:`,`);return n+r}const qr=(e=>t=>Kr(t,e))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),Jr=(e,t)=>Kr(e,[1/t,1/t,1/t,1,-1/t,-1/t,-1/t,-1,1/t,1/t,1/t,1,1,1,1,1],`translate(-50%,-50%)`),Yr=[`material`,`cast-shadow`,`receive-shadow`,`geometry`];var Xr=s({__name:`HTML`,props:{geometry:{type:null,required:!1},material:{type:null,required:!1},as:{type:String,required:!1,default:`div`},transform:{type:Boolean,required:!1,default:!1},prepend:{type:Boolean,required:!1,default:!1},portal:{type:null,required:!1},wrapperClass:{type:String,required:!1},eps:{type:Number,required:!1,default:1e-4},distanceFactor:{type:Number,required:!1},fullscreen:{type:Boolean,required:!1},center:{type:Boolean,required:!1},pointerEvents:{type:String,required:!1,default:`auto`},sprite:{type:Boolean,required:!1,default:!1},transparentMaterial:{type:Boolean,required:!1,default:!1},zIndexRange:{type:Array,required:!1,default:()=>[16777271,0]},calculatePosition:{type:null,required:!1,default:()=>zr},occlude:{type:[Object,null,Array,Boolean,String],required:!1},castShadow:{type:Boolean,required:!1,default:!1},receiveShadow:{type:Boolean,required:!1,default:!1}},emits:[`onOcclude`],setup(e,{expose:t,emit:r}){let s=e,c=r,l=ne(),{geometry:u,material:d,as:f,transform:p,portal:m,wrapperClass:h,eps:g,distanceFactor:y,fullscreen:b,center:x,pointerEvents:w,sprite:E,prepend:A,occlude:j,zIndexRange:M,castShadow:re,receiveShadow:ie,transparentMaterial:ae,calculatePosition:oe}=ee(s),N=te(),se=T(null),P=T(null),le=new _e,{renderer:ue,scene:de,camera:fe,sizes:F}=Nn(),I=n(()=>document.createElement(f.value)),L=new xe,pe=new q,R=new z,B=new ve,me=S([0,0,0]),he=S(0),V=S(null),H=S(!0),U=S(!1),W=n(()=>({position:`absolute`,top:`0`,left:`0`,willChange:`transform`,pointerEvents:w.value,...typeof N.style==`object`?N.style:{}})),ye=n(()=>{let e=F.width.value,t=F.height.value;return p.value?{...W.value,transformStyle:`preserve-3d`,pointerEvents:`none`,width:`${e}px`,height:`${t}px`}:{...W.value,transform:x.value?`translate3d(-50%,-50%,0)`:`none`,...b.value&&{top:`-${t/2}px`,left:`-${e/2}px`,width:`${e}px`,height:`${t}px`},pointerEvents:b.value?`none`:w.value}}),be=n(()=>({position:`absolute`,pointerEvents:w.value})),Ce=n(()=>{let e=j.value;return e&&e!==`blending`&&(Array.isArray(e)?e.length&&typeof e[0]!=`boolean`:!0)}),we=n(()=>d.value?d.value:new Se({vertexShader:E.value?Pr:p.value?Fr:Pr,fragmentShader:Nr,side:ce,transparent:ae.value,uniforms:{uWidth:{value:1},uHeight:{value:1}}}));k(()=>{we.value.transparent=ae.value}),O([j,()=>ue.instance],([e,t])=>{if(!t||e!==`blending`)return;let n=t.domElement;n.style.zIndex=`${Math.floor(M.value[0]/2)}`,n.style.position=`absolute`},{immediate:!0}),O(()=>[se.value,ue.instance,F.width.value,F.height.value,l.default?.(),fe.activeCamera.value],([e,t])=>{if(!e||!t||!fe.activeCamera.value)return;U.value=!1,de.value?.updateMatrixWorld();let n=I.value.style;n.position=`absolute`,n.top=`0`,n.left=`0`,p.value?(n.pointerEvents=`none`,n.overflow=`hidden`,n.transformStyle=`preserve-3d`):(n.transformOrigin=`0 0`,n.willChange=`transform`,j.value||(n.zIndex=`${M.value[0]}`));let r=m.value||t.domElement?.parentNode;r&&!I.value.parentNode&&(A.value?r.prepend(I.value):r.appendChild(I.value)),V.value=p.value?o(`div`,{style:ye.value},[o(`div`,{style:be.value},[o(`div`,{key:se.value?.uuid,class:N.class,style:N.style},l.default?.())])]):o(`div`,{key:se.value?.uuid,style:ye.value,class:N.class},l.default?.()),C(V.value,I.value)}),k(()=>{h.value&&(I.value.className=h.value)});let{onBeforeRender:Te}=Fn();return Te(({invalidate:e})=>{let t=se.value,n=fe.activeCamera.value,r=ue.instance;if(!t||!n||!r)return;n.updateMatrixWorld(),t.updateWorldMatrix(!0,!1);let i=F.width.value,a=F.height.value,o=i*.5,s=a*.5,l=p.value?me.value:oe.value(t,n,{width:i,height:a}),d=Math.abs(he.value-n.zoom)>g.value||Math.abs(me.value[0]-l[0])>g.value||Math.abs(me.value[1]-l[1])>g.value||Math.abs(me.value[2]-l[2])>g.value,f=p.value||d,m=!0,h=Br(t,n);if(Ce.value){let e=!1;Array.isArray(j.value)?e=j.value:j.value!==`blending`&&(e=[de.value]),e&&(m=Vr(t,n,L,e)&&!h)}else m=!h;m!==H.value&&(H.value=m,I.value.style.display=m?`block`:`none`,c(`onOcclude`,!m),f=!0);let _=Math.floor(M.value[0]/2),v=j.value?Ce.value?[M.value[0],_]:[_-1,0]:M.value;if(I.value.style.zIndex=`${Wr(t,n,v)}`,p.value){let e=n.projectionMatrix.elements[5]*s,r=qr(n.matrixWorldInverse),c=n instanceof ge,l=c?`scale(${e})translate(${Gr(-(n.right+n.left)/2)}px,${Gr((n.top+n.bottom)/2)}px)`:`translateZ(${e}px)`,u=t.matrixWorld;if(E.value){R.copy(t.matrixWorld);let e=n.matrixWorldInverse.clone().transpose();B.setFromRotationMatrix(e),R.makeRotationFromQuaternion(B),t.getWorldPosition(pe),R.setPosition(pe),R.scale(t.scale),R.elements[3]=R.elements[7]=R.elements[11]=0,R.elements[15]=1,u=R}let d=I.value.style;if(d.width=`${i}px`,d.height=`${a}px`,d.perspective=c?``:`${e}px`,V.value?.el){V.value.el.style.transform=`${l}${r}translate(${o}px,${s}px)`;let e;Array.isArray(V.value.children)&&(e=V.value.children[0]),e?.el&&(e.el.style.transform=Jr(u,1/((y.value||10)/400)))}}else{let e=y.value===void 0?1:Ur(t,n)*y.value;I.value.style.transform=`translate3d(${l[0]}px,${l[1]}px,0) scale(${e})`}if(me.value=[l[0],l[1],l[2]],he.value=n.zoom,!Ce.value&&P.value&&!U.value){let e=P.value;if(p.value){let t=V.value?.children;if(Array.isArray(t)){let r=t[0]?.el;if(r){let t=n instanceof ge;if(t&&u.value&&N.scale)Array.isArray(N.scale)?N.scale instanceof q?e.scale.copy(N.scale):e.scale.set(1/N.scale[0],1/N.scale[1],1/N.scale[2]):e.scale.setScalar(1/N.scale);else if(!t&&!u.value){let t=(y.value||10)/400;if(E.value)we.value.uniforms.uWidth.value=r.clientWidth*t,we.value.uniforms.uHeight.value=r.clientHeight*t,e.lookAt(n.position),e.scale.set(1,1,1);else{let n=r.clientWidth*t,i=r.clientHeight*t;e.scale.set(n,i,1)}}U.value=!0}}}else{let r=I.value.children[0];if(r?.clientWidth&&r?.clientHeight){t.getWorldPosition(pe);let o=1/Hr(n,pe,{width:i,height:a});we.value.uniforms.uWidth.value=r.clientWidth*o,we.value.uniforms.uHeight.value=r.clientHeight*o,e.scale.set(1,1,1),e.lookAt(n.position),U.value=!0}}}f&&e()}),_(()=>{le?.dispose(),we.value?.dispose(),I.value?.parentNode&&I.value.parentNode.removeChild(I.value)}),t({instance:se,isVisible:H,occlusionMesh:P}),(e,t)=>(v(),a(`TresGroup`,{ref_key:`groupRef`,ref:se},[D(j)&&!Ce.value?(v(),a(`TresMesh`,{key:0,ref_key:`occlusionMeshRef`,ref:P,material:we.value,"cast-shadow":D(re),"receive-shadow":D(ie),geometry:D(u)||D(le)},null,8,Yr)):i(`v-if`,!0)],512))}});Bn.ReflectorShader,new P(16777215);export{Ar as a,Er as i,br as n,wr as r,Xr as t};