/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/spacesvr@2.12.2/main.cjs.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
var React=require("react");Object.defineProperty(exports,"__esModule",{value:!0});var _extends=require("@babel/runtime/helpers/extends"),_objectWithoutPropertiesLoose=require("@babel/runtime/helpers/objectWithoutPropertiesLoose"),react=require("react"),fiber=require("@react-three/fiber"),three=require("three"),three$1=require("@react-spring/three"),culori=require("culori"),drei=require("@react-three/drei"),cannon=require("@react-three/cannon"),WebGLExtensions=require("three/src/renderers/webgl/WebGLExtensions"),KTX2Loader=require("three/examples/jsm/loaders/KTX2Loader"),suspendReact=require("suspend-react"),BufferGeometryUtils=require("three/examples/jsm/utils/BufferGeometryUtils"),threeMeshBvh=require("three-mesh-bvh"),_taggedTemplateLiteralLoose=require("@babel/runtime/helpers/taggedTemplateLiteralLoose"),react$1=require("@emotion/react"),nipplejs=require("nipplejs"),styled=require("@emotion/styled"),reactDeviceDetect=require("react-device-detect"),_asyncToGenerator=require("@babel/runtime/helpers/asyncToGenerator"),xr=require("@react-three/xr"),threeStdlib=require("three-stdlib"),reactErrorBoundary=require("react-error-boundary"),reactDom=require("react-dom"),RoundedBoxGeometry=require("three/examples/jsm/geometries/RoundedBoxGeometry"),troikaThreeText=require("troika-three-text"),snapshotInterpolation=require("@geckos.io/snapshot-interpolation"),peerjs=require("peerjs"),core=require("@react-spring/core");function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var _extends__default=_interopDefaultLegacy(_extends),_objectWithoutPropertiesLoose__default=_interopDefaultLegacy(_objectWithoutPropertiesLoose),culori__namespace=_interopNamespace(culori),_taggedTemplateLiteralLoose__default=_interopDefaultLegacy(_taggedTemplateLiteralLoose),nipplejs__default=_interopDefaultLegacy(nipplejs),styled__default=_interopDefaultLegacy(styled),_asyncToGenerator__default=_interopDefaultLegacy(_asyncToGenerator),vertHead$3="\n    // Description : Array and textureless GLSL 2D/3D/4D simplex\n    //               noise functions.\n    //      Author : Ian McEwan, Ashima Arts.\n    //  Maintainer : ijm\n    //     Lastmod : 20110822 (ijm)\n    //     License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n    //               Distributed under the MIT License. See LICENSE file.\n    //               https://github.com/ashima/webgl-noise\n    //\n    \n    vec3 mod289(vec3 x) {\n      return x - floor(x * (1.0 / 289.0)) * 289.0;\n    }\n    \n    vec4 mod289(vec4 x) {\n      return x - floor(x * (1.0 / 289.0)) * 289.0;\n    }\n    \n    vec4 permute(vec4 x) {\n         return mod289(((x*34.0)+1.0)*x);\n    }\n    \n    vec4 taylorInvSqrt(vec4 r)\n    {\n      return 1.79284291400159 - 0.85373472095314 * r;\n    }\n    \n    float snoise(vec3 v)\n      {\n      const vec2  C = vec2(1.0/6.0, 1.0/3.0) ;\n      const vec4  D = vec4(0.0, 0.5, 1.0, 2.0);\n    \n    // First corner\n      vec3 i  = floor(v + dot(v, C.yyy) );\n      vec3 x0 =   v - i + dot(i, C.xxx) ;\n    \n    // Other corners\n      vec3 g = step(x0.yzx, x0.xyz);\n      vec3 l = 1.0 - g;\n      vec3 i1 = min( g.xyz, l.zxy );\n      vec3 i2 = max( g.xyz, l.zxy );\n    \n      //   x0 = x0 - 0.0 + 0.0 * C.xxx;\n      //   x1 = x0 - i1  + 1.0 * C.xxx;\n      //   x2 = x0 - i2  + 2.0 * C.xxx;\n      //   x3 = x0 - 1.0 + 3.0 * C.xxx;\n      vec3 x1 = x0 - i1 + C.xxx;\n      vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n      vec3 x3 = x0 - D.yyy;      // -1.0+3.0*C.x = -0.5 = -D.y\n    \n    // Permutations\n      i = mod289(i);\n      vec4 p = permute( permute( permute(\n                 i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n               + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n               + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n    \n    // Gradients: 7x7 points over a square, mapped onto an octahedron.\n    // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n      float n_ = 0.142857142857; // 1.0/7.0\n      vec3  ns = n_ * D.wyz - D.xzx;\n    \n      vec4 j = p - 49.0 * floor(p * ns.z * ns.z);  //  mod(p,7*7)\n    \n      vec4 x_ = floor(j * ns.z);\n      vec4 y_ = floor(j - 7.0 * x_ );    // mod(j,N)\n    \n      vec4 x = x_ *ns.x + ns.yyyy;\n      vec4 y = y_ *ns.x + ns.yyyy;\n      vec4 h = 1.0 - abs(x) - abs(y);\n    \n      vec4 b0 = vec4( x.xy, y.xy );\n      vec4 b1 = vec4( x.zw, y.zw );\n    \n      //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\n      //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\n      vec4 s0 = floor(b0)*2.0 + 1.0;\n      vec4 s1 = floor(b1)*2.0 + 1.0;\n      vec4 sh = -step(h, vec4(0.0));\n    \n      vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n      vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n    \n      vec3 p0 = vec3(a0.xy,h.x);\n      vec3 p1 = vec3(a0.zw,h.y);\n      vec3 p2 = vec3(a1.xy,h.z);\n      vec3 p3 = vec3(a1.zw,h.w);\n    \n    //Normalise gradients\n      vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n      p0 *= norm.x;\n      p1 *= norm.y;\n      p2 *= norm.z;\n      p3 *= norm.w;\n    \n    // Mix final noise value\n      vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n      m = m * m;\n      return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n                                    dot(p2,x2), dot(p3,x3) ) );\n      }\n              \n    \n    float fsnoise(float val1, float val2, float val3){\n      return snoise(vec3(val1,val2,val3));\n    }\n    \n    vec3 distortFunct(vec3 transformed, float factor) {\n      float radiusVariation = -fsnoise(\n        transformed.x * radiusNoiseFrequency + time,\n        transformed.y * radiusNoiseFrequency + time,\n        transformed.z * radiusNoiseFrequency + time \n      ) * radiusVariationAmplitude * factor;\n      return normalize(transformed) * (radiusVariation + radius);\n    }\n    \n    vec3 orthogonal(vec3 v) {\n      return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0)\n      : vec3(0.0, -v.z, v.y));\n    }\n    \n    vec3 distortNormal(vec3 position, vec3 distortedPosition, vec3 normal){\n      vec3 tangent1 = orthogonal(normal);\n      vec3 tangent2 = normalize(cross(normal, tangent1));\n      vec3 nearby1 = position + tangent1 * 0.1;\n      vec3 nearby2 = position + tangent2 * 0.1;\n      vec3 distorted1 = distortFunct(nearby1, 1.0);\n      vec3 distorted2 = distortFunct(nearby2, 1.0);\n      return normalize(cross(distorted1 - distortedPosition, distorted2 - distortedPosition));\n    }\n",vert$3="\n    #include <begin_vertex>\n    float updateTime = time / 10.0;\n    transformed = distortFunct(transformed, 1.0);\n    vec3 distortedNormal = distortNormal(position, transformed, normal);\n    vNormal = normal + distortedNormal;\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed,1.);\n",frag$3="\n    #include <dithering_fragment>\n    float angle = clamp(dot(normalize(vNormal), vec3(0., -1., 0.)), 0., 1.);\n    gl_FragColor = vec4(gl_FragColor.rgb * color, gl_FragColor.a);  \n    gl_FragColor.rgb = mix(gl_FragColor.rgb, mix(color, vec3(0.), 0.5), angle);\n",useLimiter=function(e){var t=react.useRef(0);return{isReady:function(n){var r=n.elapsedTime,o=r-t.current>1/e;return o&&(t.current=r),o}}},useLimitedFrame=function(e,t,n){var r=useLimiter(e);fiber.useFrame((function(e,n){r.isReady(e.clock)&&t(e,n)}),n)},_excluded$p=["idea"];function VisualIdea(e){var t=e.idea,n=_objectWithoutPropertiesLoose__default.default(e,_excluded$p),r=react.useMemo((function(){return(null==t?void 0:t.getHex())||"#808080"}),[t]),o=react.useMemo((function(){return Math.random()}),[]),a=react.useMemo((function(){return new three.Color(r)}),[r]),i=three$1.useSpring({col:r}).col,c=react.useMemo((function(){var e=new three.MeshStandardMaterial({metalness:.18,roughness:.49,envMapIntensity:.66,side:three.DoubleSide});return e.onBeforeCompile=function(t){t.uniforms.radius=new three.Uniform(4),t.uniforms.time=new three.Uniform(0),t.uniforms.color=new three.Uniform(a),t.uniforms.radiusVariationAmplitude=new three.Uniform(.82),t.uniforms.radiusNoiseFrequency=new three.Uniform(.154);var n="\n        uniform float radius;\n        uniform float time;\n        uniform vec3 color;\n        uniform float radiusVariationAmplitude;\n        uniform float radiusNoiseFrequency;\n      ";t.vertexShader=n+vertHead$3+t.vertexShader.replace("#include <begin_vertex>",vert$3),t.fragmentShader=n+t.fragmentShader.replace("#include <dithering_fragment>",frag$3),e.userData.shader=t},e}),[4,a,.82,.154,frag$3,vert$3]),u=useLimiter(50);return fiber.useFrame((function(e){var t,n=e.clock;null!=c&&null!=(t=c.userData)&&t.shader&&u.isReady(n)&&(c.userData.shader.uniforms.time.value=n.elapsedTime/6+1e3*o,c.userData.shader.uniforms.color.value.set(i.get()))})),React.createElement("group",_extends__default.default({name:"spacesvr-basis-idea"},n),React.createElement("mesh",{material:c,scale:.2},React.createElement("sphereGeometry",{args:[4,48,32]})))}var rgb_helper="\n    vec3 rgb2hsv(vec3 c)\n    {\n        vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n        vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n        vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n    \n        float d = q.x - min(q.w, q.y);\n        float e = 1.0e-10;\n        return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n    }\n    \n    vec3 hsv2rgb(vec3 c)\n    {\n        vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n        vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n        return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n    }\n",noise4D="\n    vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}\nfloat permute(float x){return floor(mod(((x*34.0)+1.0)*x, 289.0));}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}\nfloat taylorInvSqrt(float r){return 1.79284291400159 - 0.85373472095314 * r;}\n\nvec4 grad4(float j, vec4 ip){\n  const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n  vec4 p,s;\n\n  p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n  p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n  s = vec4(lessThan(p, vec4(0.0)));\n  p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www; \n\n  return p;\n}\n\nfloat snoise(vec4 v){\n  const vec2  C = vec2( 0.138196601125010504,  // (5 - sqrt(5))/20  G4\n                        0.309016994374947451); // (sqrt(5) - 1)/4   F4\n// First corner\n  vec4 i  = floor(v + dot(v, C.yyyy) );\n  vec4 x0 = v -   i + dot(i, C.xxxx);\n\n// Other corners\n\n// Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n  vec4 i0;\n\n  vec3 isX = step( x0.yzw, x0.xxx );\n  vec3 isYZ = step( x0.zww, x0.yyz );\n//  i0.x = dot( isX, vec3( 1.0 ) );\n  i0.x = isX.x + isX.y + isX.z;\n  i0.yzw = 1.0 - isX;\n\n//  i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n  i0.y += isYZ.x + isYZ.y;\n  i0.zw += 1.0 - isYZ.xy;\n\n  i0.z += isYZ.z;\n  i0.w += 1.0 - isYZ.z;\n\n  // i0 now contains the unique values 0,1,2,3 in each channel\n  vec4 i3 = clamp( i0, 0.0, 1.0 );\n  vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n  vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n  //  x0 = x0 - 0.0 + 0.0 * C \n  vec4 x1 = x0 - i1 + 1.0 * C.xxxx;\n  vec4 x2 = x0 - i2 + 2.0 * C.xxxx;\n  vec4 x3 = x0 - i3 + 3.0 * C.xxxx;\n  vec4 x4 = x0 - 1.0 + 4.0 * C.xxxx;\n\n// Permutations\n  i = mod(i, 289.0); \n  float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n  vec4 j1 = permute( permute( permute( permute (\n             i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n           + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n           + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n           + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n// Gradients\n// ( 7*7*6 points uniformly over a cube, mapped onto a 4-octahedron.)\n// 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n\n  vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n  vec4 p0 = grad4(j0,   ip);\n  vec4 p1 = grad4(j1.x, ip);\n  vec4 p2 = grad4(j1.y, ip);\n  vec4 p3 = grad4(j1.z, ip);\n  vec4 p4 = grad4(j1.w, ip);\n\n// Normalise gradients\n  vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n  p0 *= norm.x;\n  p1 *= norm.y;\n  p2 *= norm.z;\n  p3 *= norm.w;\n  p4 *= taylorInvSqrt(dot(p4,p4));\n\n// Mix contributions from the five corners\n  vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n  vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4)            ), 0.0);\n  m0 = m0 * m0;\n  m1 = m1 * m1;\n  float final = 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n               + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n    return (final + 1.) / 2.;\n}\n",oklab$1="\nfloat fixedpow(float a, float x)\n{\n    return pow(abs(a), x) * sign(a);\n}\n\nfloat cbrt(float a)\n{\n    return fixedpow(a, 0.3333333333);\n}\n\nvec3 lsrgb2oklab(vec3 c)\n{\n    float l = 0.4122214708 * c.r + 0.5363325363 * c.g + 0.0514459929 * c.b;\n    float m = 0.2119034982 * c.r + 0.6806995451 * c.g + 0.1073969566 * c.b;\n    float s = 0.0883024619 * c.r + 0.2817188376 * c.g + 0.6299787005 * c.b;\n\n    float l_ = cbrt(l);\n    float m_ = cbrt(m);\n    float s_ = cbrt(s);\n\n    return vec3(\n        0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_,\n        1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_,\n        0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_\n    );\n}\n\nvec3 oklab2lsrgb(vec3 c)\n{\n    float l_ = c.r + 0.3963377774 * c.g + 0.2158037573 * c.b;\n    float m_ = c.r - 0.1055613458 * c.g - 0.0638541728 * c.b;\n    float s_ = c.r - 0.0894841775 * c.g - 1.2914855480 * c.b;\n\n    float l = l_ * l_ * l_;\n    float m = m_ * m_ * m_;\n    float s = s_ * s_ * s_;\n\n    return vec3(\n        4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n        -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n        -0.0041960863 * l - 0.7034186147 * m + 1.7076147010 * s\n    );\n}\n",vertHead$2="\n    precision highp float;\n    varying vec2 vUv;\n    varying float terrain;\n    varying float terrain_perc;\n    varying vec3 vfNormal;\n\n    uniform float radius;\n    uniform float time;\n    uniform vec3 color;\n\n    "+noise4D+"\n",vert$2="\n    vec3 pos = position;\n    \n    terrain = 0.;\n    float u_time = time * 0.25;\n    \n    terrain += 1. * pow(snoise(vec4(pos.xyz * 0.15, u_time + 100.)), 1.);\n    terrain += 0.8 * pow(snoise(vec4(pos.xyz * 0.2, u_time + 200.)), 1.5);\n    terrain += 0.4 * pow(snoise(vec4(pos.xyz * 0.8, u_time + 300.)), 2.);\n    terrain += 0.2 * pow(snoise(vec4(pos.xyz * 1.6, u_time + 400.)), 8.);\n    terrain_perc = terrain / (1. + 0.8 + 0.4 + 0.2);\n    terrain_perc = terrain_perc;\n    \n    pos = pos + normal * 2. * 2. * (terrain_perc - 0.5);\n    vfNormal = normal;\n    \n    gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.);\n",fragHead$1="\n    precision highp float;\n    varying vec2 vUv;\n    varying vec3 vfNormal;\n    varying float terrain;\n    varying float terrain_perc;\n\n    uniform float time;\n    uniform vec3 axiom;\n    uniform float range;\n    uniform vec3 up_norm;\n    \n    \n    "+rgb_helper+"\n    "+oklab$1+"\n",frag$2="\n    vec3 hsv_col = rgb2hsv(gl_FragColor.rgb);\n    \n    // todo: offset vfNormal by up_norm\n    vec3 oklab_axiom = lsrgb2oklab(axiom);\n    vec3 oklab_range_idea = lsrgb2oklab(axiom + 0.35 * range * vfNormal);\n    vec3 col = oklab2lsrgb(mix(oklab_axiom, oklab_range_idea, 1. - terrain_perc));\n    \n    gl_FragColor.rgb = col * pow(hsv_col.z, 1.3);\n    \n    \n    gl_FragColor.rgb *= 0.15 + 1.85 * pow((1. - terrain_perc), 1.5);\n",Idea=function(){function e(e,t,n){return void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=.5),this.setFromCreation(e,t,n),this}var t=e.prototype;return t.setFromCreation=function(e,t,n){return void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=.5),this.mediation=e,this.specificity=t,this.utility=n,this},t.setFromHex=function(e){var t=culori__namespace.oklch(culori__namespace.rgb(e));return t?(this.mediation=t.h/360,this.specificity=t.c/.322,this.utility=t.l,this):(console.warn("idea :: setFromHex - invalid hex color"),this)},t.updateFromText=function(e){var t=e.length;return this.mediation=hashStringToRange$1(e),this.specificity=.5*(1-(0==t?1:1/t)),this},t.setUtility=function(e){return this.utility=e,this},t.getHex=function(){var e=culori__namespace.rgb({mode:"oklch",l:this.utility,c:.322*this.specificity,h:360*this.mediation});return culori__namespace.formatHex(e)},t.getOpposite=function(){var t=this.mediation+.5>1?this.mediation-.5:this.mediation+.5,n=this.specificity,r=.5-(this.utility-.5);return(new e).setFromCreation(t,n,r)},t.clone=function(){return new e(this.mediation,this.specificity,this.utility)},e}(),AVG_CHAR_VAL$1=100,hashStringToRange$1=function(e,t){void 0===t&&(t=20);for(var n=0,r=0;r<e.length;r++)n+=e.substr(r,1).charCodeAt(0);var o=t*AVG_CHAR_VAL$1;return n%o/o},_excluded$o=["world"];function VisualWorld(e){var t=e.world,n=_objectWithoutPropertiesLoose__default.default(e,_excluded$o),r=react.useMemo((function(){return Math.random()}),[]),o=react.useMemo((function(){var e=new three.MeshStandardMaterial({metalness:.18,roughness:.49,side:three.DoubleSide});return e.onBeforeCompile=function(t){var n={time:new three.Uniform(0),axiom:new three.Uniform(new three.Color("#888888")),up_norm:new three.Uniform(new three.Vector3(0,1,0)),range:new three.Uniform(0)};t.uniforms=_extends__default.default({},t.uniforms,n),t.vertexShader=vertHead$2+t.vertexShader.replace("#include <worldpos_vertex>","#include <worldpos_vertex>\n"+vert$2),t.fragmentShader=fragHead$1+t.fragmentShader.replace("#include <dithering_fragment>","#include <dithering_fragment>\n"+frag$2),e.userData.shader=t},e.needsUpdate=!0,e}),[]);return react.useEffect((function(){if(o&&o.userData.shader&&t){var e=o.userData.shader.uniforms,n=t?t.getAxiom():new Idea;e.axiom.value.set(new three.Color(n.getHex())),e.up_norm.value=null==t?void 0:t.getUpNorm(),e.range.value=null==t?void 0:t.getRange()}}),[t,o]),useLimitedFrame(50,(function(e){var t=e.clock;o&&o.userData.shader&&(o.userData.shader.uniforms.time.value=t.elapsedTime+500*r)})),React.createElement("group",_extends__default.default({name:"spacesvr-basis-world"},n),React.createElement("mesh",{material:o,scale:.2},React.createElement("sphereGeometry",{args:[4,48,32]})))}var DOWN_AXIS=new three.Vector3(0,-1,0);function LookAtPlayer(e){var t=e.enabled,n=void 0===t||t,r=e.children,o=react.useRef(null),a=react.useMemo((function(){return new three.Vector2}),[]),i=react.useMemo((function(){return new three.Vector3}),[]),c=react.useMemo((function(){return new three.Quaternion}),[]),u=react.useMemo((function(){return new three.Quaternion}),[]),s=react.useMemo((function(){return new three.Quaternion}),[]),l=react.useMemo((function(){return new three.Euler}),[]);return useLimitedFrame(50,(function(e,t){var r,d=e.camera;if(o.current){if(null==(r=o.current.parent)||r.getWorldQuaternion(s),l.setFromQuaternion(s,"YXZ"),u.set(0,0,0,1),n){o.current.getWorldPosition(i),o.current.getWorldQuaternion(c),a.x=d.position.x-i.x,a.y=d.position.z-i.z;var f=a.angle()-Math.PI/2+l.y;u.setFromAxisAngle(DOWN_AXIS,f)}o.current.quaternion.slerp(u,.11)}})),React.createElement("group",{name:"look-at-player",ref:o},r)}function Background$1(e){var t=e.color,n=fiber.useThree((function(e){return e.scene}));return react.useLayoutEffect((function(){var e=n.background,r=t instanceof three.Color?t:new three.Color(t);return n.background=r,function(){n.background=e}}),[t]),null}function Fog(e){var t=e.color,n=void 0===t?"white":t,r=e.near,o=void 0===r?10:r,a=e.far,i=void 0===a?80:a,c=fiber.useThree((function(e){return e.scene}));return react.useEffect((function(){var e=n instanceof three.Color?n:new three.Color(n);return c.fog=new three.Fog(e,o,i),function(){c.fog=null}}),[c,n,o,i]),null}function InfinitePlane(e){var t=e.height,n=void 0===t?-1e-4:t,r=e.size,o=void 0===r?[100,100]:r,a=e.visible,i=cannon.usePlane((function(){return{rotation:[-Math.PI/2,0,0],position:[0,n,0],args:o,type:"Static"}}))[0];return a?React.createElement("mesh",{name:"spacesvr-infinite-plane",ref:i},React.createElement("planeGeometry",{args:o}),React.createElement("meshPhongMaterial",{color:"#660000"})):null}var fallbackTexture,_excluded$n=["url","dCone","rollOff","volume","setAudioAnalyser","fftSize"];function Audio$1(e){var t=e.url,n=e.dCone,r=void 0===n?new three.Vector3(180,230,.1):n,o=e.rollOff,a=void 0===o?1:o,i=e.volume,c=void 0===i?1:i,u=e.setAudioAnalyser,s=e.fftSize,l=void 0===s?128:s,d=_objectWithoutPropertiesLoose__default.default(e,_excluded$n),f=react.useState(),m=f[0],p=f[1],v=fiber.useThree((function(e){return e.camera})),h=react.useMemo((function(){var e=document.createElement("audio");return e.src=t,e.autoplay=!1,e.preload="auto",e.crossOrigin="Anonymous",e.loop=!0,e}),[]);return react.useEffect((function(){var e=function(){if(!h.paused&&!m){var e=new three.AudioListener;v.add(e);var t=new three.PositionalAudio(e);t.setMediaElementSource(h),t.setRefDistance(.75),t.setRolloffFactor(a),t.setVolume(c),t.setDirectionalCone(r.x,r.y,r.z),u&&u(new three.AudioAnalyser(t,l)),p(t)}},n=function(){return h.play().then((function(){return e()}))};if(h)return h.setAttribute("src",t),h.play().then((function(){return e()})),document.addEventListener("click",n),function(){document.removeEventListener("click",n)}}),[m,h,t]),react.useEffect((function(){m&&(m.setRolloffFactor(a),m.setVolume(c),m.setDirectionalCone(r.x,r.y,r.z))}),[r,a,c]),React.createElement("group",_extends__default.default({name:"spacesvr-audio"},d),m&&React.createElement("primitive",{object:m}))}function HDRI(e){var t=e.src,n=e.disableBackground,r=e.disableEnvironment;return React.createElement(react.Suspense,{fallback:null},React.createElement(drei.Environment,{files:t,background:!n&&!r||!(!r||n)&&"only"}))}var SIZE=128,SIZE_2=SIZE/2,RAD=12,LINE_W=1;function getFallbackTexture(){if(fallbackTexture)return fallbackTexture;var e=document.createElement("canvas");e.height=SIZE,e.width=SIZE;var t=e.getContext("2d");return t.fillStyle="#FFFFFF",t.fillRect(0,0,SIZE,SIZE),t.fillStyle="#000000",t.beginPath(),t.arc(SIZE_2,SIZE_2,RAD,0,2*Math.PI),t.fill(),t.strokeStyle="#FFFFFF",t.lineWidth=Math.ceil(LINE_W),t.beginPath(),t.moveTo(SIZE_2,SIZE_2-RAD),t.lineTo(SIZE_2,SIZE_2+RAD),t.stroke(),t.beginPath(),t.moveTo(SIZE_2-RAD,SIZE_2),t.lineTo(SIZE_2+RAD,SIZE_2),t.stroke(),fallbackTexture=new three.CanvasTexture(e)}var ktx2loader,KTX_CDN="https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/basis/",textureLoader=new three.TextureLoader,setupKtx2=function(){if(!ktx2loader){var e;(ktx2loader=new KTX2Loader.KTX2Loader).setTranscoderPath(KTX_CDN);var t=document.createElement("canvas"),n=t.getContext("webgl2");if(n?e=!0:(n=t.getContext("webgl"),e=!1),!n)throw new Error("No WebGL support");t.remove();var r={extensions:new WebGLExtensions.WebGLExtensions(n),capabilities:{isWebGL2:e}};ktx2loader.detectSupport(r)}};function loadimage(){return function(e){var t=e.toLowerCase().endsWith("ktx2");setupKtx2();var n=t?ktx2loader:textureLoader;return new Promise((function(t){return n.load(e,t,void 0,(function(e){console.error(e),t(getFallbackTexture())}))}))}}function useImage(e){return suspendReact.suspend(loadimage(),[e])}function useModel(e){return drei.useGLTF(e,!0,!0,(function(e){setupKtx2(),e.setKTX2Loader(ktx2loader)}))}function Frame(e){var t=e.width,n=e.height,r=e.thickness,o=void 0===r?1:r,a=e.material,i=e.innerFrameMaterial,c=react.useMemo((function(){return a||new three.MeshStandardMaterial({color:3355443,roughness:.8,metalness:.05})}),[a]),u=.075,s=.06,l=.08,d=.05*o,f=react.useMemo((function(){var e=new three.BoxGeometry(t+s,n+s,u);e.translate(0,0,-.0755);var r=new three.BoxGeometry(t+s,d,l);r.translate(0,n/2+.03-d/2,0);var o=new three.BoxGeometry(t+s,d,l);o.translate(0,-n/2-.03+d/2,0);var a=new three.BoxGeometry(d,n+s,l);a.translate(-t/2-.03+d/2,0,0);var i=new three.BoxGeometry(d,n+s,l);i.translate(t/2+.03-d/2,0,0);var c=[e,r,o,a,i],f=BufferGeometryUtils.mergeBufferGeometries(c);return e.dispose(),r.dispose(),o.dispose(),a.dispose(),i.dispose(),f}),[i,d,t,n]),m=react.useMemo((function(){if(i){var e=new three.BoxGeometry(t+s,n+s,u);return e.translate(0,0,-.0755),e}}),[i,t,n]);return React.createElement("group",{name:"spacesvr-frame"},React.createElement("mesh",{geometry:f,material:c}),m&&i&&React.createElement("mesh",{geometry:m,material:i}))}useImage.preload=function(e){return suspendReact.preload(loadimage(),[e])},useImage.clear=function(e){return suspendReact.clear([e])},useModel.preload=function(e){return drei.useGLTF.preload(e,!0,!0,(function(e){setupKtx2(),e.setKTX2Loader(ktx2loader)}))},useModel.clear=function(e){return drei.useGLTF.clear([e])};var _excluded$m=["src","size","framed","frameMaterial","frameWidth","innerFrameMaterial"];function UnsuspensedImage(e){var t=e.src,n=e.size,r=void 0===n?1:n,o=e.framed,a=e.frameMaterial,i=e.frameWidth,c=void 0===i?1:i,u=e.innerFrameMaterial,s=_objectWithoutPropertiesLoose__default.default(e,_excluded$m),l=useImage(t),d=l.image,f=d.width,m=d.height,p=Math.max(f,m),v=f/p*r,h=m/p*r,g=l.isCompressedTexture;return React.createElement("group",_extends__default.default({name:"spacesvr-image"},s),React.createElement("mesh",{rotation:g?[0,Math.PI,Math.PI]:[0,0,0]},React.createElement("planeGeometry",{args:[v,h]}),React.createElement("meshBasicMaterial",{map:l,side:three.DoubleSide,transparent:!0})),o&&React.createElement(Frame,{width:v,height:h,thickness:c,material:a,innerFrameMaterial:u}))}function Image$1(e){return React.createElement(react.Suspense,{fallback:null},React.createElement(UnsuspensedImage,e))}var World=function(){function e(){return this}var t=e.prototype;return t.getIdea=function(){return(new Idea).setFromCreation(hashStringToRange(JSON.stringify(this.tree||this.id),3),.3+.7*hashStringToRange(this.id),.8)},t.getAxiom=function(){var e=JSON.stringify(this.tree||this.id),t=new Array(10).fill(1).map((function(){return e})).join("");return(new Idea).setFromCreation(hashStringToRange(t,15),.3+.7*hashStringToRange(t,10),.8)},t.getUpNorm=function(){var e=parseInt(this.id.split("-")[1],16)/Math.pow(16,4),t=parseInt(this.id.split("-")[2],16)/Math.pow(16,4),n=parseInt(this.id.split("-")[3],16)/Math.pow(16,4);return new three.Vector3(e,t,n).normalize()},t.getRange=function(){return.3+.7*(parseInt(this.id.split("-")[0],16)/Math.pow(16,8))},t.getHex=function(){return this.getIdea().getHex()},e}(),AVG_CHAR_VAL=100,hashStringToRange=function(e,t){void 0===t&&(t=8);for(var n=0,r=0;r<e.length;r++)n+=e.substr(r,1).charCodeAt(0);var o=t*AVG_CHAR_VAL;return n%o/o},Site=function(){return this},getGeometryTriCount$1=function(e){return e.index?e.index.count/3:e.attributes.position.count/3},enableBVHRaycast=function(e,t){if(void 0===t&&(t=0),e.geometry&&e.geometry.isBufferGeometry){var n=e.geometry,r=getGeometryTriCount$1(n);n.boundsTree||r<t||(e.raycast=threeMeshBvh.acceleratedRaycast,n.computeBoundsTree=threeMeshBvh.computeBoundsTree,n.disposeBoundsTree=threeMeshBvh.disposeBoundsTree,n.computeBoundsTree({verbose:!0}))}},universe_cache=new Map;function getResource(e,t,n){var r=universe_cache.get(e);return r?null!=n&&n.verbose&&console.log("[CACHE] "+e+" found, returning"):(null!=n&&n.verbose&&console.log("[CACHE] "+e+" not found, creating new"),r=t(),universe_cache.set(e,r)),r}var _templateObject$7,_templateObject$6,cache={getResource:getResource,useResource:function(e,t,n){var r=react.useState(getResource(e,t,n)),o=r[0],a=r[1];return react.useEffect((function(){a(getResource(e,t,n))}),[e]),o},get mat_standard_white(){return getResource("mat_standard_white",(function(){return new three.MeshStandardMaterial({color:"white"})}))},get mat_standard_cream_double(){return getResource("mat_standard_cream_double",(function(){return new three.MeshStandardMaterial({color:"#aaa",side:three.DoubleSide})}))},get mat_standard_black(){return getResource("mat_standard_black",(function(){return new three.MeshStandardMaterial({color:"black"})}))},get mat_standard_rose(){return getResource("mat_standard_rose",(function(){return new three.MeshStandardMaterial({color:"#ff007f"})}))},get mat_standard_red(){return getResource("mat_standard_red",(function(){return new three.MeshStandardMaterial({color:"#ff0000"})}))},get mat_basic_white(){return getResource("mat_basic_white",(function(){return new three.MeshBasicMaterial({color:"white"})}))},get mat_basic_black(){return getResource("mat_basic_black",(function(){return new three.MeshBasicMaterial({color:"black"})}))},get mat_basic_gray(){return getResource("mat_basic_gray",(function(){return new three.MeshBasicMaterial({color:"#828282"})}))},get mat_basic_red(){return getResource("mat_basic_red",(function(){return new three.MeshBasicMaterial({color:"red"})}))},get mat_basic_black_wireframe(){return getResource("mat_basic_black_wireframe",(function(){return new three.MeshBasicMaterial({color:"black",wireframe:!0})}))}},useTrimeshCollision$1=function(e){var t=e.index.array,n=e.attributes.position.isInterleavedBufferAttribute,r=[];if(n)for(var o=e.attributes.position,a=o.data,i=o.offset;i<a.array.length;i+=a.stride)for(var c=0;c<o.itemSize;c++)r.push(a.array[i+c]);else r=e.attributes.position.array;return cannon.useTrimesh((function(){return{type:"Static",args:[r,t]}}))[0]},isTyping=function(){var e,t,n;return"INPUT"===(null==(e=document)||null==(t=e.activeElement)?void 0:t.tagName)&&(null==(n=document)?void 0:n.hasFocus())},useDrag=function(e,t,n){void 0===n&&(n=[]);var r=fiber.useThree(),o=r.clock,a=r.size,i=r.viewport,c=a.width/i.width,u=react.useState(new three.Vector2)[0],s=react.useState(new three.Vector2)[0],l=react.useState(new three.Vector2)[0],d=react.useState(new three.Vector2)[0],f=react.useRef(0),m=react.useCallback((function(t){e.onStart&&e.onStart(t)}),[].concat(n)),p=react.useCallback((function(t){e.onMove&&e.onMove(t)}),[].concat(n)),v=react.useCallback((function(t){e.onEnd&&e.onEnd(t)}),[].concat(n)),h=react.useCallback((function(e){e.preventDefault();var t=e.changedTouches[0];u.set(t.clientX,t.clientY),m({e:e,touch:t,downPoint:u,dragPoint:u,velocity:l})}),[m,u,l]),g=react.useCallback((function(e){var t=e.touches[0];s.set(t.clientX,t.clientY);var n=s.sub(u),r=o.elapsedTime,a=r-f.current;l.set(n.x/a/c,n.y/a/c),f.current=r,p({e:e,touch:t,downPoint:u,dragPoint:s,velocity:l,delta:n})}),[c,p,o,u,s,l]),x=react.useCallback((function(e){var t=e.changedTouches[0];s.set(t.clientX,t.clientY),d.copy(s).sub(u),v({e:e,touch:t,downPoint:u,dragPoint:s,velocity:l,delta:d})}),[v,d,u,s,l]);return react.useEffect((function(){var e=t||document;return e.addEventListener("touchstart",h),e.addEventListener("touchmove",g),e.addEventListener("touchend",x),function(){e.removeEventListener("touchstart",h),e.removeEventListener("touchmove",g),e.removeEventListener("touchend",x)}}),[t,x,g,h]),{startDrag:h,moveDrag:g,endDrag:x}},PADDING_X=.125,PADDING_X_2=2*PADDING_X,PADDING_Y=.125,PADDING_Y_2=2*PADDING_Y,RAD_PER_DEG_2=Math.PI/180/2,getHudPos=function(e,t,n,r){var o=t.fov*RAD_PER_DEG_2,a=2*Math.tan(o)*Math.abs(n),i=a*t.aspect,c=e.x||e[0],u=e.y||e[1],s=c*(i-PADDING_X_2)*.5,l=u*(a-PADDING_Y_2)*.5;return r?(r.x=s,r.y=l,r):new three.Vector2(s,l)},getHudDims=function(e,t){var n=e.fov*RAD_PER_DEG_2,r=2*Math.tan(n)*Math.abs(t);return{width:r*e.aspect,height:r}},useHudDims=function(e){void 0===e&&(e=1);var t=fiber.useThree((function(e){return e.camera}));return react.useMemo((function(){return getHudDims(t,e)}),[t,e,t.aspect])},Container$3=styled__default.default.div(_templateObject$7||(_templateObject$7=_taggedTemplateLiteralLoose__default.default(["\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  z-index: 0;\n\n  canvas {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    outline: 0;\n  }\n"]))),globalStyles=react$1.css(_templateObject$6||(_templateObject$6=_taggedTemplateLiteralLoose__default.default(['\n  @font-face {\n    font-family: "Quicksand";\n    src: url("https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf");\n  }\n\n  html {\n    position: fixed;\n    height: 100%;\n    overflow: hidden;\n  }\n\n  body {\n    margin: 0;\n    width: 100vw;\n    height: 100vh;\n    user-select: none;\n    overflow: hidden;\n    touch-action: none;\n    -webkit-overflow-scrolling: touch;\n  }\n'])));function GlobalStyles(){return react.useEffect((function(){var e=document.createElement("meta");return e.name="viewport",e.content="initial-scale=1, viewport-fit=cover",document.head.append(e),function(){document.head.removeChild(e)}}),[]),React.createElement(react$1.Global,{styles:globalStyles})}var _templateObject$5,_templateObject2$3,_templateObject3$3,_templateObject4$3,_templateObject5$3,_templateObject$4,_templateObject2$2,_templateObject3$2,_templateObject4$2,_templateObject5$2,_templateObject6,_templateObject7,_templateObject8,_templateObject9,useControlledProgress=function(){var e=drei.useProgress(),t=e.progress,n=e.total,r=react.useRef(new Date),o=react.useRef(0),a=react.useRef(!1),i=react.useState(0)[1];react.useEffect((function(){var e=(new Date).getTime()-r.current.getTime();Math.min(t-o.current,e<2e3?99:100)>0&&(100===t?(a.current=!0,setTimeout((function(){a.current&&(o.current=t,i(Math.random()))}),300)):(a.current=!1,o.current=t)),100!==t&&(a.current=!1)}),[t]);var c=react.useState(0),u=c[0],s=c[1],l=react.useState(!1),d=l[0],f=l[1];return react.useEffect((function(){n>0||(u>0?f(!0):setTimeout((function(){return s(u+1)}),2e3))}),[u]),d?100:Math.floor(o.current)},_float=react$1.keyframes(_templateObject$5||(_templateObject$5=_taggedTemplateLiteralLoose__default.default(["\n  0% {\n    transform: translatey(0px);\n  }\n\n  50% {\n    transform: translatey(-15px);\n  }\n\n  100% {\n    transform: translatey(0px);\n  }\n"]))),grow=react$1.keyframes(_templateObject2$3||(_templateObject2$3=_taggedTemplateLiteralLoose__default.default(["\n  0% {\n    opacity: 0.8;\n  }\n\n  50% {\n    opacity: 0.2;\n  }\n\n  100% {\n    opacity: 0.8;\n  }\n"]))),Container$2=styled__default.default.div(_templateObject3$3||(_templateObject3$3=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 11;\n  background: white;\n  transition: opacity 0.75s ease-in;\n  transition-delay: 0.5s;\n  opacity: ",";\n  pointer-events: ",';\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-direction: column;\n  font-family: "Quicksand", sans-serif;\n  font-size: 27px;\n  @media screen and (max-width: 500px) {\n    font-size: 24px;\n  }\n'])),(function(e){return e.finished?"0":"1"}),(function(e){return e.finished?"none":"all"})),Text$1=styled__default.default.div(_templateObject4$3||(_templateObject4$3=_taggedTemplateLiteralLoose__default.default(["\n  animation: "," 7s ease-in-out infinite;\n"])),_float),Wrapper$1=styled__default.default.div(_templateObject5$3||(_templateObject5$3=_taggedTemplateLiteralLoose__default.default(['\n  position: relative;\n\n  &:before {\n    pointer-events: none;\n    position: absolute;\n    content: "";\n    top: 100%;\n    left: 5%;\n    height: 10px;\n    width: 90%;\n    background: -webkit-radial-gradient(\n      center,\n      ellipse,\n      rgba(0, 0, 0, 0.35) 0%,\n      transparent 80%\n    );\n    background: radial-gradient(\n      ellipse at center,\n      rgba(0, 0, 0, 0.35) 0%,\n      transparent 80%\n    );\n    -webkit-transition-duration: 0.3s;\n    transition-duration: 0.3s;\n    -webkit-transition-property: transform, opacity;\n    transition-property: transform, opacity;\n    animation: '," 7s ease-in-out infinite;\n  }\n"])),grow);function LoadingScreen(){var e=useControlledProgress();return React.createElement(Container$2,{finished:100===e},React.createElement(Wrapper$1,null,React.createElement(Text$1,null,Math.round(e),"%")))}var _templateObject$3,Container$1=styled__default.default.div(_templateObject$4||(_templateObject$4=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 10;\n  transition: opacity 0.25s ease;\n  background: rgba(0, 0, 0, ",");\n  display: flex;\n  justify-content: center;\n  flex-direction: column;\n  align-items: center;\n  opacity: ",";\n  pointer-events: ",';\n  font-family: "Quicksand", sans-serif;\n  font-size: 27px;\n  @media screen and (max-width: 500px) {\n    font-size: 24px;\n  }\n'])),(function(e){return e.dev?0:.25}),(function(e){return e.paused?1:0}),(function(e){return e.paused?"all":"none"})),ClickContainer=styled__default.default.div(_templateObject2$2||(_templateObject2$2=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: -1;\n"]))),Window=styled__default.default.div(_templateObject3$2||(_templateObject3$2=_taggedTemplateLiteralLoose__default.default(["\n  width: 90%;\n  max-width: 400px;\n  padding: 20px 20px;\n  color: black;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  position: relative;\n  border-radius: 10px;\n  background-color: white;\n  background-position: center;\n  background-size: cover;\n  box-sizing: border-box;\n\n  box-shadow: 12px 12px 16px 0 rgba(0, 0, 0, 0.25),\n    -8px -8px 12px 0 rgba(255, 255, 255, 0.3);\n"]))),Continue=styled__default.default.div(_templateObject4$2||(_templateObject4$2=_taggedTemplateLiteralLoose__default.default(['\n  width: 90%;\n  max-width: 400px;\n  height: auto;\n  cursor: pointer;\n  text-align: center;\n  font-size: 1.3em;\n  font-family: "Quicksand", sans-serif;\n  transition: opacity 0.15s linear;\n  margin-top: 20px;\n  background: ',";\n  color: white;\n  //border: 2px solid black;\n  line-height: 1em;\n  padding: 12px 0;\n  border-radius: 10px;\n  :hover {\n    opacity: 0.5;\n  }\n\n  box-shadow: 12px 12px 16px 0 rgba(0, 0, 0, 0.25),\n    -8px -8px 12px 0 rgba(255, 255, 255, 0.3);\n"])),(function(e){return e.color})),Instructions=styled__default.default.div(_templateObject5$2||(_templateObject5$2=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  height: auto;\n  margin: 30px 0;\n  font-size: 0.7em;\n  text-align: center;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n\n  & > p {\n    margin: 0.2em;\n  }\n"]))),MenuButton=styled__default.default.div(_templateObject6||(_templateObject6=_taggedTemplateLiteralLoose__default.default(["\n  border: 1px solid black;\n  border-radius: 10px;\n  background: rgba(255, 255, 255, 0);\n  padding: 5px 10px;\n  margin: 8px 4px;\n  transition: background 0.15s linear;\n  font-size: 0.5em;\n  cursor: pointer;\n\n  &:hover {\n    background: rgba(0, 0, 0, 0.15);\n  }\n"]))),MenuLink=styled__default.default.a(_templateObject7||(_templateObject7=_taggedTemplateLiteralLoose__default.default(["\n  border: 1px solid black;\n  border-radius: 10px;\n  background: rgba(255, 255, 255, 0);\n  padding: 5px 10px;\n  margin: 8px 4px;\n  transition: background 0.15s linear;\n  font-size: 0.5em;\n  cursor: pointer;\n  text-decoration: none;\n  color: black !important;\n\n  &:hover {\n    background: rgba(0, 0, 0, 0.15);\n  }\n"]))),Title=styled__default.default.h1(_templateObject8||(_templateObject8=_taggedTemplateLiteralLoose__default.default(["\n  margin: 0;\n"]))),Actions=styled__default.default.div(_templateObject9||(_templateObject9=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  display: flex;\n  justify-content: space-evenly;\n  flex-wrap: wrap;\n"]))),useKeyboardLayout=function(){var e=react.useState("W/A/S/D"),t=e[0],n=e[1];return react.useEffect((function(){var e=window.self!==window.top;navigator.keyboard&&!e&&navigator.keyboard.getLayoutMap().then((function(e){"z"===e.get("KeyW")&&n("Z/Q/S/D")}))}),[]),t},useDevice=function(){var e=react.useState(reactDeviceDetect.isMobile?"mobile":"desktop"),t=e[0];return{device:{mobile:"mobile"===t,desktop:"desktop"===t,xr:"xr"===t},setDevice:e[1]}},EnvironmentContext=react.createContext({}),useEnvironment=function(){return react.useContext(EnvironmentContext)},useEnvironmentState=function(e){var t=react.useState([]),n=t[0],r=t[1],o=react.useRef(null),a=react.useState(!0),i=a[0],c=a[1],u=react.useMemo((function(){return[]}),[]),s=react.useState(!1),l=s[0],d=s[1],f=react.useCallback((function(e){if(c(e),!l){var t=three.AudioContext.getContext();"running"!==t.state&&t.resume(),d(!0)}u.map((function(t){return t.apply(null,[e])}))}),[u,l]),m=useDevice();return _extends__default.default({},m,{name:e,paused:i,setPaused:f,events:u,containerRef:o,menuItems:n,setMenuItems:r})};function PauseMenu(e){var t=e.title,n=void 0===t?"spacesvr":t,r=e.pauseMenuItems,o=void 0===r?[]:r,a=e.dev,i=void 0!==a&&a,c=useEnvironment(),u=c.paused,s=c.setPaused,l=c.menuItems,d=c.device,f=useKeyboardLayout(),m=react.useCallback((function(){var e=l.find((function(e){return"Enter VR"===e.text}));e&&e.action?e.action():s(!1)}),[l,s]),p=react.useMemo((function(){return(new Idea).setFromCreation(Math.random(),.8,.95).getHex()}),[]),v=[].concat(o,[{text:"v2.12.2",link:"https://www.npmjs.com/package/spacesvr"}],l);return React.createElement(Container$1,{paused:u,dev:i},React.createElement(ClickContainer,{onClick:m}),!i&&React.createElement(React.Fragment,null,React.createElement(Window,null,React.createElement(Title,null,n),React.createElement(Instructions,null,React.createElement("p",null,"Move – ",d.mobile?"Joystick":f),React.createElement("p",null,"Look – ",d.mobile?"Drag":"Mouse"),React.createElement("p",null,"Pause – ",d.mobile?"Menu Button":"Esc"),React.createElement("p",null,"Cycle Tool – ",d.mobile?"Edge Swipe":"Tab")),React.createElement(Actions,null,v.map((function(e){return e.link?React.createElement(MenuLink,{key:e.text,href:e.link,target:"_blank"},e.text):React.createElement(MenuButton,{key:e.text,onClick:e.action},e.text)})))),React.createElement(Continue,{onClick:m,color:p},"continue")))}var Element=styled__default.default.div(_templateObject$3||(_templateObject$3=_taggedTemplateLiteralLoose__default.default(['\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  z-index: 1;\n  mix-blend-mode: difference;\n\n  &::before {\n    content: "";\n    position: absolute;\n    height: 16px;\n    width: 1.5px;\n    transform: translate(-50%, -50%);\n    border-radius: 6px;\n    background: #ffffff;\n  }\n\n  &::after {\n    content: "";\n    position: absolute;\n    width: 16px;\n    height: 1.5px;\n    transform: translate(-50%, -50%);\n    border-radius: 6px;\n    background: #ffffff;\n  }\n']))),Crosshair=function(){return reactDeviceDetect.isMobile?null:React.createElement(Element,null)};function isOculusBrowser(){return/(OculusBrowser)/i.test(window.navigator.userAgent)}function isFirefoxReality(){return/(Mobile VR)/i.test(window.navigator.userAgent)}function isStandaloneVR(){return isOculusBrowser()||isFirefoxReality()}function RegisterMenuItems(){var e=useEnvironment().setMenuItems,t=useVRMenuItem(),n=useFsMenuItem(),r=useOculusMenuItem();return react.useEffect((function(){var o=[];t&&o.push(t),n&&o.push(n),r&&o.push(r),e(o)}),[null==t?void 0:t.text,null==n?void 0:n.text,null==r?void 0:r.text,e]),null}var _templateObject$2,useVRMenuItem=function(){var e=fiber.useThree((function(e){return e.gl})),t=useEnvironment(),n=t.setDevice,r=t.setPaused,o=react.useRef(),a=react.useState("Enter VR"),i=a[0],c=a[1],u=react.useCallback((function(){function t(){return(t=_asyncToGenerator__default.default(regeneratorRuntime.mark((function t(i){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i.addEventListener("end",a),t.next=3,e.xr.setSession(i);case 3:c("Exit VR"),n("xr"),r(!1),o.current=i;case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function a(){var e;null==(e=o.current)||e.removeEventListener("end",a),n(reactDeviceDetect.isMobile?"mobile":"desktop"),c("Enter VR"),r(!0),o.current=void 0}if(void 0===o.current){navigator.xr.requestSession("immersive-vr",{optionalFeatures:["local-floor","bounded-floor","hand-tracking","layers"]}).then((function(e){return t.apply(this,arguments)}))}else{var i;null==(i=o.current)||i.end()}}),[e.xr,n,r]);if(isStandaloneVR())return{text:i,action:u}},useOculusMenuItem=function(){if(!isStandaloneVR())return{text:"Open in Meta Quest",link:"https://www.oculus.com/open_url/?url="+window.location.href}},useFsMenuItem=function(){var e=document.body,t=e.requestFullscreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen||void 0,n=react.useState(!1),r=n[0],o=n[1],a=react.useState(void 0!==t)[0];react.useEffect((function(){var e=function(){return o(null!==document.fullscreenElement)};return document.addEventListener("fullscreenchange",e),function(){document.removeEventListener("fullscreenchange",e)}}),[]);var i=react.useCallback((function(){t&&(document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():t.apply(e,[{navigationUI:"hide"}]))}),[e,t]);if(a&&!isStandaloneVR())return{text:(r?"Exit":"Enter")+" Fullscreen",action:i}},defaultCanvasProps={gl:{powerPreference:"high-performance",antialias:!0,depth:!0,alpha:!1,stencil:!1,useLegacyLights:!1,toneMapping:three.NoToneMapping},shadows:!1,camera:{position:[0,2,0],near:.01,far:300},dpr:1,raycaster:{far:3},events:void 0};function MuteOnHide(){return react.useEffect((function(){function e(){var e=three.AudioContext.getContext();document.hidden?e.suspend():e.resume()}return document.addEventListener("visibilitychange",e),function(){return document.removeEventListener("visibilitychange",e)}}),[]),null}function Environment(e){var t=e.loadingScreen,n=e.pauseMenu,r=e.dev,o=e.canvasProps,a=e.name,i=void 0===a?"spacesvr":a,c=e.children,u=useEnvironmentState(i);return React.createElement(React.Fragment,null,React.createElement(GlobalStyles,null),React.createElement(MuteOnHide,null),React.createElement(Container$3,{id:"__spacesvr",ref:u.containerRef},React.createElement(EnvironmentContext.Provider,{value:u},t||React.createElement(LoadingScreen,null),n||React.createElement(PauseMenu,{dev:r,title:i}),React.createElement(Crosshair,null)),React.createElement(fiber.Canvas,_extends__default.default({},defaultCanvasProps,o),React.createElement(xr.XR,null,React.createElement(EnvironmentContext.Provider,{value:u},React.createElement(RegisterMenuItems,null),c)))))}var NippleMovement=function(e){var t=e.direction,n=react.useRef(),r=react.useRef(),o=useEnvironment().containerRef;react.useEffect((function(){if(o.current)return r.current=document.createElement("div"),r.current.style.position="fixed",r.current.style.left="0",r.current.style.bottom="0",r.current.style.width="40%",r.current.style.maxWidth="160px",r.current.style.height="25%",r.current.style.height="160px",r.current.style.zIndex="5",r.current.classList.add("nipple-container"),o.current.appendChild(r.current),n.current=nipplejs__default.default.create({zone:r.current,mode:"static",position:{left:"50%",top:"50%"},color:"#fff",size:120,restOpacity:.75}),n.current.on("move",(function(e,n){var r=n.distance/60*Math.cos(n.angle.radian),o=-n.distance/60*Math.sin(n.angle.radian);t.current.set(r,0,o)})),n.current.on("end",(function(){t.current.set(0,0,0)})),r.current.addEventListener("touchstart",(function(e){e.preventDefault()})),function(){n.current&&n.current.destroy()}}),[]);var a=react$1.css(_templateObject$2||(_templateObject$2=_taggedTemplateLiteralLoose__default.default(["\n    .nipple-container > * > .front,\n    .nipple-container > * > .back {\n      background: radial-gradient(white, white 64%, black 86%) !important;\n    }\n  "])));return React.createElement(react$1.Global,{styles:a})},KeyboardMovement=function(e){var t=e.direction,n=e.flying,r=useEnvironment().paused,o=react.useRef([!1,!1,!1,!1,!1]),a=react.useCallback((function(){var e=o.current,t=-1*Number(e[0])+Number(e[2]);return[-1*Number(e[1])+Number(e[3]),n&&e[4]?1:0,t]}),[n]),i=react.useCallback((function(e,t){switch(e.code||e.key||e.keyCode){case"KeyW":case"KeyI":case"ArrowUp":case"Numpad8":case 38:o.current[0]=t;break;case"KeyA":case"KeyJ":case"ArrowLeft":case"Numpad4":case 37:o.current[1]=t;break;case"KeyS":case"KeyK":case"ArrowDown":case"Numpad5":case"Numpad2":case 40:o.current[2]=t;break;case"KeyD":case"KeyL":case"ArrowRight":case"Numpad6":case 39:o.current[3]=t;break;case"Space":o.current[4]=t;break;default:return}}),[]),c=react.useCallback((function(e){if(!e.defaultPrevented&&!(e.ctrlKey||e.altKey||e.metaKey)){i(e,!0);var n=a(),r=n[0],o=n[1],c=n[2];t.current.set(r,o,c)}}),[a,t,i]),u=react.useCallback((function(e){i(e,!1);var n=a(),r=n[0],o=n[1],c=n[2];t.current.set(r,o,c)}),[a,t,i]);return react.useEffect((function(){return r?(t.current.set(0,0,0),void(o.current=[!1,!1,!1,!1,!1])):(document.addEventListener("keydown",c),document.addEventListener("keyup",u),function(){document.removeEventListener("keydown",c),document.removeEventListener("keyup",u)})}),[r,c,u,t]),null},EPS=1e-4,MIN_POLAR_ANGLE=EPS,MAX_POLAR_ANGLE=Math.PI-EPS,SENSITIVITY=.8,PI_2=Math.PI/2;function PointerLockCamera(){var e=fiber.useThree((function(e){return e.camera})),t=fiber.useThree((function(e){return e.gl})).domElement,n=useEnvironment(),r=n.paused,o=n.setPaused,a=n.events,i=react.useRef(!1),c=react.useState(new three.Euler(0,0,0,"YXZ"))[0],u=react.useCallback((function(){return t.ownerDocument.pointerLockElement===t}),[t]),s=react.useRef(0);return react.useEffect((function(){var n=function(t){if(i.current){var n=t.movementX||t.mozMovementX||t.webkitMovementX||0,r=t.movementY||t.mozMovementY||t.webkitMovementY||0;c.setFromQuaternion(e.quaternion),c.y-=n*SENSITIVITY*.002,c.x-=r*SENSITIVITY*.002,c.x=Math.max(PI_2-MAX_POLAR_ANGLE,Math.min(PI_2-MIN_POLAR_ANGLE,c.x)),e.quaternion.setFromEuler(c)}};function a(){i.current=!1,o(!0)}function l(){u()?(i.current=!0,r&&o(!1)):(s.current=performance.now(),i.current=!1,r||o(!0))}var d=t.ownerDocument;return d.addEventListener("mousemove",n),d.addEventListener("pointerlockchange",l),d.addEventListener("pointerlockerror",a),function(){d.removeEventListener("mousemove",n),d.removeEventListener("pointerlockchange",l),d.removeEventListener("pointerlockerror",a)}}),[r,t,o,c,e.quaternion,u]),react.useEffect((function(){setTimeout((function(){i.current||r||o(!0)}),250)}),[r,o]),react.useEffect((function(){var e=function(e){e?t.ownerDocument.exitPointerLock():performance.now()-s.current>1250&&t.requestPointerLock()};return a.push(e),function(){var t=a.indexOf(e);t>=0&&a.splice(t,1)}}),[t,a,u]),null}var DefaultTouch={pos:new three.Vector2(0,0),id:-1},getCurrentTouch=function(e,t){for(var n=t.length,r=0;r<n;r++)if(e===t[r].identifier)return t[r]},tappedNipple=function(e){var t=e.touches[e.touches.length-1].target;return t.classList.contains("nipple-container")||t.classList.contains("front")||t.classList.contains("back")},DRAG_SENSITIVITY=new three.Vector2(.7,.7);function TouchFPSCamera(){var e=react.useRef(DefaultTouch),t=react.useRef(new three.Euler(0,0,0,"YXZ")),n=fiber.useThree((function(e){return e.camera})),r=function(r,o){var a=t.current.clone(),i=r-e.current.pos.x,c=o-e.current.pos.y;return a.setFromQuaternion(n.quaternion),a.y=t.current.y-i*DRAG_SENSITIVITY.x/100,a.x=t.current.x-c*DRAG_SENSITIVITY.y/100,a.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,a.x)),a},o=function(r){if(-1===e.current.id)if(tappedNipple(r))e.current=DefaultTouch;else{var o=r.touches.length-1,a=r.touches[o],i=a.clientX,c=a.clientY,u=a.identifier;e.current={pos:new three.Vector2(i,c),id:u},t.current.setFromQuaternion(n.quaternion)}},a=function(t){var o=getCurrentTouch(e.current.id,t.touches);if(o){var a=o.clientX,i=o.clientY,c=r(a,i);n.quaternion.setFromEuler(c)}},i=function(n){var o=getCurrentTouch(e.current.id,n.changedTouches);if(o){var a=o.clientX,i=o.clientY;t.current=r(a,i),e.current.id=-1}};return react.useEffect((function(){return document.addEventListener("touchstart",o),document.addEventListener("touchmove",a),document.addEventListener("touchend",i),function(){document.removeEventListener("touchstart",o),document.removeEventListener("touchmove",a),document.removeEventListener("touchend",i)}}),[i,a,o]),null}var HEIGHT=.9,RADIUS=.225,SEGMENTS=8,SPHERE_SHAPE="Sphere",sphereProps={type:SPHERE_SHAPE,args:[RADIUS,SEGMENTS,SEGMENTS]},topSphere=_extends__default.default({},sphereProps,{position:[0,-RADIUS,0]}),middleSphere=_extends__default.default({},sphereProps,{position:[0,-HEIGHT/2,0]}),bottomSphere=_extends__default.default({},sphereProps,{position:[0,-(HEIGHT-RADIUS),0]}),useCapsuleCollider=function(e){var t=useEnvironment().paused,n=cannon.useCompoundBody((function(){return{mass:0,position:e.current.toArray(),segments:SEGMENTS,fixedRotation:!0,type:"Dynamic",shapes:[topSphere,middleSphere,bottomSphere]}}));return react.useEffect((function(){t||n[1].mass.set(62)}),[t,n]),n},ALPHA_SENSITIVITY=.008,GyroControls=function(e){var t=e.fallback,n=fiber.useThree((function(e){return e.camera})),r=react.useState(),o=r[0],a=r[1],i=react.useState(!1),c=i[0],u=i[1],s=react.useState(0),l=s[0],d=s[1],f=react.useRef(DefaultTouch),m=react.useRef(0),p=three$1.useSpring({alpha:l,config:_extends__default.default({},three$1.config.default,{precision:.001})}).alpha;react.useEffect((function(){if(!o){var e=function(){var e=new threeStdlib.DeviceOrientationControls(n);e.enabled=!1,a(e)};return window.addEventListener("click",e),function(){window.removeEventListener("click",e)}}}),[o]),fiber.useFrame((function(){o&&!c&&0!==Object.keys(o.deviceOrientation).length&&(u(!0),o.enabled=!0),o&&(o.alphaOffset=-p.get()*ALPHA_SENSITIVITY,o.update())}));var v=function(e){if(-1===f.current.id)if(tappedNipple(e))f.current=DefaultTouch;else{var t=e.touches.length-1,n=e.touches[t],r=n.clientX,o=n.clientY,a=n.identifier;f.current={pos:new three.Vector2(r,o),id:a}}},h=function(e){var t=getCurrentTouch(f.current.id,e.touches);if(t){var n=t.clientX-f.current.pos.x;d(m.current+n)}},g=function(e){var t=getCurrentTouch(f.current.id,e.changedTouches);if(t){var n=t.clientX-f.current.pos.x;d(m.current+n),m.current+=n,f.current.id=-1}};return react.useEffect((function(){return document.addEventListener("touchstart",v),document.addEventListener("touchmove",h),document.addEventListener("touchend",g),function(){document.removeEventListener("touchstart",v),document.removeEventListener("touchmove",h),document.removeEventListener("touchend",g)}}),[]),c?null:React.createElement(React.Fragment,null,t)},useSpringVelocity=function(e,t){var n=react.useRef(new three.Vector3),r=useEnvironment().device,o=react.useMemo((function(){return new three.Vector3}),[]),a=react.useState(new three.Quaternion)[0],i=react.useRef(0),c=fiber.useThree((function(e){return e.clock})),u=react.useRef(new three.Vector3),s=react.useRef(0),l=react.useRef(0),d=react.useState(new three.Vector3)[0];return{direction:n,updateVelocity:function(f,m){d.x=m.x||0,d.y=0,d.z=m.z||0;var p=d.length()/t,v=(m.y||0)-u.current.y,h=c.getElapsedTime(),g=Math.abs(h-s.current);if(l.current=three.MathUtils.lerp(l.current,v/g||0,.1),o.x=.75*(n.current.x||0),o.z=n.current.z||0,o.y=0,o.multiplyScalar(t+.085*Math.abs(l.current)),a.copy(f.quaternion),a.x=0,a.z=0,o.applyQuaternion(a),i.current=three.MathUtils.lerp(i.current,.6*(n.current.y||0),.05+.075*p),o.y=Math.min((m.y||0)+i.current,4+p),r.desktop){var x=three.MathUtils.lerp(m.x||0,o.x,.25),y=three.MathUtils.lerp(m.z||0,o.z,.25);e.velocity.set(x,o.y,y),u.current.set(x,o.y,y)}else e.velocity.set(o.x,o.y,o.z),u.current.set(o.x,o.y,o.z);s.current=h}}},SnapTurn=function(e){var t=e.hand,n=void 0===t?"right":t,r=e.increment,o=void 0===r?Math.PI/6:r,a=e.threshold,i=void 0===a?.8:a,c=xr.useController(n),u=xr.useXR().player,s=react.useRef(!1);return fiber.useFrame((function(){if(c&&c.inputSource.gamepad){var e=c.inputSource.gamepad.axes[2];Math.abs(e)>i?(s.current||u.rotateY(-o*Math.sign(e)),s.current=!0):s.current=!1}})),null},SmoothLocomotion=function(e){var t=e.hand,n=void 0===t?"left":t,r=e.direction,o=xr.useController(n);return fiber.useFrame((function(){if(o&&o.inputSource.gamepad){var e=o.inputSource.gamepad.axes,t=e[2],n=e[3];r.current.x=t,r.current.z=n}})),null},Fly=function(e){var t=e.direction,n=xr.useController("left");return fiber.useFrame((function(){if(n&&n.inputSource.gamepad){var e=n.inputSource.gamepad.buttons[0];if(!e)return;t.current.y=e.pressed?.5:0}})),null};function VRControllerMovement(e){var t=e.position,n=e.direction,r=e.snapTurn,o=e.smoothLocomotion,a=xr.useXR().player;return fiber.useFrame((function(){a.position.copy(t.current),a.position.y-=1.4})),React.createElement(React.Fragment,null,React.createElement(Fly,{direction:n}),React.createElement(SnapTurn,r),React.createElement(SmoothLocomotion,_extends__default.default({},o,{direction:n})),React.createElement(xr.Controllers,null))}var useControlLock=function(e){return react.useMemo((function(){return{lock:function(){return e.current=!0},unlock:function(){return e.current=!1},isLocked:function(){return e.current}}}),[e])},useBob=function(e,t){var n=fiber.useThree((function(e){return e.camera})),r=three$1.useSpring({bob:0,config:three$1.config.default}).bob,o=react.useState(new three.Vector3)[0];return{update:function(a){var i=t.current.length()>.1,c=Math.abs(e.current.y)<.01;r.set(i&&c?1:0);var u=r.get(),s=.0055*Math.sin(20*a.elapsedTime)*u,l=.002*Math.cos(15*a.elapsedTime+.3)*u;o.set(l,s,0),o.applyQuaternion(n.quaternion),n.position.add(o)}}},PlayerContext=react.createContext({}),usePlayer=function(){return react.useContext(PlayerContext)},SPEED=3.6,SHOW_PLAYER_HITBOX=!1;function Player(e){var t=e.children,n=e.pos,r=void 0===n?[0,1,0]:n,o=e.rot,a=void 0===o?0:o,i=e.flying,c=void 0!==i&&i,u=e.speed,s=void 0===u?SPEED:u,l=e.controls,d=void 0===l?{disableGyro:!0}:l,f=fiber.useThree((function(e){return e.camera})),m=fiber.useThree((function(e){return e.raycaster})),p=useEnvironment().device,v=react.useRef((new three.Vector3).fromArray(r)),h=react.useRef(new three.Vector3),g=react.useRef(new three.Vector3),x=react.useRef(!1),y=react.useMemo((function(){return new three.Raycaster(new three.Vector3,new three.Vector3,0,5)}),[]),b=useCapsuleCollider(v)[1],_=useSpringVelocity(b,s),E=_.direction,w=_.updateVelocity,R=useBob(g,E);react.useEffect((function(){f.rotation.setFromQuaternion((new three.Quaternion).setFromAxisAngle(new three.Vector3(0,1,0),a))}),[]),react.useEffect((function(){var e=b.position.subscribe((function(e){return h.current.fromArray(e)})),t=b.velocity.subscribe((function(e){return g.current.fromArray(e)}));return function(){e(),t()}}),[b,b.position,b.velocity]),fiber.useFrame((function(e){var t=e.clock;p.desktop&&(y.ray.origin.copy(h.current),y.ray.direction.set(0,0,-1),y.ray.direction.applyQuaternion(f.quaternion)),f.position.copy(h.current),x.current||(w(f,g.current),R.update(t))}));var S=react.useCallback((function(e){v.current.copy(e),b.position.set(e.x,e.y,e.z),h.current.copy(e)}),[b.position]),k={position:{get:function(){return h.current.clone()},set:S},velocity:{get:function(){return g.current.clone()},set:react.useCallback((function(e){b.velocity.set(e.x,e.y,e.z),g.current.copy(e)}),[b.velocity])},controls:useControlLock(x),raycaster:p.mobile?m:y};return React.createElement(PlayerContext.Provider,{value:k},p.mobile&&React.createElement(React.Fragment,null,(null==d?void 0:d.disableGyro)&&React.createElement(TouchFPSCamera,null),!(null!=d&&d.disableGyro)&&React.createElement(GyroControls,{fallback:React.createElement(TouchFPSCamera,null)}),React.createElement(NippleMovement,{direction:E})),p.desktop&&React.createElement(React.Fragment,null,React.createElement(KeyboardMovement,{direction:E,flying:c}),React.createElement(PointerLockCamera,null)),p.xr&&React.createElement(VRControllerMovement,{position:h,direction:E}),SHOW_PLAYER_HITBOX,t)}function useRerender(){var e=react.useState(0),t=e[0],n=e[1];return react.useCallback((function(){return n(Math.random())}),[t])}var useHTMLInput=function(e){var t=react.useMemo((function(){var e=document.createElement("input");return document.body.appendChild(e),e}),[]);return react.useEffect((function(){t.setAttribute("type",e),t.style.zIndex="-99",t.style.opacity="0",t.style.fontSize="16px",t.style.position="absolute",t.style.left="50%",t.style.top="0",t.style.transform="translate(-50%, 0%)"}),[t,e]),react.useEffect((function(){return function(){document.body.removeChild(t)}}),[t]),t},useTextInput=function(e,t,n){var r=useHTMLInput("password"===e?"password":"text"),o=useEnvironment().paused,a=usePlayer(),i=a.controls,c=a.velocity,u=useRerender(),s=react.useState(!1),l=s[0],d=s[1],f=react.useRef(!1);react.useEffect((function(){r.addEventListener("focus",(function(){return d(!0)})),r.addEventListener("blur",(function(){return d(!1)})),r.autocomplete="off"}),[r]),react.useEffect((function(){l&&o&&r.blur()}),[r,l,o]),react.useEffect((function(){l?(c.set(new three.Vector3),i.lock()):isTyping()||(c.set(new three.Vector3),i.unlock())}),[l,c,i]),react.useEffect((function(){return function(){isTyping()||i.unlock()}}),[i]),react.useEffect((function(){var o=function(){var e=r===document.activeElement;!f.current&&e?r.blur():f.current&&!e&&r.focus(),f.current=!1},a=function(){var o,a;r===document.activeElement&&("number"===e&&(r.value=(o=r.value,(a=o.match(/[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)/))?a.input!==a[0]?t:a[0]:"")),n(r.value))},i=function(){r===document.activeElement&&u()};return document.addEventListener("click",o),r.addEventListener("input",a),document.addEventListener("selectionchange",i),function(){document.removeEventListener("click",o),r.removeEventListener("input",a),document.removeEventListener("selectionchange",i)}}),[r,n,u,e,t]),react.useEffect((function(){r.value!==t&&(r.value=t,u())}),[r,t]);return{input:r,focused:l,focusInput:function(){f.current=!0,r.focus()}}},useMetaHold=function(){var e=react.useRef(!1),t=react.useRef();return react.useEffect((function(){var n=function(n){var r=n.ctrlKey||n.metaKey;e.current&&!r?t.current||(t.current=(new Date).getTime(),setTimeout((function(){e.current=!1,t.current=void 0}),75)):e.current=r};return document.addEventListener("keydown",n),document.addEventListener("keyup",n),function(){document.removeEventListener("keydown",n),document.removeEventListener("keyup",n)}}),[75]),e},useShiftHold=function(){var e=react.useRef(!1),t=react.useRef();return react.useEffect((function(){var n=function(n){var r=n.shiftKey;e.current&&!r?t.current||(t.current=(new Date).getTime(),setTimeout((function(){e.current=!1,t.current=void 0}),75)):e.current=r};return document.addEventListener("keydown",n),document.addEventListener("keyup",n),function(){document.removeEventListener("keydown",n),document.removeEventListener("keyup",n)}}),[75]),e},useKeypress=function(e,t,n){react.useEffect((function(){var n=Array.isArray(e)?e:[e],r=function(e){n.includes(e.key)&&t(e)};return document.addEventListener("keypress",r),function(){document.removeEventListener("keypress",r)}}),[t,e].concat(n||[]))},useVisible=function(e){var t=react.useState(!1),n=t[0],r=t[1];return useLimitedFrame(5,(function(){var t=e.get();n&&0===t?r(!1):!n&&t>0&&r(!0)})),n},_excluded$l=["src","center","normalize"],_excluded2=["src","center","normalize"];function UnsuspensedModel(e){var t=e.src,n=e.center,r=e.normalize,o=_objectWithoutPropertiesLoose__default.default(e,_excluded$l),a=useModel(t),i=react.useMemo((function(){return threeStdlib.SkeletonUtils.clone(a.scene)}),[a.scene]),c=react.useMemo((function(){return(new three.Box3).setFromObject(i)}),[i]),u=react.useMemo((function(){return c.getCenter(new three.Vector3).multiplyScalar(-1)}),[c]),s=c.max.x-c.min.x,l=c.max.y-c.min.y,d=c.max.z-c.min.z,f=1/Math.max(s,l,d);return React.createElement("group",_extends__default.default({name:"spacesvr-model"},o),React.createElement("group",{scale:r?f:1},React.createElement("primitive",{object:i,position:n?u:void 0})))}function FallbackModel(e){e.src,e.center,e.normalize;var t=_objectWithoutPropertiesLoose__default.default(e,_excluded2);return React.createElement("group",_extends__default.default({name:"spacesvr-fallback-model"},t),React.createElement("mesh",{material:cache.mat_basic_black_wireframe},React.createElement("boxGeometry",{args:[1,1,1]})))}function Model(e){return React.createElement(reactErrorBoundary.ErrorBoundary,{fallbackRender:function(){return React.createElement(FallbackModel,e)},onError:function(e){return console.error(e)}},React.createElement(react.Suspense,{fallback:null},React.createElement(UnsuspensedModel,e)))}var _excluded$k=["src","size","framed","muted","volume","frameMaterial","frameWidth"];function Video(e){var t=e.src,n=e.size,r=void 0===n?1:n,o=e.framed,a=e.muted,i=e.volume,c=void 0===i?1:i,u=e.frameMaterial,s=e.frameWidth,l=void 0===s?1:s,d=_objectWithoutPropertiesLoose__default.default(e,_excluded$k),f=fiber.useThree((function(e){return e.camera})),m=react.useRef(),p=react.useState(),v=p[0],h=p[1],g=react.useState(),x=g[0],y=g[1],b=react.useMemo((function(){var e=document.createElement("video");return e.playsInline=!0,e.crossOrigin="Anonymous",e.loop=!0,e.src=t,e.autoplay=!1,e.muted=a||!1,e}),[]);if(react.useEffect((function(){var e=function(){if(!a&&!b.paused&&!v){var e=new three.AudioListener;f.add(e);var t=new three.PositionalAudio(e);t.setMediaElementSource(b),t.setRefDistance(.75),t.setRolloffFactor(1),t.setVolume(c),t.setDirectionalCone(180,230,.1),h(t)}},t=function(){b.play().then((function(){return y(new three.Vector2(b.videoWidth,b.videoHeight))})),e()};if(b)return b.play().then((function(){y(new three.Vector2(b.videoWidth,b.videoHeight)),e()})),document.addEventListener("click",t),function(){document.removeEventListener("click",t)}}),[v,b,a]),react.useEffect((function(){return function(){m.current&&(f.remove(m.current),m.current.clear(),m.current=void 0),v&&(v.clear(),v.disconnect(),h(void 0)),b&&(b.pause(),b.remove())}}),[]),!x||!b)return null;var _=Math.max(x.x,x.y),E=x.x/_*r,w=x.y/_*r;return React.createElement("group",_extends__default.default({name:"spacesvr-video"},d),React.createElement("mesh",null,React.createElement("planeGeometry",{args:[E,w]}),React.createElement("meshBasicMaterial",{side:three.DoubleSide},React.createElement("videoTexture",{attach:"map",args:[b],encoding:three.sRGBEncoding}))),v&&React.createElement("primitive",{object:v}),o&&React.createElement(Frame,{width:E,height:w,thickness:l,material:u}))}function LostFloor(){var e=react.useMemo((function(){var e=new three.MeshLambertMaterial;return e.onBeforeCompile=function(e){e.vertexShader=vertHead$1+e.vertexShader.replace("#include <worldpos_vertex>","#include <worldpos_vertex>\n"+vertBody),e.fragmentShader=fragHead+e.fragmentShader.replace("#include <color_fragment>","#include <color_fragment>\n  "+fragColorFragment)},e}),[]);return React.createElement("group",{name:"spacesvr-lost-floor"},React.createElement("mesh",{"rotation-x":-Math.PI/2,material:e},React.createElement("planeGeometry",{args:[1e4,1e4,1,1]})))}var noise="\n   //\n  // Description : Array and textureless GLSL 2D/3D/4D simplex\n  //               noise functions.\n  //      Author : Ian McEwan, Ashima Arts.\n  //  Maintainer : ijm\n  //     Lastmod : 20110822 (ijm)\n  //     License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n  //               Distributed under the MIT License. See LICENSE file.\n  //               https://github.com/ashima/webgl-noise\n  //\n  \n  vec3 mod289(vec3 x) {\n    return x - floor(x * (1.0 / 289.0)) * 289.0;\n  }\n  \n  vec4 mod289(vec4 x) {\n    return x - floor(x * (1.0 / 289.0)) * 289.0;\n  }\n  \n  vec4 permute(vec4 x) {\n       return mod289(((x*34.0)+1.0)*x);\n  }\n  \n  vec4 taylorInvSqrt(vec4 r)\n  {\n    return 1.79284291400159 - 0.85373472095314 * r;\n  }\n  \n  float snoise(vec3 v)\n    {\n    const vec2  C = vec2(1.0/6.0, 1.0/3.0) ;\n    const vec4  D = vec4(0.0, 0.5, 1.0, 2.0);\n  \n  // First corner\n    vec3 i  = floor(v + dot(v, C.yyy) );\n    vec3 x0 =   v - i + dot(i, C.xxx) ;\n  \n  // Other corners\n    vec3 g = step(x0.yzx, x0.xyz);\n    vec3 l = 1.0 - g;\n    vec3 i1 = min( g.xyz, l.zxy );\n    vec3 i2 = max( g.xyz, l.zxy );\n  \n    //   x0 = x0 - 0.0 + 0.0 * C.xxx;\n    //   x1 = x0 - i1  + 1.0 * C.xxx;\n    //   x2 = x0 - i2  + 2.0 * C.xxx;\n    //   x3 = x0 - 1.0 + 3.0 * C.xxx;\n    vec3 x1 = x0 - i1 + C.xxx;\n    vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n    vec3 x3 = x0 - D.yyy;      // -1.0+3.0*C.x = -0.5 = -D.y\n  \n  // Permutations\n    i = mod289(i);\n    vec4 p = permute( permute( permute(\n               i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n             + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n             + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n  \n  // Gradients: 7x7 points over a square, mapped onto an octahedron.\n  // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n    float n_ = 0.142857142857; // 1.0/7.0\n    vec3  ns = n_ * D.wyz - D.xzx;\n  \n    vec4 j = p - 49.0 * floor(p * ns.z * ns.z);  //  mod(p,7*7)\n  \n    vec4 x_ = floor(j * ns.z);\n    vec4 y_ = floor(j - 7.0 * x_ );    // mod(j,N)\n  \n    vec4 x = x_ *ns.x + ns.yyyy;\n    vec4 y = y_ *ns.x + ns.yyyy;\n    vec4 h = 1.0 - abs(x) - abs(y);\n  \n    vec4 b0 = vec4( x.xy, y.xy );\n    vec4 b1 = vec4( x.zw, y.zw );\n  \n    //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\n    //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\n    vec4 s0 = floor(b0)*2.0 + 1.0;\n    vec4 s1 = floor(b1)*2.0 + 1.0;\n    vec4 sh = -step(h, vec4(0.0));\n  \n    vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n    vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n  \n    vec3 p0 = vec3(a0.xy,h.x);\n    vec3 p1 = vec3(a0.zw,h.y);\n    vec3 p2 = vec3(a1.xy,h.z);\n    vec3 p3 = vec3(a1.zw,h.w);\n  \n  //Normalise gradients\n    vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n    p0 *= norm.x;\n    p1 *= norm.y;\n    p2 *= norm.z;\n    p3 *= norm.w;\n  \n  // Mix final noise value\n    vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n    m = m * m;\n    return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n                                  dot(p2,x2), dot(p3,x3) ) );\n    } \n  \n",oklab="\nfloat fixedpow(float a, float x)\n{\n    return pow(abs(a), x) * sign(a);\n}\n\nfloat cbrt(float a)\n{\n    return fixedpow(a, 0.3333333333);\n}\n\nvec3 lsrgb2oklab(vec3 c)\n{\n    float l = 0.4122214708 * c.r + 0.5363325363 * c.g + 0.0514459929 * c.b;\n    float m = 0.2119034982 * c.r + 0.6806995451 * c.g + 0.1073969566 * c.b;\n    float s = 0.0883024619 * c.r + 0.2817188376 * c.g + 0.6299787005 * c.b;\n\n    float l_ = cbrt(l);\n    float m_ = cbrt(m);\n    float s_ = cbrt(s);\n\n    return vec3(\n        0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_,\n        1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_,\n        0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_\n    );\n}\n\nvec3 oklab2lsrgb(vec3 c)\n{\n    float l_ = c.r + 0.3963377774 * c.g + 0.2158037573 * c.b;\n    float m_ = c.r - 0.1055613458 * c.g - 0.0638541728 * c.b;\n    float s_ = c.r - 0.0894841775 * c.g - 1.2914855480 * c.b;\n\n    float l = l_ * l_ * l_;\n    float m = m_ * m_ * m_;\n    float s = s_ * s_ * s_;\n\n    return vec3(\n        4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n        -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n        -0.0041960863 * l - 0.7034186147 * m + 1.7076147010 * s\n    );\n}\n",vertHead$1="\n  varying vec3 vPos;\n",vertBody="\n  vPos = position;\n",fragHead="\n  "+noise+"\n  "+oklab+"\n  \n  varying vec3 vPos;\n",fragColorFragment="\n  diffuseColor.rgb -= 0.2 * (snoise(vPos) + 1.) / 2.;\n  diffuseColor.r -= 0.025 * (snoise(-vPos) + 1.) / 2.;\n";function _createForOfIteratorHelperLoose$9(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$9(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$9(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$9(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$9(e,t):void 0}}function _arrayLikeToArray$9(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var KEYWORDS=["collider","collision"],findColliderMeshes=function(e){var t=[];if(e.traverse((function(e){if(e.isMesh)for(var n,r=_createForOfIteratorHelperLoose$9(KEYWORDS);!(n=r()).done;){var o=n.value;e.name.toLowerCase().includes(o)&&t.push(e)}})),t.length>0)return t},getGeometryTriCount=function(e){return e.index?e.index.count/3:e.attributes.position.count/3},getMeshes=function(e){var t=[];return e.traverse((function(e){e.isMesh&&t.push(e)})),t},getTransformedMeshGeo=function(e,t){var n=e.geometry.clone();e.updateWorldMatrix(!0,!1);var r=new three.Vector3,o=new three.Quaternion,a=new three.Euler,i=new three.Vector3,c=e;do{c.matrix.decompose(r,o,i),a.setFromQuaternion(o),n.scale(i.x,i.y,i.z),n.rotateX(a.x),n.rotateY(a.y),n.rotateZ(a.z),n.translate(r.x,r.y,r.z),c=c.parent}while(c&&c!==t);return n},getMeshesUUID=function(e){var t=e.map((function(e){return e.uuid}));return t.sort(),t.join("-")},useTrimeshCollision=function(e,t){var n=e.index.array,r=e.attributes.position.isInterleavedBufferAttribute,o=[];if(r)for(var a=e.attributes.position,i=a.data,c=a.offset;c<i.array.length;c+=i.stride)for(var u=0;u<a.itemSize;u++)o.push(i.array[c+u]);else o=e.attributes.position.array;return cannon.useTrimesh((function(){return{type:"Static",args:[o,n],position:null==t?void 0:t.pos,rotation:null==t?void 0:t.rot}}),void 0,[e.uuid])};function TrimeshCollider(e){var t=e.geo,n=react.useRef(null),r=react.useState((function(){return new three.Vector3}))[0],o=react.useState((function(){return new three.Quaternion}))[0],a=react.useState((function(){return new three.Vector3}))[0],i=react.useState((function(){return new three.Euler}))[0],c=react.useState(new three.Vector3(1,1,1)),u=c[0],s=c[1],l=react.useMemo((function(){var e=t.clone().scale(u.x,u.y,u.z);return e.computeVertexNormals(),e}),[t,u]),d=useTrimeshCollision(l,{pos:r.toArray(),rot:[i.x,i.y,i.z]})[1],f=react.useRef(new three.Matrix4);return useLimitedFrame(8,(function(){n.current&&(n.current.updateWorldMatrix(!0,!1),n.current.matrixWorld.decompose(r,o,a),f.current.equals(n.current.matrixWorld)||(f.current.copy(n.current.matrixWorld),d.position.copy(r),d.rotation.copy(i.setFromQuaternion(o)),a.equals(u)||s(a.clone())))})),React.createElement("group",{ref:n})}var cb=new three.Vector3,ab=new three.Vector3;function pushIfUnique(e,t){-1===e.indexOf(t)&&e.push(t)}function removeFromArray(e,t){var n=e.indexOf(t);n>-1&&e.splice(n,1)}var Vertex=function(){function e(e,t){this.minCost=0,this.totalCost=0,this.costCount=0,this.position=e,this.id=t,this.faces=[],this.neighbors=[],this.collapseCost=0,this.collapseNeighbor=null}var t=e.prototype;return t.addUniqueNeighbor=function(e){pushIfUnique(this.neighbors,e)},t.removeIfNonNeighbor=function(e){var t=this.neighbors,n=this.faces,r=t.indexOf(e);if(-1!==r){for(var o=0;o<n.length;o++)if(n[o].hasVertex(e))return;t.splice(r,1)}},e}(),Triangle=function(){function e(e,t,n,r,o,a){this.normal=new three.Vector3,this.a=r,this.b=o,this.c=a,this.v1=e,this.v2=t,this.v3=n,this.computeNormal(),e.faces.push(this),e.addUniqueNeighbor(t),e.addUniqueNeighbor(n),t.faces.push(this),t.addUniqueNeighbor(e),t.addUniqueNeighbor(n),n.faces.push(this),n.addUniqueNeighbor(e),n.addUniqueNeighbor(t)}var t=e.prototype;return t.computeNormal=function(){var e=this.v1.position,t=this.v2.position,n=this.v3.position;cb.subVectors(n,t),ab.subVectors(e,t),cb.cross(ab).normalize(),this.normal.copy(cb)},t.hasVertex=function(e){return e===this.v1||e===this.v2||e===this.v3},t.replaceVertex=function(e,t){e===this.v1?this.v1=t:e===this.v2?this.v2=t:e===this.v3&&(this.v3=t),removeFromArray(e.faces,this),t.faces.push(this),e.removeIfNonNeighbor(this.v1),this.v1.removeIfNonNeighbor(e),e.removeIfNonNeighbor(this.v2),this.v2.removeIfNonNeighbor(e),e.removeIfNonNeighbor(this.v3),this.v3.removeIfNonNeighbor(e),this.v1.addUniqueNeighbor(this.v2),this.v1.addUniqueNeighbor(this.v3),this.v2.addUniqueNeighbor(this.v1),this.v2.addUniqueNeighbor(this.v3),this.v3.addUniqueNeighbor(this.v1),this.v3.addUniqueNeighbor(this.v2),this.computeNormal()},e}(),SimplifyModifier=function(){function e(){var e=this;this.computeEdgeCollapseCost=function(e,t){var n,r,o,a=t.position.distanceTo(e.position),i=0,c=[],u=e.faces.length;for(n=0;n<u;n++)(r=e.faces[n]).hasVertex(t)&&c.push(r);for(n=0;n<u;n++){var s=1;r=e.faces[n];for(var l=0;l<c.length;l++){o=c[l];var d=r.normal.dot(o.normal);s=Math.min(s,(1.001-d)/2)}i=Math.max(i,s)}return c.length<2&&(i=1),a*i+0},this.computeEdgeCostAtVertex=function(t){if(0===t.neighbors.length)return t.collapseNeighbor=null,void(t.collapseCost=-.01);t.collapseCost=1e5,t.collapseNeighbor=null;for(var n=0;n<t.neighbors.length;n++){var r=e.computeEdgeCollapseCost(t,t.neighbors[n]);t.collapseNeighbor||(t.collapseNeighbor=t.neighbors[n],t.collapseCost=r,t.minCost=r,t.totalCost=0,t.costCount=0),t.costCount++,t.totalCost+=r,r<t.minCost&&(t.collapseNeighbor=t.neighbors[n],t.minCost=r)}t.collapseCost=t.totalCost/t.costCount},this.removeFace=function(e,t){removeFromArray(t,e),e.v1&&removeFromArray(e.v1.faces,e),e.v2&&removeFromArray(e.v2.faces,e),e.v3&&removeFromArray(e.v3.faces,e);for(var n,r,o=[e.v1,e.v2,e.v3],a=0;a<3;a++)r=o[(a+1)%3],(n=o[a])&&r&&(n.removeIfNonNeighbor(r),r.removeIfNonNeighbor(n))},this.collapse=function(t,n,r,o){if(o){var a,i=[];for(a=0;a<r.neighbors.length;a++)i.push(r.neighbors[a]);for(a=r.faces.length-1;a>=0;a--)r.faces[a]&&r.faces[a].hasVertex(o)&&e.removeFace(r.faces[a],n);for(a=r.faces.length-1;a>=0;a--)r.faces[a].replaceVertex(r,o);for(e.removeVertex(r,t),a=0;a<i.length;a++)e.computeEdgeCostAtVertex(i[a])}else e.removeVertex(r,t)},this.minimumCostEdge=function(e){for(var t=e[0],n=0;n<e.length;n++)e[n].collapseCost<t.collapseCost&&(t=e[n]);return t},this.modify=function(t,n){var r=(t=t.clone()).attributes;for(var o in r)"position"!==o&&t.deleteAttribute(o);for(var a=[],i=[],c=(t=threeStdlib.mergeVertices(t)).getAttribute("position"),u=0;u<c.count;u++){var s=(new three.Vector3).fromBufferAttribute(c,u),l=new Vertex(s,u);a.push(l)}var d,f=t.getIndex();if(null!==f)for(var m=0;m<f.count;m+=3){var p=f.getX(m),v=f.getX(m+1),h=f.getX(m+2),g=new Triangle(a[p],a[v],a[h],p,v,h);i.push(g)}else for(var x=0;x<c.count;x+=3){var y=x,b=x+1,_=x+2,E=new Triangle(a[y],a[b],a[_],y,b,_);i.push(E)}for(var w=0,R=a.length;w<R;w++)e.computeEdgeCostAtVertex(a[w]);for(var S=i.length-n;S--;){if(!(d=e.minimumCostEdge(a))){console.log("THREE.SimplifyModifier: No next vertex");break}if(i.length<=n)break;e.collapse(a,i,d,d.collapseNeighbor)}for(var k=new three.BufferGeometry,T=[],C=[],I=0;I<a.length;I++){var L=a[I].position;T.push(L.x,L.y,L.z)}for(var M=0;M<i.length;M++){var A=i[M],$=a.indexOf(A.v1),z=a.indexOf(A.v2),P=a.indexOf(A.v3);C.push($,z,P)}return k.setAttribute("position",new three.Float32BufferAttribute(T,3)),k.setIndex(C),k}}return e.prototype.removeVertex=function(e,t){for(console.assert(0===e.faces.length);e.neighbors.length;){removeFromArray(e.neighbors.pop().neighbors,e)}removeFromArray(t,e)},e}(),generateSimplifiedGeo=function(e,t){return(new SimplifyModifier).modify(e,Math.floor(t))};function Collidable(e){var t=e.children,n=e.triLimit,r=void 0===n?1e3:n,o=e.enabled,a=void 0===o||o,i=e.hideCollisionMeshes,c=void 0!==i&&i,u=react.useRef(null),s=react.useRef(),l=react.useState(),d=l[0],f=l[1],m=react.useState(),p=m[0],v=m[1],h=function(e){return r+"-"+getMeshesUUID(e)};return react.useEffect((function(){if(!u.current||!a)return v(void 0),f(void 0),void(s.current=void 0);var e=findColliderMeshes(u.current);if(e){if(h(e)===s.current)return;f(e);var t=e.map((function(e){return getTransformedMeshGeo(e,u.current)}));return v(t),void(s.current=h(e))}var n=getMeshes(u.current);if(h(n)!==s.current){f(n),s.current=h(n);var o=n.map((function(e){return getTransformedMeshGeo(e,u.current)})),i=o.reduce((function(e,t){return e+getGeometryTriCount(t)}),0);if(i<r)v(o);else{var c=r/i,l=o.map((function(e){return generateSimplifiedGeo(e,getGeometryTriCount(e)*c)})).filter((function(e){return e}));v(l)}}}),[t,r,a]),react.useEffect((function(){if(d)return d.map((function(e){return e.visible=!c})),function(){d.map((function(e){return e.visible=!0}))}}),[d,c]),React.createElement("group",{name:"spacesvr-collidable",ref:u},t,a&&p&&p.map((function(e,t){return React.createElement(TrimeshCollider,{key:e.uuid,geo:e})})))}function XRInteractable(e){var t=e.onClick,n=e.onHover,r=e.onUnHover,o=e.children;return React.createElement("group",{name:"spacesvr-interactable"},React.createElement(xr.Interactive,{onHover:n,onBlur:r,onSelect:t?function(e){return t(e.intersection)}:void 0},o))}var CLICK_TIMEOUT$1=.4,MAX_DRAG=.1;function MobileDesktopInteractable(e){var t=e.onClick,n=e.onHover,r=e.onUnHover,o=e.raycaster,a=e.children,i=fiber.useThree((function(e){return e.gl})),c=fiber.useThree((function(e){return e.clock})),u=useEnvironment().device,s=usePlayer(),l=react.useRef(null),d=react.useMemo((function(){return{start:new three.Vector3,time:0}}),[]),f=react.useRef(),m=o||s.raycaster,p=!!n||!!r,v=react.useCallback((function(){if(l.current){m.firstHitOnly=!0;var e=m.intersectObject(l.current,!0);return m.firstHitOnly=!1,e.length>0?e[0]:void 0}}),[m]);return useLimitedFrame(17,(function(){if(l.current&&p){var e=v();e?(f.current||n&&n(),f.current=e):f.current&&(f.current=void 0,r&&r())}})),react.useEffect((function(){l.current&&l.current.traverse((function(e){var t=e;t.isMesh&&enableBVHRaycast(t,50)}))}),[]),react.useEffect((function(){var e=function(){m.ray.at(1,d.start),d.time=c.elapsedTime},n=function(){if(t&&l.current){var e=m.ray.at(1,new three.Vector3),n=d.start.distanceTo(e),r=c.elapsedTime-d.time;if(!(n>MAX_DRAG||r>CLICK_TIMEOUT$1))if(p)f.current&&t(f.current);else{var o=v();o&&t(o)}}},r=u.mobile?"touchstart":"mousedown",o=u.mobile?"touchend":"mouseup";return i.domElement.addEventListener(r,e),i.domElement.addEventListener(o,n),function(){i.domElement.removeEventListener(r,e),i.domElement.removeEventListener(o,n)}}),[p,m,c,u.mobile,d,v,i.domElement,t]),React.createElement("group",{name:"spacesvr-interactable",ref:l},a)}function Interactable(e){return useEnvironment().device.xr?React.createElement(XRInteractable,e):React.createElement(MobileDesktopInteractable,e)}var _templateObject$1,_templateObject2$1,_templateObject3$1,_templateObject4$1,_templateObject5$1,ToolbeltContext=react.createContext({}),useToolbelt=function(){return react.useContext(ToolbeltContext)},useToolbeltState=function(e){var t=react.useState((function(){return new three.Scene}))[0],n=useRerender(),r=react.useMemo((function(){return[]}),[]),o=react.useState(e?0:void 0),a=o[0],i=o[1],c=react.useRef(0),u=react.useState("right"),s=u[0],l=u[1],d=react.useCallback((function(e,t,o){if(r.find((function(t){return t.name===e})))console.error("Toolbelt: Tool with same name already exists: "+e);else{0===r.length&&n();var a={name:e,icon:t,orderIndex:o||0};r.push(a),r.sort((function(e,t){return e.orderIndex!==t.orderIndex?e.orderIndex-t.orderIndex:e.name.localeCompare(t.name)}))}}),[r]),f=react.useCallback((function(e){var t=r.find((function(t){return t.name===e}));t&&r.splice(r.indexOf(t),1)}),[r]);react.useEffect((function(){void 0!==a&&(c.current=a)}),[a]);var m=react.useCallback((function(){l("right"),1===r.length?i((function(e){return void 0===e?0:void 0})):i((function(e){return void 0!==e?(e+1)%r.length:0}))}),[r]),p=react.useCallback((function(){l("left"),1===r.length?i((function(e){return void 0===e?0:void 0})):i((function(e){return void 0!==e?(e-1+r.length)%r.length:0}))}),[r]),v=react.useCallback((function(){i(void 0)}),[]),h=react.useCallback((function(){i((function(e){return void 0===e?c.current:e}))}),[]),g=react.useCallback((function(e){var t=r.findIndex((function(t){return t.name===e}));-1!==t&&i(t)}),[r]);return{tools:r,activeTool:void 0!==a?r[a]:void 0,grant:d,revoke:f,hide:v,next:m,prev:p,show:h,activeIndex:a,setActiveIndex:i,setActiveTool:g,hudScene:t,direction:s,setDirection:l}},useDelayedToggle=function(e){void 0===e&&(e=1e3);var t=react.useRef(null),n=react.useState(!1),r=n[0],o=n[1],a=react.useCallback((function(){null!==t.current&&clearTimeout(t.current),o(!0),t.current=setTimeout((function(){o(!1)}),e)}),[e]);return react.useEffect((function(){return function(){null!==t.current&&clearTimeout(t.current)}}),[]),{active:r,setActive:a}},OUTER_PADDING=40,INNER_PADDING=10,FIXED_PADDING=OUTER_PADDING-INNER_PADDING,OUTER_BORDER_RADIUS=25,Container=styled__default.default.div(_templateObject$1||(_templateObject$1=_taggedTemplateLiteralLoose__default.default(["\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  z-index: 2;\n  padding: ","px ","px 0 ","px;\n  border-radius: ","px;\n  pointer-events: ",";\n\n  display: flex;\n  max-width: calc(100% - 80px);\n  flex-basis: calc(100% - 80px);\n  flex-wrap: wrap;\n  box-sizing: border-box;\n  justify-content: center;\n  width: max-content;\n  max-height: 100%;\n  overflow-y: auto;\n\n  opacity: ",";\n  ",";\n\n  @media screen and (max-width: 600px) {\n    padding: ","px 10px ",'px 10px;\n  }\n\n  &:after {\n    content: "";\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background-color: hsl(0deg 0% 90% / 50%);\n    border-radius: ',"px;\n    backdrop-filter: blur(15px);\n    z-index: -1;\n  }\n"])),FIXED_PADDING,FIXED_PADDING,FIXED_PADDING,OUTER_BORDER_RADIUS,(function(e){return e.open?"all":"none"}),(function(e){return e.open?1:0}),(function(e){return e.open?"transition: opacity 0.075s ease-in-out;":"transition: opacity 0.4s ease-in-out;"}),FIXED_PADDING,FIXED_PADDING,OUTER_BORDER_RADIUS),ToolItem=styled__default.default.div(_templateObject2$1||(_templateObject2$1=_taggedTemplateLiteralLoose__default.default(["\n  position: relative;\n  width: 125px;\n  height: 125px;\n  border-radius: 10px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  z-index: 1;\n  margin: 10px 10px ","px 10px;\n  \n  @media screen and (max-width: 600px) {\n    width: 90px;\n    height: 90px;\n  }\n  \n  &:before {\n    ",'\n    content: "";\n    position: absolute;\n    box-sizing: content-box;\n    left: 50%;\n    top: 50%;\n    transform: translate(-50%, -50%);\n    width: 100%;\n    height: 100%;\n    padding: ',"px;\n    background: hsl(0deg 0% 50% / 50%);\n    border-radius: 10px;\n    z-index: -2;\n  }\n  \n  // place text directly below the main box\n  &:after {\n    ",'\n    content: "','";\n    position: absolute;\n    bottom: -',"px;\n    left: 50%;\n    transform: translateX(-50%);\n    font-size: 1.1rem;\n    font-family: sans-serif;\n    padding: 4px 10px;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    width: 100%;\n    text-align: center;\n    color: #222;\n    \n\n    @media screen and (max-width: 600px) {\n      font-size: 0.9rem;\n    }\n  }\n"])),OUTER_PADDING,(function(e){return!e.active&&"display: none;"}),INNER_PADDING,(function(e){return!e.active&&"display: none;"}),(function(e){return e.title}),OUTER_PADDING),LetterContent=styled__default.default.div(_templateObject3$1||(_templateObject3$1=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  height: 100%;\n  background: oklch(75% 0.132 ",");\n  font-size: 4rem;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  font-family: sans-serif;\n  border-radius: 10px;\n  color: #444;\n\n  @media screen and (max-width: 600px) {\n    font-size: 3rem;\n  }\n"])),(function(e){return 360*e.perc})),ImageContent=styled__default.default.img(_templateObject4$1||(_templateObject4$1=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n"]))),NoneItem=styled__default.default.div(_templateObject5$1||(_templateObject5$1=_taggedTemplateLiteralLoose__default.default(['\n  display: inline-block;\n  position: relative;\n  border: 6px solid #444;\n  border-radius: 50%;\n  width: 80px;\n  height: 80px;\n  box-sizing: content-box;\n\n  &::after {\n    content: "";\n    width: 84px;\n    height: 6px;\n    position: absolute;\n    left: 50%;\n    top: 50%;\n    background-color: #444;\n    transform: translate(-50%, -50%) rotate(45deg);\n  }\n'])));function ToolSwitcher(){var e=useEnvironment(),t=e.paused,n=e.containerRef,r=useToolbelt(),o=r.next,a=r.prev,i=r.activeIndex,c=r.setActiveIndex,u=r.tools,s=r.setDirection,l=fiber.useThree(),d=l.size,f=l.gl,m=useDelayedToggle(850),p=m.active,v=m.setActive,h=react.useRef(!1),g=.05*screen.width,x=.08*screen.width,y=.5*screen.height,b=react.useRef(!1);useDrag({onStart:function(e){var t=e.e,n=e.touch;b.current=!1;var r=Math.min(n.clientX,d.width-n.clientX)<g,o=n.clientY<y;r&&o&&(b.current=!0,h.current=!1,t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation())},onMove:function(e){var t=e.delta;b.current&&!h.current&&Math.abs(t.x)>x&&(h.current=!0,t.x>0?(v(),o()):(v(),a()))}},f.domElement,[screen.width,screen.height,o,a]),react.useEffect((function(){var e=function(e){isTyping()||e.metaKey||e.ctrlKey||t||"Tab"==e.key&&(e.shiftKey?(s("left"),v(),c(void 0===i?u.length-1:0===i?void 0:(i-1+u.length)%u.length)):(s("right"),v(),void 0===i?c(0):i===u.length-1?c(void 0):c((i+1)%u.length)),e.preventDefault())};return document.addEventListener("keydown",e),function(){return document.removeEventListener("keydown",e)}}),[i,t,c,s,v,u]);var _=react.useCallback((function(e){v(),c(e)}),[c,v]);return React.createElement(drei.Html,null,reactDom.createPortal(React.createElement(Container,{open:p},React.createElement(ToolItem,{title:"None",active:void 0===i,onClick:function(){return _(void 0)}},React.createElement(NoneItem,null)),u.map((function(e,t){return React.createElement(ToolItem,{key:e.name+"-"+t,title:e.name,active:i===t,onClick:function(){return _(t)}},e.icon?React.createElement(ImageContent,{src:e.icon}):React.createElement(LetterContent,{perc:(new Idea).updateFromText(e.name).mediation},e.name.substring(0,1)))}))),n.current))}function Lights(){return React.createElement("group",{name:"lights"},React.createElement("ambientLight",{intensity:.5*Math.PI}),React.createElement("pointLight",{intensity:.5*Math.PI}))}function _createForOfIteratorHelperLoose$8(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$8(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$8(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$8(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$8(e,t):void 0}}function _arrayLikeToArray$8(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function WorldLights(e){var t=e.enabled,n=void 0===t||t,r=e.directional,o=fiber.useThree().scene,a=react.useRef(null),i=useToolbelt(),c=useRerender(),u=react.useRef([]),s=react.useRef([]);return useLimitedFrame(.5,(function(){var e=[];o.traverse((function(t){t instanceof three.Light&&(!r||t instanceof three.AmbientLight)&&e.push(t)}));for(var t=!1,n=function(){var e=i[a];if(!s.current.find((function(t){return t.userData.uuid===e.uuid}))){var n=e.clone();n.userData.uuid=e.uuid,s.current.push(n),t=!0}},a=0,i=e;a<i.length;a++)n();for(var l,d=function(){var n=l.value;e.find((function(e){return e.uuid===n.userData.uuid}))||(s.current.splice(s.current.indexOf(n),1),n.dispose(),t=!0)},f=_createForOfIteratorHelperLoose$8(s.current);!(l=f()).done;)d();t&&(c(),u.current=e)})),useLimitedFrame(30,(function(e){var t=e.camera;n&&a.current&&(a.current.position.copy(t.position),s.current.forEach((function(e){var t=u.current.find((function(t){return t.uuid===e.userData.uuid}));t&&e.matrixWorld.copy(t.matrixWorld)})))})),React.createElement(React.Fragment,null,fiber.createPortal(React.createElement("group",{name:"world-lights",ref:a},s.current.map((function(e){return React.createElement("primitive",{object:e,key:e.uuid})}))),i.hudScene))}function Toolbelt(e){var t=e.children,n=e.showOnSpawn,r=void 0===n||n,o=e.worldLights,a=void 0===o||o,i=e.localLights,c=void 0===i||i,u=fiber.useThree().camera,s=useToolbeltState(r),l=s.hudScene,d=react.useState((function(){return u.clone()}))[0];return fiber.useFrame((function(e){var t=e.gl,n=u;d.position.set(0,0,0),d.quaternion.copy(n.quaternion),d.near=n.near,d.far=n.far,d.aspect=n.aspect,d.fov=n.fov,d.updateProjectionMatrix(),l.position.set(0,0,0),t.autoClear=!1,t.clearDepth(),t.render(l,d),l.position.copy(u.position),l.updateMatrixWorld(!0)}),100),React.createElement(ToolbeltContext.Provider,{value:s},React.createElement(ToolSwitcher,null),c&&fiber.createPortal(React.createElement(Lights,null),l),a&&React.createElement(WorldLights,null),t)}var dummy$1=new three.Quaternion,QuaterionSpring=function(){function e(e,t){void 0===e&&(e=5),void 0===t&&(t=30),this.velocity=new Float32Array(4),this.stiffness=t,this.damping=e}var t=e.prototype;return t._velLenSqr=function(){return Math.pow(this.velocity[0],2)+Math.pow(this.velocity[1],2)+Math.pow(this.velocity[2],2)+Math.pow(this.velocity[3],2)},t.oscillationStep=function(e,t,n){var r=e.dot(t);if(r>=.9999&&this._velLenSqr()<1e-6)e.copy(t);else{var o=dummy$1;r<0?(o.x=-t.x,o.y=-t.y,o.z=-t.z,o.w=-t.w):o.copy(t),this.velocity[0]+=(-this.stiffness*(e.x-o.x)-this.damping*this.velocity[0])*n,this.velocity[1]+=(-this.stiffness*(e.y-o.y)-this.damping*this.velocity[1])*n,this.velocity[2]+=(-this.stiffness*(e.z-o.z)-this.damping*this.velocity[2])*n,this.velocity[3]+=(-this.stiffness*(e.w-o.w)-this.damping*this.velocity[3])*n,e.x+=this.velocity[0]*n,e.y+=this.velocity[1]*n,e.z+=this.velocity[2]*n,e.w+=this.velocity[3]*n,e.normalize()}},t.criticallyStep=function(e,t,n){var r=e.dot(t);if(!(r>=.9999&&this._velLenSqr()<1e-6)){var o=dummy$1;r<0?(o.x=-t.x,o.y=-t.y,o.z=-t.z,o.w=-t.w):o.copy(t);var a=this.damping*this.damping*n,i=1+this.damping*n,c=i*i;return this.velocity[0]=(this.velocity[0]-(e.x-o.x)*a)/c,this.velocity[1]=(this.velocity[1]-(e.y-o.y)*a)/c,this.velocity[2]=(this.velocity[2]-(e.z-o.z)*a)/c,this.velocity[3]=(this.velocity[3]-(e.w-o.w)*a)/c,e.x+=this.velocity[0]*n,e.y+=this.velocity[1]*n,e.z+=this.velocity[2]*n,e.w+=this.velocity[3]*n,e.normalize(),e}e.copy(t)},e}();function HUD(e){var t=e.children,n=e.pos,r=e.pinY,o=void 0!==r&&r,a=e.distance,i=e.range,c=void 0===i?0:i,u=e.bobStrength,s=usePlayer().velocity,l=react.useRef(null),d=react.useState(new three.Vector2)[0],f=react.useState((new three.Vector2).fromArray(n))[0],m=react.useState(new three.Quaternion)[0],p=react.useState(new three.Quaternion)[0],v=react.useState(new three.Quaternion)[0],h=react.useState(new three.Euler(0,0,0,"YXZ"))[0],g=react.useState(new three.Euler(0,0,0,"YXZ"))[0],x=react.useState(new three.Quaternion)[0],y=react.useState(new three.Quaternion)[0],b=react.useState(new three.Vector2)[0],_=three$1.useSpring((function(){return{offset:[0,0],config:three$1.config.stiff}})),E=_[0],w=_[1],R=react.useMemo((function(){return new QuaterionSpring(50,100)}),[]);return fiber.useFrame((function(e,t){var r=e.camera,i=e.clock;if(l.current){var _=1-Math.pow(1e-4,t),S=E.offset.get();d.fromArray(n),d.x+=S[0]||0,d.y+=S[1]||0,f.lerp(d,_),getHudPos(f,r,a,b),l.current.position.set(b.x,b.y,-a),x.copy(v),y.copy(r.quaternion),g.setFromQuaternion(r.quaternion);var k=x.multiply(y.invert()).y/(t||1e-5),T=(g.x-h.x)/(t||1e-5);if(c>0){x.copy(m),x.x=0,x.z=0,x.normalize(),y.copy(r.quaternion),y.x=0,y.z=0,y.normalize();var C=x.angleTo(y);if(C>c){var I=C-c;p.copy(m),p.rotateTowards(r.quaternion,I),o||(p.x=0,p.z=0,p.normalize())}else T=0,k=0;R.criticallyStep(m,p,t)}else m.copy(r.quaternion);var L=s.get().length()>1?1:0,M=u||Math.max(f.length(),.05);T+=Math.sin(15*i.elapsedTime)*L*.2*M,k+=Math.cos(20*i.elapsedTime+12)*L*.1*M;var A=.3,$=three.MathUtils.clamp(.1*-k,-.3,A),z=three.MathUtils.clamp(.1*-T,-.3,A);w({offset:[$,z]}),l.current.position.applyQuaternion(m),l.current.quaternion.copy(r.quaternion),v.copy(r.quaternion),h.setFromQuaternion(r.quaternion)}})),React.createElement("group",{name:"spacesvr-hud",ref:l},t)}function Draggable(e){var t=e.set,n=e.distance,r=e.enabled,o=e.children,a=useToolbelt(),i=fiber.useThree(),c=i.size,u=i.gl,s=useEnvironment().device,l=usePlayer().raycaster,d=react.useRef(null),f=.28*c.height,m=.3*c.width,p=react.useRef(!1);return useDrag({onStart:function(e){var t=e.e;(p.current=!1,d.current&&s.mobile&&r)&&(l.intersectObject(d.current,!0).length>0&&(p.current=!0,t.stopPropagation()))},onMove:function(e){var r=e.delta;p.current&&t({pos:[.003*r.x*n*.7,.003*-r.y*n*(r.y<0?.15:.5),0]})},onEnd:function(e){var n=e.delta;p.current&&(n.y>f?a.hide():Math.abs(n.x)>m&&(n.x>0?a.next():a.prev()),t({pos:[0,0,0]}),p.current=!1)}},u.domElement,[s.mobile,r,a.hide,a.next,a.prev]),React.createElement("group",{ref:d},o)}function OnScreen(e){var t=e.distance,n=e.name,r=e.pos,o=e.disableDraggable,a=e.children,i=useToolbelt(),c=fiber.useThree((function(e){return e.camera})),u=i.tools.find((function(e){return e.name==n})),s=u?i.tools.indexOf(u):void 0,l=i.activeIndex===s,d=three$1.useSpring((function(){return{pos:[0,0,0],config:{mass:4,friction:90,tension:800}}})),f=d[0],m=d[1],p=react.useRef();return react.useEffect((function(){if(p.current!==i.activeIndex&&(p.current=i.activeIndex,void 0!==s)){var e=c,n=1.5;if(l){if("up"!==i.direction){var o=getHudPos([-1.5,0],e,t).x,a=getHudPos([n,0],e,t).x,u=getHudPos(r,e,t).x,d="left"===i.direction?a-u:o+u;f.pos.update({immediate:!0}),m({pos:[d,0,t]}),f.pos.finish(),f.pos.update({immediate:!1})}m({pos:[0,0,0]})}else{var v=getHudPos([-1.5,0],e,2*t).x,h=getHudPos([n,0],e,2*t).x,g=getHudPos(r,e,t).x,x=("left"===i.direction?v:h)-g;m({pos:[x,0,0]})}}}),[l,s,c,t,r,m,f.pos,i.activeIndex,i.activeTool,i.direction]),React.createElement(three$1.animated.group,{position:f.pos,name:"onscreen"},React.createElement(Draggable,{set:m,distance:t,enabled:l&&!o},a))}function FacePlayer(e){var t=e.children,n=e.enabled,r=void 0===n||n,o=e.lockX,a=void 0!==o&&o,i=e.lockY,c=void 0!==i&&i,u=e.lockZ,s=void 0!==u&&u,l=react.useRef(null),d=react.useState(new three.Euler)[0];return useLimitedFrame(50,(function(e){var t=e.camera;l.current&&(r?(d.copy(l.current.rotation),l.current.lookAt(t.position),a&&(l.current.rotation.x=d.x),c&&(l.current.rotation.y=d.y),s&&(l.current.rotation.z=d.z)):l.current.rotation.set(0,0,0))})),React.createElement("group",{name:"spacesvr-faceplayer",ref:l},t)}function LifecycleDetector(e){var t=e.didMount,n=e.setMounted;return t.current=!0,react.useEffect((function(){return function(){n(!0)}}),[]),null}function ToolPreload(e){var t=e.setPreloadDone,n=e.children,r=fiber.useThree((function(e){return e.gl})),o=fiber.useThree((function(e){return e.camera})),a=useToolbelt().hudScene,i=react.useRef(!1),c=react.useState(!0),u=c[0],s=c[1],l=react.useState(!1),d=l[0],f=l[1];return react.useEffect((function(){u?s(!1):i.current||f(!0)}),[u]),react.useLayoutEffect((function(){if(d){r.compile(a,o);var e=new three.WebGLCubeRenderTarget(128);new three.CubeCamera(.01,1e5,e).update(r,a),e.dispose(),t(!0)}}),[o,r,a,d,t]),fiber.createPortal(React.createElement("group",{name:"tool-preload"},React.createElement(react.Suspense,{fallback:React.createElement(LifecycleDetector,{didMount:i,setMounted:f})},n)),a)}function Tool(e){var t=e.children,n=e.name,r=e.icon,o=e.pos,a=void 0===o?[0,0]:o,i=e.face,c=void 0===i||i,u=e.pinY,s=void 0!==u&&u,l=e.range,d=e.bobStrength,f=e.orderIndex,m=e.disableDraggable,p=void 0!==m&&m,v=e.onSwitch,h=useToolbelt(),g=h.grant,x=h.revoke,y=h.activeTool,b=h.hudScene,_=(null==y?void 0:y.name)===n,E=react.useState(!1),w=E[0],R=E[1],S=three$1.useSpring({prog:_?1:0,config:{mass:4,friction:90,tension:800}}).prog,k=useVisible(S);return react.useEffect((function(){return g(n,r,f),function(){return x(n)}}),[n,r,g,x,f]),react.useEffect((function(){v&&v((null==y?void 0:y.name)===n)}),[y,v,n]),w?k?React.createElement(React.Fragment,null,fiber.createPortal(React.createElement("group",{name:"tool-"+n},React.createElement(HUD,{pos:a,pinY:s,distance:1,range:l,bobStrength:d},React.createElement(OnScreen,{distance:1,name:n,pos:a,disableDraggable:p},React.createElement(FacePlayer,{enabled:c},React.createElement(react.Suspense,{fallback:null},k&&t))))),b)):null:React.createElement(ToolPreload,{setPreloadDone:R},t)}var _excluded$j=["href","target","children"];function Anchor(e){var t=e.href,n=e.target,r=void 0===n?"_self":n,o=e.children,a=_objectWithoutPropertiesLoose__default.default(e,_excluded$j),i=fiber.useThree((function(e){return e.gl}));return React.createElement("group",_extends__default.default({name:"spacesvr-anchor-"+t},a),React.createElement(Interactable,{onClick:function(){var e;i.xr.isPresenting&&(null==(e=i.xr.getSession())||e.end());window.open(t,r)}},o))}function Floating(e){var t=e.children,n=e.height,r=void 0===n?.2:n,o=e.speed,a=void 0===o?1:o,i=react.useRef(null),c=react.useRef(Math.random());return useLimitedFrame(75,(function(e){var t=e.clock;i.current&&(i.current.position.y=r*Math.sin(t.elapsedTime*a*.4+1e4*c.current))})),React.createElement("group",{name:"spacesvr-floating",ref:i},t)}function Spinning(e){var t=e.children,n=e.xSpeed,r=void 0===n?0:n,o=e.ySpeed,a=void 0===o?1:o,i=e.zSpeed,c=void 0===i?0:i,u=react.useRef(null),s=react.useState(Math.random())[0];return useLimitedFrame(75,(function(e){var t=e.clock;u.current&&(u.current.rotation.x=t.elapsedTime*r*.25+r*s*100,u.current.rotation.y=t.elapsedTime*a*(.25+s/10)+a*s*1e3,u.current.rotation.z=t.elapsedTime*c*.25+c*s*40)})),React.createElement("group",{name:"spacesvr-spinning",ref:u},t)}function Effects(e){var t=e.children;react.useMemo((function(){return fiber.extend({EffectComposer:threeStdlib.EffectComposer,RenderPass:threeStdlib.RenderPass,ShaderPass:threeStdlib.ShaderPass})}),[]);var n=react.useRef(null),r=fiber.useThree(),o=r.scene,a=r.camera,i=r.gl,c=r.size,u=r.viewport,s=react.useState((function(){var e=new three.WebGLRenderTarget(c.width,c.height,{type:three.UnsignedByteType,format:three.RGBAFormat,encoding:i.outputEncoding,depthBuffer:!0,stencilBuffer:!0,anisotropy:2});return e.samples=4,e}))[0];react.useEffect((function(){var e,t;null==(e=n.current)||e.setSize(c.width,c.height),null==(t=n.current)||t.setPixelRatio(u.dpr)}),[i,c,u.dpr]),fiber.useFrame((function(){var e;n.current&&(n.current.passes=n.current.passes.filter((function(e){return void 0!==e})),null==(e=n.current)||e.render())}),1);var l=[];return l.push(React.createElement("renderPass",{key:"renderpass",attach:"passes-"+l.length,args:[o,a]})),react.Children.forEach(t,(function(e){e&&l.push(react.cloneElement(e,{key:l.length,attach:"passes-"+l.length}))})),React.createElement("effectComposer",{ref:n,args:[i,s]},l)}var VisualContext=react.createContext({}),useVisual=function(){return react.useContext(VisualContext)};function Visual(e){var t=e.children,n=fiber.useThree(),r=n.scene,o=n.camera,a=n.gl,i=useEnvironment().device,c=react.useRef([]),u=useRerender(),s=react.useCallback((function(e){c.current.push(e),c.current.sort((function(e,t){return e.index-t.index})),u()}),[]),l=react.useCallback((function(e){c.current=c.current.filter((function(t){return t.uuid!==e})),u()}),[]),d=c.current.length>0&&!i.xr;return fiber.useFrame((function(){d||(a.autoClear=!0,a.render(r,o))}),1),React.createElement(VisualContext.Provider,{value:{registerPass:s,unregisterPass:l}},d&&React.createElement(Effects,null,c.current.map((function(e){return e.node}))),t)}function VisualEffect(e){var t=e.index,n=e.children,r=react.useState((function(){return Math.random().toString(36).substring(2)}))[0],o=useVisual(),a=o.registerPass,i=o.unregisterPass;return react.useEffect((function(){if(n)return Array.isArray(n)?n.forEach((function(e,t){a({uuid:r,node:e,index:t})})):a({uuid:r,node:n,index:t}),function(){return i(r)}}),[n,t,a,i,r]),null}var _excluded$i=["args","visible","color","onClick","onHover","onUnHover","raycaster"],HitBox=react.forwardRef((function(e,t){var n=e.args,r=e.visible,o=void 0!==r&&r,a=e.color,i=void 0===a?"red":a,c=e.onClick,u=e.onHover,s=e.onUnHover,l=e.raycaster,d=_objectWithoutPropertiesLoose__default.default(e,_excluded$i);return React.createElement(Interactable,{onClick:c,onHover:u,onUnHover:s,raycaster:l},React.createElement("mesh",_extends__default.default({visible:o,name:"spacesvr-hitbox",ref:t},d),React.createElement("boxGeometry",{args:n}),o&&React.createElement("meshBasicMaterial",{color:i,transparent:!0,opacity:.7})))})),_excluded$h=["args","material","children"];function _createForOfIteratorHelperLoose$7(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$7(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$7(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$7(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$7(e,t):void 0}}function _arrayLikeToArray$7(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var local_cache=[];function RoundedBox(e){var t=e.args,n=(t=void 0===t?[]:t)[0],r=void 0===n?1:n,o=t[1],a=void 0===o?1:o,i=t[2],c=void 0===i?.25:i,u=e.material,s=e.children,l=_objectWithoutPropertiesLoose__default.default(e,_excluded$h),d=react.useState(new three.Vector3(1,1,1)),f=d[0],m=d[1],p=react.useMemo((function(){for(var e,t,n,o,i,u,s,l,d,f=void 0,p=1/0,v=_createForOfIteratorHelperLoose$7(local_cache);!(d=v()).done;){var h=d.value,g=h.width/r,x=Math.abs(h.height-a*g),y=Math.abs(h.depth-c*g);x/h.height<.25&&y/h.depth<.25&&x+y<p&&(f=h,p=x+y)}var b=null!=(e=null==(t=f)?void 0:t.key)?e:"geo_rounded_box_"+r+"x"+a+"x"+c,_=null!=(n=null==(o=f)?void 0:o.width)?n:r,E=null!=(i=null==(u=f)?void 0:u.height)?i:a,w=null!=(s=null==(l=f)?void 0:l.depth)?s:c,R=Math.min(_,E,w)/2;return f||local_cache.push({key:b,width:r,height:a,depth:c}),m(new three.Vector3(r/_,a/E,c/w)),cache.getResource(b,(function(){return new RoundedBoxGeometry.RoundedBoxGeometry(r,a,c,4,R)}))}),[r,a,c]);return React.createElement("group",_extends__default.default({name:"spacesvr-rounded-box"},l),React.createElement("mesh",{scale:f,material:u,geometry:p},s))}var useIdeaMaterial=function(e,t){var n=react.useMemo((function(){return(null==e?void 0:e.getHex())||"#808080"}),[e]),r=react.useMemo((function(){return Math.random()}),[]),o=react.useMemo((function(){return new three.Color(n)}),[n]),a=three$1.useSpring({col:n}).col,i=.32*t,c=.554/t,u=react.useMemo((function(){var e=new three.MeshStandardMaterial({metalness:.18,roughness:.49,envMapIntensity:.66,side:three.DoubleSide});return e.onBeforeCompile=function(n){n.uniforms.radius=new three.Uniform(t),n.uniforms.time=new three.Uniform(0),n.uniforms.color=new three.Uniform(o),n.uniforms.radiusVariationAmplitude=new three.Uniform(i),n.uniforms.radiusNoiseFrequency=new three.Uniform(c);var r="\n        uniform float radius;\n        uniform float time;\n        uniform vec3 color;\n        uniform float radiusVariationAmplitude;\n        uniform float radiusNoiseFrequency;\n      ";n.vertexShader=r+vertHead+n.vertexShader.replace("#include <begin_vertex>",vert$1),n.fragmentShader=r+n.fragmentShader.replace("#include <dithering_fragment>",frag$1),e.userData.shader=n},e}),[t,o,i,c,frag$1,vert$1]);return useLimitedFrame(50,(function(e){var t,n=e.clock;null!=u&&null!=(t=u.userData)&&t.shader&&(u.userData.shader.uniforms.time.value=n.elapsedTime/6+100*r,u.userData.shader.uniforms.color.value.set(a.get()))})),u},vertHead="\n    // Description : Array and textureless GLSL 2D/3D/4D simplex\n    //               noise functions.\n    //      Author : Ian McEwan, Ashima Arts.\n    //  Maintainer : ijm\n    //     Lastmod : 20110822 (ijm)\n    //     License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n    //               Distributed under the MIT License. See LICENSE file.\n    //               https://github.com/ashima/webgl-noise\n    //\n    \n    vec3 mod289(vec3 x) {\n      return x - floor(x * (1.0 / 289.0)) * 289.0;\n    }\n    \n    vec4 mod289(vec4 x) {\n      return x - floor(x * (1.0 / 289.0)) * 289.0;\n    }\n    \n    vec4 permute(vec4 x) {\n         return mod289(((x*34.0)+1.0)*x);\n    }\n    \n    vec4 taylorInvSqrt(vec4 r)\n    {\n      return 1.79284291400159 - 0.85373472095314 * r;\n    }\n    \n    float snoise(vec3 v)\n      {\n      const vec2  C = vec2(1.0/6.0, 1.0/3.0) ;\n      const vec4  D = vec4(0.0, 0.5, 1.0, 2.0);\n    \n    // First corner\n      vec3 i  = floor(v + dot(v, C.yyy) );\n      vec3 x0 =   v - i + dot(i, C.xxx) ;\n    \n    // Other corners\n      vec3 g = step(x0.yzx, x0.xyz);\n      vec3 l = 1.0 - g;\n      vec3 i1 = min( g.xyz, l.zxy );\n      vec3 i2 = max( g.xyz, l.zxy );\n    \n      //   x0 = x0 - 0.0 + 0.0 * C.xxx;\n      //   x1 = x0 - i1  + 1.0 * C.xxx;\n      //   x2 = x0 - i2  + 2.0 * C.xxx;\n      //   x3 = x0 - 1.0 + 3.0 * C.xxx;\n      vec3 x1 = x0 - i1 + C.xxx;\n      vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n      vec3 x3 = x0 - D.yyy;      // -1.0+3.0*C.x = -0.5 = -D.y\n    \n    // Permutations\n      i = mod289(i);\n      vec4 p = permute( permute( permute(\n                 i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n               + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n               + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n    \n    // Gradients: 7x7 points over a square, mapped onto an octahedron.\n    // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n      float n_ = 0.142857142857; // 1.0/7.0\n      vec3  ns = n_ * D.wyz - D.xzx;\n    \n      vec4 j = p - 49.0 * floor(p * ns.z * ns.z);  //  mod(p,7*7)\n    \n      vec4 x_ = floor(j * ns.z);\n      vec4 y_ = floor(j - 7.0 * x_ );    // mod(j,N)\n    \n      vec4 x = x_ *ns.x + ns.yyyy;\n      vec4 y = y_ *ns.x + ns.yyyy;\n      vec4 h = 1.0 - abs(x) - abs(y);\n    \n      vec4 b0 = vec4( x.xy, y.xy );\n      vec4 b1 = vec4( x.zw, y.zw );\n    \n      //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\n      //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\n      vec4 s0 = floor(b0)*2.0 + 1.0;\n      vec4 s1 = floor(b1)*2.0 + 1.0;\n      vec4 sh = -step(h, vec4(0.0));\n    \n      vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n      vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n    \n      vec3 p0 = vec3(a0.xy,h.x);\n      vec3 p1 = vec3(a0.zw,h.y);\n      vec3 p2 = vec3(a1.xy,h.z);\n      vec3 p3 = vec3(a1.zw,h.w);\n    \n    //Normalise gradients\n      vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n      p0 *= norm.x;\n      p1 *= norm.y;\n      p2 *= norm.z;\n      p3 *= norm.w;\n    \n    // Mix final noise value\n      vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n      m = m * m;\n      return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n                                    dot(p2,x2), dot(p3,x3) ) );\n      }\n              \n    \n    float fsnoise(float val1, float val2, float val3){\n      return snoise(vec3(val1,val2,val3));\n    }\n    \n    vec3 distortFunct(vec3 transformed, float factor) {\n      float radiusVariation = -fsnoise(\n        transformed.x * radiusNoiseFrequency + time,\n        transformed.y * radiusNoiseFrequency + time,\n        transformed.z * radiusNoiseFrequency + time \n      ) * radiusVariationAmplitude * factor;\n      return normalize(transformed) * (radiusVariation + radius);\n    }\n    \n    vec3 orthogonal(vec3 v) {\n      return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0)\n      : vec3(0.0, -v.z, v.y));\n    }\n    \n    vec3 distortNormal(vec3 position, vec3 distortedPosition, vec3 normal){\n      vec3 tangent1 = orthogonal(normal);\n      vec3 tangent2 = normalize(cross(normal, tangent1));\n      vec3 nearby1 = position + tangent1 * 0.1;\n      vec3 nearby2 = position + tangent2 * 0.1;\n      vec3 distorted1 = distortFunct(nearby1, 1.0);\n      vec3 distorted2 = distortFunct(nearby2, 1.0);\n      return normalize(cross(distorted1 - distortedPosition, distorted2 - distortedPosition));\n    }\n",vert$1="\n    #include <begin_vertex>\n    float updateTime = time / 10.0;\n    transformed = distortFunct(transformed, 1.0);\n    vec3 distortedNormal = distortNormal(position, transformed, normal);\n    vNormal = normal + distortedNormal;\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed,1.);\n",frag$1="\n    #include <dithering_fragment>\n    float angle = clamp(dot(normalize(vNormal), vec3(0., -1., 0.)), 0., 1.);\n    gl_FragColor = vec4(gl_FragColor.rgb * color, gl_FragColor.a);  \n    gl_FragColor.rgb = mix(gl_FragColor.rgb, mix(color, vec3(0.), 0.5), angle);\n";function Bubbles(e){var t=e.numStops,n=e.enabled,r=e.offset,o=react.useRef(null),a=react.useRef(null),i=fiber.useThree((function(e){return e.clock})),c=react.useState(new three.Vector3)[0],u=react.useState(new three.Object3D)[0],s=react.useRef(0);react.useEffect((function(){s.current=i.elapsedTime}),[n]),useLimitedFrame(40,(function(e){var r=e.clock;if(a.current&&o.current){o.current.updateMatrix(),o.current.matrix.decompose(c,u.quaternion,u.scale);for(var i=0;i<t;i++){var l=i/(t-1);u.position.set(l*c.x,l*c.y,l*c.z);var d=.8+4*l,f=r.elapsedTime-s.current,m=n?i:t-i-1,p=three.MathUtils.clamp((f-.06*m)/.4,0,1),v=(Math.cos(Math.PI*p)+1)/2;n&&(v=1-v),u.scale.setScalar(.2*d*v),u.updateMatrix(),a.current.setMatrixAt(i,u.matrix)}a.current.instanceMatrix.needsUpdate=!0}}));var l=react.useMemo((function(){return new three.SphereGeometry(.05,32,16)}),[]),d=useIdeaMaterial(void 0,.05);return React.createElement(React.Fragment,null,React.createElement("group",{position:r,ref:o}),React.createElement("instancedMesh",{args:[l,d,t],ref:a}))}var syncOnChange=function(e,t,n){e._needsSync||(e.userData||(e.userData={}),e.userData[t]!==n&&(e.userData[t]=n,e._needsSync=!0))},handleShiftSelect=function(e,t){if(e.selectionStart!==e.selectionEnd){var n="forward"===e.selectionDirection,r=e.selectionStart||0,o=e.selectionEnd||0;n?r===t?e.setSelectionRange(r,t,"none"):t>r?e.setSelectionRange(r,t,"forward"):e.setSelectionRange(t,r,"backward"):o===t?e.setSelectionRange(t,o,"none"):t<o?e.setSelectionRange(t,o,"backward"):e.setSelectionRange(o,t,"forward")}else t<(e.selectionStart||0)?e.setSelectionRange(t,e.selectionStart||0,"backward"):e.setSelectionRange(e.selectionStart||0,t,"forward")},dummy=new three.Vector2,getClickedCaret=function(e,t){var n=t.intersectObject(e,!0);if(0===n.length)return null;var r=n[0],o=e.worldPositionToTextCoords(r.point,dummy);return troikaThreeText.getCaretAtPoint(e.textRenderInfo,o.x,o.y)},CLICK_TIMEOUT=.2,getClickType=function(e,t,n){var r=e.elapsedTime,o=r-t.current,a=r-n.current;return o<CLICK_TIMEOUT?a<2*CLICK_TIMEOUT?(n.current=r,3):(t.current=r,n.current=r,2):(t.current=r,1)},getWordBoundsAtCaret=function(e,t){for(var n=t,r=t;n>0&&" "!==e[n-1];)n--;for(;r<e.length&&" "!==e[r];)r++;return[n,r]},RESET_TIMEOUT=1,useCaretBlink=function(e){void 0===e&&(e=1);var t=react.useRef(null),n=fiber.useThree((function(e){return e.clock})),r=react.useRef(0);fiber.useFrame((function(n){var o=n.clock;if(t.current){var a=o.elapsedTime-r.current;t.current.visible=a<RESET_TIMEOUT||Boolean(Math.round((1-Math.sin(e*Math.PI*2*(a-RESET_TIMEOUT)))/2))}}));return{blinkRef:t,reset:function(){r.current=n.elapsedTime}}},useDragSelect=function(e,t,n,r){var o=fiber.useThree((function(e){return e.gl})),a=fiber.useThree((function(e){return e.mouse})),i=fiber.useThree((function(e){return e.camera})),c=useEnvironment().device,u=react.useRef(0),s=react.useRef(!1);react.useEffect((function(){var l=t.current;if(l&&l.textRenderInfo){var d=function(){var t=getClickedCaret(l,n);if(null!=t){if(!s.current){if(t.charIndex===u.current)return;s.current=!0,e.setSelectionRange(u.current,u.current)}handleShiftSelect(e,t.charIndex)}},f=function(e){a.x=e.touches[0].clientX/o.domElement.clientWidth*2-1,a.y=-e.touches[0].clientY/o.domElement.clientHeight*2+1,n.setFromCamera(a,i),d()},m=function e(){c.mobile?(o.domElement.removeEventListener("touchmove",f),o.domElement.removeEventListener("touchend",e)):(o.domElement.removeEventListener("mousemove",d),o.domElement.removeEventListener("mouseup",e))},p=function(e){s.current=!1;var t=getClickedCaret(l,n);null!==t&&(r(),e.stopPropagation(),u.current=t.charIndex,c.mobile?(o.domElement.addEventListener("touchmove",f),o.domElement.addEventListener("touchend",m)):(o.domElement.addEventListener("mousemove",d),o.domElement.addEventListener("mouseup",m)))};return c.mobile?(o.domElement.addEventListener("touchstart",p),function(){return o.domElement.removeEventListener("touchstart",p)}):(o.domElement.addEventListener("mousedown",p),function(){return o.domElement.removeEventListener("mousedown",p)})}}),[o.domElement,r,e,t,c.mobile,a,i,n])},_excluded$g=["value","onChange","onSubmit","onFocus","onBlur","type","font","fontSize","width","placeholder","raycaster"];function TextInput(e){var t=e.value,n=e.onChange,r=e.onSubmit,o=e.onFocus,a=e.onBlur,i=e.type,c=void 0===i?"text":i,u=e.font,s=void 0===u?"https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf":u,l=e.fontSize,d=void 0===l?.1:l,f=e.width,m=void 0===f?1:f,p=e.placeholder,v=e.raycaster,h=_objectWithoutPropertiesLoose__default.default(e,_excluded$g),g=fiber.useThree((function(e){return e.clock})),x=fiber.useThree((function(e){return e.camera})),y=usePlayer(),b=useEnvironment().device,_=v||y.raycaster,E=react.useRef(null),w=react.useRef(),R=react.useRef(null),S=react.useRef(null),k=react.useState(""),T=k[0],C=k[1],I=useTextInput(c,null!=t?t:T,(function(e){n&&n(e),C(e)})),L=I.input,M=I.focused,A=I.focusInput;react.useEffect((function(){if(o)return L.addEventListener("focus",o),function(){return L.removeEventListener("focus",o)}}),[L,o]),react.useEffect((function(){if(a)return L.addEventListener("blur",a),function(){return L.removeEventListener("blur",a)}}),[L,a]),react.useEffect((function(){if(E.current&&M&&b.mobile){var e=E.current.getWorldPosition(new three.Vector3);x.lookAt(e)}}),[M,x,b]);var $=three$1.useSpring({color:M?"#000":"#828282"}).color,z=cache.useResource("spacesvr_textinput_highlight",(function(){return new three.MeshStandardMaterial({color:"blue",transparent:!0,opacity:.3,depthWrite:!1})})),P=.1*d,D=m-2*(.5*d),O=1.75*d,F=m,j=O+P,N=m+2*P,V=.5*d,B=useShiftHold(),G=react.useRef(0),H=react.useRef(0);useDragSelect(L,w,_,A),useKeypress("Enter",(function(){M&&r&&(r(L.value),L.blur())}),[L,M,r]);var U=react.useCallback((function(e,t){var n=w.current;n&&(n.clipRect||(n.clipRect=[0,0,0,0]),n.clipRect[0]=e,n.clipRect[1]=-1/0,n.clipRect[2]=t+e,n.clipRect[3]=1/0,n.minWidth=t,n.position.x=-t/2-e,n.sync())}),[]),q=!M&&p&&!L.value,W=q?p:"password"===c?L.value.replace(/./g,"•"):L.value,X=q?"#828282":"#000",K=react.useRef(0),Y=useCaretBlink(.65);if(w.current&&L&&R.current&&S.current){var Q=w.current,Z=R.current,J=S.current;Q.text=W,Q.color=X,syncOnChange(Q,"focused",M),syncOnChange(Q,"selectionStart",L.selectionStart),syncOnChange(Q,"selectionEnd",L.selectionEnd),syncOnChange(Q,"fontSize",d),syncOnChange(Q,"scrollLeft",K.current),syncOnChange(Q,"width",m),Q.sync((function(){Y.reset();var e=Q.textRenderInfo.caretPositions,t=L.selectionStart!==L.selectionEnd&&M;if(Z.visible=!1,J.visible=!1,M||U(0,D),M){Z.visible=!0;var n=(t&&"forward"===L.selectionDirection?L.selectionEnd:L.selectionStart)||0;Z.position.x=-D/2-K.current;var r=e.length-2,o=Math.min(3*n,3*L.value.length-2),a=e[r],i=0==n?0:e[o]||a;void 0!==i&&(Z.position.x+=i),Z.position.x>D/2&&(n===L.value.length?(K.current+=Z.position.x-D/2,Z.position.x=D/2):(K.current+=Z.position.x,Z.position.x-=Z.position.x)),Z.position.x<-D/2&&(K.current+=Z.position.x,Z.position.x=0);var c=D-a+K.current;c>0&&K.current>0&&(Z.position.x+=c,K.current-=c),K.current<0&&(Z.position.x+=K.current,K.current=0),U(K.current,D)}if(t){J.visible=!0,Z.visible=!1;var u=3*L.value.length-2,s=e[Math.min(3*(L.selectionStart||0),u)],l=e[Math.min(3*(L.selectionEnd||0),u)];if(void 0!==s&&void 0!==l){var d=l-s;J.position.x=-D/2+s-K.current+d/2,J.scale.x=d;var f=J.position.x-J.scale.x/2;if(f<-D/2){var m=-D/2-f;J.position.x+=m/2,J.scale.x-=m}var p=J.position.x+J.scale.x/2;if(p>D/2){var v=p-D/2;J.position.x-=v/2,J.scale.x-=v}}}}))}var ee=d,te=.25*d;return useLimitedFrame(1,(function(){var e=w.current,t=R.current,n=L.selectionStart!==L.selectionEnd&&M;e&&t&&n&&(t.position.x>D/2-ee&&(K.current+=te),t.position.x<-D/2+ee&&(K.current-=te))})),React.createElement("group",_extends__default.default({name:"spacesvr-text-input"},h,{ref:E}),React.createElement("group",{name:"content","position-z":V/2+.001},React.createElement(react.Suspense,{fallback:null},React.createElement(drei.Text,{name:"text",ref:w,color:X,anchorX:"left",fontSize:d,font:s,maxWidth:D,"position-x":-D/2,whiteSpace:"nowrap",renderOrder:2},W)),React.createElement("group",{name:"blink",ref:Y.blinkRef},React.createElement("mesh",{name:"caret",ref:R,visible:!1,material:cache.mat_basic_black},React.createElement("planeGeometry",{args:[.075*d,d]}))),React.createElement("mesh",{name:"highlight",ref:S,visible:!1,material:z},React.createElement("boxGeometry",{args:[1,d,.45*V]}))),React.createElement(HitBox,{args:[F,O,V],raycaster:_,onClick:function(){A();var e=w.current;if(e&&e.textRenderInfo&&L&&M){var t=getClickedCaret(e,_);if(null===t)L.setSelectionRange(L.value.length,L.value.length);else if(B.current)G.current=0,H.current=0,handleShiftSelect(L,t.charIndex);else{var n=getClickType(g,G,H);if(1===n)L.setSelectionRange(t.charIndex,t.charIndex);else if(2===n){var r=getWordBoundsAtCaret(L.value,t.charIndex);L.setSelectionRange(r[0],r[1])}else L.setSelectionRange(0,L.value.length)}}}}),React.createElement(RoundedBox,{args:[F,O,V],material:cache.mat_standard_white}),React.createElement(RoundedBox,{args:[N,j,V],"position-z":-.001},React.createElement(three$1.animated.meshStandardMaterial,{color:$})))}var _excluded$f=["children","onClick","font","fontSize","width","maxWidth","textColor","color","outline","outlineColor","idea","raycaster"];function Button$1(e){var t=e.children,n=e.onClick,r=e.font,o=void 0===r?"https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf":r,a=e.fontSize,i=void 0===a?.05:a,c=e.width,u=e.maxWidth,s=e.textColor,l=void 0===s?"black":s,d=e.color,f=void 0===d?"#fff":d,m=e.outline,p=void 0===m||m,v=e.outlineColor,h=void 0===v?"white":v,g=e.idea,x=e.raycaster,y=_objectWithoutPropertiesLoose__default.default(e,_excluded$f),b=react.useRef(),_=react.useState([0,0]),E=_[0],w=_[1],R=react.useState(!1),S=R[0],k=R[1],T=react.useState(!1),C=T[0],I=T[1],L=react.useMemo((function(){return g?g.getHex():f}),[f,g]),M=react.useMemo((function(){var e=g?g.clone():(new Idea).setFromHex("#"+new three.Color(L).getHexString()),t=.175*(e.utility>.5?-1:1);return e.setUtility(e.utility+t),e.getHex()}),[L,g]),A=three$1.useSpring(_extends__default.default({animColor:S?M:L,scale:C?.75:1},three$1.config.stiff)),$=A.animColor,z=A.scale;react.useEffect((function(){C&&setTimeout((function(){return I(!1)}),150)}),[C]);react.useLayoutEffect((function(){b.current.addEventListener("synccomplete",(function(){var e,t=null==(e=b.current)?void 0:e.textRenderInfo;if(t){var n=t.blockBounds[2]-t.blockBounds[0],r=t.blockBounds[3]-t.blockBounds[1];w([n,r])}})),b.current.sync()}),[]);var P=.9*i,D=u?c?Math.max(c,u):u:1/0,O=(c||E[0])+2*P,F=E[1]+P,j=1.1*i,N=p?.075*i:0;return React.createElement("group",_extends__default.default({name:"spacesvr-button-"+t},y),React.createElement(three$1.animated.group,{scale:z},React.createElement(drei.Text,{ref:b,color:l,font:o,fontSize:i,maxWidth:D,outlineWidth:N,outlineColor:h,anchorY:"middle",textAlign:"center","position-z":j/2+.001,renderOrder:2},t),React.createElement(HitBox,{args:[O,F,j],onClick:function(){n&&n(),I(!0)},onHover:function(){return k(!0)},onUnHover:function(){return k(!1)},raycaster:x}),React.createElement(RoundedBox,{args:[O,F,j]},React.createElement(three$1.animated.meshStandardMaterial,{color:$}))))}function _createForOfIteratorHelperLoose$6(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$6(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$6(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$6(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$6(e,t):void 0}}function _arrayLikeToArray$6(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function VisualDecisions(e){var t=e.decisions,n=e.setCurKey,r=e.width,o="https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf",a=.05,i=.1*a,c=.08,u=react.useState((function(){return new Map}))[0],s=react.useState(!1),l=s[0],d=s[1];react.useEffect((function(){if(!t.every((function(e){return u.has(e.name)}))){d(!1);for(var e,n=function(){var n=e.value;if(u.has(n.name))return"continue";d(!1);var c=new troikaThreeText.Text;c.text=n.name,c.font=o,c.fontSize=a,c.maxWidth=r,c.outlineWidth=i,c.sync((function(){var e=c.textRenderInfo.blockBounds,r=e[2]-e[0],o=e[3]-e[1];u.set(n.name,{w:r,h:o}),t.every((function(e){return u.has(e.name)}))&&d(!0)}))},c=_createForOfIteratorHelperLoose$6(t);!(e=c()).done;)n()}}),[t,u,a,o,r,i]);var f=react.useMemo((function(){for(var e,n=[],o=0,a=0,i=-.05,s=0,l=_createForOfIteratorHelperLoose$6(t);!(e=l()).done;){var d,f,m=e.value,p=((null==(d=u.get(m.name))?void 0:d.w)||0)+.05+c,v=(null==(f=u.get(m.name))?void 0:f.h)||0;if(o+p<=r)n[a]||n.push({y:i,decisions:[]}),n[a].decisions.push(m),s=v,o+=p;else{var h;a++;var g=(null==(h=u.get(m.name))?void 0:h.h)||0;i-=s/2+.015+.065+g/2,g>.060000000000000005?(n.push({y:i,decisions:[m]}),i-=g/2+.065+.015,a++,o=0,s=g):(n.push({y:i,decisions:[m]}),o+=p,s=g)}}for(var x=[],y=0,b=n;y<b.length;y++){for(var _,E=b[y],w=[],R=0,S=_createForOfIteratorHelperLoose$6(E.decisions);!(_=S()).done;){var k,T=_.value,C=(null==(k=u.get(T.name))?void 0:k.w)||0;R-=C/2,w.push({decision:T,position:[R,E.y,0]}),R-=C/2+.05+c}for(var I=(-R-.05-c)/2,L=0,M=w;L<M.length;L++){M[L].position[0]+=I}x.push.apply(x,w)}return x}),[t,u,r,l]),m=react.useState(Math.random())[0],p=react.useMemo((function(){for(var e,n=new Map,r=_createForOfIteratorHelperLoose$6(t);!(e=r()).done;){var o=e.value,a=(m+t.indexOf(o)/t.length)%1;n.set(o.name,new Idea(a,.7,o.utility||.8))}return n}),[t,m]);return l?React.createElement(React.Fragment,null,f.map((function(e,t){var i=e.decision,c=e.position;return React.createElement("group",{key:i.name+t+c.toString(),position:c},React.createElement(FacePlayer,null,React.createElement(Button$1,{font:o,fontSize:a,maxWidth:r,idea:p.get(i.name),onClick:function(){i.onClick&&i.onClick(),i.nextKey&&n(i.nextKey||"")}},i.name)))}))):null}function _createForOfIteratorHelperLoose$5(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$5(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$5(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$5(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$5(e,t):void 0}}function _arrayLikeToArray$5(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var FONT_FILE$1="https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf";function VisualInteraction(e){var t=e.interaction,n=e.enabled,r=e.width,o=e.height,a=e.setCurKey,i=t.effect,c=t.text,u=t.input,s=t.decisions,l=react.useState(!1),d=l[0],f=l[1],m=three$1.useSpring({posZ:n?.003:-.003,scaleY:n?1:0}),p=m.posZ,v=m.scaleY,h=react.useMemo((function(){if(!s)return function(){};for(var e,t=function(){var t=e.value;if("submit"===t.name)return{v:function(){t.onClick&&t.onClick(),t.nextKey&&a(t.nextKey||"")}}},n=_createForOfIteratorHelperLoose$5(s);!(e=n()).done;){var r=t();if("object"==typeof r)return r.v}}),[s,a]);react.useEffect((function(){d!==n&&(f(n),n&&i&&i().then((function(e){e&&a(e)})))}),[i,a,d,n]);var g={font:FONT_FILE$1,maxWidth:.8,textAlign:"center",fontSize:.06,outlineWidth:.0065,renderOrder:10};return n?React.createElement(three$1.animated.group,{name:"interaction-"+c,"position-z":p,"scale-y":v},React.createElement(drei.Text,_extends__default.default({},g,{anchorY:u?"bottom":"middle"}),c),u&&(u.persist||n)&&React.createElement(TextInput,{value:u.value,onChange:u.setValue,"position-y":-.065,onSubmit:h,fontSize:.06,width:.825*r,type:"email"===u.type?"text":u.type}),React.createElement("group",{"position-y":-o/2},s&&React.createElement(VisualDecisions,{decisions:s,width:r,setCurKey:a}))):null}var _excluded$e=["numStops","enabled","side","offset","dialogue","face"];function Dialogue(e){var t=e.numStops,n=void 0===t?5:t,r=e.enabled,o=void 0===r||r,a=e.side,i=void 0===a?"left":a,c=e.offset,u=void 0===c?["right"===i?.4:-.4,0,0]:c,s=e.dialogue,l=e.face,d=void 0===l||l,f=_objectWithoutPropertiesLoose__default.default(e,_excluded$e),m=react.useState("init"),p=m[0],v=m[1],h=three$1.useSpring({scale:o?1:0,delay:o?60*(n+1):0}).scale,g=react.useRef(null);useLimitedFrame(40,(function(e){var t=e.camera;g.current&&(g.current.position.x+="right"===i?x:-x,g.current.lookAt(t.position),g.current.position.set(0,0,0))}));var x=1,y="right"===i?x/2:-x/2;return React.createElement("group",_extends__default.default({name:"dialogue"},f),React.createElement(FacePlayer,{enabled:d},React.createElement(Bubbles,{numStops:n,enabled:o,offset:u}),React.createElement("group",{name:"main-dialogue",position:u},React.createElement("group",{name:"look-at",ref:g},React.createElement(three$1.animated.group,{scale:h,"position-x":y},React.createElement(RoundedBox,{args:[x,.35,.125],material:cache.mat_standard_cream_double}),React.createElement("group",{name:"interactions","position-z":.0655},s.map((function(e){return React.createElement(VisualInteraction,{key:e.key,interaction:e,enabled:e.key===p,setCurKey:v,width:x,height:.35})}))))))))}var _excluded$d=["dark"],IMAGE_SRC="https://d27rt3a60hh1lx.cloudfront.net/images/whiteArrow.png",IMAGE_SRC_DARK="https://d27rt3a60hh1lx.cloudfront.net/images/blackArrow.png";function Arrow(e){var t=e.dark,n=_objectWithoutPropertiesLoose__default.default(e,_excluded$d),r=useImage(t?IMAGE_SRC_DARK:IMAGE_SRC),o=cache.useResource("spacesvr_arrow_"+(t?"dark":"light"),(function(){return new three.MeshStandardMaterial({map:r,alphaTest:.5,transparent:!0})}));return React.createElement("group",_extends__default.default({name:"spacesvr-arrow"},n),React.createElement("mesh",{scale:.004,material:o},React.createElement("planeGeometry",{args:[98,51]})))}var _excluded$c=["keyCode","keyPress","onPress"];function Key(e){var t=e.keyCode,n=e.keyPress,r=void 0===n?[t]:n,o=e.onPress,a=_objectWithoutPropertiesLoose__default.default(e,_excluded$c),i=react.useState(!1),c=i[0],u=i[1],s=three$1.useSpring(_extends__default.default({color:c?"#aaa":"#fff",scale:c?.5:1},three$1.config.stiff)),l=s.color,d=s.scale,f=.25;return react.useEffect((function(){var e=function(e){return r.map((function(e){return e.toLowerCase()})).includes(e.key.toLowerCase())},t=function(t){t.key&&e(t)&&u(!0)},n=function(t){t.key&&e(t)&&u(!1)},a=function(t){t.key&&e(t)&&(null==o||o(t))};return document.addEventListener("keydown",t),document.addEventListener("keyup",n),document.addEventListener("keypress",a),function(){document.removeEventListener("keydown",t),document.removeEventListener("keyup",n),document.removeEventListener("keypress",a)}}),[r,o]),React.createElement("group",_extends__default.default({name:"spacesvr-key"},a),React.createElement("group",{"position-z":-.25},React.createElement(three$1.animated.group,{"scale-z":d},React.createElement("group",{"position-z":.125},React.createElement(RoundedBox,{args:[1,1,f],"position-z":-.135},React.createElement(three$1.animated.meshStandardMaterial,{color:l})),React.createElement(drei.Text,{color:"black",fontSize:.5,renderOrder:2},t)))))}var _excluded$b=["value","onChange","raycaster"];function Switch(e){var t=e.value,n=e.onChange,r=e.raycaster,o=_objectWithoutPropertiesLoose__default.default(e,_excluded$b),a=react.useState(!1),i=a[0],c=a[1],u=null!=t?t:i,s=function(e){n&&n(e),c(e)},l=.075,d=.1875,f=.75*l,m=.1*d,p=.06,v=three$1.useSpring({posX:u?.09375:-.09375,knobColor:u?"#417E25":"#828282",config:{mass:.1}}),h=v.posX,g=v.knobColor,x=react.useState(new Idea(0,0,1))[0],y=react.useState(new Idea(0,0,.75))[0];return React.createElement("group",_extends__default.default({name:"spacesvr-switch-input"},o),React.createElement(three$1.animated.group,{"position-x":h},React.createElement(VisualIdea,{scale:p,idea:u?x:y})),React.createElement(HitBox,{args:[p,p,p],onClick:function(){return s(!u)},"position-x":u?.09375:-.09375,raycaster:r}),React.createElement(HitBox,{args:[.195,.06,m],onClick:function(){return s(!u)},raycaster:r}),React.createElement(RoundedBox,{args:[d,f,m]},React.createElement(three$1.animated.meshBasicMaterial,{color:g})),React.createElement(RoundedBox,{args:[.195,.06,m],material:cache.mat_basic_gray,"position-z":-.001}))}var NetworkContext=react.createContext({}),useNetwork=function(){return react.useContext(NetworkContext)},useListener=function(){var e=fiber.useThree((function(e){return e.camera}));return react.useMemo((function(){var t=new three.AudioListener;return e.add(t),t}),[e])},useObj=function(){return react.useMemo((function(){var e=new three.Object3D;return e.matrixAutoUpdate=!1,e}),[])},useEntities=function(){var e=useNetwork(),t=e.connections,n=e.connected,r=e.mediaConnections,o=useEnvironment().paused,a=useListener(),i=react.useState(0);i[0];var c=i[1],u=react.useState(!0),s=u[0],l=u[1];react.useEffect((function(){return l(o&&s)}),[o,s]);var d=react.useMemo((function(){return[]}),[]),f=function(e){return r.has(e.id)&&!e.posAudio};return useLimitedFrame(3,(function(){if(n){var e=!1;d.map((function(n){t.has(n.id)||(n.posAudio&&(n.posAudio.remove(),n.posAudio=void 0),d.splice(d.indexOf(n),1),e=!0)}));for(var o=function(){var t=u[i];d.some((function(e){return e.id===t}))||(d.push({id:t,posAudio:void 0}),e=!0)},i=0,u=Array.from(t.keys());i<u.length;i++)o();s||(d.map((function(t){var n;r.has(t.id)||(null==(n=t.posAudio)||n.remove(),t.posAudio=void 0,e=!0)})),d.filter(f).map((function(t){var n=r.get(t.id);if(n&&n.remoteStream){console.log("adding audio for",t.id);var o=document.createElement("audio");o.srcObject=n.remoteStream,o.muted=!0,o.autoplay=!0,o.loop=!0,o.playsInline=!0;var i=new three.PositionalAudio(a);i.userData.peerId=t.id,i.setMediaStreamSource(o.srcObject),i.setRefDistance(2),i.setDirectionalCone(200,290,.35),t.posAudio=i,e=!0}}))),e&&c(Math.random())}})),d};function _createForOfIteratorHelperLoose$4(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$4(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$4(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$4(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$4(e,t):void 0}}function _arrayLikeToArray$4(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function NetworkedEntities(){var e=useNetwork(),t=e.connected,n=e.useChannel,r=react.useRef(null),o=react.useMemo((function(){return new three.CylinderGeometry(.3,.3,1,32)}),[]),a=react.useMemo((function(){return new three.MeshNormalMaterial}),[]),i=useObj(),c=useEntities(),u=react.useMemo((function(){return new snapshotInterpolation.SnapshotInterpolation(12)}),[]),s=n("player","stream",(function(e,t){if(e.conn){t[e.conn.peer]=e.data;var n=Object.keys(t).map((function(e){return{id:e,x:t[e].pos[0],y:t[e].pos[1],z:t[e].pos[2],q:{x:t[e].rot[0],y:t[e].rot[1],z:t[e].rot[2],w:t[e].rot[3]}}}));u.vault.add({id:Math.random().toString(),time:(new Date).getTime(),state:n})}}));return useLimitedFrame(12,(function(e){var n=e.camera;t&&s.send({pos:n.position.toArray(),rot:n.quaternion.toArray()})})),useLimitedFrame(55,(function(){if(r.current){var e=u.calcInterpolation("x y z q(quat)");if(e){for(var t,n=0,o=_createForOfIteratorHelperLoose$4(e.state);!(t=o()).done;){var a,s=t.value,l=s.x,d=s.y,f=s.z,m=s.q;i.position.set(l,d,f),i.position.y-=.2;var p=m;i.quaternion.set(p.x,p.y,p.z,p.w),i.updateMatrix(),r.current.setMatrixAt(n,i.matrix);var v=null==(a=c[n])?void 0:a.posAudio;v&&(i.matrix.decompose(v.position,v.quaternion,v.scale),v.rotation.y+=Math.PI,v.updateMatrix()),n++}r.current.instanceMatrix.needsUpdate=!0}}})),t?React.createElement("group",{name:"spacesvr-entities"},c.map((function(e){return e.posAudio&&React.createElement("primitive",{key:e.posAudio.uuid,object:e.posAudio,matrixAutoUpdate:!1})})),React.createElement("instancedMesh",{ref:r,args:[o,a,c.length],matrixAutoUpdate:!1})):null}var isLocalNetwork=function(e){return void 0===e&&(e=window.location.hostname),["localhost","127.0.0.1","","::1"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")},SESSION_ID="spacesvr-local-signalling",TIMEOUT_MIN=1.25,LocalSignaller=function(){function e(e){console.info("using local signaller"),e.id&&(this.peerId=e.id)}var t=e.prototype;return t.readStore=function(){var e=localStorage.getItem(SESSION_ID);if(!e)return[];try{return JSON.parse(e)}catch(e){return[]}},t.writeStore=function(e){localStorage.setItem(SESSION_ID,JSON.stringify(e))},t.cleanStore=function(){var e=this.readStore(),t=(new Date).getTime(),n=e.filter((function(e){var n=t-e.last_seen<=60*TIMEOUT_MIN*1e3;return n||console.info("removing local peer with id ",e.id),n}));this.writeStore(n)},t.join=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.peerId){e.next=3;break}return console.error("peer id not established, aborting signal"),e.abrupt("return");case 3:return this.cleanStore(),console.info("local network detected, signalling with localStorage"),t={id:this.peerId,last_seen:(new Date).getTime()},(n=this.readStore()).push(t),this.writeStore(n),e.abrupt("return",n.map((function(e){return e.id})));case 10:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.leave=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(){var t,n,r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.peerId){e.next=3;break}return console.error("peer id not established, aborting signal"),e.abrupt("return");case 3:console.info("updating local signal list to remove self"),t=this.readStore(),(n=t.findIndex((function(e){return e.id===r.peerId})))<0?console.error("peer not in local signal list, aborting ..."):(t.splice(n,1),this.writeStore(t));case 7:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.wave=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(){var t,n,r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.peerId){e.next=3;break}return console.error("peer id not established, wave failed"),e.abrupt("return",!1);case 3:return t=this.readStore(),n=!1,t.map((function(e){e.id===r.peerId&&(e.last_seen=(new Date).getTime(),n=!0)})),this.writeStore(t),e.abrupt("return",n);case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),e}(),MuseSignaller=function(){function e(e,t){void 0===t&&(t={}),console.info("using muse signaller"),t.sessionId?this.sessionId=t.sessionId:t.worldName?this.worldName=t.worldName:this.worldName=window.location.pathname,this.host=t.host||"https://muse-web.onrender.com",t.sessionPassword&&(this.sessionPassword=t.sessionPassword),e.id&&(this.peerId=e.id)}var t=e.prototype;return t.callBackend=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(t,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(this.host+"/sessions/"+t,{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.join=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.peerId){e.next=3;break}return console.error("peer id not established, aborting signal"),e.abrupt("return");case 3:return t={peer_id:this.peerId},this.sessionId?t.session_id=this.sessionId:t.world=this.worldName,this.sessionPassword&&(t.password=this.sessionPassword),e.next=8,this.callBackend("join",t);case 8:return n=e.sent,e.next=11,n.json();case 11:if(r=e.sent,200===n.status){e.next=16;break}return console.error("failed to signal: ",r.message),e.abrupt("return",void 0);case 16:return this.sessionId=r.session_id,e.abrupt("return",r.peer_ids);case 19:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.leave=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.sessionId&&this.peerId){e.next=3;break}return console.error("no session id / peer id, can't leave"),e.abrupt("return");case 3:return t={peer_id:this.peerId,session_id:this.sessionId},e.next=6,this.callBackend("leave",t);case 6:if(200===(n=e.sent).status){e.next=12;break}return e.next=10,n.json();case 10:r=e.sent,console.error("leave failed ... ",r.message);case 12:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.wave=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.sessionId&&this.peerId){e.next=3;break}return console.error("no session id / peer id, can't wave"),e.abrupt("return",!1);case 3:return t={peer_id:this.peerId,session_id:this.sessionId},e.next=6,this.callBackend("wave",t);case 6:if(200===(n=e.sent).status){e.next=13;break}return e.next=10,n.json();case 10:return r=e.sent,console.error("wave check failed ... ",r.message),e.abrupt("return",!1);case 13:return e.abrupt("return",!0);case 14:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),e}(),MAX_TRIES=4,useWaving=function(e,t,n){var r=react.useRef(0),o=useLimiter(1/(60*e)),a=useLimiter(.1);fiber.useFrame((function(e){var i=e.clock;!t||r.current>MAX_TRIES||(r.current>0?a:o).isReady(i)&&t.wave().then((function(e){e?r.current=0:r.current+=1,r.current>MAX_TRIES&&(console.error("too many failed waves, disconnecting ..."),n())}))}))};function _createForOfIteratorHelperLoose$3(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$3(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$3(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$3(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$3(e,t):void 0}}function _arrayLikeToArray$3(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var StreamChannel=function(){function e(e,t,n){this.id=e,this.reducer=t,this.connections=n,this.state={}}var t=e.prototype;return t.send=function(e){for(var t,n=_createForOfIteratorHelperLoose$3(this.connections.entries());!(t=n()).done;){var r=t.value[1];r.open&&r.send({id:this.id,data:e})}},t.receive=function(e){this.reducer(e,this.state)},e}();function _createForOfIteratorHelperLoose$2(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$2(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$2(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$2(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$2(e,t):void 0}}function _arrayLikeToArray$2(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var SyncChannel=function(){function e(e,t,n){this.id=e,this.reducer=t,this.initTime=(new Date).getTime(),this.connections=n,this.state={}}var t=e.prototype;return t.send=function(e){for(var t,n=_createForOfIteratorHelperLoose$2(this.connections.entries());!(t=n()).done;){var r=t.value[1];r.open&&r.send({id:this.id,data:e})}this.reducer({id:this.id,data:e},this.state)},t.receive=function(e){e.greet?e.time&&e.state&&e.time<this.initTime&&(this.state=e.state,this.initTime=e.time-50):this.reducer(e,this.state)},t.greet=function(e){e.send({id:this.id,time:this.initTime,state:this.state,greet:!0})},e}();function _createForOfIteratorHelperLoose$1(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray$1(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray$1(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$1(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray$1(e,t):void 0}}function _arrayLikeToArray$1(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var useChannels=function(e){var t=react.useMemo((function(){return new Map}),[]);return{receive:function(e){for(var n,r=_createForOfIteratorHelperLoose$1(t.entries());!(n=r()).done;){var o=n.value,a=o[0],i=o[1];a==e.id&&i.receive(e)}},greet:function(e){for(var n,r=_createForOfIteratorHelperLoose$1(t.entries());!(n=r()).done;){var o=n.value[1];o instanceof SyncChannel&&o.greet(e)}},useChannel:function(n,r,o){var a=react.useMemo((function(){return"stream"===r?new StreamChannel(n,o,e):"sync"===r?new SyncChannel(n,o,e):new StreamChannel(n,o,e)}),[n,r]);return react.useEffect((function(){a.reducer=o}),[a,o]),react.useEffect((function(){if(t.has(a.id))throw new Error("id '"+a.id+"' has been taken, can't register channel ...");return t.set(a.id,a),function(){t.has(a.id)&&t.delete(a.id)}}),[a]),a}}},useMicrophone=function(e,t){void 0===e&&(e=!0);var n=useEnvironment().paused,r=react.useState(!0),o=r[0],a=r[1];react.useEffect((function(){return a(n&&o)}),[n,o]);var i=react.useState(),c=i[0],u=i[1];return react.useEffect((function(){var n;!e||(["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document)&&o||null==(n=navigator.mediaDevices)||n.getUserMedia({audio:_extends__default.default({echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},t?{deviceId:t}:{})}).then((function(e){u(e)})).catch((function(e){console.error(e)}))}),[e,o,t]),c};function _createForOfIteratorHelperLoose(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=_unsupportedIterableToArray(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var useVoiceConnections=function(e,t,n,r){var o=react.useMemo((function(){return new Map}),[]),a=useMicrophone(e,r);return react.useEffect((function(){if(t&&a&&e){var r=function(e){console.log("media connection opened with peer",e.peer),e.answer(a),o.set(e.peer,e),e.on("close",(function(){console.log("closing voice stream with peer",e.peer),o.delete(e.peer)})),e.on("error",(function(t){console.error("error with voice stream with peer",e.peer,t),o.delete(e.peer)}))},i=function(e){console.log("calling peer with id",e.peer),r(t.call(e.peer,a)),e.on("close",(function(){console.log("closing voice stream with peer",e.peer),o.delete(e.peer)}))};t.on("call",r),t.on("connection",(function(e){e.on("open",(function(){return i(e)}))}));for(var c,u=_createForOfIteratorHelperLoose(n);!(c=u()).done;){var s=c.value,l=s[0],d=s[1];if(o.has(l))return;i(d)}return function(){t.removeListener("call",r),t.removeListener("connection",i)}}}),[n,t,a,o,e]),react.useEffect((function(){e||o.forEach((function(e){e.close(),o.delete(e.peer)}))}),[e,o]),{mediaConnections:o,localStream:a}},KEY="spacesvr-ice-servers",EXPIRE_TIME=864e5,storeLocalIceServers=function(e){var t={iceServers:e,time:(new Date).getTime()};localStorage.setItem(KEY,JSON.stringify(t))},getLocalIceServers=function(){var e=localStorage.getItem(KEY);if(e)try{var t=JSON.parse(e);return(new Date).getTime()-t.time>EXPIRE_TIME?void localStorage.removeItem(KEY):t.iceServers}catch(e){return}},getMuseIceServers=function(){var e=_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(t){var n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===t&&(t="https://muse-web.onrender.com"),!(n=getLocalIceServers())){e.next=4;break}return e.abrupt("return",n);case 4:return e.prev=4,e.next=7,fetch(t+"/sessions/get_ice");case 7:return r=e.sent,e.next=10,r.json();case 10:return o=e.sent,a=o.iceServers,storeLocalIceServers(a),e.abrupt("return",a);case 16:return e.prev=16,e.t0=e.catch(4),console.error("failed to fetch ice servers",e.t0),e.abrupt("return",void 0);case 20:case"end":return e.stop()}}),e,null,[[4,16]])})));return function(t){return e.apply(this,arguments)}}(),useConnection=function(e){var t=react.useState(!1),n=t[0],r=t[1],o=react.useState(),a=o[0],i=o[1],c=react.useMemo((function(){return new Map}),[]),u=react.useState(),s=u[0],l=u[1],d=useChannels(c),f=function(e){e.on("open",(function(){console.log("connection opened with peer",e.peer),e.on("data",(function(t){return d.receive(_extends__default.default({conn:e},t))})),e.on("close",(function(){console.log("connection closed with peer"),c.delete(e.peer)})),e.on("error",(function(){console.log("connection closed with peer"),c.delete(e.peer)})),d.greet(e),c.set(e.peer,e)}))},m=function(){var t=_asyncToGenerator__default.default(regeneratorRuntime.mark((function t(o){var c,u,s,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(console.log("connecting to network"),!a){t.next=4;break}return console.error("peer already created, aborting"),t.abrupt("return");case 4:if(!n){t.next=7;break}return console.error("already connected, aborting"),t.abrupt("return");case 7:if((c=_extends__default.default({},e,o)).iceServers){t.next=13;break}return t.next=11,getMuseIceServers(c.host);case 11:(u=t.sent)&&(c.iceServers=u);case 13:s={},c.iceServers&&(s.iceServers=c.iceServers),(d=new peerjs.Peer({config:s})).on("connection",f),d.on("close",p),d.on("error",(function(e){if(e.message.includes("Could not connect to peer")){var t=e.message.split(" "),n=t[t.length-1];console.error("could not establish connection to peer "+n)}else console.error(e)})),d.on("open",_asyncToGenerator__default.default(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r(!0),t=isLocalNetwork()&&!c.host?new LocalSignaller(d):new MuseSignaller(d,c),e.next=4,t.join();case 4:if(n=e.sent,console.log("found peers:",n),n){e.next=8;break}return e.abrupt("return");case 8:n.map((function(e){if(e!==d.id){var t=d.connect(e);f(t)}})),i(d),l(t);case 11:case"end":return e.stop()}}),e)}))));case 20:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),p=function(){console.log("disconnecting from network"),n?a?(a.disconnected||a.disconnect(),s&&s.leave(),c.forEach((function(e){return e.close()})),a.destroy(),r(!1),i(void 0)):console.error("peer doesn't exist, no need to disconnect"):console.error("not connected, no need to disconnect")};useWaving(1,s,p);var v=react.useState(!!e.voice),h=v[0],g=v[1],x=react.useState(),y=x[0],b=x[1];react.useEffect((function(){return g(!!e.voice)}),[e.voice]);var _=useVoiceConnections(h,a,c,y),E=_.mediaConnections,w=_.localStream;return{connected:n,connect:m,disconnect:p,connections:c,useChannel:d.useChannel,voice:h,setVoice:g,localStream:w,mediaConnections:E,setInputDevice:b}},_excluded$a=["time"],useModifiedStandardShader=function(e,t,n){var r=e.time,o=void 0===r||r,a=_objectWithoutPropertiesLoose__default.default(e,_excluded$a),i=react.useMemo((function(){var e=new three.MeshStandardMaterial(_extends__default.default({side:three.DoubleSide},a));return e.onBeforeCompile=function(r){r.uniforms.time=new three.Uniform(0);var o="\n        varying vec2 vUv;\n        varying vec3 vNorm;\n        varying vec3 vPos;\n        uniform float time;\n      ";r.vertexShader=o+r.vertexShader.replace("#include <worldpos_vertex>",t+"\n        vUv = uv;\n        vPos = (modelMatrix * vec4(transformed, 1.0)).xyz;\n      \n#include <worldpos_vertex>\n"),r.vertexShader=r.vertexShader.replace("#include <begin_vertex>","#include <begin_vertex>\nvNorm = normal;\n"),r.fragmentShader=o+r.fragmentShader.replace("#include <emissivemap_fragment>","#include <emissivemap_fragment>\n"+n),e.userData.shader=r},e.customProgramCacheKey=function(){return n+t+JSON.stringify(a)},e}),[n,a,o,t]);return useLimitedFrame(70,(function(e){var t,n,r=e.clock;o&&null!=(t=i.userData.shader)&&null!=(n=t.uniforms)&&n.time&&(i.userData.shader.uniforms.time.value=r.elapsedTime)})),i},vert="\n",GRAY="vec3(0.6)",frag="\n    diffuseColor.rgb = "+GRAY+";\n    \n    // apply grip\n    float radius = 0.25;\n    vec2 l = (fract((vUv - vec2(0.21, 0.)) * vec2(9., 0.)) - vec2(0.5, 0.));\n    float blur = 5.;\n    float circle_mask = 1.0 - smoothstep(radius - (radius * blur),radius + (radius * blur),dot(l,l) * 2.0);\n    float side_mask = pow(abs(dot(vNorm, vec3(1.0, 0.0, 0.0))), 0.9);\n    float up_mask = 0.2 * pow(dot(vNorm, vec3(0.0, 1.0, 0.0)), 1.);\n    float grip_mask = min(1., (side_mask + up_mask)) * circle_mask;\n    diffuseColor.rgb *= clamp(1. - (0.8 * grip_mask), 0., 1.);\n    \n    // apply speaker and mic\n    // create mask for facing the camera\n    float facing_mask = pow(clamp(dot(vNorm, vec3(0., 0., 1.0)), 0., 1.), 2000.);\n    // create a mask for the bottom of the phone\n    float bottom_mask = smoothstep(0.0, 0.2, abs(vUv.y + 0.1));\n    float speaker_mask = facing_mask * bottom_mask;\n    // diffuseColor.rgb = mix(diffuseColor.rgb, vec3(0.9), speaker_mask);\n";function TalkieModel(e){var t=e.width,n=e.height,r=e.depth,o=useModifiedStandardShader({color:"#cbcbcb"},vert,frag),a=.22*t,i=.45*n;return React.createElement("group",{name:"model"},React.createElement(RoundedBox,{args:[t,n,r],material:o}),React.createElement(RoundedBox,{args:[a,i,r],material:o,"position-x":-t/2+a/2,"position-y":n/2}))}var _excluded$9=["width","height","children"];function Pane(e){var t=e.width,n=e.height,r=e.children,o=_objectWithoutPropertiesLoose__default.default(e,_excluded$9);return React.createElement("group",_extends__default.default({name:"pane"},o),React.createElement("mesh",{material:cache.mat_standard_black},React.createElement("planeGeometry",{args:[t+.015,n+.015]})),React.createElement("mesh",{"position-z":.001},React.createElement("planeGeometry",{args:[t,n]}),React.createElement("meshStandardMaterial",{color:"#20C20E"})),React.createElement("group",{name:"content","position-z":.002},r))}var _excluded$8=["onClick","width","children","index"];function Option(e){var t=e.onClick,n=e.width,r=e.children,o=e.index,a=_objectWithoutPropertiesLoose__default.default(e,_excluded$8),i=react.useState(!1),c=i[0],u=i[1],s=three$1.useSpring({color:c?"#b3b3b3":"#ffffff"}).color,l=.015,d=.02,f=.01,m=0===o?n-.06:n-.03;return React.createElement("group",_extends__default.default({name:"option"},a),React.createElement(RoundedBox,{args:[n,.045,f]},React.createElement(three$1.animated.meshStandardMaterial,{color:s})),React.createElement(HitBox,{args:[n,.045,f],onClick:t,onHover:function(){return u(!0)},onUnHover:function(){return u(!1)}}),React.createElement("group",{"position-z":.006},React.createElement(drei.Text,{fontSize:d,color:"black",anchorX:"left","position-x":-n/2+l,maxWidth:n,whiteSpace:"nowrap",clipRect:[0,-1/0,m,1/0]},r)))}var _excluded$7=["value","items","onChange","width"];function DropDown(e){var t,n=e.value,r=e.items,o=e.onChange,a=e.width,i=void 0===a?1:a,c=_objectWithoutPropertiesLoose__default.default(e,_excluded$7),u=react.useState(!1),s=u[0],l=u[1],d=react.useState(!1),f=d[0],m=d[1],p=react.useState(0),v=p[0],h=p[1],g=null!=(t=r.find((function(e){return e.value==n})))?t:r[v];react.useEffect((function(){if(g){var e=r.findIndex((function(e){return e.value===(null==g?void 0:g.value)}));-1!==e&&v!==e&&h(e)}}),[r,v,g]);var x=f?[].concat(r).sort((function(e,t){return e==g?-1:t==g?1:0})):g?[g]:[],y=core.useTransition(x,{keys:function(e){return e.value},trail:300/r.length,from:{scale:0,y:0},enter:function(e,t){return{scale:1,y:-.05*t}},update:function(e,t){return{scale:1,y:-.05*t}},leave:{scale:0,y:0},reset:s,onRest:function(){return l(!1)}}),b=three$1.useSpring({rot:f?Math.PI:0,posZ:f?.025:0}),_=b.rot,E=b.posZ,w=function(e){f&&(!function(e){var t=r.findIndex((function(t){return t.value==e}));-1!==t&&(o&&o(r[t]),h(t))}(e),l(!0)),m(!f)};return React.createElement("group",_extends__default.default({name:"spacesvr-dropdown"},c),React.createElement(three$1.a.group,{"position-z":E},y((function(e,t,n,r){var o=e.scale,a=e.y;return React.createElement(three$1.a.group,{scale:o,"position-y":a},React.createElement(Option,{onClick:function(){return w(t.value)},width:i,index:r},t.text))})),r.length>1&&React.createElement(three$1.a.group,{"rotation-z":_,"position-x":i/2-.015-.01,"position-z":.006},React.createElement(Image$1,{src:"https://d27rt3a60hh1lx.cloudfront.net/icons/chevron-down.ktx2",scale:.03}))))}function VoiceLevels(e){var t=useNetwork().localStream,n=react.useState(),r=n[0],o=n[1],a=react.useState(document.createElement("canvas"))[0],i=react.useState(new Uint8Array(128))[0],c=react.useRef(null);return react.useEffect((function(){if(t){var e=new(window.AudioContext||window.webkitAudioContext),n=e.createAnalyser();n.fftSize=128;var r=n.frequencyBinCount,a=new Uint8Array(r);n.getByteTimeDomainData(a),n.smoothingTimeConstant=.8,e.createMediaStreamSource(t).connect(n),o(n)}}),[t]),fiber.useFrame((function(){var e=a.getContext("2d");if(r&&e&&c.current){c.current.needsUpdate=!0,r.getByteFrequencyData(i),r.smoothingTimeConstant=.85,e.clearRect(0,0,a.width,a.height),e.fillStyle="rgb(0, 0, 0)";for(var t=a.width/6-4,n=0,o=0;o<6;o++){for(var u=(i[o]/256*.8+.2)*a.height,s=0;s<u;){var l=Math.min(s+20,u);e.fillRect(n,a.height-s,t,20),s=l+4}n+=t+4}}})),t?React.createElement("group",_extends__default.default({name:"voice-levels"},e),React.createElement("mesh",null,React.createElement("planeGeometry",{args:[.095,.075]}),React.createElement("meshStandardMaterial",{transparent:!0},React.createElement("canvasTexture",{ref:c,args:[a],attach:"map"})))):null}var _excluded$6=["width"];function Request(e){var t=e.width,n=_objectWithoutPropertiesLoose__default.default(e,_excluded$6),r=.0225,o=!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia?"this site cannot access your microphone":"give this site access to your microphone to talk!";return React.createElement("group",n,React.createElement(drei.Text,{fontSize:r,color:"black","position-z":.006,maxWidth:t,textAlign:"center"},o),React.createElement(RoundedBox,{args:[t,.095,.01],material:cache.mat_standard_white}))}var _excluded$5=["width"];function MicAccess(e){var t=e.width,n=_objectWithoutPropertiesLoose__default.default(e,_excluded$5),r=useNetwork(),o=r.localStream,a=r.setInputDevice,i=react.useState([]),c=i[0],u=i[1],s=react.useState(),l=s[0],d=s[1],f=react.useState(!1),m=f[0],p=f[1],v=react.useState(!1),h=v[0],g=v[1],x=!!o,y=react.useCallback((function(){var e;null==(e=navigator.mediaDevices)||e.enumerateDevices().then((function(e){e=(e=e.filter((function(e){return"audioinput"===e.kind}))).filter((function(t,n){return e.findIndex((function(e){return e.groupId===t.groupId}))===n})),u(e)}))}),[]);return react.useEffect((function(){o&&y()}),[o,y]),react.useEffect((function(){navigator.mediaDevices&&(navigator.mediaDevices.ondevicechange=function(){return y()})}),[y]),react.useEffect((function(){var e=null==o?void 0:o.getTracks()[0].getSettings().deviceId;p(!!l&&l!==e)}),[o,l]),react.useEffect((function(){o&&(o.getAudioTracks()[0].enabled=!h)}),[o,h]),React.createElement("group",_extends__default.default({name:"mic-access"},n),React.createElement(Pane,{width:t,height:.1},React.createElement(Image$1,{src:h||!x?"https://d27rt3a60hh1lx.cloudfront.net/icons/microphone-off.ktx2":"https://d27rt3a60hh1lx.cloudfront.net/icons/microphone.ktx2",scale:.075,"position-x":-t/2+.0375+.04}),React.createElement("group",{"position-x":t/2-.0375-.04},m||!x&&React.createElement(Spinning,{ySpeed:0,zSpeed:2},React.createElement(Image$1,{src:"https://d27rt3a60hh1lx.cloudfront.net/icons/loader.ktx2",scale:.075})),!m&&React.createElement(VoiceLevels,{"position-x":-.01})),x&&React.createElement("group",{"position-y":-.095},React.createElement(Switch,{value:h,onChange:g,scale:.4,"position-x":.07}),React.createElement(drei.Text,{fontSize:.035,anchorX:"right","position-x":-.01,color:"black"},"mute")),x&&React.createElement(DropDown,{"position-y":-.15,value:null==o?void 0:o.getTracks()[0].getSettings().deviceId,items:c.map((function(e,t){return{text:e.label||"microphone "+t,value:e.deviceId}})),width:t,"position-z":0,onChange:function(e){a(e.value),d(e.value)}}),!x&&React.createElement(Request,{"position-y":-.125,"position-z":.15,width:t})))}var FONT_URL$3="https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf";function WalkieTalkie(){var e=useToolbelt(),t=useEnvironment().device;return React.createElement(Tool,{name:"Walkie Talkie",pos:[0,0],range:t.mobile?0:.2,pinY:!0},React.createElement("group",{"position-y":-.05,scale:1.25},React.createElement(TalkieModel,{width:.5,height:.55,depth:.1}),React.createElement("group",{name:"content","position-z":.05+.001},React.createElement(MicAccess,{"position-y":.15,width:.325}),React.createElement(drei.Text,{fontSize:.022,color:"black",font:FONT_URL$3,maxWidth:.25,anchorY:"top","position-y":-.05,textAlign:"center",scale:1.1},"proximity voice chat is enabled in this world.\n\nwalk up to someone and say hello!"),React.createElement(Button$1,{onClick:function(){return e.hide()},fontSize:.03,"position-y":-.21,"rotation-x":-.4,color:"#f2445e"},"close"))))}var _excluded$4=["children","disableEntities","autoconnect"];function Network(e){var t=e.children,n=e.disableEntities,r=e.autoconnect,o=_objectWithoutPropertiesLoose__default.default(e,_excluded$4),a=useConnection(o),i=a.connected,c=a.connect,u=a.disconnect;react.useEffect((function(){r&&c()}),[r]);var s=react.useRef(!1);return react.useEffect((function(){s.current!==i&&(console.info("network "+(i?"connected":"disconnected")),s.current=i)}),[i]),react.useEffect((function(){return window.addEventListener("beforeunload",u),function(){return window.removeEventListener("beforeunload",u)}}),[u]),React.createElement(NetworkContext.Provider,{value:a},!n&&React.createElement(NetworkedEntities,null),a.voice&&React.createElement(WalkieTalkie,null),t)}var _excluded$3=["children"],defaultPhysicsProps={size:50,allowSleep:!1,gravity:[0,-9.8,0],defaultContactMaterial:{friction:0}};function Physics(e){var t=e.children,n=_objectWithoutPropertiesLoose__default.default(e,_excluded$3);return React.createElement(cannon.Physics,_extends__default.default({},defaultPhysicsProps,n),React.createElement(react.Suspense,{fallback:null},t))}function StandardReality(e){var t=e.children,n=e.environmentProps,r=e.physicsProps,o=e.networkProps,a=e.playerProps,i=e.toolbeltProps,c=e.disableGround,u=void 0!==c&&c;return React.createElement(Environment,n,React.createElement(Physics,r,React.createElement(Player,a,React.createElement(Toolbelt,i,React.createElement(Network,o,React.createElement(Visual,null,!u&&React.createElement(InfinitePlane,null),t))))))}var usePhotography=function(e){var t=useEnvironment().device,n=fiber.useThree().scene,r=react.useState(),o=r[0],a=r[1],i=react.useMemo((function(){return new three.Vector2(3,2).normalize().multiplyScalar(2186)}),[]),c=react.useMemo((function(){return i.clone().normalize()}),[i]),u=react.useMemo((function(){return new three.WebGLRenderTarget(i.x,i.y,{stencilBuffer:!0,minFilter:three.NearestFilter,magFilter:three.NearestFilter,format:three.RGBAFormat})}),[i]),s=react.useMemo((function(){var e=new three.WebGLRenderer({preserveDrawingBuffer:!0,precision:"highp",antialias:!0});return e.useLegacyLights=!1,e.toneMapping=three.NoToneMapping,e.outputEncoding=three.sRGBEncoding,e}),[]);react.useEffect((function(){s.setSize(u.width,u.height),s.setPixelRatio(t.desktop?2:1)}),[t.desktop,u.width,u.height,s]);var l=react.useCallback((function(){if(e.current){document.body.append(s.domElement),e.current.aspect=c.x/c.y,s.render(n,e.current);var r=new Date,o=document.title+" - www.muse.place"+window.location.pathname+" - "+r.toLocaleDateString("en-US")+" "+r.getHours()+":"+r.getMinutes();if(t.mobile)a(s.domElement.toDataURL("image/jpeg"));else{var i=document.createElement("a");i.download=o+".jpg",i.href=s.domElement.toDataURL("image/jpeg"),i.click(),i.remove()}document.body.removeChild(s.domElement)}}),[c.x,c.y,e,t.mobile,s,n]);return{resolution:i,aspect:c,takePicture:l,target:u,renderer:s,data:{value:o,set:a}}},useRendering=function(e,t,n,r,o){var a=useEnvironment().paused,i=fiber.useThree().scene,c=react.useMemo((function(){return new three.Vector3}),[]),u=react.useMemo((function(){return new three.Quaternion}),[]),s=react.useRef(!0);react.useEffect((function(){a||(s.current=!1)}),[a]),useLimitedFrame(1/4,(function(n){!e&&s.current&&t.current&&(n.gl.autoClear=!0,n.gl.setRenderTarget(o.target),n.gl.render(i,t.current),n.gl.setRenderTarget(null),n.gl.autoClear=!1)})),useLimitedFrame(24,(function(a){t.current&&r.current&&n.current&&e&&(r.current.getWorldPosition(c),r.current.getWorldQuaternion(u),t.current.position.set(0,0,.3).applyQuaternion(u),t.current.position.add(c),t.current.rotation.setFromQuaternion(u),t.current.aspect=o.aspect.x/o.aspect.y,t.current.updateProjectionMatrix(),a.gl.autoClear=!0,a.gl.setRenderTarget(o.target),a.gl.render(i,t.current),a.gl.setRenderTarget(null),a.gl.autoClear=!1)}))},FONT_FILE="https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf";function Instruction(e){var t=e.open;e.setOpen;var n=useEnvironment().device,r=(n.mobile,.5),o=three$1.useSpring({scale:t?0:r}).scale,a=.055,i="Press          to "+(t?"close":"open");return React.createElement(three$1.a.group,{scale:o,"position-x":n.mobile?-.05:-.45,"position-y":n.mobile?-.2:.1,"position-z":.25,"rotation-x":.1,"rotation-y":-.4},React.createElement(Floating,{height:.1*a,speed:n.mobile?8:0},React.createElement(drei.Text,{color:"white",fontSize:a,maxWidth:100,textAlign:"center",outlineColor:"black",outlineWidth:.1*a,font:FONT_FILE,"position-y":-.02},n.mobile?"tap to open":i)),n.desktop&&React.createElement(Floating,{height:.1*a,speed:8},React.createElement(Key,{keyCode:"C",keyPress:["c","C"],scale:.1,"position-x":-.035,"position-z":.1,"rotation-x":-.3})))}var _excluded$2=["cam","open","fov"],FONT_URL$2="https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf";function DesktopControls(e){var t=e.cam;e.open;var n=e.fov,r=_objectWithoutPropertiesLoose__default.default(e,_excluded$2),o=.008,a=.18,i=three$1.useSpring({posX:-.18*n.normalized+.09}).posX;return react.useEffect((function(){var e=function(e){if(t.current){var r=t.current.fov+.05*e.deltaY;n.set(r)}};return window.addEventListener("wheel",e),function(){return window.removeEventListener("wheel",e)}}),[t,n]),React.createElement("group",r,React.createElement("mesh",{material:cache.mat_standard_white},React.createElement("planeGeometry",{args:[a,o]})),React.createElement(three$1.animated.mesh,{material:cache.mat_standard_red,"position-x":i,"position-y":.021},React.createElement("planeGeometry",{args:[o,.05]})),React.createElement(drei.Text,{font:FONT_URL$2,color:"white",fontSize:.032,anchorY:"top",anchorX:"right","position-y":-.02,"position-x":.12,"position-z":.01,lineHeight:1.3,renderOrder:10,textAlign:"center",maxWidth:.24},"Scroll to zoom\n\n\nClick to shoot\n\n\nPress        to close"),React.createElement(Key,{keyCode:"C",scale:.05,position:[.025,-.29,.03]}))}var _excluded$1=["open","pressed","setPressed","onPress"],FONT_URL$1="https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf";function ShutterButton(e){var t=e.open,n=e.pressed,r=e.setPressed,o=e.onPress,a=_objectWithoutPropertiesLoose__default.default(e,_excluded$1),i=useEnvironment().device,c=react.useState(!1),u=c[0],s=c[1];react.useEffect((function(){n&&(setTimeout((function(){return r(!1)}),750),s(!0))}),[n,r]);var l=three$1.useSpring({shutterY:n?.6:1,config:three$1.config.stiff}).shutterY;return React.createElement("group",a,React.createElement(three$1.animated.group,{"scale-y":l},React.createElement(RoundedBox,{args:[.4,.55,.2],material:cache.mat_standard_red})),i.mobile&&React.createElement(HitBox,{args:[.4,.55,.2],onClick:o,scale:1.5,"position-y":.2},"close"),!u&&t&&i.mobile&&React.createElement(Floating,{height:.025,speed:15},React.createElement(drei.Text,{font:FONT_URL$1,fontSize:.15,color:"white",outlineColor:"black",outlineWidth:.015,anchorY:"bottom","position-y":.325},"Tap to Shoot!")),React.createElement("mesh",{name:"cover-mesh","position-x":.05,material:cache.mat_standard_black,"position-y":-.17},React.createElement("boxGeometry",{args:[.5,.5,.3]})))}var _templateObject,_templateObject2,_templateObject3,_templateObject4,_templateObject5,MIN_FOV=10,MAX_FOV=85,useFov=function(e){var t=react.useState(50),n=t[0],r=t[1],o=react.useCallback((function(t){if(e.current){var n=three.MathUtils.clamp(t,MIN_FOV,MAX_FOV);e.current.fov=n,e.current.updateProjectionMatrix(),r(n)}}),[e]);return{val:n,normalized:(n-MIN_FOV)/(MAX_FOV-MIN_FOV),set:o,min:MIN_FOV,max:MAX_FOV}},_excluded=["cam","open","setOpen","fov"],FONT_URL="https://d27rt3a60hh1lx.cloudfront.net/fonts/Quicksand_Bold.otf";function MobileControls(e){var t=e.cam,n=e.open,r=e.setOpen,o=e.fov,a=_objectWithoutPropertiesLoose__default.default(e,_excluded),i=fiber.useThree().gl,c=usePlayer().raycaster,u=react.useRef(null),s=react.useRef(!1),l=react.useRef(),d=.008,f=.35,m=three$1.useSpring({posY:-.35*o.normalized+.175-d}).posY;return useDrag({onStart:function(e){var t=e.e;u.current&&(0!==c.intersectObject(u.current).length&&(s.current=!0,t.stopImmediatePropagation()))},onMove:function(e){var n,r=e.delta;if(s.current){l.current||(l.current=(null==(n=t.current)?void 0:n.fov)||0);var a=l.current+.5*r.y;o.set(a)}},onEnd:function(){s.current=!1,l.current=void 0}},i.domElement,[o]),React.createElement("group",a,React.createElement("group",{"position-y":-.15},React.createElement(HitBox,{ref:u,args:[.25,.42,.05]}),React.createElement("mesh",{material:cache.mat_standard_white},React.createElement("planeGeometry",{args:[.016,f]})),React.createElement(three$1.animated.mesh,{material:cache.mat_standard_red,"position-y":m},React.createElement("planeGeometry",{args:[.1,.032]}))),React.createElement(drei.Text,{font:FONT_URL,color:"white",fontSize:.044,anchorY:"top",anchorX:"center","position-y":-.35,"position-z":.01,lineHeight:1.3,renderOrder:10,textAlign:"center"},"FOV Slider"),n&&React.createElement(Button$1,{"position-y":.48,"position-x":-1,scale:1.5,"rotation-x":.2,color:"#ff0000",onClick:function(){return r(!1)}},"close"))}var Wrapper=styled__default.default.div(_templateObject||(_templateObject=_taggedTemplateLiteralLoose__default.default(["\n  position: absolute;\n  display: flex;\n  flex-direction: column;\n  z-index: 10;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  padding: 25px 25px 30px;\n  box-sizing: border-box;\n  background: black;\n  width: 90vw;\n"]))),Background=styled__default.default.div(_templateObject2||(_templateObject2=_taggedTemplateLiteralLoose__default.default(["\n  position: absolute;\n  z-index: 9;\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n  background: black;\n  opacity: 0.6;\n"]))),Image=styled__default.default.img(_templateObject3||(_templateObject3=_taggedTemplateLiteralLoose__default.default(["\n  width: 100%;\n  height: auto;\n  object-fit: contain;\n"]))),Text=styled__default.default.p(_templateObject4||(_templateObject4=_taggedTemplateLiteralLoose__default.default(["\n  color: white;\n  text-align: center;\n  font-size: 1.15rem;\n"]))),Button=styled__default.default.button(_templateObject5||(_templateObject5=_taggedTemplateLiteralLoose__default.default(["\n  background: white;\n  border: none;\n  color: black;\n  padding: 10px 20px;\n  font-size: 1rem;\n  font-family: inherit;\n  border-radius: 10px;\n  font-weight: bold;\n  margin: 0 auto;\n"])));function PhotoPreview(e){var t=e.photo,n=useEnvironment(),r=n.containerRef,o=n.device;return t.data.value&&r.current&&o.mobile?React.createElement(drei.Html,null,reactDom.createPortal(React.createElement(React.Fragment,null,React.createElement(Wrapper,null,React.createElement(Image,{src:t.data.value}),React.createElement(Text,null,"press and hold the image to save it"),React.createElement(Button,{onClick:function(){return t.data.set(void 0)}},"close")),React.createElement(Background,null)),r.current)):null}var AUDIO_URL="https://d27rt3a60hh1lx.cloudfront.net/tools/camera/shutter-sound.mp3",CAMERA_MODEL_URL="https://d1htv66kutdwsl.cloudfront.net/0308efc4-0b68-4b2e-b688-92512323178b/aa44f4af-f7c2-4050-9e6c-536ee07bbb1a.glb",CAMERA_ICON_URL="https://d1htv66kutdwsl.cloudfront.net/44e643ef-7fe6-45da-9f99-54a5988ff338/8eb59c54-4aba-479a-b7cd-54a300b36c20.png",TIMEOUT=2;function Camera(e){var t,n=e.onCapture,r=useEnvironment(),o=r.device,a=r.paused,i=fiber.useThree(),c=i.scene,u=i.clock,s=useToolbelt(),l=react.useRef(),d=react.useRef(null),f=react.useRef(null),m=react.useState(!1),p=m[0],v=m[1],h=react.useState(!1),g=h[0],x=h[1],y=useFov(l),b=react.useRef(0),_="Camera"===(null==(t=s.activeTool)?void 0:t.name),E=usePhotography(l),w=useHudDims(),R=Math.min(.25*w.width,o.mobile?.2:.325),S=three$1.useSpring({rotX:p?0:.3,rotY:p?0:o.mobile?Math.PI-.5:-.1,scale:p?R:o.mobile?.1:.25,config:three$1.config.stiff}),k=S.rotX,T=S.rotY,C=S.scale;useRendering(_&&p,l,d,f,E);var I=react.useCallback((function(){g||(b.current+TIMEOUT>u.getElapsedTime()||(b.current=u.getElapsedTime(),x(!0),new Audio(AUDIO_URL).play(),setTimeout((function(){E.takePicture(),n&&n()}),300)))}),[u,n,E,g]);react.useEffect((function(){if(_&&!a&&!o.mobile&&p)return document.addEventListener("click",I),function(){return document.removeEventListener("click",I)}}),[_,o.mobile,I,p,a]),useKeypress(["c","C"],(function(){!isTyping()&&_&&v(!p)}),[_,p]);var L=p?[0,0]:o.mobile?[.9,.9]:[.8,-.8];return React.createElement("group",{name:"camera-tool-resources",ref:d},React.createElement(Tool,{name:"Camera",pos:L,pinY:!0,icon:CAMERA_ICON_URL,face:!1,disableDraggable:p,onSwitch:function(e){return!e&&v(!1)}},React.createElement(Instruction,{open:p,setOpen:v}),React.createElement(three$1.animated.group,{scale:C,"rotation-x":k,"rotation-y":T},React.createElement(Model,{src:CAMERA_MODEL_URL,center:!0,normalize:!0,"rotation-y":Math.PI,scale:3}),o.mobile&&!p&&React.createElement(HitBox,{args:[3,1.8,1.6],"position-z":.3,onClick:function(){return v(!0)}}),React.createElement("group",{name:"top-row",position:[1,.7,.75]},React.createElement(ShutterButton,{open:p,pressed:g,setPressed:x,onPress:I})),React.createElement("group",{name:"content",position:[0,-.18,1.101],scale:2},React.createElement("mesh",{ref:f,name:"viewfinder",position:[-.15,.03,0],"scale-x":1.1,"scale-y":1.1},React.createElement("planeGeometry",{args:[E.aspect.x,E.aspect.y]}),React.createElement("meshStandardMaterial",{map:E.target.texture,metalness:.68,roughness:.7})),o.desktop?React.createElement(DesktopControls,{cam:l,open:p,fov:y,position:[.485,.12,.005]}):React.createElement(MobileControls,{cam:l,open:p,setOpen:v,fov:y,position:[.5,.12,.004]})))),fiber.createPortal(React.createElement(drei.PerspectiveCamera,{ref:l,near:.01,far:300}),c),React.createElement(PhotoPreview,{photo:E}))}function LostWorld(){return React.createElement("group",{name:"lost-world"},React.createElement(Fog,{color:"white",near:.1,far:15}),React.createElement("directionalLight",{"position-y":1,intensity:1.8}),React.createElement("ambientLight",{intensity:1}),React.createElement(Background$1,{color:"white"}),React.createElement(LostFloor,null))}exports.Anchor=Anchor,exports.Arrow=Arrow,exports.Audio=Audio$1,exports.Background=Background$1,exports.Button=Button$1,exports.Camera=Camera,exports.Collidable=Collidable,exports.Dialogue=Dialogue,exports.Environment=Environment,exports.EnvironmentContext=EnvironmentContext,exports.FacePlayer=FacePlayer,exports.Floating=Floating,exports.Fog=Fog,exports.Frame=Frame,exports.HDRI=HDRI,exports.HitBox=HitBox,exports.Idea=Idea,exports.Image=Image$1,exports.InfinitePlane=InfinitePlane,exports.Interactable=Interactable,exports.Key=Key,exports.LookAtPlayer=LookAtPlayer,exports.LostFloor=LostFloor,exports.LostWorld=LostWorld,exports.Model=Model,exports.Network=Network,exports.NetworkContext=NetworkContext,exports.Physics=Physics,exports.Player=Player,exports.PlayerContext=PlayerContext,exports.RoundedBox=RoundedBox,exports.Site=Site,exports.Spinning=Spinning,exports.StandardReality=StandardReality,exports.Switch=Switch,exports.TextInput=TextInput,exports.Tool=Tool,exports.Toolbelt=Toolbelt,exports.ToolbeltContext=ToolbeltContext,exports.Video=Video,exports.Visual=Visual,exports.VisualContext=VisualContext,exports.VisualEffect=VisualEffect,exports.VisualIdea=VisualIdea,exports.VisualWorld=VisualWorld,exports.WalkieTalkie=WalkieTalkie,exports.World=World,exports.cache=cache,exports.enableBVHRaycast=enableBVHRaycast,exports.getHudDims=getHudDims,exports.getHudPos=getHudPos,exports.isTyping=isTyping,exports.useDrag=useDrag,exports.useEnvironment=useEnvironment,exports.useEnvironmentState=useEnvironmentState,exports.useHTMLInput=useHTMLInput,exports.useHudDims=useHudDims,exports.useImage=useImage,exports.useKeyboardLayout=useKeyboardLayout,exports.useKeypress=useKeypress,exports.useLimitedFrame=useLimitedFrame,exports.useLimiter=useLimiter,exports.useMetaHold=useMetaHold,exports.useModel=useModel,exports.useNetwork=useNetwork,exports.usePlayer=usePlayer,exports.useRerender=useRerender,exports.useShiftHold=useShiftHold,exports.useTextInput=useTextInput,exports.useToolbelt=useToolbelt,exports.useToolbeltState=useToolbeltState,exports.useTrimeshCollision=useTrimeshCollision$1,exports.useVisible=useVisible,exports.useVisual=useVisual;
//# sourceMappingURL=/sm/fc8efc322a978daa3ff7993c67ce06104e389a62f60bbc089ac8c139ef0e2df5.map