{"version":3,"file":"vendor.thatopen-83ea3048.99b2b0ad46c51ddc.bundle.js","mappings":"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f,EAAEE,KAAK1f,GAAK,EAAI,KAAOwf,EAAEE,KAAK1f,GAAK,GAAK,KAAOwf,EAAEE,KAAK1f,GAAK,GAAK,QAAQwf,EAAEE,KAAS,IAAJzf,KAAWuf,EAAEE,KAAKzf,GAAK,EAAI,QAAQuf,EAAEE,KAAKzf,GAAK,GAAK,GAAK,MAAMuf,EAAEE,KAAKzf,GAAK,GAAK,QAAQuf,EAAEE,KAAS,GAAJ/d,EAAS,OAAO6d,EAAEE,KAAK/d,GAAK,EAAI,QAAQ6d,EAAEE,KAAK/d,GAAK,GAAK,OAAO6d,EAAEE,KAAK/d,GAAK,GAAK,OAAO6d,EAAEE,KAAS,IAAJ7d,KAAW2d,EAAEE,KAAK7d,GAAK,EAAI,OAAO2d,EAAEE,KAAK7d,GAAK,GAAK,OAAO2d,EAAEE,KAAK7d,GAAK,GAAK,OAAO8d,aAC7X,CACA,eAAOC,CAAS5f,GACd,IAAKwf,EAAEK,SAASC,KAAK9f,GACnB,MAAM,IAAI0I,MACR,GAAG1I,uNAMT,GAEFF,EAAE0f,GAAG,WAAY,0FACjB1f,EAAE0f,GAAG,OAAQ,CACX,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAEF,IAAIO,GAAKP,GAuJT,MAAMQ,GAAK,MAAMA,EACf,WAAApa,GAEE9F,EAAE8I,KAAM,aAAc,IAAIiP,IAK1B/X,EAAE8I,KAAM,OAAwB,IAAI4P,KAKpC1Y,EAAE8I,KAAM,WAAW,GACnB9I,EAAE8I,KAAM,UACR9I,EAAE8I,KAAM,UAAU,KAChB,IAAKA,KAAKqX,QACR,OACF,MAAMjgB,EAAI4I,KAAKsX,OAAOC,WACtB,IAAK,MAAOlgB,EAAG0B,KAAMiH,KAAKwX,KACxBze,EAAEse,SAAWte,EAAE0e,gBAAkB1e,EAAEoJ,OAAO/K,GAC5CsgB,sBAAsB1X,KAAKmC,OAAO,IAEpCnC,KAAKsX,OAAS,IAAI,MAAWF,EAAGO,UAClC,CAYA,GAAA5d,CAAI3C,EAAGC,GACL,GAAI2I,KAAKwX,KAAKjQ,IAAInQ,GAChB,MAAM,IAAI0I,MACR,kHAEJqX,GAAGH,SAAS5f,GAAI4I,KAAKwX,KAAK7c,IAA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,WACA,UACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,WACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACEiwC,GAAK,MAAMA,UAAWl6B,GACxB,WAAA1S,CAAY3F,GACVqK,MAAMrK,GAENH,EAAE8I,KAAM,WAAW,GACnB3I,EAAE0C,IAAI6vC,EAAG15B,KAAMlQ,KACjB,CASA,YAAM,CAAO3I,EAAG0B,EAAGE,GAAI,EAAIC,GAAI,GAC7B,MAAME,EAAI,CAAC,EAAGQ,EAAI,IAAID,IAAItC,EAAEwyC,iBAAiB9wC,IAAKc,EAAoB,IAAIF,IAAI,CAC5E,aACA,UACA,cACA,oBACA,aAEF,IAAK,MAAMG,KAAKD,EACdD,EAAEG,IAAID,GACR,IAAK,MAAMA,KAAKF,EAAG,CACjB,GAAI+vC,GAAGpiC,IAAIzN,GACT,SACF,MAAMkB,EAAInB,EAAE0N,IAAIzN,IAAMZ,EAAG+B,EAAI5D,EAAE0vC,mBAAmBhuC,EAAGe,GACrD,IAAK,MAAMoB,KAAKD,EAAG,CACjB,MAAME,EAAI9D,EAAEyyC,QAAQ,EAAG5uC,EAAGF,EAA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","sources":["webpack://client-app/./node_modules/@thatopen/components/dist/index.mjs"],"sourcesContent":["var kn = Object.defineProperty;\nvar Wn = (l, s, t) => s in l ? kn(l, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[s] = t;\nvar I = (l, s, t) => (Wn(l, typeof s != \"symbol\" ? s + \"\" : s, t), t);\nimport * as g from \"three\";\nimport { BufferAttribute as Pn, Vector3 as M, Vector2 as fe, Plane as Fi, Line3 as Lt, Triangle as ue, Sphere as Xn, Matrix4 as yt, Box3 as Ot, BackSide as Zn, DoubleSide as Ln, FrontSide as wi, Mesh as v, Ray as Qn, Raycaster as jn, Quaternion as Pt, Object3D as ri, Euler as qn, MeshBasicMaterial as yn, LineBasicMaterial as Kn, CylinderGeometry as ct, BoxGeometry as rt, BufferGeometry as Di, Float32BufferAttribute as Ui, OctahedronGeometry as Ze, Line as Dt, SphereGeometry as $n, TorusGeometry as me, PlaneGeometry as Jn } from \"three\";\nimport * as Vt from \"@thatopen/fragments\";\nimport { Serializer as to } from \"@thatopen/fragments\";\nimport * as b from \"web-ifc\";\nconst Mn = 0, eo = 1, so = 2, xi = 2, Ys = 1.25, bi = 1, Cs = 6 * 4 + 4 + 4, Us = 65535, io = Math.pow(2, -24), Vs = Symbol(\"SKIP_GENERATION\");\nfunction no(l) {\n return l.index ? l.index.count : l.attributes.position.count;\n}\nfunction pe(l) {\n return no(l) / 3;\n}\nfunction oo(l, s = ArrayBuffer) {\n return l > 65535 ? new Uint32Array(new s(4 * l)) : new Uint16Array(new s(2 * l));\n}\nfunction ro(l, s) {\n if (!l.index) {\n const t = l.attributes.position.count, e = s.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer, i = oo(t, e);\n l.setIndex(new Pn(i, 1));\n for (let o = 0; o < t; o++)\n i[o] = o;\n }\n}\nfunction wn(l) {\n const s = pe(l), t = l.drawRange, e = t.start / 3, i = (t.start + t.count) / 3, o = Math.max(0, e), n = Math.min(s, i) - o;\n return [{\n offset: Math.floor(o),\n count: Math.floor(n)\n }];\n}\nfunction Dn(l) {\n if (!l.groups || !l.groups.length)\n return wn(l);\n const s = [], t = /* @__PURE__ */ new Set(), e = l.drawRange, i = e.start / 3, o = (e.start + e.count) / 3;\n for (const r of l.groups) {\n const a = r.start / 3, c = (r.start + r.count) / 3;\n t.add(Math.max(i, a)), t.add(Math.min(o, c));\n }\n const n = Array.from(t.values()).sort((r, a) => r - a);\n for (let r = 0; r < n.length - 1; r++) {\n const a = n[r], c = n[r + 1];\n s.push({\n offset: Math.floor(a),\n count: Math.floor(c - a)\n });\n }\n return s;\n}\nfunction ao(l) {\n if (l.groups.length === 0)\n return !1;\n const s = pe(l), t = Dn(l).sort((o, n) => o.offset - n.offset), e = t[t.length - 1];\n e.count = Math.min(s - e.offset, e.count);\n let i = 0;\n return t.forEach(({ count: o }) => i += o), s !== i;\n}\nfunction K(l, s, t) {\n return t.min.x = s[l], t.min.y = s[l + 1], t.min.z = s[l + 2], t.max.x = s[l + 3], t.max.y = s[l + 4], t.max.z = s[l + 5], t;\n}\nfunction co(l) {\n l[0] = l[1] = l[2] = 1 / 0, l[3] = l[4] = l[5] = -1 / 0;\n}\nfunction vi(l) {\n let s = -1, t = -1 / 0;\n for (let e = 0; e < 3; e++) {\n const i = l[e + 3] - l[e];\n i > t && (t = i, s = e);\n }\n return s;\n}\nfunction Bi(l, s) {\n s.set(l);\n}\nfunction Yi(l, s, t) {\n let e, i;\n for (let o = 0; o < 3; o++) {\n const n = o + 3;\n e = l[o], i = s[o], t[o] = e < i ? e : i, e = l[n], i = s[n], t[n] = e > i ? e : i;\n }\n}\nfunction Qe(l, s, t) {\n for (let e = 0; e < 3; e++) {\n const i = s[l + 2 * e], o = s[l + 2 * e + 1], n = i - o, r = i + o;\n n < t[e] && (t[e] = n), r > t[e + 3] && (t[e + 3] = r);\n }\n}\nfunction Re(l) {\n const s = l[3] - l[0], t = l[4] - l[1], e = l[5] - l[2];\n return 2 * (s * t + t * e + e * s);\n}\nfunction Gs(l, s, t, e, i = null) {\n let o = 1 / 0, n = 1 / 0, r = 1 / 0, a = -1 / 0, c = -1 / 0, h = -1 / 0, d = 1 / 0, E = 1 / 0, u = 1 / 0, f = -1 / 0, R = -1 / 0, m = -1 / 0;\n const C = i !== null;\n for (let A = s * 6, F = (s + t) * 6; A < F; A += 6) {\n const p = l[A + 0], T = l[A + 1], O = p - T, _ = p + T;\n O < o && (o = O), _ > a && (a = _), C && p < d && (d = p), C && p > f && (f = p);\n const S = l[A + 2], N = l[A + 3], L = S - N, w = S + N;\n L < n && (n = L), w > c && (c = w), C && S < E && (E = S), C && S > R && (R = S);\n const y = l[A + 4], U = l[A + 5], x = y - U, B = y + U;\n x < r && (r = x), B > h && (h = B), C && y < u && (u = y), C && y > m && (m = y);\n }\n e[0] = o, e[1] = n, e[2] = r, e[3] = a, e[4] = c, e[5] = h, C && (i[0] = d, i[1] = E, i[2] = u, i[3] = f, i[4] = R, i[5] = m);\n}\nfunction lo(l, s, t, e) {\n let i = 1 / 0, o = 1 / 0, n = 1 / 0, r = -1 / 0, a = -1 / 0, c = -1 / 0;\n for (let h = s * 6, d = (s + t) * 6; h < d; h += 6) {\n const E = l[h + 0];\n E < i && (i = E), E > r && (r = E);\n const u = l[h + 2];\n u < o && (o = u), u > a && (a = u);\n const f = l[h + 4];\n f < n && (n = f), f > c && (c = f);\n }\n e[0] = i, e[1] = o, e[2] = n, e[3] = r, e[4] = a, e[5] = c;\n}\nfunction ho(l, s) {\n co(s);\n const t = l.attributes.position, e = l.index ? l.index.array : null, i = pe(l), o = new Float32Array(i * 6), n = t.normalized, r = t.array, a = t.offset || 0;\n let c = 3;\n t.isInterleavedBufferAttribute && (c = t.data.stride);\n const h = [\"getX\", \"getY\", \"getZ\"];\n for (let d = 0; d < i; d++) {\n const E = d * 3, u = d * 6;\n let f = E + 0, R = E + 1, m = E + 2;\n e && (f = e[f], R = e[R], m = e[m]), n || (f = f * c + a, R = R * c + a, m = m * c + a);\n for (let C = 0; C < 3; C++) {\n let A, F, p;\n n ? (A = t[h[C]](f), F = t[h[C]](R), p = t[h[C]](m)) : (A = r[f + C], F = r[R + C], p = r[m + C]);\n let T = A;\n F < T && (T = F), p < T && (T = p);\n let O = A;\n F > O && (O = F), p > O && (O = p);\n const _ = (O - T) / 2, S = C * 2;\n o[u + S + 0] = T + _, o[u + S + 1] = _ + (Math.abs(T) + _) * io, T < s[C] && (s[C] = T), O > s[C + 3] && (s[C + 3] = O);\n }\n }\n return o;\n}\nconst Mt = 32, Eo = (l, s) => l.candidate - s.candidate, Ut = new Array(Mt).fill().map(() => ({\n count: 0,\n bounds: new Float32Array(6),\n rightCacheBounds: new Float32Array(6),\n leftCacheBounds: new Float32Array(6),\n candidate: 0\n})), je = new Float32Array(6);\nfunction uo(l, s, t, e, i, o) {\n let n = -1, r = 0;\n if (o === Mn)\n n = vi(s), n !== -1 && (r = (s[n] + s[n + 3]) / 2);\n else if (o === eo)\n n = vi(l), n !== -1 && (r = Io(t, e, i, n));\n else if (o === so) {\n const a = Re(l);\n let c = Ys * i;\n const h = e * 6, d = (e + i) * 6;\n for (let E = 0; E < 3; E++) {\n const u = s[E], m = (s[E + 3] - u) / Mt;\n if (i < Mt / 4) {\n const C = [...Ut];\n C.length = i;\n let A = 0;\n for (let p = h; p < d; p += 6, A++) {\n const T = C[A];\n T.candidate = t[p + 2 * E], T.count = 0;\n const {\n bounds: O,\n leftCacheBounds: _,\n rightCacheBounds: S\n } = T;\n for (let N = 0; N < 3; N++)\n S[N] = 1 / 0, S[N + 3] = -1 / 0, _[N] = 1 / 0, _[N + 3] = -1 / 0, O[N] = 1 / 0, O[N + 3] = -1 / 0;\n Qe(p, t, O);\n }\n C.sort(Eo);\n let F = i;\n for (let p = 0; p < F; p++) {\n const T = C[p];\n for (; p + 1 < F && C[p + 1].candidate === T.candidate; )\n C.splice(p + 1, 1), F--;\n }\n for (let p = h; p < d; p += 6) {\n const T = t[p + 2 * E];\n for (let O = 0; O < F; O++) {\n const _ = C[O];\n T >= _.candidate ? Qe(p, t, _.rightCacheBounds) : (Qe(p, t, _.leftCacheBounds), _.count++);\n }\n }\n for (let p = 0; p < F; p++) {\n const T = C[p], O = T.count, _ = i - T.count, S = T.leftCacheBounds, N = T.rightCacheBounds;\n let L = 0;\n O !== 0 && (L = Re(S) / a);\n let w = 0;\n _ !== 0 && (w = Re(N) / a);\n const y = bi + Ys * (L * O + w * _);\n y < c && (n = E, c = y, r = T.candidate);\n }\n } else {\n for (let F = 0; F < Mt; F++) {\n const p = Ut[F];\n p.count = 0, p.candidate = u + m + F * m;\n const T = p.bounds;\n for (let O = 0; O < 3; O++)\n T[O] = 1 / 0, T[O + 3] = -1 / 0;\n }\n for (let F = h; F < d; F += 6) {\n let O = ~~((t[F + 2 * E] - u) / m);\n O >= Mt && (O = Mt - 1);\n const _ = Ut[O];\n _.count++, Qe(F, t, _.bounds);\n }\n const C = Ut[Mt - 1];\n Bi(C.bounds, C.rightCacheBounds);\n for (let F = Mt - 2; F >= 0; F--) {\n const p = Ut[F], T = Ut[F + 1];\n Yi(p.bounds, T.rightCacheBounds, p.rightCacheBounds);\n }\n let A = 0;\n for (let F = 0; F < Mt - 1; F++) {\n const p = Ut[F], T = p.count, O = p.bounds, S = Ut[F + 1].rightCacheBounds;\n T !== 0 && (A === 0 ? Bi(O, je) : Yi(O, je, je)), A += T;\n let N = 0, L = 0;\n A !== 0 && (N = Re(je) / a);\n const w = i - A;\n w !== 0 && (L = Re(S) / a);\n const y = bi + Ys * (N * A + L * w);\n y < c && (n = E, c = y, r = p.candidate);\n }\n }\n }\n } else\n console.warn(`MeshBVH: Invalid build strategy value ${o} used.`);\n return { axis: n, pos: r };\n}\nfunction Io(l, s, t, e) {\n let i = 0;\n for (let o = s, n = s + t; o < n; o++)\n i += l[o * 6 + e * 2];\n return i / t;\n}\nclass qe {\n constructor() {\n }\n}\nfunction fo(l, s, t, e, i, o) {\n let n = e, r = e + i - 1;\n const a = o.pos, c = o.axis * 2;\n for (; ; ) {\n for (; n <= r && t[n * 6 + c] < a; )\n n++;\n for (; n <= r && t[r * 6 + c] >= a; )\n r--;\n if (n < r) {\n for (let h = 0; h < 3; h++) {\n let d = s[n * 3 + h];\n s[n * 3 + h] = s[r * 3 + h], s[r * 3 + h] = d;\n }\n for (let h = 0; h < 6; h++) {\n let d = t[n * 6 + h];\n t[n * 6 + h] = t[r * 6 + h], t[r * 6 + h] = d;\n }\n n++, r--;\n } else\n return n;\n }\n}\nfunction po(l, s, t, e, i, o) {\n let n = e, r = e + i - 1;\n const a = o.pos, c = o.axis * 2;\n for (; ; ) {\n for (; n <= r && t[n * 6 + c] < a; )\n n++;\n for (; n <= r && t[r * 6 + c] >= a; )\n r--;\n if (n < r) {\n let h = l[n];\n l[n] = l[r], l[r] = h;\n for (let d = 0; d < 6; d++) {\n let E = t[n * 6 + d];\n t[n * 6 + d] = t[r * 6 + d], t[r * 6 + d] = E;\n }\n n++, r--;\n } else\n return n;\n }\n}\nfunction Co(l, s) {\n const t = (l.index ? l.index.count : l.attributes.position.count) / 3, e = t > 2 ** 16, i = e ? 4 : 2, o = s ? new SharedArrayBuffer(t * i) : new ArrayBuffer(t * i), n = e ? new Uint32Array(o) : new Uint16Array(o);\n for (let r = 0, a = n.length; r < a; r++)\n n[r] = r;\n return n;\n}\nfunction To(l, s) {\n const t = l.geometry, e = t.index ? t.index.array : null, i = s.maxDepth, o = s.verbose, n = s.maxLeafTris, r = s.strategy, a = s.onProgress, c = pe(t), h = l._indirectBuffer;\n let d = !1;\n const E = new Float32Array(6), u = new Float32Array(6), f = ho(t, E), R = s.indirect ? po : fo, m = [], C = s.indirect ? wn(t) : Dn(t);\n if (C.length === 1) {\n const p = C[0], T = new qe();\n T.boundingData = E, lo(f, p.offset, p.count, u), F(T, p.offset, p.count, u), m.push(T);\n } else\n for (let p of C) {\n const T = new qe();\n T.boundingData = new Float32Array(6), Gs(f, p.offset, p.count, T.boundingData, u), F(T, p.offset, p.count, u), m.push(T);\n }\n return m;\n function A(p) {\n a && a(p / c);\n }\n function F(p, T, O, _ = null, S = 0) {\n if (!d && S >= i && (d = !0, o && (console.warn(`MeshBVH: Max depth of ${i} reached when generating BVH. Consider increasing maxDepth.`), console.warn(t))), O <= n || S >= i)\n return A(T + O), p.offset = T, p.count = O, p;\n const N = uo(p.boundingData, _, f, T, O, r);\n if (N.axis === -1)\n return A(T + O), p.offset = T, p.count = O, p;\n const L = R(h, e, f, T, O, N);\n if (L === T || L === T + O)\n A(T + O), p.offset = T, p.count = O;\n else {\n p.splitAxis = N.axis;\n const w = new qe(), y = T, U = L - T;\n p.left = w, w.boundingData = new Float32Array(6), Gs(f, y, U, w.boundingData, u), F(w, y, U, u, S + 1);\n const x = new qe(), B = L, H = O - U;\n p.right = x, x.boundingData = new Float32Array(6), Gs(f, B, H, x.boundingData, u), F(x, B, H, u, S + 1);\n }\n return p;\n }\n}\nfunction mo(l, s) {\n const t = l.geometry;\n s.indirect && (l._indirectBuffer = Co(t, s.useSharedArrayBuffer), ao(t) && !s.verbose && console.warn(\n 'MeshBVH: Provided geometry contains groups that do not fully span the vertex contents while using the \"indirect\" option. BVH may incorrectly report intersections on unrendered portions of the geometry.'\n )), l._indirectBuffer || ro(t, s);\n const e = To(l, s);\n let i, o, n;\n const r = [], a = s.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer;\n for (let d = 0; d < e.length; d++) {\n const E = e[d];\n let u = c(E);\n const f = new a(Cs * u);\n i = new Float32Array(f), o = new Uint32Array(f), n = new Uint16Array(f), h(0, E), r.push(f);\n }\n l._roots = r;\n return;\n function c(d) {\n return d.count ? 1 : 1 + c(d.left) + c(d.right);\n }\n function h(d, E) {\n const u = d / 4, f = d / 2, R = !!E.count, m = E.boundingData;\n for (let C = 0; C < 6; C++)\n i[u + C] = m[C];\n if (R) {\n const C = E.offset, A = E.count;\n return o[u + 6] = C, n[f + 14] = A, n[f + 15] = Us, d + Cs;\n } else {\n const C = E.left, A = E.right, F = E.splitAxis;\n let p;\n if (p = h(d + Cs, C), p / 4 > Math.pow(2, 32))\n throw new Error(\"MeshBVH: Cannot store child pointer greater than 32 bits.\");\n return o[u + 6] = p / 4, p = h(p, A), o[u + 7] = F, p;\n }\n }\n}\nclass wt {\n constructor() {\n this.min = 1 / 0, this.max = -1 / 0;\n }\n setFromPointsField(s, t) {\n let e = 1 / 0, i = -1 / 0;\n for (let o = 0, n = s.length; o < n; o++) {\n const a = s[o][t];\n e = a < e ? a : e, i = a > i ? a : i;\n }\n this.min = e, this.max = i;\n }\n setFromPoints(s, t) {\n let e = 1 / 0, i = -1 / 0;\n for (let o = 0, n = t.length; o < n; o++) {\n const r = t[o], a = s.dot(r);\n e = a < e ? a : e, i = a > i ? a : i;\n }\n this.min = e, this.max = i;\n }\n isSeparated(s) {\n return this.min > s.max || s.min > this.max;\n }\n}\nwt.prototype.setFromBox = function() {\n const l = new M();\n return function(t, e) {\n const i = e.min, o = e.max;\n let n = 1 / 0, r = -1 / 0;\n for (let a = 0; a <= 1; a++)\n for (let c = 0; c <= 1; c++)\n for (let h = 0; h <= 1; h++) {\n l.x = i.x * a + o.x * (1 - a), l.y = i.y * c + o.y * (1 - c), l.z = i.z * h + o.z * (1 - h);\n const d = t.dot(l);\n n = Math.min(d, n), r = Math.max(d, r);\n }\n this.min = n, this.max = r;\n };\n}();\nconst Ro = function() {\n const l = new M(), s = new M(), t = new M();\n return function(i, o, n) {\n const r = i.start, a = l, c = o.start, h = s;\n t.subVectors(r, c), l.subVectors(i.end, i.start), s.subVectors(o.end, o.start);\n const d = t.dot(h), E = h.dot(a), u = h.dot(h), f = t.dot(a), m = a.dot(a) * u - E * E;\n let C, A;\n m !== 0 ? C = (d * E - f * u) / m : C = 0, A = (d + C * E) / u, n.x = C, n.y = A;\n };\n}(), Oi = function() {\n const l = new fe(), s = new M(), t = new M();\n return function(i, o, n, r) {\n Ro(i, o, l);\n let a = l.x, c = l.y;\n if (a >= 0 && a <= 1 && c >= 0 && c <= 1) {\n i.at(a, n), o.at(c, r);\n return;\n } else if (a >= 0 && a <= 1) {\n c < 0 ? o.at(0, r) : o.at(1, r), i.closestPointToPoint(r, !0, n);\n return;\n } else if (c >= 0 && c <= 1) {\n a < 0 ? i.at(0, n) : i.at(1, n), o.closestPointToPoint(n, !0, r);\n return;\n } else {\n let h;\n a < 0 ? h = i.start : h = i.end;\n let d;\n c < 0 ? d = o.start : d = o.end;\n const E = s, u = t;\n if (i.closestPointToPoint(d, !0, s), o.closestPointToPoint(h, !0, t), E.distanceToSquared(d) <= u.distanceToSquared(h)) {\n n.copy(E), r.copy(d);\n return;\n } else {\n n.copy(h), r.copy(u);\n return;\n }\n }\n };\n}(), Ao = function() {\n const l = new M(), s = new M(), t = new Fi(), e = new Lt();\n return function(o, n) {\n const { radius: r, center: a } = o, { a: c, b: h, c: d } = n;\n if (e.start = c, e.end = h, e.closestPointToPoint(a, !0, l).distanceTo(a) <= r || (e.start = c, e.end = d, e.closestPointToPoint(a, !0, l).distanceTo(a) <= r) || (e.start = h, e.end = d, e.closestPointToPoint(a, !0, l).distanceTo(a) <= r))\n return !0;\n const R = n.getPlane(t);\n if (Math.abs(R.distanceToPoint(a)) <= r) {\n const C = R.projectPoint(a, s);\n if (n.containsPoint(C))\n return !0;\n }\n return !1;\n };\n}(), Fo = 1e-15;\nfunction zs(l) {\n return Math.abs(l) < Fo;\n}\nclass Ft extends ue {\n constructor(...s) {\n super(...s), this.isExtendedTriangle = !0, this.satAxes = new Array(4).fill().map(() => new M()), this.satBounds = new Array(4).fill().map(() => new wt()), this.points = [this.a, this.b, this.c], this.sphere = new Xn(), this.plane = new Fi(), this.needsUpdate = !0;\n }\n intersectsSphere(s) {\n return Ao(s, this);\n }\n update() {\n const s = this.a, t = this.b, e = this.c, i = this.points, o = this.satAxes, n = this.satBounds, r = o[0], a = n[0];\n this.getNormal(r), a.setFromPoints(r, i);\n const c = o[1], h = n[1];\n c.subVectors(s, t), h.setFromPoints(c, i);\n const d = o[2], E = n[2];\n d.subVectors(t, e), E.setFromPoints(d, i);\n const u = o[3], f = n[3];\n u.subVectors(e, s), f.setFromPoints(u, i), this.sphere.setFromPoints(this.points), this.plane.setFromNormalAndCoplanarPoint(r, s), this.needsUpdate = !1;\n }\n}\nFt.prototype.closestPointToSegment = function() {\n const l = new M(), s = new M(), t = new Lt();\n return function(i, o = null, n = null) {\n const { start: r, end: a } = i, c = this.points;\n let h, d = 1 / 0;\n for (let E = 0; E < 3; E++) {\n const u = (E + 1) % 3;\n t.start.copy(c[E]), t.end.copy(c[u]), Oi(t, i, l, s), h = l.distanceToSquared(s), h < d && (d = h, o && o.copy(l), n && n.copy(s));\n }\n return this.closestPointToPoint(r, l), h = r.distanceToSquared(l), h < d && (d = h, o && o.copy(l), n && n.copy(r)), this.closestPointToPoint(a, l), h = a.distanceToSquared(l), h < d && (d = h, o && o.copy(l), n && n.copy(a)), Math.sqrt(d);\n };\n}();\nFt.prototype.intersectsTriangle = function() {\n const l = new Ft(), s = new Array(3), t = new Array(3), e = new wt(), i = new wt(), o = new M(), n = new M(), r = new M(), a = new M(), c = new M(), h = new Lt(), d = new Lt(), E = new Lt(), u = new M();\n function f(R, m, C) {\n const A = R.points;\n let F = 0, p = -1;\n for (let T = 0; T < 3; T++) {\n const { start: O, end: _ } = h;\n O.copy(A[T]), _.copy(A[(T + 1) % 3]), h.delta(n);\n const S = zs(m.distanceToPoint(O));\n if (zs(m.normal.dot(n)) && S) {\n C.copy(h), F = 2;\n break;\n }\n const N = m.intersectLine(h, u);\n if (!N && S && u.copy(O), (N || S) && !zs(u.distanceTo(_))) {\n if (F <= 1)\n (F === 1 ? C.start : C.end).copy(u), S && (p = F);\n else if (F >= 2) {\n (p === 1 ? C.start : C.end).copy(u), F = 2;\n break;\n }\n if (F++, F === 2 && p === -1)\n break;\n }\n }\n return F;\n }\n return function(m, C = null, A = !1) {\n this.needsUpdate && this.update(), m.isExtendedTriangle ? m.needsUpdate && m.update() : (l.copy(m), l.update(), m = l);\n const F = this.plane, p = m.plane;\n if (Math.abs(F.normal.dot(p.normal)) > 1 - 1e-10) {\n const T = this.satBounds, O = this.satAxes;\n t[0] = m.a, t[1] = m.b, t[2] = m.c;\n for (let N = 0; N < 4; N++) {\n const L = T[N], w = O[N];\n if (e.setFromPoints(w, t), L.isSeparated(e))\n return !1;\n }\n const _ = m.satBounds, S = m.satAxes;\n s[0] = this.a, s[1] = this.b, s[2] = this.c;\n for (let N = 0; N < 4; N++) {\n const L = _[N], w = S[N];\n if (e.setFromPoints(w, s), L.isSeparated(e))\n return !1;\n }\n for (let N = 0; N < 4; N++) {\n const L = O[N];\n for (let w = 0; w < 4; w++) {\n const y = S[w];\n if (o.crossVectors(L, y), e.setFromPoints(o, s), i.setFromPoints(o, t), e.isSeparated(i))\n return !1;\n }\n }\n return C && (A || console.warn(\"ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0.\"), C.start.set(0, 0, 0), C.end.set(0, 0, 0)), !0;\n } else {\n const T = f(this, p, d);\n if (T === 1 && m.containsPoint(d.end))\n return C && (C.start.copy(d.end), C.end.copy(d.end)), !0;\n if (T !== 2)\n return !1;\n const O = f(m, F, E);\n if (O === 1 && this.containsPoint(E.end))\n return C && (C.start.copy(E.end), C.end.copy(E.end)), !0;\n if (O !== 2)\n return !1;\n if (d.delta(r), E.delta(a), r.dot(a) < 0) {\n let U = E.start;\n E.start = E.end, E.end = U;\n }\n const _ = d.start.dot(r), S = d.end.dot(r), N = E.start.dot(r), L = E.end.dot(r), w = S < N, y = _ < L;\n return _ !== L && N !== S && w === y ? !1 : (C && (c.subVectors(d.start, E.start), c.dot(r) > 0 ? C.start.copy(d.start) : C.start.copy(E.start), c.subVectors(d.end, E.end), c.dot(r) < 0 ? C.end.copy(d.end) : C.end.copy(E.end)), !0);\n }\n };\n}();\nFt.prototype.distanceToPoint = function() {\n const l = new M();\n return function(t) {\n return this.closestPointToPoint(t, l), t.distanceTo(l);\n };\n}();\nFt.prototype.distanceToTriangle = function() {\n const l = new M(), s = new M(), t = [\"a\", \"b\", \"c\"], e = new Lt(), i = new Lt();\n return function(n, r = null, a = null) {\n const c = r || a ? e : null;\n if (this.intersectsTriangle(n, c))\n return (r || a) && (r && c.getCenter(r), a && c.getCenter(a)), 0;\n let h = 1 / 0;\n for (let d = 0; d < 3; d++) {\n let E;\n const u = t[d], f = n[u];\n this.closestPointToPoint(f, l), E = f.distanceToSquared(l), E < h && (h = E, r && r.copy(l), a && a.copy(f));\n const R = this[u];\n n.closestPointToPoint(R, l), E = R.distanceToSquared(l), E < h && (h = E, r && r.copy(R), a && a.copy(l));\n }\n for (let d = 0; d < 3; d++) {\n const E = t[d], u = t[(d + 1) % 3];\n e.set(this[E], this[u]);\n for (let f = 0; f < 3; f++) {\n const R = t[f], m = t[(f + 1) % 3];\n i.set(n[R], n[m]), Oi(e, i, l, s);\n const C = l.distanceToSquared(s);\n C < h && (h = C, r && r.copy(l), a && a.copy(s));\n }\n }\n return Math.sqrt(h);\n };\n}();\nclass at {\n constructor(s, t, e) {\n this.isOrientedBox = !0, this.min = new M(), this.max = new M(), this.matrix = new yt(), this.invMatrix = new yt(), this.points = new Array(8).fill().map(() => new M()), this.satAxes = new Array(3).fill().map(() => new M()), this.satBounds = new Array(3).fill().map(() => new wt()), this.alignedSatBounds = new Array(3).fill().map(() => new wt()), this.needsUpdate = !1, s && this.min.copy(s), t && this.max.copy(t), e && this.matrix.copy(e);\n }\n set(s, t, e) {\n this.min.copy(s), this.max.copy(t), this.matrix.copy(e), this.needsUpdate = !0;\n }\n copy(s) {\n this.min.copy(s.min), this.max.copy(s.max), this.matrix.copy(s.matrix), this.needsUpdate = !0;\n }\n}\nat.prototype.update = /* @__PURE__ */ function() {\n return function() {\n const s = this.matrix, t = this.min, e = this.max, i = this.points;\n for (let c = 0; c <= 1; c++)\n for (let h = 0; h <= 1; h++)\n for (let d = 0; d <= 1; d++) {\n const E = 1 * c | 2 * h | 4 * d, u = i[E];\n u.x = c ? e.x : t.x, u.y = h ? e.y : t.y, u.z = d ? e.z : t.z, u.applyMatrix4(s);\n }\n const o = this.satBounds, n = this.satAxes, r = i[0];\n for (let c = 0; c < 3; c++) {\n const h = n[c], d = o[c], E = 1 << c, u = i[E];\n h.subVectors(r, u), d.setFromPoints(h, i);\n }\n const a = this.alignedSatBounds;\n a[0].setFromPointsField(i, \"x\"), a[1].setFromPointsField(i, \"y\"), a[2].setFromPointsField(i, \"z\"), this.invMatrix.copy(this.matrix).invert(), this.needsUpdate = !1;\n };\n}();\nat.prototype.intersectsBox = function() {\n const l = new wt();\n return function(t) {\n this.needsUpdate && this.update();\n const e = t.min, i = t.max, o = this.satBounds, n = this.satAxes, r = this.alignedSatBounds;\n if (l.min = e.x, l.max = i.x, r[0].isSeparated(l) || (l.min = e.y, l.max = i.y, r[1].isSeparated(l)) || (l.min = e.z, l.max = i.z, r[2].isSeparated(l)))\n return !1;\n for (let a = 0; a < 3; a++) {\n const c = n[a], h = o[a];\n if (l.setFromBox(c, t), h.isSeparated(l))\n return !1;\n }\n return !0;\n };\n}();\nat.prototype.intersectsTriangle = function() {\n const l = new Ft(), s = new Array(3), t = new wt(), e = new wt(), i = new M();\n return function(n) {\n this.needsUpdate && this.update(), n.isExtendedTriangle ? n.needsUpdate && n.update() : (l.copy(n), l.update(), n = l);\n const r = this.satBounds, a = this.satAxes;\n s[0] = n.a, s[1] = n.b, s[2] = n.c;\n for (let E = 0; E < 3; E++) {\n const u = r[E], f = a[E];\n if (t.setFromPoints(f, s), u.isSeparated(t))\n return !1;\n }\n const c = n.satBounds, h = n.satAxes, d = this.points;\n for (let E = 0; E < 3; E++) {\n const u = c[E], f = h[E];\n if (t.setFromPoints(f, d), u.isSeparated(t))\n return !1;\n }\n for (let E = 0; E < 3; E++) {\n const u = a[E];\n for (let f = 0; f < 4; f++) {\n const R = h[f];\n if (i.crossVectors(u, R), t.setFromPoints(i, s), e.setFromPoints(i, d), t.isSeparated(e))\n return !1;\n }\n }\n return !0;\n };\n}();\nat.prototype.closestPointToPoint = /* @__PURE__ */ function() {\n return function(s, t) {\n return this.needsUpdate && this.update(), t.copy(s).applyMatrix4(this.invMatrix).clamp(this.min, this.max).applyMatrix4(this.matrix), t;\n };\n}();\nat.prototype.distanceToPoint = function() {\n const l = new M();\n return function(t) {\n return this.closestPointToPoint(t, l), t.distanceTo(l);\n };\n}();\nat.prototype.distanceToBox = function() {\n const l = [\"x\", \"y\", \"z\"], s = new Array(12).fill().map(() => new Lt()), t = new Array(12).fill().map(() => new Lt()), e = new M(), i = new M();\n return function(n, r = 0, a = null, c = null) {\n if (this.needsUpdate && this.update(), this.intersectsBox(n))\n return (a || c) && (n.getCenter(i), this.closestPointToPoint(i, e), n.closestPointToPoint(e, i), a && a.copy(e), c && c.copy(i)), 0;\n const h = r * r, d = n.min, E = n.max, u = this.points;\n let f = 1 / 0;\n for (let m = 0; m < 8; m++) {\n const C = u[m];\n i.copy(C).clamp(d, E);\n const A = C.distanceToSquared(i);\n if (A < f && (f = A, a && a.copy(C), c && c.copy(i), A < h))\n return Math.sqrt(A);\n }\n let R = 0;\n for (let m = 0; m < 3; m++)\n for (let C = 0; C <= 1; C++)\n for (let A = 0; A <= 1; A++) {\n const F = (m + 1) % 3, p = (m + 2) % 3, T = C << F | A << p, O = 1 << m | C << F | A << p, _ = u[T], S = u[O];\n s[R].set(_, S);\n const L = l[m], w = l[F], y = l[p], U = t[R], x = U.start, B = U.end;\n x[L] = d[L], x[w] = C ? d[w] : E[w], x[y] = A ? d[y] : E[w], B[L] = E[L], B[w] = C ? d[w] : E[w], B[y] = A ? d[y] : E[w], R++;\n }\n for (let m = 0; m <= 1; m++)\n for (let C = 0; C <= 1; C++)\n for (let A = 0; A <= 1; A++) {\n i.x = m ? E.x : d.x, i.y = C ? E.y : d.y, i.z = A ? E.z : d.z, this.closestPointToPoint(i, e);\n const F = i.distanceToSquared(e);\n if (F < f && (f = F, a && a.copy(e), c && c.copy(i), F < h))\n return Math.sqrt(F);\n }\n for (let m = 0; m < 12; m++) {\n const C = s[m];\n for (let A = 0; A < 12; A++) {\n const F = t[A];\n Oi(C, F, e, i);\n const p = e.distanceToSquared(i);\n if (p < f && (f = p, a && a.copy(e), c && c.copy(i), p < h))\n return Math.sqrt(p);\n }\n }\n return Math.sqrt(f);\n };\n}();\nclass gi {\n constructor(s) {\n this._getNewPrimitive = s, this._primitives = [];\n }\n getPrimitive() {\n const s = this._primitives;\n return s.length === 0 ? this._getNewPrimitive() : s.pop();\n }\n releasePrimitive(s) {\n this._primitives.push(s);\n }\n}\nclass Oo extends gi {\n constructor() {\n super(() => new Ft());\n }\n}\nconst It = /* @__PURE__ */ new Oo();\nfunction Et(l, s) {\n return s[l + 15] === 65535;\n}\nfunction dt(l, s) {\n return s[l + 6];\n}\nfunction ft(l, s) {\n return s[l + 14];\n}\nfunction pt(l) {\n return l + 8;\n}\nfunction Ct(l, s) {\n return s[l + 6];\n}\nfunction Un(l, s) {\n return s[l + 7];\n}\nclass go {\n constructor() {\n this.float32Array = null, this.uint16Array = null, this.uint32Array = null;\n const s = [];\n let t = null;\n this.setBuffer = (e) => {\n t && s.push(t), t = e, this.float32Array = new Float32Array(e), this.uint16Array = new Uint16Array(e), this.uint32Array = new Uint32Array(e);\n }, this.clearBuffer = () => {\n t = null, this.float32Array = null, this.uint16Array = null, this.uint32Array = null, s.length !== 0 && this.setBuffer(s.pop());\n };\n }\n}\nconst Z = new go();\nlet Yt, Ie;\nconst Jt = [], Ke = /* @__PURE__ */ new gi(() => new Ot());\nfunction _o(l, s, t, e, i, o) {\n Yt = Ke.getPrimitive(), Ie = Ke.getPrimitive(), Jt.push(Yt, Ie), Z.setBuffer(l._roots[s]);\n const n = ai(0, l.geometry, t, e, i, o);\n Z.clearBuffer(), Ke.releasePrimitive(Yt), Ke.releasePrimitive(Ie), Jt.pop(), Jt.pop();\n const r = Jt.length;\n return r > 0 && (Ie = Jt[r - 1], Yt = Jt[r - 2]), n;\n}\nfunction ai(l, s, t, e, i = null, o = 0, n = 0) {\n const { float32Array: r, uint16Array: a, uint32Array: c } = Z;\n let h = l * 2;\n if (Et(h, a)) {\n const E = dt(l, c), u = ft(h, a);\n return K(l, r, Yt), e(E, u, !1, n, o + l, Yt);\n } else {\n let L = function(y) {\n const { uint16Array: U, uint32Array: x } = Z;\n let B = y * 2;\n for (; !Et(B, U); )\n y = pt(y), B = y * 2;\n return dt(y, x);\n }, w = function(y) {\n const { uint16Array: U, uint32Array: x } = Z;\n let B = y * 2;\n for (; !Et(B, U); )\n y = Ct(y, x), B = y * 2;\n return dt(y, x) + ft(B, U);\n };\n const E = pt(l), u = Ct(l, c);\n let f = E, R = u, m, C, A, F;\n if (i && (A = Yt, F = Ie, K(f, r, A), K(R, r, F), m = i(A), C = i(F), C < m)) {\n f = u, R = E;\n const y = m;\n m = C, C = y, A = F;\n }\n A || (A = Yt, K(f, r, A));\n const p = Et(f * 2, a), T = t(A, p, m, n + 1, o + f);\n let O;\n if (T === xi) {\n const y = L(f), x = w(f) - y;\n O = e(y, x, !0, n + 1, o + f, A);\n } else\n O = T && ai(\n f,\n s,\n t,\n e,\n i,\n o,\n n + 1\n );\n if (O)\n return !0;\n F = Ie, K(R, r, F);\n const _ = Et(R * 2, a), S = t(F, _, C, n + 1, o + R);\n let N;\n if (S === xi) {\n const y = L(R), x = w(R) - y;\n N = e(y, x, !0, n + 1, o + R, F);\n } else\n N = S && ai(\n R,\n s,\n t,\n e,\n i,\n o,\n n + 1\n );\n return !!N;\n }\n}\nconst Ae = /* @__PURE__ */ new M(), Hs = /* @__PURE__ */ new M();\nfunction So(l, s, t = {}, e = 0, i = 1 / 0) {\n const o = e * e, n = i * i;\n let r = 1 / 0, a = null;\n if (l.shapecast(\n {\n boundsTraverseOrder: (h) => (Ae.copy(s).clamp(h.min, h.max), Ae.distanceToSquared(s)),\n intersectsBounds: (h, d, E) => E < r && E < n,\n intersectsTriangle: (h, d) => {\n h.closestPointToPoint(s, Ae);\n const E = s.distanceToSquared(Ae);\n return E < r && (Hs.copy(Ae), r = E, a = d), E < o;\n }\n }\n ), r === 1 / 0)\n return null;\n const c = Math.sqrt(r);\n return t.point ? t.point.copy(Hs) : t.point = Hs.clone(), t.distance = c, t.faceIndex = a, t;\n}\nconst te = /* @__PURE__ */ new M(), ee = /* @__PURE__ */ new M(), se = /* @__PURE__ */ new M(), $e = /* @__PURE__ */ new fe(), Je = /* @__PURE__ */ new fe(), ts = /* @__PURE__ */ new fe(), Vi = /* @__PURE__ */ new M(), Gi = /* @__PURE__ */ new M(), zi = /* @__PURE__ */ new M(), es = /* @__PURE__ */ new M();\nfunction No(l, s, t, e, i, o) {\n let n;\n return o === Zn ? n = l.intersectTriangle(e, t, s, !0, i) : n = l.intersectTriangle(s, t, e, o !== Ln, i), n === null ? null : {\n distance: l.origin.distanceTo(i),\n point: i.clone()\n };\n}\nfunction Po(l, s, t, e, i, o, n, r, a) {\n te.fromBufferAttribute(s, o), ee.fromBufferAttribute(s, n), se.fromBufferAttribute(s, r);\n const c = No(l, te, ee, se, es, a);\n if (c) {\n e && ($e.fromBufferAttribute(e, o), Je.fromBufferAttribute(e, n), ts.fromBufferAttribute(e, r), c.uv = ue.getInterpolation(es, te, ee, se, $e, Je, ts, new fe())), i && ($e.fromBufferAttribute(i, o), Je.fromBufferAttribute(i, n), ts.fromBufferAttribute(i, r), c.uv1 = ue.getInterpolation(es, te, ee, se, $e, Je, ts, new fe())), t && (Vi.fromBufferAttribute(t, o), Gi.fromBufferAttribute(t, n), zi.fromBufferAttribute(t, r), c.normal = ue.getInterpolation(es, te, ee, se, Vi, Gi, zi, new M()), c.normal.dot(l.direction) > 0 && c.normal.multiplyScalar(-1));\n const h = {\n a: o,\n b: n,\n c: r,\n normal: new M(),\n materialIndex: 0\n };\n ue.getNormal(te, ee, se, h.normal), c.face = h, c.faceIndex = o;\n }\n return c;\n}\nfunction xs(l, s, t, e, i) {\n const o = e * 3;\n let n = o + 0, r = o + 1, a = o + 2;\n const c = l.index;\n l.index && (n = c.getX(n), r = c.getX(r), a = c.getX(a));\n const { position: h, normal: d, uv: E, uv1: u } = l.attributes, f = Po(t, h, d, E, u, n, r, a, s);\n return f ? (f.faceIndex = e, i && i.push(f), f) : null;\n}\nfunction tt(l, s, t, e) {\n const i = l.a, o = l.b, n = l.c;\n let r = s, a = s + 1, c = s + 2;\n t && (r = t.getX(r), a = t.getX(a), c = t.getX(c)), i.x = e.getX(r), i.y = e.getY(r), i.z = e.getZ(r), o.x = e.getX(a), o.y = e.getY(a), o.z = e.getZ(a), n.x = e.getX(c), n.y = e.getY(c), n.z = e.getZ(c);\n}\nfunction Lo(l, s, t, e, i, o) {\n const { geometry: n, _indirectBuffer: r } = l;\n for (let a = e, c = e + i; a < c; a++)\n xs(n, s, t, a, o);\n}\nfunction yo(l, s, t, e, i) {\n const { geometry: o, _indirectBuffer: n } = l;\n let r = 1 / 0, a = null;\n for (let c = e, h = e + i; c < h; c++) {\n let d;\n d = xs(o, s, t, c), d && d.distance < r && (a = d, r = d.distance);\n }\n return a;\n}\nfunction Mo(l, s, t, e, i, o, n) {\n const { geometry: r } = t, { index: a } = r, c = r.attributes.position;\n for (let h = l, d = s + l; h < d; h++) {\n let E;\n if (E = h, tt(n, E * 3, a, c), n.needsUpdate = !0, e(n, E, i, o))\n return !0;\n }\n return !1;\n}\nfunction wo(l, s = null) {\n s && Array.isArray(s) && (s = new Set(s));\n const t = l.geometry, e = t.index ? t.index.array : null, i = t.attributes.position;\n let o, n, r, a, c = 0;\n const h = l._roots;\n for (let E = 0, u = h.length; E < u; E++)\n o = h[E], n = new Uint32Array(o), r = new Uint16Array(o), a = new Float32Array(o), d(0, c), c += o.byteLength;\n function d(E, u, f = !1) {\n const R = E * 2;\n if (r[R + 15] === Us) {\n const C = n[E + 6], A = r[R + 14];\n let F = 1 / 0, p = 1 / 0, T = 1 / 0, O = -1 / 0, _ = -1 / 0, S = -1 / 0;\n for (let N = 3 * C, L = 3 * (C + A); N < L; N++) {\n let w = e[N];\n const y = i.getX(w), U = i.getY(w), x = i.getZ(w);\n y < F && (F = y), y > O && (O = y), U < p && (p = U), U > _ && (_ = U), x < T && (T = x), x > S && (S = x);\n }\n return a[E + 0] !== F || a[E + 1] !== p || a[E + 2] !== T || a[E + 3] !== O || a[E + 4] !== _ || a[E + 5] !== S ? (a[E + 0] = F, a[E + 1] = p, a[E + 2] = T, a[E + 3] = O, a[E + 4] = _, a[E + 5] = S, !0) : !1;\n } else {\n const C = E + 8, A = n[E + 6], F = C + u, p = A + u;\n let T = f, O = !1, _ = !1;\n s ? T || (O = s.has(F), _ = s.has(p), T = !O && !_) : (O = !0, _ = !0);\n const S = T || O, N = T || _;\n let L = !1;\n S && (L = d(C, u, T));\n let w = !1;\n N && (w = d(A, u, T));\n const y = L || w;\n if (y)\n for (let U = 0; U < 3; U++) {\n const x = C + U, B = A + U, H = a[x], q = a[x + 3], st = a[B], Q = a[B + 3];\n a[E + U] = H < st ? H : st, a[E + U + 3] = q > Q ? q : Q;\n }\n return y;\n }\n }\n}\nconst Hi = /* @__PURE__ */ new Ot();\nfunction Gt(l, s, t, e) {\n return K(l, s, Hi), t.intersectBox(Hi, e);\n}\nfunction Do(l, s, t, e, i, o) {\n const { geometry: n, _indirectBuffer: r } = l;\n for (let a = e, c = e + i; a < c; a++) {\n let h = r ? r[a] : a;\n xs(n, s, t, h, o);\n }\n}\nfunction Uo(l, s, t, e, i) {\n const { geometry: o, _indirectBuffer: n } = l;\n let r = 1 / 0, a = null;\n for (let c = e, h = e + i; c < h; c++) {\n let d;\n d = xs(o, s, t, n ? n[c] : c), d && d.distance < r && (a = d, r = d.distance);\n }\n return a;\n}\nfunction xo(l, s, t, e, i, o, n) {\n const { geometry: r } = t, { index: a } = r, c = r.attributes.position;\n for (let h = l, d = s + l; h < d; h++) {\n let E;\n if (E = t.resolveTriangleIndex(h), tt(n, E * 3, a, c), n.needsUpdate = !0, e(n, E, i, o))\n return !0;\n }\n return !1;\n}\nconst ki = /* @__PURE__ */ new M();\nfunction bo(l, s, t, e, i) {\n Z.setBuffer(l._roots[s]), ci(0, l, t, e, i), Z.clearBuffer();\n}\nfunction ci(l, s, t, e, i) {\n const { float32Array: o, uint16Array: n, uint32Array: r } = Z, a = l * 2;\n if (Et(a, n)) {\n const h = dt(l, r), d = ft(a, n);\n Lo(s, t, e, h, d, i);\n } else {\n const h = pt(l);\n Gt(h, o, e, ki) && ci(h, s, t, e, i);\n const d = Ct(l, r);\n Gt(d, o, e, ki) && ci(d, s, t, e, i);\n }\n}\nconst Wi = /* @__PURE__ */ new M(), vo = [\"x\", \"y\", \"z\"];\nfunction Bo(l, s, t, e) {\n Z.setBuffer(l._roots[s]);\n const i = li(0, l, t, e);\n return Z.clearBuffer(), i;\n}\nfunction li(l, s, t, e) {\n const { float32Array: i, uint16Array: o, uint32Array: n } = Z;\n let r = l * 2;\n if (Et(r, o)) {\n const c = dt(l, n), h = ft(r, o);\n return yo(s, t, e, c, h);\n } else {\n const c = Un(l, n), h = vo[c], E = e.direction[h] >= 0;\n let u, f;\n E ? (u = pt(l), f = Ct(l, n)) : (u = Ct(l, n), f = pt(l));\n const m = Gt(u, i, e, Wi) ? li(u, s, t, e) : null;\n if (m) {\n const F = m.point[h];\n if (E ? F <= i[f + c] : (\n // min bounding data\n F >= i[f + c + 3]\n ))\n return m;\n }\n const A = Gt(f, i, e, Wi) ? li(f, s, t, e) : null;\n return m && A ? m.distance <= A.distance ? m : A : m || A || null;\n }\n}\nconst ss = /* @__PURE__ */ new Ot(), ie = /* @__PURE__ */ new Ft(), ne = /* @__PURE__ */ new Ft(), Fe = /* @__PURE__ */ new yt(), Xi = /* @__PURE__ */ new at(), is = /* @__PURE__ */ new at();\nfunction Yo(l, s, t, e) {\n Z.setBuffer(l._roots[s]);\n const i = hi(0, l, t, e);\n return Z.clearBuffer(), i;\n}\nfunction hi(l, s, t, e, i = null) {\n const { float32Array: o, uint16Array: n, uint32Array: r } = Z;\n let a = l * 2;\n if (i === null && (t.boundingBox || t.computeBoundingBox(), Xi.set(t.boundingBox.min, t.boundingBox.max, e), i = Xi), Et(a, n)) {\n const h = s.geometry, d = h.index, E = h.attributes.position, u = t.index, f = t.attributes.position, R = dt(l, r), m = ft(a, n);\n if (Fe.copy(e).invert(), t.boundsTree)\n return K(l, o, is), is.matrix.copy(Fe), is.needsUpdate = !0, t.boundsTree.shapecast({\n intersectsBounds: (A) => is.intersectsBox(A),\n intersectsTriangle: (A) => {\n A.a.applyMatrix4(e), A.b.applyMatrix4(e), A.c.applyMatrix4(e), A.needsUpdate = !0;\n for (let F = R * 3, p = (m + R) * 3; F < p; F += 3)\n if (tt(ne, F, d, E), ne.needsUpdate = !0, A.intersectsTriangle(ne))\n return !0;\n return !1;\n }\n });\n for (let C = R * 3, A = (m + R) * 3; C < A; C += 3) {\n tt(ie, C, d, E), ie.a.applyMatrix4(Fe), ie.b.applyMatrix4(Fe), ie.c.applyMatrix4(Fe), ie.needsUpdate = !0;\n for (let F = 0, p = u.count; F < p; F += 3)\n if (tt(ne, F, u, f), ne.needsUpdate = !0, ie.intersectsTriangle(ne))\n return !0;\n }\n } else {\n const h = l + 8, d = r[l + 6];\n return K(h, o, ss), !!(i.intersectsBox(ss) && hi(h, s, t, e, i) || (K(d, o, ss), i.intersectsBox(ss) && hi(d, s, t, e, i)));\n }\n}\nconst ns = /* @__PURE__ */ new yt(), ks = /* @__PURE__ */ new at(), Oe = /* @__PURE__ */ new at(), Vo = /* @__PURE__ */ new M(), Go = /* @__PURE__ */ new M(), zo = /* @__PURE__ */ new M(), Ho = /* @__PURE__ */ new M();\nfunction ko(l, s, t, e = {}, i = {}, o = 0, n = 1 / 0) {\n s.boundingBox || s.computeBoundingBox(), ks.set(s.boundingBox.min, s.boundingBox.max, t), ks.needsUpdate = !0;\n const r = l.geometry, a = r.attributes.position, c = r.index, h = s.attributes.position, d = s.index, E = It.getPrimitive(), u = It.getPrimitive();\n let f = Vo, R = Go, m = null, C = null;\n i && (m = zo, C = Ho);\n let A = 1 / 0, F = null, p = null;\n return ns.copy(t).invert(), Oe.matrix.copy(ns), l.shapecast(\n {\n boundsTraverseOrder: (T) => ks.distanceToBox(T),\n intersectsBounds: (T, O, _) => _ < A && _ < n ? (O && (Oe.min.copy(T.min), Oe.max.copy(T.max), Oe.needsUpdate = !0), !0) : !1,\n intersectsRange: (T, O) => {\n if (s.boundsTree)\n return s.boundsTree.shapecast({\n boundsTraverseOrder: (S) => Oe.distanceToBox(S),\n intersectsBounds: (S, N, L) => L < A && L < n,\n intersectsRange: (S, N) => {\n for (let L = S, w = S + N; L < w; L++) {\n tt(u, 3 * L, d, h), u.a.applyMatrix4(t), u.b.applyMatrix4(t), u.c.applyMatrix4(t), u.needsUpdate = !0;\n for (let y = T, U = T + O; y < U; y++) {\n tt(E, 3 * y, c, a), E.needsUpdate = !0;\n const x = E.distanceToTriangle(u, f, m);\n if (x < A && (R.copy(f), C && C.copy(m), A = x, F = y, p = L), x < o)\n return !0;\n }\n }\n }\n });\n {\n const _ = pe(s);\n for (let S = 0, N = _; S < N; S++) {\n tt(u, 3 * S, d, h), u.a.applyMatrix4(t), u.b.applyMatrix4(t), u.c.applyMatrix4(t), u.needsUpdate = !0;\n for (let L = T, w = T + O; L < w; L++) {\n tt(E, 3 * L, c, a), E.needsUpdate = !0;\n const y = E.distanceToTriangle(u, f, m);\n if (y < A && (R.copy(f), C && C.copy(m), A = y, F = L, p = S), y < o)\n return !0;\n }\n }\n }\n }\n }\n ), It.releasePrimitive(E), It.releasePrimitive(u), A === 1 / 0 ? null : (e.point ? e.point.copy(R) : e.point = R.clone(), e.distance = A, e.faceIndex = F, i && (i.point ? i.point.copy(C) : i.point = C.clone(), i.point.applyMatrix4(ns), R.applyMatrix4(ns), i.distance = R.sub(i.point).length(), i.faceIndex = p), e);\n}\nfunction Wo(l, s = null) {\n s && Array.isArray(s) && (s = new Set(s));\n const t = l.geometry, e = t.index ? t.index.array : null, i = t.attributes.position;\n let o, n, r, a, c = 0;\n const h = l._roots;\n for (let E = 0, u = h.length; E < u; E++)\n o = h[E], n = new Uint32Array(o), r = new Uint16Array(o), a = new Float32Array(o), d(0, c), c += o.byteLength;\n function d(E, u, f = !1) {\n const R = E * 2;\n if (r[R + 15] === Us) {\n const C = n[E + 6], A = r[R + 14];\n let F = 1 / 0, p = 1 / 0, T = 1 / 0, O = -1 / 0, _ = -1 / 0, S = -1 / 0;\n for (let N = C, L = C + A; N < L; N++) {\n const w = 3 * l.resolveTriangleIndex(N);\n for (let y = 0; y < 3; y++) {\n let U = w + y;\n U = e ? e[U] : U;\n const x = i.getX(U), B = i.getY(U), H = i.getZ(U);\n x < F && (F = x), x > O && (O = x), B < p && (p = B), B > _ && (_ = B), H < T && (T = H), H > S && (S = H);\n }\n }\n return a[E + 0] !== F || a[E + 1] !== p || a[E + 2] !== T || a[E + 3] !== O || a[E + 4] !== _ || a[E + 5] !== S ? (a[E + 0] = F, a[E + 1] = p, a[E + 2] = T, a[E + 3] = O, a[E + 4] = _, a[E + 5] = S, !0) : !1;\n } else {\n const C = E + 8, A = n[E + 6], F = C + u, p = A + u;\n let T = f, O = !1, _ = !1;\n s ? T || (O = s.has(F), _ = s.has(p), T = !O && !_) : (O = !0, _ = !0);\n const S = T || O, N = T || _;\n let L = !1;\n S && (L = d(C, u, T));\n let w = !1;\n N && (w = d(A, u, T));\n const y = L || w;\n if (y)\n for (let U = 0; U < 3; U++) {\n const x = C + U, B = A + U, H = a[x], q = a[x + 3], st = a[B], Q = a[B + 3];\n a[E + U] = H < st ? H : st, a[E + U + 3] = q > Q ? q : Q;\n }\n return y;\n }\n }\n}\nconst Zi = /* @__PURE__ */ new M();\nfunction Xo(l, s, t, e, i) {\n Z.setBuffer(l._roots[s]), Ei(0, l, t, e, i), Z.clearBuffer();\n}\nfunction Ei(l, s, t, e, i) {\n const { float32Array: o, uint16Array: n, uint32Array: r } = Z, a = l * 2;\n if (Et(a, n)) {\n const h = dt(l, r), d = ft(a, n);\n Do(s, t, e, h, d, i);\n } else {\n const h = pt(l);\n Gt(h, o, e, Zi) && Ei(h, s, t, e, i);\n const d = Ct(l, r);\n Gt(d, o, e, Zi) && Ei(d, s, t, e, i);\n }\n}\nconst Qi = /* @__PURE__ */ new M(), Zo = [\"x\", \"y\", \"z\"];\nfunction Qo(l, s, t, e) {\n Z.setBuffer(l._roots[s]);\n const i = di(0, l, t, e);\n return Z.clearBuffer(), i;\n}\nfunction di(l, s, t, e) {\n const { float32Array: i, uint16Array: o, uint32Array: n } = Z;\n let r = l * 2;\n if (Et(r, o)) {\n const c = dt(l, n), h = ft(r, o);\n return Uo(s, t, e, c, h);\n } else {\n const c = Un(l, n), h = Zo[c], E = e.direction[h] >= 0;\n let u, f;\n E ? (u = pt(l), f = Ct(l, n)) : (u = Ct(l, n), f = pt(l));\n const m = Gt(u, i, e, Qi) ? di(u, s, t, e) : null;\n if (m) {\n const F = m.point[h];\n if (E ? F <= i[f + c] : (\n // min bounding data\n F >= i[f + c + 3]\n ))\n return m;\n }\n const A = Gt(f, i, e, Qi) ? di(f, s, t, e) : null;\n return m && A ? m.distance <= A.distance ? m : A : m || A || null;\n }\n}\nconst os = /* @__PURE__ */ new Ot(), oe = /* @__PURE__ */ new Ft(), re = /* @__PURE__ */ new Ft(), ge = /* @__PURE__ */ new yt(), ji = /* @__PURE__ */ new at(), rs = /* @__PURE__ */ new at();\nfunction jo(l, s, t, e) {\n Z.setBuffer(l._roots[s]);\n const i = ui(0, l, t, e);\n return Z.clearBuffer(), i;\n}\nfunction ui(l, s, t, e, i = null) {\n const { float32Array: o, uint16Array: n, uint32Array: r } = Z;\n let a = l * 2;\n if (i === null && (t.boundingBox || t.computeBoundingBox(), ji.set(t.boundingBox.min, t.boundingBox.max, e), i = ji), Et(a, n)) {\n const h = s.geometry, d = h.index, E = h.attributes.position, u = t.index, f = t.attributes.position, R = dt(l, r), m = ft(a, n);\n if (ge.copy(e).invert(), t.boundsTree)\n return K(l, o, rs), rs.matrix.copy(ge), rs.needsUpdate = !0, t.boundsTree.shapecast({\n intersectsBounds: (A) => rs.intersectsBox(A),\n intersectsTriangle: (A) => {\n A.a.applyMatrix4(e), A.b.applyMatrix4(e), A.c.applyMatrix4(e), A.needsUpdate = !0;\n for (let F = R, p = m + R; F < p; F++)\n if (tt(re, 3 * s.resolveTriangleIndex(F), d, E), re.needsUpdate = !0, A.intersectsTriangle(re))\n return !0;\n return !1;\n }\n });\n for (let C = R, A = m + R; C < A; C++) {\n const F = s.resolveTriangleIndex(C);\n tt(oe, 3 * F, d, E), oe.a.applyMatrix4(ge), oe.b.applyMatrix4(ge), oe.c.applyMatrix4(ge), oe.needsUpdate = !0;\n for (let p = 0, T = u.count; p < T; p += 3)\n if (tt(re, p, u, f), re.needsUpdate = !0, oe.intersectsTriangle(re))\n return !0;\n }\n } else {\n const h = l + 8, d = r[l + 6];\n return K(h, o, os), !!(i.intersectsBox(os) && ui(h, s, t, e, i) || (K(d, o, os), i.intersectsBox(os) && ui(d, s, t, e, i)));\n }\n}\nconst as = /* @__PURE__ */ new yt(), Ws = /* @__PURE__ */ new at(), _e = /* @__PURE__ */ new at(), qo = /* @__PURE__ */ new M(), Ko = /* @__PURE__ */ new M(), $o = /* @__PURE__ */ new M(), Jo = /* @__PURE__ */ new M();\nfunction tr(l, s, t, e = {}, i = {}, o = 0, n = 1 / 0) {\n s.boundingBox || s.computeBoundingBox(), Ws.set(s.boundingBox.min, s.boundingBox.max, t), Ws.needsUpdate = !0;\n const r = l.geometry, a = r.attributes.position, c = r.index, h = s.attributes.position, d = s.index, E = It.getPrimitive(), u = It.getPrimitive();\n let f = qo, R = Ko, m = null, C = null;\n i && (m = $o, C = Jo);\n let A = 1 / 0, F = null, p = null;\n return as.copy(t).invert(), _e.matrix.copy(as), l.shapecast(\n {\n boundsTraverseOrder: (T) => Ws.distanceToBox(T),\n intersectsBounds: (T, O, _) => _ < A && _ < n ? (O && (_e.min.copy(T.min), _e.max.copy(T.max), _e.needsUpdate = !0), !0) : !1,\n intersectsRange: (T, O) => {\n if (s.boundsTree) {\n const _ = s.boundsTree;\n return _.shapecast({\n boundsTraverseOrder: (S) => _e.distanceToBox(S),\n intersectsBounds: (S, N, L) => L < A && L < n,\n intersectsRange: (S, N) => {\n for (let L = S, w = S + N; L < w; L++) {\n const y = _.resolveTriangleIndex(L);\n tt(u, 3 * y, d, h), u.a.applyMatrix4(t), u.b.applyMatrix4(t), u.c.applyMatrix4(t), u.needsUpdate = !0;\n for (let U = T, x = T + O; U < x; U++) {\n const B = l.resolveTriangleIndex(U);\n tt(E, 3 * B, c, a), E.needsUpdate = !0;\n const H = E.distanceToTriangle(u, f, m);\n if (H < A && (R.copy(f), C && C.copy(m), A = H, F = U, p = L), H < o)\n return !0;\n }\n }\n }\n });\n } else {\n const _ = pe(s);\n for (let S = 0, N = _; S < N; S++) {\n tt(u, 3 * S, d, h), u.a.applyMatrix4(t), u.b.applyMatrix4(t), u.c.applyMatrix4(t), u.needsUpdate = !0;\n for (let L = T, w = T + O; L < w; L++) {\n const y = l.resolveTriangleIndex(L);\n tt(E, 3 * y, c, a), E.needsUpdate = !0;\n const U = E.distanceToTriangle(u, f, m);\n if (U < A && (R.copy(f), C && C.copy(m), A = U, F = L, p = S), U < o)\n return !0;\n }\n }\n }\n }\n }\n ), It.releasePrimitive(E), It.releasePrimitive(u), A === 1 / 0 ? null : (e.point ? e.point.copy(R) : e.point = R.clone(), e.distance = A, e.faceIndex = F, i && (i.point ? i.point.copy(C) : i.point = C.clone(), i.point.applyMatrix4(as), R.applyMatrix4(as), i.distance = R.sub(i.point).length(), i.faceIndex = p), e);\n}\nfunction er() {\n return typeof SharedArrayBuffer < \"u\";\n}\nconst xe = new Z.constructor(), As = new Z.constructor(), vt = new gi(() => new Ot()), ae = new Ot(), ce = new Ot(), Xs = new Ot(), Zs = new Ot();\nlet Qs = !1;\nfunction sr(l, s, t, e) {\n if (Qs)\n throw new Error(\"MeshBVH: Recursive calls to bvhcast not supported.\");\n Qs = !0;\n const i = l._roots, o = s._roots;\n let n, r = 0, a = 0;\n const c = new yt().copy(t).invert();\n for (let h = 0, d = i.length; h < d; h++) {\n xe.setBuffer(i[h]), a = 0;\n const E = vt.getPrimitive();\n K(0, xe.float32Array, E), E.applyMatrix4(c);\n for (let u = 0, f = o.length; u < f && (As.setBuffer(o[h]), n = Tt(\n 0,\n 0,\n t,\n c,\n e,\n r,\n a,\n 0,\n 0,\n E\n ), As.clearBuffer(), a += o[u].length, !n); u++)\n ;\n if (vt.releasePrimitive(E), xe.clearBuffer(), r += i[h].length, n)\n break;\n }\n return Qs = !1, n;\n}\nfunction Tt(l, s, t, e, i, o = 0, n = 0, r = 0, a = 0, c = null, h = !1) {\n let d, E;\n h ? (d = As, E = xe) : (d = xe, E = As);\n const u = d.float32Array, f = d.uint32Array, R = d.uint16Array, m = E.float32Array, C = E.uint32Array, A = E.uint16Array, F = l * 2, p = s * 2, T = Et(F, R), O = Et(p, A);\n let _ = !1;\n if (O && T)\n h ? _ = i(\n dt(s, C),\n ft(s * 2, A),\n dt(l, f),\n ft(l * 2, R),\n a,\n n + s,\n r,\n o + l\n ) : _ = i(\n dt(l, f),\n ft(l * 2, R),\n dt(s, C),\n ft(s * 2, A),\n r,\n o + l,\n a,\n n + s\n );\n else if (O) {\n const S = vt.getPrimitive();\n K(s, m, S), S.applyMatrix4(t);\n const N = pt(l), L = Ct(l, f);\n K(N, u, ae), K(L, u, ce);\n const w = S.intersectsBox(ae), y = S.intersectsBox(ce);\n _ = w && Tt(\n s,\n N,\n e,\n t,\n i,\n n,\n o,\n a,\n r + 1,\n S,\n !h\n ) || y && Tt(\n s,\n L,\n e,\n t,\n i,\n n,\n o,\n a,\n r + 1,\n S,\n !h\n ), vt.releasePrimitive(S);\n } else {\n const S = pt(s), N = Ct(s, C);\n K(S, m, Xs), K(N, m, Zs);\n const L = c.intersectsBox(Xs), w = c.intersectsBox(Zs);\n if (L && w)\n _ = Tt(\n l,\n S,\n t,\n e,\n i,\n o,\n n,\n r,\n a + 1,\n c,\n h\n ) || Tt(\n l,\n N,\n t,\n e,\n i,\n o,\n n,\n r,\n a + 1,\n c,\n h\n );\n else if (L)\n if (T)\n _ = Tt(\n l,\n S,\n t,\n e,\n i,\n o,\n n,\n r,\n a + 1,\n c,\n h\n );\n else {\n const y = vt.getPrimitive();\n y.copy(Xs).applyMatrix4(t);\n const U = pt(l), x = Ct(l, f);\n K(U, u, ae), K(x, u, ce);\n const B = y.intersectsBox(ae), H = y.intersectsBox(ce);\n _ = B && Tt(\n S,\n U,\n e,\n t,\n i,\n n,\n o,\n a,\n r + 1,\n y,\n !h\n ) || H && Tt(\n S,\n x,\n e,\n t,\n i,\n n,\n o,\n a,\n r + 1,\n y,\n !h\n ), vt.releasePrimitive(y);\n }\n else if (w)\n if (T)\n _ = Tt(\n l,\n N,\n t,\n e,\n i,\n o,\n n,\n r,\n a + 1,\n c,\n h\n );\n else {\n const y = vt.getPrimitive();\n y.copy(Zs).applyMatrix4(t);\n const U = pt(l), x = Ct(l, f);\n K(U, u, ae), K(x, u, ce);\n const B = y.intersectsBox(ae), H = y.intersectsBox(ce);\n _ = B && Tt(\n N,\n U,\n e,\n t,\n i,\n n,\n o,\n a,\n r + 1,\n y,\n !h\n ) || H && Tt(\n N,\n x,\n e,\n t,\n i,\n n,\n o,\n a,\n r + 1,\n y,\n !h\n ), vt.releasePrimitive(y);\n }\n }\n return _;\n}\nconst cs = /* @__PURE__ */ new at(), qi = /* @__PURE__ */ new Ot();\nclass _i {\n static serialize(s, t = {}) {\n t = {\n cloneBuffers: !0,\n ...t\n };\n const e = s.geometry, i = s._roots, o = s._indirectBuffer, n = e.getIndex();\n let r;\n return t.cloneBuffers ? r = {\n roots: i.map((a) => a.slice()),\n index: n.array.slice(),\n indirectBuffer: o ? o.slice() : null\n } : r = {\n roots: i,\n index: n.array,\n indirectBuffer: o\n }, r;\n }\n static deserialize(s, t, e = {}) {\n e = {\n setIndex: !0,\n indirect: !!s.indirectBuffer,\n ...e\n };\n const { index: i, roots: o, indirectBuffer: n } = s, r = new _i(t, { ...e, [Vs]: !0 });\n if (r._roots = o, r._indirectBuffer = n || null, e.setIndex) {\n const a = t.getIndex();\n if (a === null) {\n const c = new Pn(s.index, 1, !1);\n t.setIndex(c);\n } else\n a.array !== i && (a.array.set(i), a.needsUpdate = !0);\n }\n return r;\n }\n get indirect() {\n return !!this._indirectBuffer;\n }\n constructor(s, t = {}) {\n if (s.isBufferGeometry) {\n if (s.index && s.index.isInterleavedBufferAttribute)\n throw new Error(\"MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.\");\n } else\n throw new Error(\"MeshBVH: Only BufferGeometries are supported.\");\n if (t = Object.assign({\n strategy: Mn,\n maxDepth: 40,\n maxLeafTris: 10,\n verbose: !0,\n useSharedArrayBuffer: !1,\n setBoundingBox: !0,\n onProgress: null,\n indirect: !1,\n // undocumented options\n // Whether to skip generating the tree. Used for deserialization.\n [Vs]: !1\n }, t), t.useSharedArrayBuffer && !er())\n throw new Error(\"MeshBVH: SharedArrayBuffer is not available.\");\n this.geometry = s, this._roots = null, this._indirectBuffer = null, t[Vs] || (mo(this, t), !s.boundingBox && t.setBoundingBox && (s.boundingBox = this.getBoundingBox(new Ot())));\n const { _indirectBuffer: e } = this;\n this.resolveTriangleIndex = t.indirect ? (i) => e[i] : (i) => i;\n }\n refit(s = null) {\n return (this.indirect ? Wo : wo)(this, s);\n }\n traverse(s, t = 0) {\n const e = this._roots[t], i = new Uint32Array(e), o = new Uint16Array(e);\n n(0);\n function n(r, a = 0) {\n const c = r * 2, h = o[c + 15] === Us;\n if (h) {\n const d = i[r + 6], E = o[c + 14];\n s(a, h, new Float32Array(e, r * 4, 6), d, E);\n } else {\n const d = r + Cs / 4, E = i[r + 6], u = i[r + 7];\n s(a, h, new Float32Array(e, r * 4, 6), u) || (n(d, a + 1), n(E, a + 1));\n }\n }\n }\n /* Core Cast Functions */\n raycast(s, t = wi) {\n const e = this._roots, i = this.geometry, o = [], n = t.isMaterial, r = Array.isArray(t), a = i.groups, c = n ? t.side : t, h = this.indirect ? Xo : bo;\n for (let d = 0, E = e.length; d < E; d++) {\n const u = r ? t[a[d].materialIndex].side : c, f = o.length;\n if (h(this, d, u, s, o), r) {\n const R = a[d].materialIndex;\n for (let m = f, C = o.length; m < C; m++)\n o[m].face.materialIndex = R;\n }\n }\n return o;\n }\n raycastFirst(s, t = wi) {\n const e = this._roots, i = this.geometry, o = t.isMaterial, n = Array.isArray(t);\n let r = null;\n const a = i.groups, c = o ? t.side : t, h = this.indirect ? Qo : Bo;\n for (let d = 0, E = e.length; d < E; d++) {\n const u = n ? t[a[d].materialIndex].side : c, f = h(this, d, u, s);\n f != null && (r == null || f.distance < r.distance) && (r = f, n && (f.face.materialIndex = a[d].materialIndex));\n }\n return r;\n }\n intersectsGeometry(s, t) {\n let e = !1;\n const i = this._roots, o = this.indirect ? jo : Yo;\n for (let n = 0, r = i.length; n < r && (e = o(this, n, s, t), !e); n++)\n ;\n return e;\n }\n shapecast(s) {\n const t = It.getPrimitive(), e = this.indirect ? xo : Mo;\n let {\n boundsTraverseOrder: i,\n intersectsBounds: o,\n intersectsRange: n,\n intersectsTriangle: r\n } = s;\n if (n && r) {\n const d = n;\n n = (E, u, f, R, m) => d(E, u, f, R, m) ? !0 : e(E, u, this, r, f, R, t);\n } else\n n || (r ? n = (d, E, u, f) => e(d, E, this, r, u, f, t) : n = (d, E, u) => u);\n let a = !1, c = 0;\n const h = this._roots;\n for (let d = 0, E = h.length; d < E; d++) {\n const u = h[d];\n if (a = _o(this, d, o, n, i, c), a)\n break;\n c += u.byteLength;\n }\n return It.releasePrimitive(t), a;\n }\n bvhcast(s, t, e) {\n let {\n intersectsRanges: i,\n intersectsTriangles: o\n } = e;\n const n = It.getPrimitive(), r = this.geometry.index, a = this.geometry.attributes.position, c = this.indirect ? (f) => {\n const R = this.resolveTriangleIndex(f);\n tt(n, R * 3, r, a);\n } : (f) => {\n tt(n, f * 3, r, a);\n }, h = It.getPrimitive(), d = s.geometry.index, E = s.geometry.attributes.position, u = s.indirect ? (f) => {\n const R = s.resolveTriangleIndex(f);\n tt(h, R * 3, d, E);\n } : (f) => {\n tt(h, f * 3, d, E);\n };\n if (o) {\n const f = (R, m, C, A, F, p, T, O) => {\n for (let _ = C, S = C + A; _ < S; _++) {\n u(_), h.a.applyMatrix4(t), h.b.applyMatrix4(t), h.c.applyMatrix4(t), h.needsUpdate = !0;\n for (let N = R, L = R + m; N < L; N++)\n if (c(N), n.needsUpdate = !0, o(n, h, N, _, F, p, T, O))\n return !0;\n }\n return !1;\n };\n if (i) {\n const R = i;\n i = function(m, C, A, F, p, T, O, _) {\n return R(m, C, A, F, p, T, O, _) ? !0 : f(m, C, A, F, p, T, O, _);\n };\n } else\n i = f;\n }\n return sr(this, s, t, i);\n }\n /* Derived Cast Functions */\n intersectsBox(s, t) {\n return cs.set(s.min, s.max, t), cs.needsUpdate = !0, this.shapecast(\n {\n intersectsBounds: (e) => cs.intersectsBox(e),\n intersectsTriangle: (e) => cs.intersectsTriangle(e)\n }\n );\n }\n intersectsSphere(s) {\n return this.shapecast(\n {\n intersectsBounds: (t) => s.intersectsBox(t),\n intersectsTriangle: (t) => t.intersectsSphere(s)\n }\n );\n }\n closestPointToGeometry(s, t, e = {}, i = {}, o = 0, n = 1 / 0) {\n return (this.indirect ? tr : ko)(\n this,\n s,\n t,\n e,\n i,\n o,\n n\n );\n }\n closestPointToPoint(s, t = {}, e = 0, i = 1 / 0) {\n return So(\n this,\n s,\n t,\n e,\n i\n );\n }\n getBoundingBox(s) {\n return s.makeEmpty(), this._roots.forEach((e) => {\n K(0, new Float32Array(e), qi), s.union(qi);\n }), s;\n }\n}\nfunction Ki(l, s, t) {\n return l === null || (l.point.applyMatrix4(s.matrixWorld), l.distance = l.point.distanceTo(t.ray.origin), l.object = s, l.distance < t.near || l.distance > t.far) ? null : l;\n}\nconst js = /* @__PURE__ */ new Qn(), $i = /* @__PURE__ */ new yt(), ir = v.prototype.raycast;\nfunction nr(l, s) {\n if (this.geometry.boundsTree) {\n if (this.material === void 0)\n return;\n $i.copy(this.matrixWorld).invert(), js.copy(l.ray).applyMatrix4($i);\n const t = this.geometry.boundsTree;\n if (l.firstHitOnly === !0) {\n const e = Ki(t.raycastFirst(js, this.material), this, l);\n e && s.push(e);\n } else {\n const e = t.raycast(js, this.material);\n for (let i = 0, o = e.length; i < o; i++) {\n const n = Ki(e[i], this, l);\n n && s.push(n);\n }\n }\n } else\n ir.call(this, l, s);\n}\nfunction or(l) {\n return this.boundsTree = new _i(this, l), this.boundsTree;\n}\nfunction rr() {\n this.boundsTree = null;\n}\nclass D {\n constructor() {\n /** Triggers all the callbacks assigned to this event. */\n I(this, \"trigger\", (s) => {\n const t = this.handlers.slice(0);\n for (const e of t)\n e(s);\n });\n I(this, \"handlers\", []);\n }\n /**\n * Add a callback to this event instance.\n * @param handler - the callback to be added to this event.\n */\n add(s) {\n this.handlers.push(s);\n }\n /**\n * Removes a callback from this event instance.\n * @param handler - the callback to be removed from this event.\n */\n remove(s) {\n this.handlers = this.handlers.filter((t) => t !== s);\n }\n /** Gets rid of all the suscribed events. */\n reset() {\n this.handlers.length = 0;\n }\n}\nclass Ts {\n constructor() {\n /** Triggers all the callbacks assigned to this event. */\n I(this, \"trigger\", async (s) => {\n const t = this.handlers.slice(0);\n for (const e of t)\n await e(s);\n });\n I(this, \"handlers\", []);\n }\n /**\n * Add a callback to this event instance.\n * @param handler - the callback to be added to this event.\n */\n add(s) {\n this.handlers.push(s);\n }\n /**\n * Removes a callback from this event instance.\n * @param handler - the callback to be removed from this event.\n */\n remove(s) {\n this.handlers = this.handlers.filter((t) => t !== s);\n }\n /** Gets rid of all the suscribed events. */\n reset() {\n this.handlers.length = 0;\n }\n}\nclass Si {\n constructor(s) {\n /** Whether is component is {@link Disposable}. */\n I(this, \"isDisposeable\", () => \"dispose\" in this && \"onDisposed\" in this);\n /** Whether is component is {@link Resizeable}. */\n I(this, \"isResizeable\", () => \"resize\" in this && \"getSize\" in this);\n /** Whether is component is {@link Updateable}. */\n I(this, \"isUpdateable\", () => \"onAfterUpdate\" in this && \"onBeforeUpdate\" in this && \"update\" in this);\n /** Whether is component is {@link Hideable}. */\n I(this, \"isHideable\", () => \"visible\" in this);\n /** Whether is component is {@link Configurable}. */\n I(this, \"isConfigurable\", () => \"setup\" in this && \"config\" in this && \"onSetup\" in this);\n this.components = s;\n }\n}\nclass et extends Si {\n}\nclass Ni extends Si {\n constructor(t) {\n super(t);\n I(this, \"worlds\", /* @__PURE__ */ new Map());\n /**\n * Event that is triggered when a world is added or removed from the `worlds` map.\n * The event payload contains the world instance and the action (\"added\" or \"removed\").\n */\n I(this, \"onWorldChanged\", new D());\n /**\n * The current world this item is associated with. It can be null if no world is currently active.\n */\n I(this, \"currentWorld\", null);\n this.onWorldChanged.add(({ world: e, action: i }) => {\n i === \"removed\" && this.worlds.delete(e.uuid);\n });\n }\n}\nclass ar extends Ni {\n constructor() {\n super(...arguments);\n /**\n * Checks whether the instance is {@link CameraControllable}.\n *\n * @returns True if the instance is controllable, false otherwise.\n */\n I(this, \"hasCameraControls\", () => \"controls\" in this);\n }\n}\nclass cr extends Ni {\n constructor() {\n super(...arguments);\n /** {@link Updateable.onBeforeUpdate} */\n I(this, \"onAfterUpdate\", new D());\n /** {@link Updateable.onAfterUpdate} */\n I(this, \"onBeforeUpdate\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** {@link Resizeable.onResize} */\n I(this, \"onResize\", new D());\n /**\n * Event that fires when there has been a change to the list of clipping\n * planes used by the active renderer.\n */\n I(this, \"onClippingPlanesUpdated\", new D());\n /**\n * The list of [clipping planes](https://threejs.org/docs/#api/en/renderers/WebGLRenderer.clippingPlanes) used by this instance of the renderer.\n */\n I(this, \"clippingPlanes\", []);\n }\n /**\n * Updates the clipping planes and triggers the `onClippingPlanesUpdated` event.\n *\n * @remarks\n * This method is typically called when there is a change to the list of clipping planes\n * used by the active renderer.\n */\n updateClippingPlanes() {\n this.onClippingPlanesUpdated.trigger();\n }\n /**\n * Sets or removes a clipping plane from the renderer.\n *\n * @param active - A boolean indicating whether the clipping plane should be active or not.\n * @param plane - The clipping plane to be added or removed.\n * @param isLocal - An optional boolean indicating whether the clipping plane is local to the object. If not provided, it defaults to `false`.\n *\n * @remarks\n * This method adds or removes a clipping plane from the `clippingPlanes` array.\n * If `active` is `true` and the plane is not already in the array, it is added.\n * If `active` is `false` and the plane is in the array, it is removed.\n * The `three.clippingPlanes` property is then updated to reflect the current state of the `clippingPlanes` array,\n * excluding any planes marked as local.\n */\n setPlane(t, e, i) {\n e.isLocal = i;\n const o = this.clippingPlanes.indexOf(e);\n t && o === -1 ? this.clippingPlanes.push(e) : !t && o > -1 && this.clippingPlanes.splice(o, 1), this.three.clippingPlanes = this.clippingPlanes.filter(\n (n) => !n.isLocal\n );\n }\n}\nconst be = class be extends et {\n constructor(t) {\n super(t);\n I(this, \"_disposedComponents\", /* @__PURE__ */ new Set());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n t.add(be.uuid, this);\n }\n // TODO: Remove this?\n /**\n * Return the UUIDs of all disposed components.\n */\n get() {\n return this._disposedComponents;\n }\n /**\n * Removes a mesh, its geometry and its materials from memory. If you are\n * using any of these in other parts of the application, make sure that you\n * remove them from the mesh before disposing it.\n *\n * @param object - the [object](https://threejs.org/docs/#api/en/core/Object3D)\n * to remove.\n *\n * @param materials - whether to dispose the materials of the mesh.\n *\n * @param recursive - whether to recursively dispose the children of the mesh.\n */\n destroy(t, e = !0, i = !0) {\n t.removeFromParent();\n const o = t;\n o.dispose && o.dispose(), this.disposeGeometryAndMaterials(t, e), i && o.children && o.children.length && this.disposeChildren(o), t.children.length = 0;\n }\n /**\n * Disposes a geometry from memory.\n *\n * @param geometry - the\n * [geometry](https://threejs.org/docs/#api/en/core/BufferGeometry)\n * to remove.\n */\n disposeGeometry(t) {\n t.boundsTree && t.disposeBoundsTree && t.disposeBoundsTree(), t.dispose();\n }\n disposeGeometryAndMaterials(t, e) {\n const i = t;\n i.geometry && this.disposeGeometry(i.geometry), e && i.material && be.disposeMaterial(i), i.material = [], i.geometry = null;\n }\n disposeChildren(t) {\n for (const e of t.children)\n this.destroy(e);\n }\n static disposeMaterial(t) {\n if (t.material)\n if (Array.isArray(t.material))\n for (const e of t.material)\n e.dispose();\n else\n t.material.dispose();\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(be, \"uuid\", \"76e9cd8e-ad8f-4753-9ef6-cbc60f7247fe\");\nlet zt = be;\nclass lr extends Ni {\n constructor(t) {\n super(t);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n }\n /** {@link Disposable.dispose} */\n dispose() {\n const t = this.components.get(zt);\n for (const e of this.three.children) {\n const i = e;\n i.geometry && t.destroy(i);\n }\n this.three.children = [], this.onDisposed.trigger(), this.onDisposed.reset();\n }\n}\nconst ms = 0, hr = 1, Er = new M(), Ji = new Lt(), qs = new Fi(), tn = new M(), ls = new ue();\nclass dr {\n constructor() {\n this.tolerance = -1, this.faces = [], this.newFaces = [], this.assigned = new en(), this.unassigned = new en(), this.vertices = [];\n }\n setFromPoints(s) {\n if (s.length >= 4) {\n this.makeEmpty();\n for (let t = 0, e = s.length; t < e; t++)\n this.vertices.push(new ur(s[t]));\n this.compute();\n }\n return this;\n }\n setFromObject(s) {\n const t = [];\n return s.updateMatrixWorld(!0), s.traverse(function(e) {\n const i = e.geometry;\n if (i !== void 0) {\n const o = i.attributes.position;\n if (o !== void 0)\n for (let n = 0, r = o.count; n < r; n++) {\n const a = new M();\n a.fromBufferAttribute(o, n).applyMatrix4(e.matrixWorld), t.push(a);\n }\n }\n }), this.setFromPoints(t);\n }\n containsPoint(s) {\n const t = this.faces;\n for (let e = 0, i = t.length; e < i; e++)\n if (t[e].distanceToPoint(s) > this.tolerance)\n return !1;\n return !0;\n }\n intersectRay(s, t) {\n const e = this.faces;\n let i = -1 / 0, o = 1 / 0;\n for (let n = 0, r = e.length; n < r; n++) {\n const a = e[n], c = a.distanceToPoint(s.origin), h = a.normal.dot(s.direction);\n if (c > 0 && h >= 0)\n return null;\n const d = h !== 0 ? -c / h : 0;\n if (!(d <= 0) && (h > 0 ? o = Math.min(d, o) : i = Math.max(d, i), i > o))\n return null;\n }\n return i !== -1 / 0 ? s.at(i, t) : s.at(o, t), t;\n }\n intersectsRay(s) {\n return this.intersectRay(s, Er) !== null;\n }\n makeEmpty() {\n return this.faces = [], this.vertices = [], this;\n }\n // Adds a vertex to the 'assigned' list of vertices and assigns it to the given face\n addVertexToFace(s, t) {\n return s.face = t, t.outside === null ? this.assigned.append(s) : this.assigned.insertBefore(t.outside, s), t.outside = s, this;\n }\n // Removes a vertex from the 'assigned' list of vertices and from the given face\n removeVertexFromFace(s, t) {\n return s === t.outside && (s.next !== null && s.next.face === t ? t.outside = s.next : t.outside = null), this.assigned.remove(s), this;\n }\n // Removes all the visible vertices that a given face is able to see which are stored in the 'assigned' vertex list\n removeAllVerticesFromFace(s) {\n if (s.outside !== null) {\n const t = s.outside;\n let e = s.outside;\n for (; e.next !== null && e.next.face === s; )\n e = e.next;\n return this.assigned.removeSubList(t, e), t.prev = e.next = null, s.outside = null, t;\n }\n }\n // Removes all the visible vertices that 'face' is able to see\n deleteFaceVertices(s, t) {\n const e = this.removeAllVerticesFromFace(s);\n if (e !== void 0)\n if (t === void 0)\n this.unassigned.appendChain(e);\n else {\n let i = e;\n do {\n const o = i.next;\n t.distanceToPoint(i.point) > this.tolerance ? this.addVertexToFace(i, t) : this.unassigned.append(i), i = o;\n } while (i !== null);\n }\n return this;\n }\n // Reassigns as many vertices as possible from the unassigned list to the new faces\n resolveUnassignedPoints(s) {\n if (this.unassigned.isEmpty() === !1) {\n let t = this.unassigned.first();\n do {\n const e = t.next;\n let i = this.tolerance, o = null;\n for (let n = 0; n < s.length; n++) {\n const r = s[n];\n if (r.mark === ms) {\n const a = r.distanceToPoint(t.point);\n if (a > i && (i = a, o = r), i > 1e3 * this.tolerance)\n break;\n }\n }\n o !== null && this.addVertexToFace(t, o), t = e;\n } while (t !== null);\n }\n return this;\n }\n // Computes the extremes of a simplex which will be the initial hull\n computeExtremes() {\n const s = new M(), t = new M(), e = [], i = [];\n for (let o = 0; o < 3; o++)\n e[o] = i[o] = this.vertices[0];\n s.copy(this.vertices[0].point), t.copy(this.vertices[0].point);\n for (let o = 0, n = this.vertices.length; o < n; o++) {\n const r = this.vertices[o], a = r.point;\n for (let c = 0; c < 3; c++)\n a.getComponent(c) < s.getComponent(c) && (s.setComponent(c, a.getComponent(c)), e[c] = r);\n for (let c = 0; c < 3; c++)\n a.getComponent(c) > t.getComponent(c) && (t.setComponent(c, a.getComponent(c)), i[c] = r);\n }\n return this.tolerance = 3 * Number.EPSILON * (Math.max(Math.abs(s.x), Math.abs(t.x)) + Math.max(Math.abs(s.y), Math.abs(t.y)) + Math.max(Math.abs(s.z), Math.abs(t.z))), { min: e, max: i };\n }\n // Computes the initial simplex assigning to its faces all the points\n // that are candidates to form part of the hull\n computeInitialHull() {\n const s = this.vertices, t = this.computeExtremes(), e = t.min, i = t.max;\n let o = 0, n = 0;\n for (let E = 0; E < 3; E++) {\n const u = i[E].point.getComponent(E) - e[E].point.getComponent(E);\n u > o && (o = u, n = E);\n }\n const r = e[n], a = i[n];\n let c, h;\n o = 0, Ji.set(r.point, a.point);\n for (let E = 0, u = this.vertices.length; E < u; E++) {\n const f = s[E];\n if (f !== r && f !== a) {\n Ji.closestPointToPoint(f.point, !0, tn);\n const R = tn.distanceToSquared(f.point);\n R > o && (o = R, c = f);\n }\n }\n o = -1, qs.setFromCoplanarPoints(r.point, a.point, c.point);\n for (let E = 0, u = this.vertices.length; E < u; E++) {\n const f = s[E];\n if (f !== r && f !== a && f !== c) {\n const R = Math.abs(qs.distanceToPoint(f.point));\n R > o && (o = R, h = f);\n }\n }\n const d = [];\n if (qs.distanceToPoint(h.point) < 0) {\n d.push(\n Rt.create(r, a, c),\n Rt.create(h, a, r),\n Rt.create(h, c, a),\n Rt.create(h, r, c)\n );\n for (let E = 0; E < 3; E++) {\n const u = (E + 1) % 3;\n d[E + 1].getEdge(2).setTwin(d[0].getEdge(u)), d[E + 1].getEdge(1).setTwin(d[u + 1].getEdge(0));\n }\n } else {\n d.push(\n Rt.create(r, c, a),\n Rt.create(h, r, a),\n Rt.create(h, a, c),\n Rt.create(h, c, r)\n );\n for (let E = 0; E < 3; E++) {\n const u = (E + 1) % 3;\n d[E + 1].getEdge(2).setTwin(d[0].getEdge((3 - E) % 3)), d[E + 1].getEdge(0).setTwin(d[u + 1].getEdge(1));\n }\n }\n for (let E = 0; E < 4; E++)\n this.faces.push(d[E]);\n for (let E = 0, u = s.length; E < u; E++) {\n const f = s[E];\n if (f !== r && f !== a && f !== c && f !== h) {\n o = this.tolerance;\n let R = null;\n for (let m = 0; m < 4; m++) {\n const C = this.faces[m].distanceToPoint(f.point);\n C > o && (o = C, R = this.faces[m]);\n }\n R !== null && this.addVertexToFace(f, R);\n }\n }\n return this;\n }\n // Removes inactive faces\n reindexFaces() {\n const s = [];\n for (let t = 0; t < this.faces.length; t++) {\n const e = this.faces[t];\n e.mark === ms && s.push(e);\n }\n return this.faces = s, this;\n }\n // Finds the next vertex to create faces with the current hull\n nextVertexToAdd() {\n if (this.assigned.isEmpty() === !1) {\n let s, t = 0;\n const e = this.assigned.first().face;\n let i = e.outside;\n do {\n const o = e.distanceToPoint(i.point);\n o > t && (t = o, s = i), i = i.next;\n } while (i !== null && i.face === e);\n return s;\n }\n }\n // Computes a chain of half edges in CCW order called the 'horizon'.\n // For an edge to be part of the horizon it must join a face that can see\n // 'eyePoint' and a face that cannot see 'eyePoint'.\n computeHorizon(s, t, e, i) {\n this.deleteFaceVertices(e), e.mark = hr;\n let o;\n t === null ? o = t = e.getEdge(0) : o = t.next;\n do {\n const n = o.twin, r = n.face;\n r.mark === ms && (r.distanceToPoint(s) > this.tolerance ? this.computeHorizon(s, n, r, i) : i.push(o)), o = o.next;\n } while (o !== t);\n return this;\n }\n // Creates a face with the vertices 'eyeVertex.point', 'horizonEdge.tail' and 'horizonEdge.head' in CCW order\n addAdjoiningFace(s, t) {\n const e = Rt.create(s, t.tail(), t.head());\n return this.faces.push(e), e.getEdge(-1).setTwin(t.twin), e.getEdge(0);\n }\n // Adds 'horizon.length' faces to the hull, each face will be linked with the\n // horizon opposite face and the face on the left/right\n addNewFaces(s, t) {\n this.newFaces = [];\n let e = null, i = null;\n for (let o = 0; o < t.length; o++) {\n const n = t[o], r = this.addAdjoiningFace(s, n);\n e === null ? e = r : r.next.setTwin(i), this.newFaces.push(r.face), i = r;\n }\n return e.next.setTwin(i), this;\n }\n // Adds a vertex to the hull\n addVertexToHull(s) {\n const t = [];\n return this.unassigned.clear(), this.removeVertexFromFace(s, s.face), this.computeHorizon(s.point, null, s.face, t), this.addNewFaces(s, t), this.resolveUnassignedPoints(this.newFaces), this;\n }\n cleanup() {\n return this.assigned.clear(), this.unassigned.clear(), this.newFaces = [], this;\n }\n compute() {\n let s;\n for (this.computeInitialHull(); (s = this.nextVertexToAdd()) !== void 0; )\n this.addVertexToHull(s);\n return this.reindexFaces(), this.cleanup(), this;\n }\n}\nclass Rt {\n constructor() {\n this.normal = new M(), this.midpoint = new M(), this.area = 0, this.constant = 0, this.outside = null, this.mark = ms, this.edge = null;\n }\n static create(s, t, e) {\n const i = new Rt(), o = new Ks(s, i), n = new Ks(t, i), r = new Ks(e, i);\n return o.next = r.prev = n, n.next = o.prev = r, r.next = n.prev = o, i.edge = o, i.compute();\n }\n getEdge(s) {\n let t = this.edge;\n for (; s > 0; )\n t = t.next, s--;\n for (; s < 0; )\n t = t.prev, s++;\n return t;\n }\n compute() {\n const s = this.edge.tail(), t = this.edge.head(), e = this.edge.next.head();\n return ls.set(s.point, t.point, e.point), ls.getNormal(this.normal), ls.getMidpoint(this.midpoint), this.area = ls.getArea(), this.constant = this.normal.dot(this.midpoint), this;\n }\n distanceToPoint(s) {\n return this.normal.dot(s) - this.constant;\n }\n}\nclass Ks {\n constructor(s, t) {\n this.vertex = s, this.prev = null, this.next = null, this.twin = null, this.face = t;\n }\n head() {\n return this.vertex;\n }\n tail() {\n return this.prev ? this.prev.vertex : null;\n }\n length() {\n const s = this.head(), t = this.tail();\n return t !== null ? t.point.distanceTo(s.point) : -1;\n }\n lengthSquared() {\n const s = this.head(), t = this.tail();\n return t !== null ? t.point.distanceToSquared(s.point) : -1;\n }\n setTwin(s) {\n return this.twin = s, s.twin = this, this;\n }\n}\nclass ur {\n constructor(s) {\n this.point = s, this.prev = null, this.next = null, this.face = null;\n }\n}\nclass en {\n constructor() {\n this.head = null, this.tail = null;\n }\n first() {\n return this.head;\n }\n last() {\n return this.tail;\n }\n clear() {\n return this.head = this.tail = null, this;\n }\n // Inserts a vertex before the target vertex\n insertBefore(s, t) {\n return t.prev = s.prev, t.next = s, t.prev === null ? this.head = t : t.prev.next = t, s.prev = t, this;\n }\n // Inserts a vertex after the target vertex\n insertAfter(s, t) {\n return t.prev = s, t.next = s.next, t.next === null ? this.tail = t : t.next.prev = t, s.next = t, this;\n }\n // Appends a vertex to the end of the linked list\n append(s) {\n return this.head === null ? this.head = s : this.tail.next = s, s.prev = this.tail, s.next = null, this.tail = s, this;\n }\n // Appends a chain of vertices where 'vertex' is the head.\n appendChain(s) {\n for (this.head === null ? this.head = s : this.tail.next = s, s.prev = this.tail; s.next !== null; )\n s = s.next;\n return this.tail = s, this;\n }\n // Removes a vertex from the linked list\n remove(s) {\n return s.prev === null ? this.head = s.next : s.prev.next = s.next, s.next === null ? this.tail = s.prev : s.next.prev = s.prev, this;\n }\n // Removes a list of vertices whose 'head' is 'a' and whose 'tail' is b\n removeSubList(s, t) {\n return s.prev === null ? this.head = t.next : s.prev.next = t.next, t.next === null ? this.tail = s.prev : t.next.prev = s.prev, this;\n }\n isEmpty() {\n return this.head === null;\n }\n}\nconst Ii = [2, 2, 1], fi = [1, 0, 0];\nfunction Nt(l, s) {\n return l * 3 + s;\n}\nfunction Ir(l) {\n const s = l.elements;\n let t = 0;\n for (let e = 0; e < 9; e++)\n t += s[e] * s[e];\n return Math.sqrt(t);\n}\nfunction fr(l) {\n const s = l.elements;\n let t = 0;\n for (let e = 0; e < 3; e++) {\n const i = s[Nt(Ii[e], fi[e])];\n t += 2 * i * i;\n }\n return Math.sqrt(t);\n}\nfunction pr(l, s) {\n let t = 0, e = 1;\n const i = l.elements;\n for (let c = 0; c < 3; c++) {\n const h = Math.abs(i[Nt(Ii[c], fi[c])]);\n h > t && (t = h, e = c);\n }\n let o = 1, n = 0;\n const r = fi[e], a = Ii[e];\n if (Math.abs(i[Nt(a, r)]) > Number.EPSILON) {\n const c = i[Nt(a, a)], h = i[Nt(r, r)], d = i[Nt(a, r)], E = (c - h) / 2 / d;\n let u;\n E < 0 ? u = -1 / (-E + Math.sqrt(1 + E * E)) : u = 1 / (E + Math.sqrt(1 + E * E)), o = 1 / Math.sqrt(1 + u * u), n = u * o;\n }\n return s.identity(), s.elements[Nt(r, r)] = o, s.elements[Nt(a, a)] = o, s.elements[Nt(a, r)] = n, s.elements[Nt(r, a)] = -n, s;\n}\nfunction Cr(l, s) {\n let t = 0, e = 0;\n const i = 10;\n s.unitary.identity(), s.diagonal.copy(l);\n const o = s.unitary, n = s.diagonal, r = new g.Matrix3(), a = new g.Matrix3(), c = Number.EPSILON * Ir(n);\n for (; e < i && fr(n) > c; )\n pr(n, r), a.copy(r).transpose(), n.multiply(r), n.premultiply(a), o.multiply(r), ++t > 2 && (e++, t = 0);\n return s;\n}\nfunction Tr(l) {\n const s = [];\n for (let it = 0; it < l.length - 2; it += 3) {\n const Xt = l[it], J = l[it + 1], $t = l[it + 2];\n s.push(new g.Vector3(Xt, J, $t));\n }\n const t = new dr();\n t.setFromPoints(s);\n const e = {\n unitary: new g.Matrix3(),\n diagonal: new g.Matrix3()\n }, i = t.faces, o = [], n = [];\n for (let it = 0, Xt = i.length; it < Xt; it++) {\n const J = i[it];\n let $t = J.edge;\n o.length = 0;\n do\n o.push($t), $t = $t.next;\n while ($t !== J.edge);\n const zn = o.length - 2;\n for (let Xe = 1, Hn = zn; Xe <= Hn; Xe++) {\n const bs = o[0].vertex, vs = o[Xe + 0].vertex, Bs = o[Xe + 1].vertex;\n n.push(bs.point.x, bs.point.y, bs.point.z), n.push(vs.point.x, vs.point.y, vs.point.z), n.push(Bs.point.x, Bs.point.y, Bs.point.z);\n }\n }\n const r = new g.Vector3(), a = new g.Vector3(), c = new g.Vector3(), h = new g.Vector3(), d = new g.Vector3(), E = new g.Vector3(), u = new g.Vector3(), f = new g.Vector3();\n let R = 0, m = 0, C = 0, A = 0, F = 0, p = 0, T = 0;\n for (let it = 0, Xt = n.length; it < Xt; it += 9) {\n r.fromArray(n, it), a.fromArray(n, it + 3), c.fromArray(n, it + 6), u.set(0, 0, 0), u.add(r).add(a).add(c).divideScalar(3), h.subVectors(a, r), d.subVectors(c, r);\n const J = E.crossVectors(h, d).length() / 2;\n f.add(E.copy(u).multiplyScalar(J)), R += J, m += (9 * u.x * u.x + r.x * r.x + a.x * a.x + c.x * c.x) * (J / 12), C += (9 * u.x * u.y + r.x * r.y + a.x * a.y + c.x * c.y) * (J / 12), A += (9 * u.x * u.z + r.x * r.z + a.x * a.z + c.x * c.z) * (J / 12), F += (9 * u.y * u.y + r.y * r.y + a.y * a.y + c.y * c.y) * (J / 12), p += (9 * u.y * u.z + r.y * r.z + a.y * a.z + c.y * c.z) * (J / 12), T += (9 * u.z * u.z + r.z * r.z + a.z * a.z + c.z * c.z) * (J / 12);\n }\n f.divideScalar(R), m /= R, C /= R, A /= R, F /= R, p /= R, T /= R, m -= f.x * f.x, C -= f.x * f.y, A -= f.x * f.z, F -= f.y * f.y, p -= f.y * f.z, T -= f.z * f.z;\n const O = new g.Matrix3();\n O.elements[0] = m, O.elements[1] = C, O.elements[2] = A, O.elements[3] = C, O.elements[4] = F, O.elements[5] = p, O.elements[6] = A, O.elements[7] = p, O.elements[8] = T, Cr(O, e);\n const _ = e.unitary, S = new g.Vector3(), N = new g.Vector3(), L = new g.Vector3();\n _.extractBasis(S, N, L);\n let w = -1 / 0, y = -1 / 0, U = -1 / 0, x = 1 / 0, B = 1 / 0, H = 1 / 0;\n for (let it = 0, Xt = s.length; it < Xt; it++) {\n const J = s[it];\n w = Math.max(S.dot(J), w), y = Math.max(N.dot(J), y), U = Math.max(L.dot(J), U), x = Math.min(S.dot(J), x), B = Math.min(N.dot(J), B), H = Math.min(L.dot(J), H);\n }\n S.multiplyScalar(0.5 * (x + w)), N.multiplyScalar(0.5 * (B + y)), L.multiplyScalar(0.5 * (H + U));\n const q = new g.Vector3(), st = new g.Vector3(), Q = new g.Matrix3();\n q.add(S).add(N).add(L), st.x = w - x, st.y = y - B, st.z = U - H, st.multiplyScalar(0.5), Q.copy(_);\n const { x: Ht, y: kt, z: Wt } = st, We = new g.Matrix4();\n We.makeScale(Ht * 2, kt * 2, Wt * 2);\n const Ce = new g.Matrix4();\n Ce.makeTranslation(-Ht, -kt, -Wt);\n const yi = new g.Matrix4();\n yi.makeTranslation(q.x, q.y, q.z);\n const Mi = new g.Matrix4();\n Mi.setFromMatrix3(Q);\n const Te = new g.Matrix4();\n return Te.multiply(yi), Te.multiply(Mi), Te.multiply(Ce), Te.multiply(We), { center: q, halfSizes: st, rotation: Q, transformation: Te };\n}\nfunction mr(l, s, t) {\n const e = [\n l[0] - s[0],\n l[1] - s[1],\n l[2] - s[2]\n ];\n return t[0] * e[0] + t[1] * e[1] + t[2] * e[2] > 0;\n}\nclass sn {\n static isTransparent(s) {\n return s.transparent && s.opacity < 1;\n }\n}\nconst $ = class $ {\n // Copied from three.js source\n // Original source: http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n static create() {\n const s = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0, e = Math.random() * 4294967295 | 0, i = Math.random() * 4294967295 | 0;\n return `${$._lut[s & 255] + $._lut[s >> 8 & 255] + $._lut[s >> 16 & 255] + $._lut[s >> 24 & 255]}-${$._lut[t & 255]}${$._lut[t >> 8 & 255]}-${$._lut[t >> 16 & 15 | 64]}${$._lut[t >> 24 & 255]}-${$._lut[e & 63 | 128]}${$._lut[e >> 8 & 255]}-${$._lut[e >> 16 & 255]}${$._lut[e >> 24 & 255]}${$._lut[i & 255]}${$._lut[i >> 8 & 255]}${$._lut[i >> 16 & 255]}${$._lut[i >> 24 & 255]}`.toLowerCase();\n }\n static validate(s) {\n if (!$._pattern.test(s))\n throw new Error(\n `${s} is not a valid UUID v4.\n\n- If you're the tool creator, you can take one from https://www.uuidgenerator.net/.\n\n- If you're using a platform tool, verify the uuid isn't misspelled or contact the tool creator.`\n );\n }\n};\nI($, \"_pattern\", /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/), // prettier-ignore\nI($, \"_lut\", [\n \"00\",\n \"01\",\n \"02\",\n \"03\",\n \"04\",\n \"05\",\n \"06\",\n \"07\",\n \"08\",\n \"09\",\n \"0a\",\n \"0b\",\n \"0c\",\n \"0d\",\n \"0e\",\n \"0f\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\",\n \"18\",\n \"19\",\n \"1a\",\n \"1b\",\n \"1c\",\n \"1d\",\n \"1e\",\n \"1f\",\n \"20\",\n \"21\",\n \"22\",\n \"23\",\n \"24\",\n \"25\",\n \"26\",\n \"27\",\n \"28\",\n \"29\",\n \"2a\",\n \"2b\",\n \"2c\",\n \"2d\",\n \"2e\",\n \"2f\",\n \"30\",\n \"31\",\n \"32\",\n \"33\",\n \"34\",\n \"35\",\n \"36\",\n \"37\",\n \"38\",\n \"39\",\n \"3a\",\n \"3b\",\n \"3c\",\n \"3d\",\n \"3e\",\n \"3f\",\n \"40\",\n \"41\",\n \"42\",\n \"43\",\n \"44\",\n \"45\",\n \"46\",\n \"47\",\n \"48\",\n \"49\",\n \"4a\",\n \"4b\",\n \"4c\",\n \"4d\",\n \"4e\",\n \"4f\",\n \"50\",\n \"51\",\n \"52\",\n \"53\",\n \"54\",\n \"55\",\n \"56\",\n \"57\",\n \"58\",\n \"59\",\n \"5a\",\n \"5b\",\n \"5c\",\n \"5d\",\n \"5e\",\n \"5f\",\n \"60\",\n \"61\",\n \"62\",\n \"63\",\n \"64\",\n \"65\",\n \"66\",\n \"67\",\n \"68\",\n \"69\",\n \"6a\",\n \"6b\",\n \"6c\",\n \"6d\",\n \"6e\",\n \"6f\",\n \"70\",\n \"71\",\n \"72\",\n \"73\",\n \"74\",\n \"75\",\n \"76\",\n \"77\",\n \"78\",\n \"79\",\n \"7a\",\n \"7b\",\n \"7c\",\n \"7d\",\n \"7e\",\n \"7f\",\n \"80\",\n \"81\",\n \"82\",\n \"83\",\n \"84\",\n \"85\",\n \"86\",\n \"87\",\n \"88\",\n \"89\",\n \"8a\",\n \"8b\",\n \"8c\",\n \"8d\",\n \"8e\",\n \"8f\",\n \"90\",\n \"91\",\n \"92\",\n \"93\",\n \"94\",\n \"95\",\n \"96\",\n \"97\",\n \"98\",\n \"99\",\n \"9a\",\n \"9b\",\n \"9c\",\n \"9d\",\n \"9e\",\n \"9f\",\n \"a0\",\n \"a1\",\n \"a2\",\n \"a3\",\n \"a4\",\n \"a5\",\n \"a6\",\n \"a7\",\n \"a8\",\n \"a9\",\n \"aa\",\n \"ab\",\n \"ac\",\n \"ad\",\n \"ae\",\n \"af\",\n \"b0\",\n \"b1\",\n \"b2\",\n \"b3\",\n \"b4\",\n \"b5\",\n \"b6\",\n \"b7\",\n \"b8\",\n \"b9\",\n \"ba\",\n \"bb\",\n \"bc\",\n \"bd\",\n \"be\",\n \"bf\",\n \"c0\",\n \"c1\",\n \"c2\",\n \"c3\",\n \"c4\",\n \"c5\",\n \"c6\",\n \"c7\",\n \"c8\",\n \"c9\",\n \"ca\",\n \"cb\",\n \"cc\",\n \"cd\",\n \"ce\",\n \"cf\",\n \"d0\",\n \"d1\",\n \"d2\",\n \"d3\",\n \"d4\",\n \"d5\",\n \"d6\",\n \"d7\",\n \"d8\",\n \"d9\",\n \"da\",\n \"db\",\n \"dc\",\n \"dd\",\n \"de\",\n \"df\",\n \"e0\",\n \"e1\",\n \"e2\",\n \"e3\",\n \"e4\",\n \"e5\",\n \"e6\",\n \"e7\",\n \"e8\",\n \"e9\",\n \"ea\",\n \"eb\",\n \"ec\",\n \"ed\",\n \"ee\",\n \"ef\",\n \"f0\",\n \"f1\",\n \"f2\",\n \"f3\",\n \"f4\",\n \"f5\",\n \"f6\",\n \"f7\",\n \"f8\",\n \"f9\",\n \"fa\",\n \"fb\",\n \"fc\",\n \"fd\",\n \"fe\",\n \"ff\"\n]);\nlet Ge = $;\nclass ea extends et {\n constructor(t, e) {\n super(t);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * An event that is triggered when a vertex is found.\n * The event passes a THREE.Vector3 representing the position of the found vertex.\n */\n I(this, \"onVertexFound\", new D());\n /**\n * An event that is triggered when a vertex is lost.\n * The event passes a THREE.Vector3 representing the position of the lost vertex.\n */\n I(this, \"onVertexLost\", new D());\n /**\n * An event that is triggered when the picker is enabled or disabled\n */\n I(this, \"onEnabled\", new D());\n /**\n * A reference to the Components instance associated with this VertexPicker.\n */\n I(this, \"components\");\n /**\n * A reference to the working plane used for vertex picking.\n * This plane is used to determine which vertices are considered valid for picking.\n * If this value is null, all vertices are considered valid.\n */\n I(this, \"workingPlane\", null);\n I(this, \"_pickedPoint\", null);\n I(this, \"_config\");\n I(this, \"_enabled\", !1);\n this.components = t, this.config = {\n snapDistance: 0.25,\n showOnlyVertex: !1,\n ...e\n }, this.enabled = !1;\n }\n /**\n * Sets the enabled state of the VertexPicker.\n * When enabled, the VertexPicker will actively search for vertices in the 3D scene.\n * When disabled, the VertexPicker will stop searching for vertices and reset the picked point.\n *\n * @param value - The new enabled state.\n */\n set enabled(t) {\n this._enabled = t, t || (this._pickedPoint = null), this.onEnabled.trigger(t);\n }\n /**\n * Gets the current enabled state of the VertexPicker.\n *\n * @returns The current enabled state.\n */\n get enabled() {\n return this._enabled;\n }\n /**\n * Sets the configuration for the VertexPicker component.\n *\n * @param value - A Partial object containing the configuration properties to update.\n * The properties not provided in the value object will retain their current values.\n *\n * @example\n * ```typescript\n * vertexPicker.config = {\n * snapDistance: 0.5,\n * showOnlyVertex: true,\n * };\n * ```\n */\n set config(t) {\n this._config = { ...this._config, ...t };\n }\n /**\n * Gets the current configuration for the VertexPicker component.\n *\n * @returns A copy of the current VertexPickerConfig object.\n *\n * @example\n * ```typescript\n * const currentConfig = vertexPicker.config;\n * console.log(currentConfig.snapDistance); // Output: 0.25\n * ```\n */\n get config() {\n return this._config;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.onVertexFound.reset(), this.onVertexLost.reset(), this.components = null, this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Performs the vertex picking operation based on the current state of the VertexPicker.\n *\n * @param world - The World instance to use for raycasting.\n *\n * @returns The current picked point, or null if no point is picked.\n *\n * @remarks\n * This method checks if the VertexPicker is enabled. If not, it returns the current picked point.\n * If enabled, it performs raycasting to find the closest intersecting object.\n * It then determines the closest vertex or point on the face, based on the configuration settings.\n * If the picked point is on the working plane (if defined), it triggers the `onVertexFound` event and updates the `pickedPoint`.\n * If the picked point is not on the working plane, it resets the `pickedPoint`.\n * If no intersecting object is found, it triggers the `onVertexLost` event and resets the `pickedPoint`.\n */\n get(t) {\n if (!this.enabled)\n return this._pickedPoint;\n const o = this.components.get(ze).get(t).castRay();\n if (!o)\n return this._pickedPoint !== null && (this.onVertexLost.trigger(), this._pickedPoint = null), this._pickedPoint;\n const n = this.getClosestVertex(o);\n return n ? (this.workingPlane ? Math.abs(this.workingPlane.distanceToPoint(n)) < 1e-3 : !0) ? ((this._pickedPoint === null || !this._pickedPoint.equals(n)) && (this._pickedPoint = n.clone(), this.onVertexFound.trigger(this._pickedPoint)), this._pickedPoint) : (this._pickedPoint = null, this._pickedPoint) : (this._pickedPoint !== null && (this.onVertexLost.trigger(), this._pickedPoint = null), this._pickedPoint);\n }\n getClosestVertex(t) {\n let e = new g.Vector3(), i = !1, o = Number.MAX_SAFE_INTEGER;\n const n = this.getVertices(t);\n if (n === null)\n return null;\n for (const r of n) {\n if (!r)\n continue;\n const a = t.point.distanceTo(r);\n a > o || a > this._config.snapDistance || (i = !0, e = r, o = t.point.distanceTo(r));\n }\n return i ? e : this.config.showOnlyVertex ? null : t.point;\n }\n getVertices(t) {\n const e = t.object;\n if (!t.face || !e)\n return null;\n const i = e.geometry, o = new g.Matrix4(), { instanceId: n } = t, r = n !== void 0, a = e instanceof g.InstancedMesh;\n return a && r && e.getMatrixAt(n, o), [\n this.getVertex(t.face.a, i),\n this.getVertex(t.face.b, i),\n this.getVertex(t.face.c, i)\n ].map((c) => (c && (a && r && c.applyMatrix4(o), c.applyMatrix4(e.matrixWorld)), c));\n }\n getVertex(t, e) {\n if (t === void 0)\n return null;\n const i = e.attributes.position;\n return new g.Vector3(\n i.getX(t),\n i.getY(t),\n i.getZ(t)\n );\n }\n}\nconst Fs = class Fs {\n constructor() {\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * The list of components created in this app.\n * The keys are UUIDs and the values are instances of the components.\n */\n I(this, \"list\", /* @__PURE__ */ new Map());\n /**\n * If disabled, the animation loop will be stopped.\n * Default value is false.\n */\n I(this, \"enabled\", !1);\n I(this, \"_clock\");\n I(this, \"update\", () => {\n if (!this.enabled)\n return;\n const s = this._clock.getDelta();\n for (const [t, e] of this.list)\n e.enabled && e.isUpdateable() && e.update(s);\n requestAnimationFrame(this.update);\n });\n this._clock = new g.Clock(), Fs.setupBVH();\n }\n /**\n * Adds a component to the list of components.\n * Throws an error if a component with the same UUID already exists.\n *\n * @param uuid - The unique identifier of the component.\n * @param instance - The instance of the component to be added.\n *\n * @throws Will throw an error if a component with the same UUID already exists.\n *\n * @internal\n */\n add(s, t) {\n if (this.list.has(s))\n throw new Error(\n \"You're trying to add a component that already exists in the components instance. Use Components.get() instead.\"\n );\n Ge.validate(s), this.list.set(s, t);\n }\n /**\n * Retrieves a component instance by its constructor function.\n * If the component does not exist in the list, it will be created and added.\n *\n * @template U - The type of the component to retrieve.\n * @param Component - The constructor function of the component to retrieve.\n *\n * @returns The instance of the requested component.\n *\n * @throws Will throw an error if a component with the same UUID already exists.\n *\n * @internal\n */\n get(s) {\n const t = s.uuid;\n if (!this.list.has(t)) {\n const e = new s(this);\n return this.list.has(t) || this.add(t, e), e;\n }\n return this.list.get(t);\n }\n /**\n * Initializes the Components instance.\n * This method starts the animation loop, sets the enabled flag to true,\n * and calls the update method.\n *\n * @returns {void}\n */\n init() {\n this.enabled = !0, this._clock.start(), this.update();\n }\n /**\n * Disposes the memory of all the components and tools of this instance of\n * the library. A memory leak will be created if:\n *\n * - An instance of the library ends up out of scope and this function isn't\n * called. This is especially relevant in Single Page Applications (React,\n * Angular, Vue, etc).\n *\n * - Any of the objects of this instance (meshes, geometries,materials, etc) is\n * referenced by a reference type (object or array).\n *\n * You can learn more about how Three.js handles memory leaks\n * [here](https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects).\n *\n */\n dispose() {\n this.enabled = !1;\n for (const [s, t] of this.list)\n t.enabled = !1, t.isDisposeable() && t.dispose();\n this._clock.stop(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n static setupBVH() {\n g.BufferGeometry.prototype.computeBoundsTree = or, g.BufferGeometry.prototype.disposeBoundsTree = rr, g.Mesh.prototype.raycast = nr;\n }\n};\n/**\n * The version of the @thatopen/components library.\n */\nI(Fs, \"release\", \"2.1.1\");\nlet pi = Fs;\nclass Rr {\n constructor(s) {\n I(this, \"_event\");\n I(this, \"_position\", new g.Vector2());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n I(this, \"updateMouseInfo\", (s) => {\n this._event = s;\n });\n this.dom = s, this.setupEvents(!0);\n }\n /**\n * The real position of the mouse of the Three.js canvas.\n */\n get position() {\n if (this._event) {\n const s = this.dom.getBoundingClientRect();\n this._position.x = this.getPositionX(s, this._event), this._position.y = this.getPositionY(s, this._event);\n }\n return this._position;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n getPositionY(s, t) {\n return -((t.clientY - s.top) / (s.bottom - s.top)) * 2 + 1;\n }\n getPositionX(s, t) {\n return (t.clientX - s.left) / (s.right - s.left) * 2 - 1;\n }\n setupEvents(s) {\n s ? this.dom.addEventListener(\"pointermove\", this.updateMouseInfo) : this.dom.removeEventListener(\"pointermove\", this.updateMouseInfo);\n }\n}\nclass Ar {\n constructor(s, t) {\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /** The components instance to which this Raycaster belongs. */\n I(this, \"components\");\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** The position of the mouse in the screen. */\n I(this, \"mouse\");\n /**\n * A reference to the Three.js Raycaster instance.\n * This is used for raycasting operations.\n */\n I(this, \"three\", new g.Raycaster());\n /**\n * A reference to the world instance to which this Raycaster belongs.\n * This is used to access the camera and meshes.\n */\n I(this, \"world\");\n const e = t.renderer;\n if (!e)\n throw new Error(\"A renderer is needed for the raycaster to work!\");\n this.world = t, this.mouse = new Rr(e.three.domElement), this.components = s;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.mouse.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Throws a ray from the camera to the mouse or touch event point and returns\n * the first item found. This also takes into account the clipping planes\n * used by the renderer.\n *\n * @param items - the [meshes](https://threejs.org/docs/#api/en/objects/Mesh)\n * to query. If not provided, it will query all the meshes stored in\n * {@link Components.meshes}.\n */\n castRay(s = Array.from(this.world.meshes)) {\n if (!this.world)\n throw new Error(\"A world is needed to cast rays!\");\n const t = this.world.camera.three;\n return this.three.setFromCamera(this.mouse.position, t), this.intersect(s);\n }\n /**\n * Casts a ray from a given origin in a given direction and returns the first item found.\n * This method also takes into account the clipping planes used by the renderer.\n *\n * @param origin - The origin of the ray.\n * @param direction - The direction of the ray.\n * @param items - The meshes to query. If not provided, it will query all the meshes stored in {@link World.meshes}.\n * @returns The first intersection found or `null` if no intersection was found.\n */\n castRayFromVector(s, t, e = Array.from(this.world.meshes)) {\n return this.three.set(s, t), this.intersect(e);\n }\n intersect(s = Array.from(this.world.meshes)) {\n const t = this.three.intersectObjects(s), e = this.filterClippingPlanes(t);\n return e.length > 0 ? e[0] : null;\n }\n filterClippingPlanes(s) {\n if (!this.world.renderer)\n throw new Error(\"Renderer not found!\");\n const t = this.world.renderer.three;\n if (!t.clippingPlanes)\n return s;\n const e = t.clippingPlanes;\n return s.length <= 0 || !e || (e == null ? void 0 : e.length) <= 0 ? s : s.filter(\n (i) => e.every((o) => o.distanceToPoint(i.point) > 0)\n );\n }\n}\nconst Os = class Os extends et {\n constructor(t) {\n super(t);\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /**\n * A Map that stores raycasters for each world.\n * The key is the world's UUID, and the value is the corresponding SimpleRaycaster instance.\n */\n I(this, \"list\", /* @__PURE__ */ new Map());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n t.add(Os.uuid, this);\n }\n /**\n * Retrieves a SimpleRaycaster instance for the given world.\n * If a SimpleRaycaster instance already exists for the world, it will be returned.\n * Otherwise, a new SimpleRaycaster instance will be created and added to the list.\n *\n * @param world - The world for which to retrieve or create a SimpleRaycaster instance.\n * @returns The SimpleRaycaster instance for the given world.\n */\n get(t) {\n if (this.list.has(t.uuid))\n return this.list.get(t.uuid);\n const e = new Ar(this.components, t);\n return this.list.set(t.uuid, e), t.onDisposed.add(() => {\n this.delete(t);\n }), e;\n }\n /**\n * Deletes the SimpleRaycaster instance associated with the given world.\n * If a SimpleRaycaster instance exists for the given world, it will be disposed and removed from the list.\n *\n * @param world - The world for which to delete the SimpleRaycaster instance.\n * @returns {void}\n */\n delete(t) {\n const e = this.list.get(t.uuid);\n e && e.dispose(), this.list.delete(t.uuid);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger();\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Os, \"uuid\", \"d5d8bdf0-db25-4952-b951-b643af207ace\");\nlet ze = Os;\nclass Fr extends Si {\n constructor() {\n super(...arguments);\n /**\n * All the loaded [meshes](https://threejs.org/docs/#api/en/objects/Mesh). These meshes will be taken into account in operations like raycasting.\n */\n I(this, \"meshes\", /* @__PURE__ */ new Set());\n /** {@link Updateable.onAfterUpdate} */\n I(this, \"onAfterUpdate\", new D());\n /** {@link Updateable.onBeforeUpdate} */\n I(this, \"onBeforeUpdate\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * Indicates whether the world is currently being disposed. This is useful to prevent trying to access world's elements when it's being disposed, which could cause errors when you dispose a world.\n */\n I(this, \"isDisposing\", !1);\n /**\n * Indicates whether the world is currently enabled.\n * When disabled, the world will not be updated.\n */\n I(this, \"enabled\", !0);\n /**\n * A unique identifier for the world.\n */\n I(this, \"uuid\", Ge.create());\n /**\n * An optional name for the world.\n */\n I(this, \"name\");\n I(this, \"_scene\");\n I(this, \"_camera\");\n I(this, \"_renderer\", null);\n }\n /**\n * Getter for the scene. If no scene is initialized, it throws an error.\n * @returns The current scene.\n */\n get scene() {\n if (!this._scene)\n throw new Error(\"No scene initialized!\");\n return this._scene;\n }\n /**\n * Setter for the scene. It sets the current scene, adds the world to the scene's worlds set,\n * sets the current world in the scene, and triggers the scene's onWorldChanged event with the added action.\n * @param scene - The new scene to be set.\n */\n set scene(t) {\n this._scene = t, t.worlds.set(this.uuid, this), t.currentWorld = this, t.onWorldChanged.trigger({ world: this, action: \"added\" });\n }\n /**\n * Getter for the camera. If no camera is initialized, it throws an error.\n * @returns The current camera.\n */\n get camera() {\n if (!this._camera)\n throw new Error(\"No camera initialized!\");\n return this._camera;\n }\n /**\n * Setter for the camera. It sets the current camera, adds the world to the camera's worlds set,\n * sets the current world in the camera, and triggers the camera's onWorldChanged event with the added action.\n * @param camera - The new camera to be set.\n */\n set camera(t) {\n this._camera = t, t.worlds.set(this.uuid, this), t.currentWorld = this, t.onWorldChanged.trigger({ world: this, action: \"added\" });\n }\n /**\n * Getter for the renderer.\n * @returns The current renderer or null if no renderer is set. Some worlds don't need a renderer to work (when your mail goal is not to display a 3D viewport to the user).\n */\n get renderer() {\n return this._renderer;\n }\n /**\n * Setter for the renderer. It sets the current renderer, adds the world to the renderer's worlds set,\n * sets the current world in the renderer, and triggers the renderer's onWorldChanged event with the added action.\n * If a new renderer is set, it also triggers the onWorldChanged event with the removed action for the old renderer.\n * @param renderer - The new renderer to be set or null to remove the current renderer.\n */\n set renderer(t) {\n this._renderer = t, t && (t.worlds.set(this.uuid, this), t.currentWorld = this, t.onWorldChanged.trigger({ world: this, action: \"added\" }));\n }\n /** {@link Updateable.update} */\n update(t) {\n this.enabled && (!this._scene || !this._camera || (this.scene.currentWorld = this, this.camera.currentWorld = this, this.renderer && (this.renderer.currentWorld = this), this.onBeforeUpdate.trigger(), this.scene.isUpdateable() && this.scene.update(t), this.camera.isUpdateable() && this.camera.update(t), this.renderer && this.renderer.update(t), this.onAfterUpdate.trigger()));\n }\n /** {@link Disposable.dispose} */\n dispose(t = !0) {\n if (this.enabled = !1, this.isDisposing = !0, this.scene.onWorldChanged.trigger({ world: this, action: \"removed\" }), this.camera.onWorldChanged.trigger({ world: this, action: \"removed\" }), this.renderer && this.renderer.onWorldChanged.trigger({ world: this, action: \"removed\" }), t) {\n const e = this.components.get(zt);\n this.scene.dispose(), this.camera.isDisposeable() && this.camera.dispose(), this.renderer && this.renderer.dispose();\n for (const i of this.meshes)\n e.destroy(i);\n this.meshes.clear();\n }\n this._scene = null, this._camera = null, this._renderer = null, this.onDisposed.trigger();\n }\n}\nclass sa extends lr {\n constructor(t) {\n super(t);\n /** {@link Configurable.isSetup} */\n I(this, \"isSetup\", !1);\n /**\n * The underlying Three.js scene object.\n * It is used to define the 3D space containing objects, lights, and cameras.\n */\n I(this, \"three\");\n /** {@link Configurable.onSetup} */\n I(this, \"onSetup\", new D());\n /**\n * Configuration interface for the {@link SimpleScene}.\n * Defines properties for directional and ambient lights.\n */\n I(this, \"config\", {\n directionalLight: {\n color: new g.Color(\"white\"),\n intensity: 1.5,\n position: new g.Vector3(5, 10, 3)\n },\n ambientLight: {\n color: new g.Color(\"white\"),\n intensity: 1\n }\n });\n this.three = new g.Scene(), this.three.background = new g.Color(2107698);\n }\n /** {@link Configurable.setup} */\n setup(t) {\n this.config = { ...this.config, ...t };\n const e = new g.DirectionalLight(\n this.config.directionalLight.color,\n this.config.directionalLight.intensity\n );\n e.position.copy(this.config.directionalLight.position);\n const i = new g.AmbientLight(\n this.config.ambientLight.color,\n this.config.ambientLight.intensity\n );\n this.three.add(e, i), this.isSetup = !0, this.onSetup.trigger(this);\n }\n}\nclass ia extends cr {\n /**\n * Constructor for the SimpleRenderer class.\n *\n * @param components - The components instance.\n * @param container - The HTML container where the THREE.js canvas will be rendered.\n * @param parameters - Optional parameters for the THREE.js WebGLRenderer.\n */\n constructor(t, e, i) {\n super(t);\n /**\n * Indicates whether the renderer is enabled. If it's not, it won't be updated.\n * Default is `true`.\n */\n I(this, \"enabled\", !0);\n /**\n * The HTML container of the THREE.js canvas where the scene is rendered.\n */\n I(this, \"container\");\n /**\n * The THREE.js WebGLRenderer instance.\n */\n I(this, \"three\");\n I(this, \"_canvas\");\n I(this, \"_parameters\");\n I(this, \"_resizeObserver\", null);\n I(this, \"onContainerUpdated\", new D());\n I(this, \"_resizing\", !1);\n /** {@link Resizeable.resize} */\n I(this, \"resize\", (t) => {\n if (this._resizing)\n return;\n this._resizing = !0, this.onContainerUpdated.trigger();\n const e = t ? t.x : this.container.clientWidth, i = t ? t.y : this.container.clientHeight;\n this.three.setSize(e, i), this.onResize.trigger(new g.Vector2(e, i)), this._resizing = !1;\n });\n I(this, \"resizeEvent\", () => {\n this.resize();\n });\n I(this, \"onContextLost\", (t) => {\n t.preventDefault(), this.enabled = !1;\n });\n I(this, \"onContextBack\", () => {\n this.three.setRenderTarget(null), this.three.dispose(), this.three = new g.WebGLRenderer({\n canvas: this._canvas,\n antialias: !0,\n alpha: !0,\n ...this._parameters\n }), this.enabled = !0;\n });\n this.container = e, this._parameters = i, this.three = new g.WebGLRenderer({\n antialias: !0,\n alpha: !0,\n ...i\n }), this.three.setPixelRatio(Math.min(window.devicePixelRatio, 2)), this.setupRenderer(), this.setupEvents(!0), this.resize(), this._canvas = this.three.domElement;\n const o = this.three.getContext(), { canvas: n } = o;\n n.addEventListener(\"webglcontextlost\", this.onContextLost, !1), n.addEventListener(\"webglcontextrestored\", this.onContextBack, !1);\n }\n /** {@link Updateable.update} */\n update() {\n if (!this.enabled || !this.currentWorld)\n return;\n this.onBeforeUpdate.trigger(this);\n const t = this.currentWorld.scene.three, e = this.currentWorld.camera.three;\n this.three.render(t, e), this.onAfterUpdate.trigger(this);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1, this.setupEvents(!1), this.three.domElement.remove(), this.three.dispose(), this.onResize.reset(), this.onAfterUpdate.reset(), this.onBeforeUpdate.reset(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /** {@link Resizeable.getSize}. */\n getSize() {\n return new g.Vector2(\n this.three.domElement.clientWidth,\n this.three.domElement.clientHeight\n );\n }\n /**\n * Sets up and manages the event listeners for the renderer.\n *\n * @param active - A boolean indicating whether to activate or deactivate the event listeners.\n *\n * @throws Will throw an error if the renderer does not have an HTML container.\n */\n setupEvents(t) {\n const e = this.three.domElement.parentElement;\n if (!e)\n throw new Error(\"This renderer needs to have an HTML container!\");\n this._resizeObserver && (this._resizeObserver.disconnect(), this._resizeObserver = null), window.removeEventListener(\"resize\", this.resizeEvent), t && (this._resizeObserver = new ResizeObserver(this.resizeEvent), this._resizeObserver.observe(e), window.addEventListener(\"resize\", this.resizeEvent));\n }\n setupRenderer() {\n this.three.localClippingEnabled = !0, this.container && this.container.appendChild(this.three.domElement), this.onContainerUpdated.trigger();\n }\n}\n/*!\n * camera-controls\n * https://github.com/yomotsu/camera-controls\n * (c) 2017 @yomotsu\n * Released under the MIT License.\n */\nconst V = {\n LEFT: 1,\n RIGHT: 2,\n MIDDLE: 4\n}, P = Object.freeze({\n NONE: 0,\n ROTATE: 1,\n TRUCK: 2,\n OFFSET: 4,\n DOLLY: 8,\n ZOOM: 16,\n TOUCH_ROTATE: 32,\n TOUCH_TRUCK: 64,\n TOUCH_OFFSET: 128,\n TOUCH_DOLLY: 256,\n TOUCH_ZOOM: 512,\n TOUCH_DOLLY_TRUCK: 1024,\n TOUCH_DOLLY_OFFSET: 2048,\n TOUCH_DOLLY_ROTATE: 4096,\n TOUCH_ZOOM_TRUCK: 8192,\n TOUCH_ZOOM_OFFSET: 16384,\n TOUCH_ZOOM_ROTATE: 32768\n}), le = {\n NONE: 0,\n IN: 1,\n OUT: -1\n};\nfunction Zt(l) {\n return l.isPerspectiveCamera;\n}\nfunction bt(l) {\n return l.isOrthographicCamera;\n}\nconst he = Math.PI * 2, nn = Math.PI / 2, xn = 1e-5, Se = Math.PI / 180;\nfunction mt(l, s, t) {\n return Math.max(s, Math.min(t, l));\n}\nfunction X(l, s = xn) {\n return Math.abs(l) < s;\n}\nfunction k(l, s, t = xn) {\n return X(l - s, t);\n}\nfunction on(l, s) {\n return Math.round(l / s) * s;\n}\nfunction Ne(l) {\n return isFinite(l) ? l : l < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n}\nfunction Pe(l) {\n return Math.abs(l) < Number.MAX_VALUE ? l : l * (1 / 0);\n}\nfunction hs(l, s, t, e, i = 1 / 0, o) {\n e = Math.max(1e-4, e);\n const n = 2 / e, r = n * o, a = 1 / (1 + r + 0.48 * r * r + 0.235 * r * r * r);\n let c = l - s;\n const h = s, d = i * e;\n c = mt(c, -d, d), s = l - c;\n const E = (t.value + n * c) * o;\n t.value = (t.value - n * E) * a;\n let u = s + (c + E) * a;\n return h - l > 0 == u > h && (u = h, t.value = (u - h) / o), u;\n}\nfunction rn(l, s, t, e, i = 1 / 0, o, n) {\n e = Math.max(1e-4, e);\n const r = 2 / e, a = r * o, c = 1 / (1 + a + 0.48 * a * a + 0.235 * a * a * a);\n let h = s.x, d = s.y, E = s.z, u = l.x - h, f = l.y - d, R = l.z - E;\n const m = h, C = d, A = E, F = i * e, p = F * F, T = u * u + f * f + R * R;\n if (T > p) {\n const B = Math.sqrt(T);\n u = u / B * F, f = f / B * F, R = R / B * F;\n }\n h = l.x - u, d = l.y - f, E = l.z - R;\n const O = (t.x + r * u) * o, _ = (t.y + r * f) * o, S = (t.z + r * R) * o;\n t.x = (t.x - r * O) * c, t.y = (t.y - r * _) * c, t.z = (t.z - r * S) * c, n.x = h + (u + O) * c, n.y = d + (f + _) * c, n.z = E + (R + S) * c;\n const N = m - l.x, L = C - l.y, w = A - l.z, y = n.x - m, U = n.y - C, x = n.z - A;\n return N * y + L * U + w * x > 0 && (n.x = m, n.y = C, n.z = A, t.x = (n.x - m) / o, t.y = (n.y - C) / o, t.z = (n.z - A) / o), n;\n}\nfunction $s(l, s) {\n s.set(0, 0), l.forEach((t) => {\n s.x += t.clientX, s.y += t.clientY;\n }), s.x /= l.length, s.y /= l.length;\n}\nfunction Js(l, s) {\n return bt(l) ? (console.warn(`${s} is not supported in OrthographicCamera`), !0) : !1;\n}\nclass Or {\n constructor() {\n this._listeners = {};\n }\n /**\n * Adds the specified event listener.\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n addEventListener(s, t) {\n const e = this._listeners;\n e[s] === void 0 && (e[s] = []), e[s].indexOf(t) === -1 && e[s].push(t);\n }\n /**\n * Presence of the specified event listener.\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n hasEventListener(s, t) {\n const e = this._listeners;\n return e[s] !== void 0 && e[s].indexOf(t) !== -1;\n }\n /**\n * Removes the specified event listener\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n removeEventListener(s, t) {\n const i = this._listeners[s];\n if (i !== void 0) {\n const o = i.indexOf(t);\n o !== -1 && i.splice(o, 1);\n }\n }\n /**\n * Removes all event listeners\n * @param type event name\n * @category Methods\n */\n removeAllEventListeners(s) {\n if (!s) {\n this._listeners = {};\n return;\n }\n Array.isArray(this._listeners[s]) && (this._listeners[s].length = 0);\n }\n /**\n * Fire an event type.\n * @param event DispatcherEvent\n * @category Methods\n */\n dispatchEvent(s) {\n const e = this._listeners[s.type];\n if (e !== void 0) {\n s.target = this;\n const i = e.slice(0);\n for (let o = 0, n = i.length; o < n; o++)\n i[o].call(this, s);\n }\n }\n}\nconst gr = \"2.7.3\", Es = 1 / 8, bn = typeof window < \"u\", _r = bn && /Mac/.test(navigator.platform), Sr = !(bn && \"PointerEvent\" in window);\nlet Y, an, ds, ti, lt, G, z, Ee, Le, gt, _t, Qt, cn, ln, ut, ye, de, hn, ei, En, si, ii, us;\nclass ot extends Or {\n /**\n * Injects THREE as the dependency. You can then proceed to use CameraControls.\n *\n * e.g\n * ```javascript\n * CameraControls.install( { THREE: THREE } );\n * ```\n *\n * Note: If you do not wish to use enter three.js to reduce file size(tree-shaking for example), make a subset to install.\n *\n * ```js\n * import {\n * \tVector2,\n * \tVector3,\n * \tVector4,\n * \tQuaternion,\n * \tMatrix4,\n * \tSpherical,\n * \tBox3,\n * \tSphere,\n * \tRaycaster,\n * \tMathUtils,\n * } from 'three';\n *\n * const subsetOfTHREE = {\n * \tVector2 : Vector2,\n * \tVector3 : Vector3,\n * \tVector4 : Vector4,\n * \tQuaternion: Quaternion,\n * \tMatrix4 : Matrix4,\n * \tSpherical : Spherical,\n * \tBox3 : Box3,\n * \tSphere : Sphere,\n * \tRaycaster : Raycaster,\n * };\n \n * CameraControls.install( { THREE: subsetOfTHREE } );\n * ```\n * @category Statics\n */\n static install(s) {\n Y = s.THREE, an = Object.freeze(new Y.Vector3(0, 0, 0)), ds = Object.freeze(new Y.Vector3(0, 1, 0)), ti = Object.freeze(new Y.Vector3(0, 0, 1)), lt = new Y.Vector2(), G = new Y.Vector3(), z = new Y.Vector3(), Ee = new Y.Vector3(), Le = new Y.Vector3(), gt = new Y.Vector3(), _t = new Y.Vector3(), Qt = new Y.Vector3(), cn = new Y.Vector3(), ln = new Y.Vector3(), ut = new Y.Spherical(), ye = new Y.Spherical(), de = new Y.Box3(), hn = new Y.Box3(), ei = new Y.Sphere(), En = new Y.Quaternion(), si = new Y.Quaternion(), ii = new Y.Matrix4(), us = new Y.Raycaster();\n }\n /**\n * list all ACTIONs\n * @category Statics\n */\n static get ACTION() {\n return P;\n }\n /**\n * Creates a `CameraControls` instance.\n *\n * Note:\n * You **must install** three.js before using camera-controls. see [#install](#install)\n * Not doing so will lead to runtime errors (`undefined` references to THREE).\n *\n * e.g.\n * ```\n * CameraControls.install( { THREE } );\n * const cameraControls = new CameraControls( camera, domElement );\n * ```\n *\n * @param camera A `THREE.PerspectiveCamera` or `THREE.OrthographicCamera` to be controlled.\n * @param domElement A `HTMLElement` for the draggable area, usually `renderer.domElement`.\n * @category Constructor\n */\n constructor(s, t) {\n super(), this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.minDistance = Number.EPSILON, this.maxDistance = 1 / 0, this.infinityDolly = !1, this.minZoom = 0.01, this.maxZoom = 1 / 0, this.smoothTime = 0.25, this.draggingSmoothTime = 0.125, this.maxSpeed = 1 / 0, this.azimuthRotateSpeed = 1, this.polarRotateSpeed = 1, this.dollySpeed = 1, this.dollyDragInverted = !1, this.truckSpeed = 2, this.dollyToCursor = !1, this.dragToOffset = !1, this.verticalDragToForward = !1, this.boundaryFriction = 0, this.restThreshold = 0.01, this.colliderMeshes = [], this.cancel = () => {\n }, this._enabled = !0, this._state = P.NONE, this._viewport = null, this._changedDolly = 0, this._changedZoom = 0, this._hasRested = !0, this._boundaryEnclosesCamera = !1, this._needsUpdate = !0, this._updatedLastTime = !1, this._elementRect = new DOMRect(), this._isDragging = !1, this._dragNeedsUpdate = !0, this._activePointers = [], this._lockedPointer = null, this._interactiveArea = new DOMRect(0, 0, 1, 1), this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._isUserControllingOffset = !1, this._isUserControllingZoom = !1, this._lastDollyDirection = le.NONE, this._thetaVelocity = { value: 0 }, this._phiVelocity = { value: 0 }, this._radiusVelocity = { value: 0 }, this._targetVelocity = new Y.Vector3(), this._focalOffsetVelocity = new Y.Vector3(), this._zoomVelocity = { value: 0 }, this._truckInternal = (p, T, O) => {\n let _, S;\n if (Zt(this._camera)) {\n const N = G.copy(this._camera.position).sub(this._target), L = this._camera.getEffectiveFOV() * Se, w = N.length() * Math.tan(L * 0.5);\n _ = this.truckSpeed * p * w / this._elementRect.height, S = this.truckSpeed * T * w / this._elementRect.height;\n } else if (bt(this._camera)) {\n const N = this._camera;\n _ = p * (N.right - N.left) / N.zoom / this._elementRect.width, S = T * (N.top - N.bottom) / N.zoom / this._elementRect.height;\n } else\n return;\n this.verticalDragToForward ? (O ? this.setFocalOffset(this._focalOffsetEnd.x + _, this._focalOffsetEnd.y, this._focalOffsetEnd.z, !0) : this.truck(_, 0, !0), this.forward(-S, !0)) : O ? this.setFocalOffset(this._focalOffsetEnd.x + _, this._focalOffsetEnd.y + S, this._focalOffsetEnd.z, !0) : this.truck(_, S, !0);\n }, this._rotateInternal = (p, T) => {\n const O = he * this.azimuthRotateSpeed * p / this._elementRect.height, _ = he * this.polarRotateSpeed * T / this._elementRect.height;\n this.rotate(O, _, !0);\n }, this._dollyInternal = (p, T, O) => {\n const _ = Math.pow(0.95, -p * this.dollySpeed), S = this._sphericalEnd.radius, N = this._sphericalEnd.radius * _, L = mt(N, this.minDistance, this.maxDistance), w = L - N;\n this.infinityDolly && this.dollyToCursor ? this._dollyToNoClamp(N, !0) : this.infinityDolly && !this.dollyToCursor ? (this.dollyInFixed(w, !0), this._dollyToNoClamp(L, !0)) : this._dollyToNoClamp(L, !0), this.dollyToCursor && (this._changedDolly += (this.infinityDolly ? N : L) - S, this._dollyControlCoord.set(T, O)), this._lastDollyDirection = Math.sign(-p);\n }, this._zoomInternal = (p, T, O) => {\n const _ = Math.pow(0.95, p * this.dollySpeed), S = this._zoom, N = this._zoom * _;\n this.zoomTo(N, !0), this.dollyToCursor && (this._changedZoom += N - S, this._dollyControlCoord.set(T, O));\n }, typeof Y > \"u\" && console.error(\"camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information.\"), this._camera = s, this._yAxisUpSpace = new Y.Quaternion().setFromUnitVectors(this._camera.up, ds), this._yAxisUpSpaceInverse = this._yAxisUpSpace.clone().invert(), this._state = P.NONE, this._target = new Y.Vector3(), this._targetEnd = this._target.clone(), this._focalOffset = new Y.Vector3(), this._focalOffsetEnd = this._focalOffset.clone(), this._spherical = new Y.Spherical().setFromVector3(G.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)), this._sphericalEnd = this._spherical.clone(), this._lastDistance = this._spherical.radius, this._zoom = this._camera.zoom, this._zoomEnd = this._zoom, this._lastZoom = this._zoom, this._nearPlaneCorners = [\n new Y.Vector3(),\n new Y.Vector3(),\n new Y.Vector3(),\n new Y.Vector3()\n ], this._updateNearPlaneCorners(), this._boundary = new Y.Box3(new Y.Vector3(-1 / 0, -1 / 0, -1 / 0), new Y.Vector3(1 / 0, 1 / 0, 1 / 0)), this._cameraUp0 = this._camera.up.clone(), this._target0 = this._target.clone(), this._position0 = this._camera.position.clone(), this._zoom0 = this._zoom, this._focalOffset0 = this._focalOffset.clone(), this._dollyControlCoord = new Y.Vector2(), this.mouseButtons = {\n left: P.ROTATE,\n middle: P.DOLLY,\n right: P.TRUCK,\n wheel: Zt(this._camera) ? P.DOLLY : bt(this._camera) ? P.ZOOM : P.NONE\n }, this.touches = {\n one: P.TOUCH_ROTATE,\n two: Zt(this._camera) ? P.TOUCH_DOLLY_TRUCK : bt(this._camera) ? P.TOUCH_ZOOM_TRUCK : P.NONE,\n three: P.TOUCH_TRUCK\n };\n const e = new Y.Vector2(), i = new Y.Vector2(), o = new Y.Vector2(), n = (p) => {\n if (!this._enabled || !this._domElement)\n return;\n if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n const _ = this._domElement.getBoundingClientRect(), S = p.clientX / _.width, N = p.clientY / _.height;\n if (S < this._interactiveArea.left || S > this._interactiveArea.right || N < this._interactiveArea.top || N > this._interactiveArea.bottom)\n return;\n }\n const T = p.pointerType !== \"mouse\" ? null : (p.buttons & V.LEFT) === V.LEFT ? V.LEFT : (p.buttons & V.MIDDLE) === V.MIDDLE ? V.MIDDLE : (p.buttons & V.RIGHT) === V.RIGHT ? V.RIGHT : null;\n if (T !== null) {\n const _ = this._findPointerByMouseButton(T);\n _ && this._disposePointer(_);\n }\n if ((p.buttons & V.LEFT) === V.LEFT && this._lockedPointer)\n return;\n const O = {\n pointerId: p.pointerId,\n clientX: p.clientX,\n clientY: p.clientY,\n deltaX: 0,\n deltaY: 0,\n mouseButton: T\n };\n this._activePointers.push(O), this._domElement.ownerDocument.removeEventListener(\"pointermove\", a, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"pointerup\", h), this._domElement.ownerDocument.addEventListener(\"pointermove\", a, { passive: !1 }), this._domElement.ownerDocument.addEventListener(\"pointerup\", h), this._isDragging = !0, R(p);\n }, r = (p) => {\n if (!this._enabled || !this._domElement || this._lockedPointer)\n return;\n if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n const _ = this._domElement.getBoundingClientRect(), S = p.clientX / _.width, N = p.clientY / _.height;\n if (S < this._interactiveArea.left || S > this._interactiveArea.right || N < this._interactiveArea.top || N > this._interactiveArea.bottom)\n return;\n }\n const T = (p.buttons & V.LEFT) === V.LEFT ? V.LEFT : (p.buttons & V.MIDDLE) === V.MIDDLE ? V.MIDDLE : (p.buttons & V.RIGHT) === V.RIGHT ? V.RIGHT : null;\n if (T !== null) {\n const _ = this._findPointerByMouseButton(T);\n _ && this._disposePointer(_);\n }\n const O = {\n pointerId: 1,\n clientX: p.clientX,\n clientY: p.clientY,\n deltaX: 0,\n deltaY: 0,\n mouseButton: (p.buttons & V.LEFT) === V.LEFT ? V.LEFT : (p.buttons & V.MIDDLE) === V.LEFT ? V.MIDDLE : (p.buttons & V.RIGHT) === V.LEFT ? V.RIGHT : null\n };\n this._activePointers.push(O), this._domElement.ownerDocument.removeEventListener(\"mousemove\", c), this._domElement.ownerDocument.removeEventListener(\"mouseup\", d), this._domElement.ownerDocument.addEventListener(\"mousemove\", c), this._domElement.ownerDocument.addEventListener(\"mouseup\", d), this._isDragging = !0, R(p);\n }, a = (p) => {\n p.cancelable && p.preventDefault();\n const T = p.pointerId, O = this._lockedPointer || this._findPointerById(T);\n if (O) {\n if (O.clientX = p.clientX, O.clientY = p.clientY, O.deltaX = p.movementX, O.deltaY = p.movementY, this._state = 0, p.pointerType === \"touch\")\n switch (this._activePointers.length) {\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n else\n (!this._isDragging && this._lockedPointer || this._isDragging && (p.buttons & V.LEFT) === V.LEFT) && (this._state = this._state | this.mouseButtons.left), this._isDragging && (p.buttons & V.MIDDLE) === V.MIDDLE && (this._state = this._state | this.mouseButtons.middle), this._isDragging && (p.buttons & V.RIGHT) === V.RIGHT && (this._state = this._state | this.mouseButtons.right);\n m();\n }\n }, c = (p) => {\n const T = this._lockedPointer || this._findPointerById(1);\n T && (T.clientX = p.clientX, T.clientY = p.clientY, T.deltaX = p.movementX, T.deltaY = p.movementY, this._state = 0, (this._lockedPointer || (p.buttons & V.LEFT) === V.LEFT) && (this._state = this._state | this.mouseButtons.left), (p.buttons & V.MIDDLE) === V.MIDDLE && (this._state = this._state | this.mouseButtons.middle), (p.buttons & V.RIGHT) === V.RIGHT && (this._state = this._state | this.mouseButtons.right), m());\n }, h = (p) => {\n const T = this._findPointerById(p.pointerId);\n if (!(T && T === this._lockedPointer)) {\n if (T && this._disposePointer(T), p.pointerType === \"touch\")\n switch (this._activePointers.length) {\n case 0:\n this._state = P.NONE;\n break;\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n else\n this._state = P.NONE;\n C();\n }\n }, d = () => {\n const p = this._findPointerById(1);\n p && p === this._lockedPointer || (p && this._disposePointer(p), this._state = P.NONE, C());\n };\n let E = -1;\n const u = (p) => {\n if (!this._domElement || !this._enabled || this.mouseButtons.wheel === P.NONE)\n return;\n if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n const N = this._domElement.getBoundingClientRect(), L = p.clientX / N.width, w = p.clientY / N.height;\n if (L < this._interactiveArea.left || L > this._interactiveArea.right || w < this._interactiveArea.top || w > this._interactiveArea.bottom)\n return;\n }\n if (p.preventDefault(), this.dollyToCursor || this.mouseButtons.wheel === P.ROTATE || this.mouseButtons.wheel === P.TRUCK) {\n const N = performance.now();\n E - N < 1e3 && this._getClientRect(this._elementRect), E = N;\n }\n const T = _r ? -1 : -3, O = p.deltaMode === 1 ? p.deltaY / T : p.deltaY / (T * 10), _ = this.dollyToCursor ? (p.clientX - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0, S = this.dollyToCursor ? (p.clientY - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0;\n switch (this.mouseButtons.wheel) {\n case P.ROTATE: {\n this._rotateInternal(p.deltaX, p.deltaY), this._isUserControllingRotate = !0;\n break;\n }\n case P.TRUCK: {\n this._truckInternal(p.deltaX, p.deltaY, !1), this._isUserControllingTruck = !0;\n break;\n }\n case P.OFFSET: {\n this._truckInternal(p.deltaX, p.deltaY, !0), this._isUserControllingOffset = !0;\n break;\n }\n case P.DOLLY: {\n this._dollyInternal(-O, _, S), this._isUserControllingDolly = !0;\n break;\n }\n case P.ZOOM: {\n this._zoomInternal(-O, _, S), this._isUserControllingZoom = !0;\n break;\n }\n }\n this.dispatchEvent({ type: \"control\" });\n }, f = (p) => {\n if (!(!this._domElement || !this._enabled)) {\n if (this.mouseButtons.right === ot.ACTION.NONE) {\n const T = p instanceof PointerEvent ? p.pointerId : (p instanceof MouseEvent, 0), O = this._findPointerById(T);\n O && this._disposePointer(O), this._domElement.ownerDocument.removeEventListener(\"pointermove\", a, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"pointerup\", h), this._domElement.ownerDocument.removeEventListener(\"mousemove\", c), this._domElement.ownerDocument.removeEventListener(\"mouseup\", d);\n return;\n }\n p.preventDefault();\n }\n }, R = (p) => {\n if (!this._enabled)\n return;\n if ($s(this._activePointers, lt), this._getClientRect(this._elementRect), e.copy(lt), i.copy(lt), this._activePointers.length >= 2) {\n const O = lt.x - this._activePointers[1].clientX, _ = lt.y - this._activePointers[1].clientY, S = Math.sqrt(O * O + _ * _);\n o.set(0, S);\n const N = (this._activePointers[0].clientX + this._activePointers[1].clientX) * 0.5, L = (this._activePointers[0].clientY + this._activePointers[1].clientY) * 0.5;\n i.set(N, L);\n }\n if (this._state = 0, !p)\n this._lockedPointer && (this._state = this._state | this.mouseButtons.left);\n else if (\"pointerType\" in p && p.pointerType === \"touch\")\n switch (this._activePointers.length) {\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n else\n !this._lockedPointer && (p.buttons & V.LEFT) === V.LEFT && (this._state = this._state | this.mouseButtons.left), (p.buttons & V.MIDDLE) === V.MIDDLE && (this._state = this._state | this.mouseButtons.middle), (p.buttons & V.RIGHT) === V.RIGHT && (this._state = this._state | this.mouseButtons.right);\n ((this._state & P.ROTATE) === P.ROTATE || (this._state & P.TOUCH_ROTATE) === P.TOUCH_ROTATE || (this._state & P.TOUCH_DOLLY_ROTATE) === P.TOUCH_DOLLY_ROTATE || (this._state & P.TOUCH_ZOOM_ROTATE) === P.TOUCH_ZOOM_ROTATE) && (this._sphericalEnd.theta = this._spherical.theta, this._sphericalEnd.phi = this._spherical.phi, this._thetaVelocity.value = 0, this._phiVelocity.value = 0), ((this._state & P.TRUCK) === P.TRUCK || (this._state & P.TOUCH_TRUCK) === P.TOUCH_TRUCK || (this._state & P.TOUCH_DOLLY_TRUCK) === P.TOUCH_DOLLY_TRUCK || (this._state & P.TOUCH_ZOOM_TRUCK) === P.TOUCH_ZOOM_TRUCK) && (this._targetEnd.copy(this._target), this._targetVelocity.set(0, 0, 0)), ((this._state & P.DOLLY) === P.DOLLY || (this._state & P.TOUCH_DOLLY) === P.TOUCH_DOLLY || (this._state & P.TOUCH_DOLLY_TRUCK) === P.TOUCH_DOLLY_TRUCK || (this._state & P.TOUCH_DOLLY_OFFSET) === P.TOUCH_DOLLY_OFFSET || (this._state & P.TOUCH_DOLLY_ROTATE) === P.TOUCH_DOLLY_ROTATE) && (this._sphericalEnd.radius = this._spherical.radius, this._radiusVelocity.value = 0), ((this._state & P.ZOOM) === P.ZOOM || (this._state & P.TOUCH_ZOOM) === P.TOUCH_ZOOM || (this._state & P.TOUCH_ZOOM_TRUCK) === P.TOUCH_ZOOM_TRUCK || (this._state & P.TOUCH_ZOOM_OFFSET) === P.TOUCH_ZOOM_OFFSET || (this._state & P.TOUCH_ZOOM_ROTATE) === P.TOUCH_ZOOM_ROTATE) && (this._zoomEnd = this._zoom, this._zoomVelocity.value = 0), ((this._state & P.OFFSET) === P.OFFSET || (this._state & P.TOUCH_OFFSET) === P.TOUCH_OFFSET || (this._state & P.TOUCH_DOLLY_OFFSET) === P.TOUCH_DOLLY_OFFSET || (this._state & P.TOUCH_ZOOM_OFFSET) === P.TOUCH_ZOOM_OFFSET) && (this._focalOffsetEnd.copy(this._focalOffset), this._focalOffsetVelocity.set(0, 0, 0)), this.dispatchEvent({ type: \"controlstart\" });\n }, m = () => {\n if (!this._enabled || !this._dragNeedsUpdate)\n return;\n this._dragNeedsUpdate = !1, $s(this._activePointers, lt);\n const T = this._domElement && document.pointerLockElement === this._domElement ? this._lockedPointer || this._activePointers[0] : null, O = T ? -T.deltaX : i.x - lt.x, _ = T ? -T.deltaY : i.y - lt.y;\n if (i.copy(lt), ((this._state & P.ROTATE) === P.ROTATE || (this._state & P.TOUCH_ROTATE) === P.TOUCH_ROTATE || (this._state & P.TOUCH_DOLLY_ROTATE) === P.TOUCH_DOLLY_ROTATE || (this._state & P.TOUCH_ZOOM_ROTATE) === P.TOUCH_ZOOM_ROTATE) && (this._rotateInternal(O, _), this._isUserControllingRotate = !0), (this._state & P.DOLLY) === P.DOLLY || (this._state & P.ZOOM) === P.ZOOM) {\n const S = this.dollyToCursor ? (e.x - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0, N = this.dollyToCursor ? (e.y - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0, L = this.dollyDragInverted ? -1 : 1;\n (this._state & P.DOLLY) === P.DOLLY ? (this._dollyInternal(L * _ * Es, S, N), this._isUserControllingDolly = !0) : (this._zoomInternal(L * _ * Es, S, N), this._isUserControllingZoom = !0);\n }\n if ((this._state & P.TOUCH_DOLLY) === P.TOUCH_DOLLY || (this._state & P.TOUCH_ZOOM) === P.TOUCH_ZOOM || (this._state & P.TOUCH_DOLLY_TRUCK) === P.TOUCH_DOLLY_TRUCK || (this._state & P.TOUCH_ZOOM_TRUCK) === P.TOUCH_ZOOM_TRUCK || (this._state & P.TOUCH_DOLLY_OFFSET) === P.TOUCH_DOLLY_OFFSET || (this._state & P.TOUCH_ZOOM_OFFSET) === P.TOUCH_ZOOM_OFFSET || (this._state & P.TOUCH_DOLLY_ROTATE) === P.TOUCH_DOLLY_ROTATE || (this._state & P.TOUCH_ZOOM_ROTATE) === P.TOUCH_ZOOM_ROTATE) {\n const S = lt.x - this._activePointers[1].clientX, N = lt.y - this._activePointers[1].clientY, L = Math.sqrt(S * S + N * N), w = o.y - L;\n o.set(0, L);\n const y = this.dollyToCursor ? (i.x - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0, U = this.dollyToCursor ? (i.y - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0;\n (this._state & P.TOUCH_DOLLY) === P.TOUCH_DOLLY || (this._state & P.TOUCH_DOLLY_ROTATE) === P.TOUCH_DOLLY_ROTATE || (this._state & P.TOUCH_DOLLY_TRUCK) === P.TOUCH_DOLLY_TRUCK || (this._state & P.TOUCH_DOLLY_OFFSET) === P.TOUCH_DOLLY_OFFSET ? (this._dollyInternal(w * Es, y, U), this._isUserControllingDolly = !0) : (this._zoomInternal(w * Es, y, U), this._isUserControllingZoom = !0);\n }\n ((this._state & P.TRUCK) === P.TRUCK || (this._state & P.TOUCH_TRUCK) === P.TOUCH_TRUCK || (this._state & P.TOUCH_DOLLY_TRUCK) === P.TOUCH_DOLLY_TRUCK || (this._state & P.TOUCH_ZOOM_TRUCK) === P.TOUCH_ZOOM_TRUCK) && (this._truckInternal(O, _, !1), this._isUserControllingTruck = !0), ((this._state & P.OFFSET) === P.OFFSET || (this._state & P.TOUCH_OFFSET) === P.TOUCH_OFFSET || (this._state & P.TOUCH_DOLLY_OFFSET) === P.TOUCH_DOLLY_OFFSET || (this._state & P.TOUCH_ZOOM_OFFSET) === P.TOUCH_ZOOM_OFFSET) && (this._truckInternal(O, _, !0), this._isUserControllingOffset = !0), this.dispatchEvent({ type: \"control\" });\n }, C = () => {\n $s(this._activePointers, lt), i.copy(lt), this._dragNeedsUpdate = !1, (this._activePointers.length === 0 || this._activePointers.length === 1 && this._activePointers[0] === this._lockedPointer) && (this._isDragging = !1), this._activePointers.length === 0 && this._domElement && (this._domElement.ownerDocument.removeEventListener(\"pointermove\", a, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"mousemove\", c), this._domElement.ownerDocument.removeEventListener(\"pointerup\", h), this._domElement.ownerDocument.removeEventListener(\"mouseup\", d), this.dispatchEvent({ type: \"controlend\" }));\n };\n this.lockPointer = () => {\n !this._enabled || !this._domElement || (this.cancel(), this._lockedPointer = {\n pointerId: -1,\n clientX: 0,\n clientY: 0,\n deltaX: 0,\n deltaY: 0,\n mouseButton: null\n }, this._activePointers.push(this._lockedPointer), this._domElement.ownerDocument.removeEventListener(\"pointermove\", a, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"pointerup\", h), this._domElement.requestPointerLock(), this._domElement.ownerDocument.addEventListener(\"pointerlockchange\", A), this._domElement.ownerDocument.addEventListener(\"pointerlockerror\", F), this._domElement.ownerDocument.addEventListener(\"pointermove\", a, { passive: !1 }), this._domElement.ownerDocument.addEventListener(\"pointerup\", h), R());\n }, this.unlockPointer = () => {\n this._lockedPointer !== null && (this._disposePointer(this._lockedPointer), this._lockedPointer = null), document.exitPointerLock(), this.cancel(), this._domElement && (this._domElement.ownerDocument.removeEventListener(\"pointerlockchange\", A), this._domElement.ownerDocument.removeEventListener(\"pointerlockerror\", F));\n };\n const A = () => {\n this._domElement && this._domElement.ownerDocument.pointerLockElement === this._domElement || this.unlockPointer();\n }, F = () => {\n this.unlockPointer();\n };\n this._addAllEventListeners = (p) => {\n this._domElement = p, this._domElement.style.touchAction = \"none\", this._domElement.style.userSelect = \"none\", this._domElement.style.webkitUserSelect = \"none\", this._domElement.addEventListener(\"pointerdown\", n), Sr && this._domElement.addEventListener(\"mousedown\", r), this._domElement.addEventListener(\"pointercancel\", h), this._domElement.addEventListener(\"wheel\", u, { passive: !1 }), this._domElement.addEventListener(\"contextmenu\", f);\n }, this._removeAllEventListeners = () => {\n this._domElement && (this._domElement.style.touchAction = \"\", this._domElement.style.userSelect = \"\", this._domElement.style.webkitUserSelect = \"\", this._domElement.removeEventListener(\"pointerdown\", n), this._domElement.removeEventListener(\"mousedown\", r), this._domElement.removeEventListener(\"pointercancel\", h), this._domElement.removeEventListener(\"wheel\", u, { passive: !1 }), this._domElement.removeEventListener(\"contextmenu\", f), this._domElement.ownerDocument.removeEventListener(\"pointermove\", a, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"mousemove\", c), this._domElement.ownerDocument.removeEventListener(\"pointerup\", h), this._domElement.ownerDocument.removeEventListener(\"mouseup\", d), this._domElement.ownerDocument.removeEventListener(\"pointerlockchange\", A), this._domElement.ownerDocument.removeEventListener(\"pointerlockerror\", F));\n }, this.cancel = () => {\n this._state !== P.NONE && (this._state = P.NONE, this._activePointers.length = 0, C());\n }, t && this.connect(t), this.update(0);\n }\n /**\n * The camera to be controlled\n * @category Properties\n */\n get camera() {\n return this._camera;\n }\n set camera(s) {\n this._camera = s, this.updateCameraUp(), this._camera.updateProjectionMatrix(), this._updateNearPlaneCorners(), this._needsUpdate = !0;\n }\n /**\n * Whether or not the controls are enabled.\n * `false` to disable user dragging/touch-move, but all methods works.\n * @category Properties\n */\n get enabled() {\n return this._enabled;\n }\n set enabled(s) {\n this._enabled = s, this._domElement && (s ? (this._domElement.style.touchAction = \"none\", this._domElement.style.userSelect = \"none\", this._domElement.style.webkitUserSelect = \"none\") : (this.cancel(), this._domElement.style.touchAction = \"\", this._domElement.style.userSelect = \"\", this._domElement.style.webkitUserSelect = \"\"));\n }\n /**\n * Returns `true` if the controls are active updating.\n * readonly value.\n * @category Properties\n */\n get active() {\n return !this._hasRested;\n }\n /**\n * Getter for the current `ACTION`.\n * readonly value.\n * @category Properties\n */\n get currentAction() {\n return this._state;\n }\n /**\n * get/set Current distance.\n * @category Properties\n */\n get distance() {\n return this._spherical.radius;\n }\n set distance(s) {\n this._spherical.radius === s && this._sphericalEnd.radius === s || (this._spherical.radius = s, this._sphericalEnd.radius = s, this._needsUpdate = !0);\n }\n // horizontal angle\n /**\n * get/set the azimuth angle (horizontal) in radians.\n * Every 360 degrees turn is added to `.azimuthAngle` value, which is accumulative.\n * @category Properties\n */\n get azimuthAngle() {\n return this._spherical.theta;\n }\n set azimuthAngle(s) {\n this._spherical.theta === s && this._sphericalEnd.theta === s || (this._spherical.theta = s, this._sphericalEnd.theta = s, this._needsUpdate = !0);\n }\n // vertical angle\n /**\n * get/set the polar angle (vertical) in radians.\n * @category Properties\n */\n get polarAngle() {\n return this._spherical.phi;\n }\n set polarAngle(s) {\n this._spherical.phi === s && this._sphericalEnd.phi === s || (this._spherical.phi = s, this._sphericalEnd.phi = s, this._needsUpdate = !0);\n }\n /**\n * Whether camera position should be enclosed in the boundary or not.\n * @category Properties\n */\n get boundaryEnclosesCamera() {\n return this._boundaryEnclosesCamera;\n }\n set boundaryEnclosesCamera(s) {\n this._boundaryEnclosesCamera = s, this._needsUpdate = !0;\n }\n /**\n * Set drag-start, touches and wheel enable area in the domElement.\n * each values are between `0` and `1` inclusive, where `0` is left/top and `1` is right/bottom of the screen.\n * e.g. `{ x: 0, y: 0, width: 1, height: 1 }` for entire area.\n * @category Properties\n */\n set interactiveArea(s) {\n this._interactiveArea.width = mt(s.width, 0, 1), this._interactiveArea.height = mt(s.height, 0, 1), this._interactiveArea.x = mt(s.x, 0, 1 - this._interactiveArea.width), this._interactiveArea.y = mt(s.y, 0, 1 - this._interactiveArea.height);\n }\n /**\n * Adds the specified event listener.\n * Applicable event types (which is `K`) are:\n * | Event name | Timing |\n * | ------------------- | ------ |\n * | `'controlstart'` | When the user starts to control the camera via mouse / touches. ¹ |\n * | `'control'` | When the user controls the camera (dragging). |\n * | `'controlend'` | When the user ends to control the camera. ¹ |\n * | `'transitionstart'` | When any kind of transition starts, either user control or using a method with `enableTransition = true` |\n * | `'update'` | When the camera position is updated. |\n * | `'wake'` | When the camera starts moving. |\n * | `'rest'` | When the camera movement is below `.restThreshold` ². |\n * | `'sleep'` | When the camera end moving. |\n *\n * 1. `mouseButtons.wheel` (Mouse wheel control) does not emit `'controlstart'` and `'controlend'`. `mouseButtons.wheel` uses scroll-event internally, and scroll-event happens intermittently. That means \"start\" and \"end\" cannot be detected.\n * 2. Due to damping, `sleep` will usually fire a few seconds after the camera _appears_ to have stopped moving. If you want to do something (e.g. enable UI, perform another transition) at the point when the camera has stopped, you probably want the `rest` event. This can be fine tuned using the `.restThreshold` parameter. See the [Rest and Sleep Example](https://yomotsu.github.io/camera-controls/examples/rest-and-sleep.html).\n *\n * e.g.\n * ```\n * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n * ```\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n addEventListener(s, t) {\n super.addEventListener(s, t);\n }\n /**\n * Removes the specified event listener\n * e.g.\n * ```\n * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n * ```\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n removeEventListener(s, t) {\n super.removeEventListener(s, t);\n }\n /**\n * Rotate azimuthal angle(horizontal) and polar angle(vertical).\n * Every value is added to the current value.\n * @param azimuthAngle Azimuth rotate angle. In radian.\n * @param polarAngle Polar rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotate(s, t, e = !1) {\n return this.rotateTo(this._sphericalEnd.theta + s, this._sphericalEnd.phi + t, e);\n }\n /**\n * Rotate azimuthal angle(horizontal) to the given angle and keep the same polar angle(vertical) target.\n *\n * e.g.\n * ```\n * cameraControls.rotateAzimuthTo( 30 * THREE.MathUtils.DEG2RAD, true );\n * ```\n * @param azimuthAngle Azimuth rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotateAzimuthTo(s, t = !1) {\n return this.rotateTo(s, this._sphericalEnd.phi, t);\n }\n /**\n * Rotate polar angle(vertical) to the given angle and keep the same azimuthal angle(horizontal) target.\n *\n * e.g.\n * ```\n * cameraControls.rotatePolarTo( 30 * THREE.MathUtils.DEG2RAD, true );\n * ```\n * @param polarAngle Polar rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotatePolarTo(s, t = !1) {\n return this.rotateTo(this._sphericalEnd.theta, s, t);\n }\n /**\n * Rotate azimuthal angle(horizontal) and polar angle(vertical) to the given angle.\n * Camera view will rotate over the orbit pivot absolutely:\n *\n * azimuthAngle\n * ```\n * 0º\n * \\\n * 90º -----+----- -90º\n * \\\n * 180º\n * ```\n * | direction | angle |\n * | --------- | ---------------------- |\n * | front | 0º |\n * | left | 90º (`Math.PI / 2`) |\n * | right | -90º (`- Math.PI / 2`) |\n * | back | 180º (`Math.PI`) |\n *\n * polarAngle\n * ```\n * 180º\n * |\n * 90º\n * |\n * 0º\n * ```\n * | direction | angle |\n * | -------------------- | ---------------------- |\n * | top/sky | 180º (`Math.PI`) |\n * | horizontal from view | 90º (`Math.PI / 2`) |\n * | bottom/floor | 0º |\n *\n * @param azimuthAngle Azimuth rotate angle to. In radian.\n * @param polarAngle Polar rotate angle to. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotateTo(s, t, e = !1) {\n this._isUserControllingRotate = !1;\n const i = mt(s, this.minAzimuthAngle, this.maxAzimuthAngle), o = mt(t, this.minPolarAngle, this.maxPolarAngle);\n this._sphericalEnd.theta = i, this._sphericalEnd.phi = o, this._sphericalEnd.makeSafe(), this._needsUpdate = !0, e || (this._spherical.theta = this._sphericalEnd.theta, this._spherical.phi = this._sphericalEnd.phi);\n const n = !e || k(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && k(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold);\n return this._createOnRestPromise(n);\n }\n /**\n * Dolly in/out camera position.\n * @param distance Distance of dollyIn. Negative number for dollyOut.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dolly(s, t = !1) {\n return this.dollyTo(this._sphericalEnd.radius - s, t);\n }\n /**\n * Dolly in/out camera position to given distance.\n * @param distance Distance of dolly.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dollyTo(s, t = !1) {\n return this._isUserControllingDolly = !1, this._lastDollyDirection = le.NONE, this._changedDolly = 0, this._dollyToNoClamp(mt(s, this.minDistance, this.maxDistance), t);\n }\n _dollyToNoClamp(s, t = !1) {\n const e = this._sphericalEnd.radius;\n if (this.colliderMeshes.length >= 1) {\n const n = this._collisionTest(), r = k(n, this._spherical.radius);\n if (!(e > s) && r)\n return Promise.resolve();\n this._sphericalEnd.radius = Math.min(s, n);\n } else\n this._sphericalEnd.radius = s;\n this._needsUpdate = !0, t || (this._spherical.radius = this._sphericalEnd.radius);\n const o = !t || k(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n return this._createOnRestPromise(o);\n }\n /**\n * Dolly in, but does not change the distance between the target and the camera, and moves the target position instead.\n * Specify a negative value for dolly out.\n * @param distance Distance of dolly.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dollyInFixed(s, t = !1) {\n this._targetEnd.add(this._getCameraDirection(Le).multiplyScalar(s)), t || this._target.copy(this._targetEnd);\n const e = !t || k(this._target.x, this._targetEnd.x, this.restThreshold) && k(this._target.y, this._targetEnd.y, this.restThreshold) && k(this._target.z, this._targetEnd.z, this.restThreshold);\n return this._createOnRestPromise(e);\n }\n /**\n * Zoom in/out camera. The value is added to camera zoom.\n * Limits set with `.minZoom` and `.maxZoom`\n * @param zoomStep zoom scale\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n zoom(s, t = !1) {\n return this.zoomTo(this._zoomEnd + s, t);\n }\n /**\n * Zoom in/out camera to given scale. The value overwrites camera zoom.\n * Limits set with .minZoom and .maxZoom\n * @param zoom\n * @param enableTransition\n * @category Methods\n */\n zoomTo(s, t = !1) {\n this._isUserControllingZoom = !1, this._zoomEnd = mt(s, this.minZoom, this.maxZoom), this._needsUpdate = !0, t || (this._zoom = this._zoomEnd);\n const e = !t || k(this._zoom, this._zoomEnd, this.restThreshold);\n return this._changedZoom = 0, this._createOnRestPromise(e);\n }\n /**\n * @deprecated `pan()` has been renamed to `truck()`\n * @category Methods\n */\n pan(s, t, e = !1) {\n return console.warn(\"`pan` has been renamed to `truck`\"), this.truck(s, t, e);\n }\n /**\n * Truck and pedestal camera using current azimuthal angle\n * @param x Horizontal translate amount\n * @param y Vertical translate amount\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n truck(s, t, e = !1) {\n this._camera.updateMatrix(), gt.setFromMatrixColumn(this._camera.matrix, 0), _t.setFromMatrixColumn(this._camera.matrix, 1), gt.multiplyScalar(s), _t.multiplyScalar(-t);\n const i = G.copy(gt).add(_t), o = z.copy(this._targetEnd).add(i);\n return this.moveTo(o.x, o.y, o.z, e);\n }\n /**\n * Move forward / backward.\n * @param distance Amount to move forward / backward. Negative value to move backward\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n forward(s, t = !1) {\n G.setFromMatrixColumn(this._camera.matrix, 0), G.crossVectors(this._camera.up, G), G.multiplyScalar(s);\n const e = z.copy(this._targetEnd).add(G);\n return this.moveTo(e.x, e.y, e.z, t);\n }\n /**\n * Move up / down.\n * @param height Amount to move up / down. Negative value to move down\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n elevate(s, t = !1) {\n return G.copy(this._camera.up).multiplyScalar(s), this.moveTo(this._targetEnd.x + G.x, this._targetEnd.y + G.y, this._targetEnd.z + G.z, t);\n }\n /**\n * Move target position to given point.\n * @param x x coord to move center position\n * @param y y coord to move center position\n * @param z z coord to move center position\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n moveTo(s, t, e, i = !1) {\n this._isUserControllingTruck = !1;\n const o = G.set(s, t, e).sub(this._targetEnd);\n this._encloseToBoundary(this._targetEnd, o, this.boundaryFriction), this._needsUpdate = !0, i || this._target.copy(this._targetEnd);\n const n = !i || k(this._target.x, this._targetEnd.x, this.restThreshold) && k(this._target.y, this._targetEnd.y, this.restThreshold) && k(this._target.z, this._targetEnd.z, this.restThreshold);\n return this._createOnRestPromise(n);\n }\n /**\n * Look in the given point direction.\n * @param x point x.\n * @param y point y.\n * @param z point z.\n * @param enableTransition Whether to move smoothly or immediately.\n * @returns Transition end promise\n * @category Methods\n */\n lookInDirectionOf(s, t, e, i = !1) {\n const r = G.set(s, t, e).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);\n return this.setPosition(r.x, r.y, r.z, i);\n }\n /**\n * Fit the viewport to the box or the bounding box of the object, using the nearest axis. paddings are in unit.\n * set `cover: true` to fill enter screen.\n * e.g.\n * ```\n * cameraControls.fitToBox( myMesh );\n * ```\n * @param box3OrObject Axis aligned bounding box to fit the view.\n * @param enableTransition Whether to move smoothly or immediately.\n * @param options | `` { cover: boolean, paddingTop: number, paddingLeft: number, paddingBottom: number, paddingRight: number }\n * @returns Transition end promise\n * @category Methods\n */\n fitToBox(s, t, { cover: e = !1, paddingLeft: i = 0, paddingRight: o = 0, paddingBottom: n = 0, paddingTop: r = 0 } = {}) {\n const a = [], c = s.isBox3 ? de.copy(s) : de.setFromObject(s);\n c.isEmpty() && (console.warn(\"camera-controls: fitTo() cannot be used with an empty box. Aborting\"), Promise.resolve());\n const h = on(this._sphericalEnd.theta, nn), d = on(this._sphericalEnd.phi, nn);\n a.push(this.rotateTo(h, d, t));\n const E = G.setFromSpherical(this._sphericalEnd).normalize(), u = En.setFromUnitVectors(E, ti), f = k(Math.abs(E.y), 1);\n f && u.multiply(si.setFromAxisAngle(ds, h)), u.multiply(this._yAxisUpSpaceInverse);\n const R = hn.makeEmpty();\n z.copy(c.min).applyQuaternion(u), R.expandByPoint(z), z.copy(c.min).setX(c.max.x).applyQuaternion(u), R.expandByPoint(z), z.copy(c.min).setY(c.max.y).applyQuaternion(u), R.expandByPoint(z), z.copy(c.max).setZ(c.min.z).applyQuaternion(u), R.expandByPoint(z), z.copy(c.min).setZ(c.max.z).applyQuaternion(u), R.expandByPoint(z), z.copy(c.max).setY(c.min.y).applyQuaternion(u), R.expandByPoint(z), z.copy(c.max).setX(c.min.x).applyQuaternion(u), R.expandByPoint(z), z.copy(c.max).applyQuaternion(u), R.expandByPoint(z), R.min.x -= i, R.min.y -= n, R.max.x += o, R.max.y += r, u.setFromUnitVectors(ti, E), f && u.premultiply(si.invert()), u.premultiply(this._yAxisUpSpace);\n const m = R.getSize(G), C = R.getCenter(z).applyQuaternion(u);\n if (Zt(this._camera)) {\n const A = this.getDistanceToFitBox(m.x, m.y, m.z, e);\n a.push(this.moveTo(C.x, C.y, C.z, t)), a.push(this.dollyTo(A, t)), a.push(this.setFocalOffset(0, 0, 0, t));\n } else if (bt(this._camera)) {\n const A = this._camera, F = A.right - A.left, p = A.top - A.bottom, T = e ? Math.max(F / m.x, p / m.y) : Math.min(F / m.x, p / m.y);\n a.push(this.moveTo(C.x, C.y, C.z, t)), a.push(this.zoomTo(T, t)), a.push(this.setFocalOffset(0, 0, 0, t));\n }\n return Promise.all(a);\n }\n /**\n * Fit the viewport to the sphere or the bounding sphere of the object.\n * @param sphereOrMesh\n * @param enableTransition\n * @category Methods\n */\n fitToSphere(s, t) {\n const e = [], o = s instanceof Y.Sphere ? ei.copy(s) : ot.createBoundingSphere(s, ei);\n if (e.push(this.moveTo(o.center.x, o.center.y, o.center.z, t)), Zt(this._camera)) {\n const n = this.getDistanceToFitSphere(o.radius);\n e.push(this.dollyTo(n, t));\n } else if (bt(this._camera)) {\n const n = this._camera.right - this._camera.left, r = this._camera.top - this._camera.bottom, a = 2 * o.radius, c = Math.min(n / a, r / a);\n e.push(this.zoomTo(c, t));\n }\n return e.push(this.setFocalOffset(0, 0, 0, t)), Promise.all(e);\n }\n /**\n * Look at the `target` from the `position`.\n * @param positionX\n * @param positionY\n * @param positionZ\n * @param targetX\n * @param targetY\n * @param targetZ\n * @param enableTransition\n * @category Methods\n */\n setLookAt(s, t, e, i, o, n, r = !1) {\n this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = le.NONE, this._changedDolly = 0;\n const a = z.set(i, o, n), c = G.set(s, t, e);\n this._targetEnd.copy(a), this._sphericalEnd.setFromVector3(c.sub(a).applyQuaternion(this._yAxisUpSpace)), this.normalizeRotations(), this._needsUpdate = !0, r || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));\n const h = !r || k(this._target.x, this._targetEnd.x, this.restThreshold) && k(this._target.y, this._targetEnd.y, this.restThreshold) && k(this._target.z, this._targetEnd.z, this.restThreshold) && k(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && k(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold) && k(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n return this._createOnRestPromise(h);\n }\n /**\n * Similar to setLookAt, but it interpolates between two states.\n * @param positionAX\n * @param positionAY\n * @param positionAZ\n * @param targetAX\n * @param targetAY\n * @param targetAZ\n * @param positionBX\n * @param positionBY\n * @param positionBZ\n * @param targetBX\n * @param targetBY\n * @param targetBZ\n * @param t\n * @param enableTransition\n * @category Methods\n */\n lerpLookAt(s, t, e, i, o, n, r, a, c, h, d, E, u, f = !1) {\n this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = le.NONE, this._changedDolly = 0;\n const R = G.set(i, o, n), m = z.set(s, t, e);\n ut.setFromVector3(m.sub(R).applyQuaternion(this._yAxisUpSpace));\n const C = Ee.set(h, d, E), A = z.set(r, a, c);\n ye.setFromVector3(A.sub(C).applyQuaternion(this._yAxisUpSpace)), this._targetEnd.copy(R.lerp(C, u));\n const F = ye.theta - ut.theta, p = ye.phi - ut.phi, T = ye.radius - ut.radius;\n this._sphericalEnd.set(ut.radius + T * u, ut.phi + p * u, ut.theta + F * u), this.normalizeRotations(), this._needsUpdate = !0, f || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));\n const O = !f || k(this._target.x, this._targetEnd.x, this.restThreshold) && k(this._target.y, this._targetEnd.y, this.restThreshold) && k(this._target.z, this._targetEnd.z, this.restThreshold) && k(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && k(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold) && k(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n return this._createOnRestPromise(O);\n }\n /**\n * Set angle and distance by given position.\n * An alias of `setLookAt()`, without target change. Thus keep gazing at the current target\n * @param positionX\n * @param positionY\n * @param positionZ\n * @param enableTransition\n * @category Methods\n */\n setPosition(s, t, e, i = !1) {\n return this.setLookAt(s, t, e, this._targetEnd.x, this._targetEnd.y, this._targetEnd.z, i);\n }\n /**\n * Set the target position where gaze at.\n * An alias of `setLookAt()`, without position change. Thus keep the same position.\n * @param targetX\n * @param targetY\n * @param targetZ\n * @param enableTransition\n * @category Methods\n */\n setTarget(s, t, e, i = !1) {\n const o = this.getPosition(G), n = this.setLookAt(o.x, o.y, o.z, s, t, e, i);\n return this._sphericalEnd.phi = mt(this._sphericalEnd.phi, this.minPolarAngle, this.maxPolarAngle), n;\n }\n /**\n * Set focal offset using the screen parallel coordinates. z doesn't affect in Orthographic as with Dolly.\n * @param x\n * @param y\n * @param z\n * @param enableTransition\n * @category Methods\n */\n setFocalOffset(s, t, e, i = !1) {\n this._isUserControllingOffset = !1, this._focalOffsetEnd.set(s, t, e), this._needsUpdate = !0, i || this._focalOffset.copy(this._focalOffsetEnd);\n const o = !i || k(this._focalOffset.x, this._focalOffsetEnd.x, this.restThreshold) && k(this._focalOffset.y, this._focalOffsetEnd.y, this.restThreshold) && k(this._focalOffset.z, this._focalOffsetEnd.z, this.restThreshold);\n return this._createOnRestPromise(o);\n }\n /**\n * Set orbit point without moving the camera.\n * SHOULD NOT RUN DURING ANIMATIONS. `setOrbitPoint()` will immediately fix the positions.\n * @param targetX\n * @param targetY\n * @param targetZ\n * @category Methods\n */\n setOrbitPoint(s, t, e) {\n this._camera.updateMatrixWorld(), gt.setFromMatrixColumn(this._camera.matrixWorldInverse, 0), _t.setFromMatrixColumn(this._camera.matrixWorldInverse, 1), Qt.setFromMatrixColumn(this._camera.matrixWorldInverse, 2);\n const i = G.set(s, t, e), o = i.distanceTo(this._camera.position), n = i.sub(this._camera.position);\n gt.multiplyScalar(n.x), _t.multiplyScalar(n.y), Qt.multiplyScalar(n.z), G.copy(gt).add(_t).add(Qt), G.z = G.z + o, this.dollyTo(o, !1), this.setFocalOffset(-G.x, G.y, -G.z, !1), this.moveTo(s, t, e, !1);\n }\n /**\n * Set the boundary box that encloses the target of the camera. box3 is in THREE.Box3\n * @param box3\n * @category Methods\n */\n setBoundary(s) {\n if (!s) {\n this._boundary.min.set(-1 / 0, -1 / 0, -1 / 0), this._boundary.max.set(1 / 0, 1 / 0, 1 / 0), this._needsUpdate = !0;\n return;\n }\n this._boundary.copy(s), this._boundary.clampPoint(this._targetEnd, this._targetEnd), this._needsUpdate = !0;\n }\n /**\n * Set (or unset) the current viewport.\n * Set this when you want to use renderer viewport and .dollyToCursor feature at the same time.\n * @param viewportOrX\n * @param y\n * @param width\n * @param height\n * @category Methods\n */\n setViewport(s, t, e, i) {\n if (s === null) {\n this._viewport = null;\n return;\n }\n this._viewport = this._viewport || new Y.Vector4(), typeof s == \"number\" ? this._viewport.set(s, t, e, i) : this._viewport.copy(s);\n }\n /**\n * Calculate the distance to fit the box.\n * @param width box width\n * @param height box height\n * @param depth box depth\n * @returns distance\n * @category Methods\n */\n getDistanceToFitBox(s, t, e, i = !1) {\n if (Js(this._camera, \"getDistanceToFitBox\"))\n return this._spherical.radius;\n const o = s / t, n = this._camera.getEffectiveFOV() * Se, r = this._camera.aspect;\n return ((i ? o > r : o < r) ? t : s / r) * 0.5 / Math.tan(n * 0.5) + e * 0.5;\n }\n /**\n * Calculate the distance to fit the sphere.\n * @param radius sphere radius\n * @returns distance\n * @category Methods\n */\n getDistanceToFitSphere(s) {\n if (Js(this._camera, \"getDistanceToFitSphere\"))\n return this._spherical.radius;\n const t = this._camera.getEffectiveFOV() * Se, e = Math.atan(Math.tan(t * 0.5) * this._camera.aspect) * 2, i = 1 < this._camera.aspect ? t : e;\n return s / Math.sin(i * 0.5);\n }\n /**\n * Returns the orbit center position, where the camera looking at.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getTarget(s, t = !0) {\n return (s && s.isVector3 ? s : new Y.Vector3()).copy(t ? this._targetEnd : this._target);\n }\n /**\n * Returns the camera position.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getPosition(s, t = !0) {\n return (s && s.isVector3 ? s : new Y.Vector3()).setFromSpherical(t ? this._sphericalEnd : this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t ? this._targetEnd : this._target);\n }\n /**\n * Returns the spherical coordinates of the orbit.\n * @param out The receiving Spherical instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getSpherical(s, t = !0) {\n return (s && s instanceof Y.Spherical ? s : new Y.Spherical()).copy(t ? this._sphericalEnd : this._spherical);\n }\n /**\n * Returns the focal offset, which is how much the camera appears to be translated in screen parallel coordinates.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getFocalOffset(s, t = !0) {\n return (s && s.isVector3 ? s : new Y.Vector3()).copy(t ? this._focalOffsetEnd : this._focalOffset);\n }\n /**\n * Normalize camera azimuth angle rotation between 0 and 360 degrees.\n * @category Methods\n */\n normalizeRotations() {\n this._sphericalEnd.theta = this._sphericalEnd.theta % he, this._sphericalEnd.theta < 0 && (this._sphericalEnd.theta += he), this._spherical.theta += he * Math.round((this._sphericalEnd.theta - this._spherical.theta) / he);\n }\n /**\n * Reset all rotation and position to defaults.\n * @param enableTransition\n * @category Methods\n */\n reset(s = !1) {\n if (!k(this._camera.up.x, this._cameraUp0.x) || !k(this._camera.up.y, this._cameraUp0.y) || !k(this._camera.up.z, this._cameraUp0.z)) {\n this._camera.up.copy(this._cameraUp0);\n const e = this.getPosition(G);\n this.updateCameraUp(), this.setPosition(e.x, e.y, e.z);\n }\n const t = [\n this.setLookAt(this._position0.x, this._position0.y, this._position0.z, this._target0.x, this._target0.y, this._target0.z, s),\n this.setFocalOffset(this._focalOffset0.x, this._focalOffset0.y, this._focalOffset0.z, s),\n this.zoomTo(this._zoom0, s)\n ];\n return Promise.all(t);\n }\n /**\n * Set current camera position as the default position.\n * @category Methods\n */\n saveState() {\n this._cameraUp0.copy(this._camera.up), this.getTarget(this._target0), this.getPosition(this._position0), this._zoom0 = this._zoom, this._focalOffset0.copy(this._focalOffset);\n }\n /**\n * Sync camera-up direction.\n * When camera-up vector is changed, `.updateCameraUp()` must be called.\n * @category Methods\n */\n updateCameraUp() {\n this._yAxisUpSpace.setFromUnitVectors(this._camera.up, ds), this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert();\n }\n /**\n * Apply current camera-up direction to the camera.\n * The orbit system will be re-initialized with the current position.\n * @category Methods\n */\n applyCameraUp() {\n const s = G.subVectors(this._target, this._camera.position).normalize(), t = z.crossVectors(s, this._camera.up);\n this._camera.up.crossVectors(t, s).normalize(), this._camera.updateMatrixWorld();\n const e = this.getPosition(G);\n this.updateCameraUp(), this.setPosition(e.x, e.y, e.z);\n }\n /**\n * Update camera position and directions.\n * This should be called in your tick loop every time, and returns true if re-rendering is needed.\n * @param delta\n * @returns updated\n * @category Methods\n */\n update(s) {\n const t = this._sphericalEnd.theta - this._spherical.theta, e = this._sphericalEnd.phi - this._spherical.phi, i = this._sphericalEnd.radius - this._spherical.radius, o = cn.subVectors(this._targetEnd, this._target), n = ln.subVectors(this._focalOffsetEnd, this._focalOffset), r = this._zoomEnd - this._zoom;\n if (X(t))\n this._thetaVelocity.value = 0, this._spherical.theta = this._sphericalEnd.theta;\n else {\n const d = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;\n this._spherical.theta = hs(this._spherical.theta, this._sphericalEnd.theta, this._thetaVelocity, d, 1 / 0, s), this._needsUpdate = !0;\n }\n if (X(e))\n this._phiVelocity.value = 0, this._spherical.phi = this._sphericalEnd.phi;\n else {\n const d = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;\n this._spherical.phi = hs(this._spherical.phi, this._sphericalEnd.phi, this._phiVelocity, d, 1 / 0, s), this._needsUpdate = !0;\n }\n if (X(i))\n this._radiusVelocity.value = 0, this._spherical.radius = this._sphericalEnd.radius;\n else {\n const d = this._isUserControllingDolly ? this.draggingSmoothTime : this.smoothTime;\n this._spherical.radius = hs(this._spherical.radius, this._sphericalEnd.radius, this._radiusVelocity, d, this.maxSpeed, s), this._needsUpdate = !0;\n }\n if (X(o.x) && X(o.y) && X(o.z))\n this._targetVelocity.set(0, 0, 0), this._target.copy(this._targetEnd);\n else {\n const d = this._isUserControllingTruck ? this.draggingSmoothTime : this.smoothTime;\n rn(this._target, this._targetEnd, this._targetVelocity, d, this.maxSpeed, s, this._target), this._needsUpdate = !0;\n }\n if (X(n.x) && X(n.y) && X(n.z))\n this._focalOffsetVelocity.set(0, 0, 0), this._focalOffset.copy(this._focalOffsetEnd);\n else {\n const d = this._isUserControllingOffset ? this.draggingSmoothTime : this.smoothTime;\n rn(this._focalOffset, this._focalOffsetEnd, this._focalOffsetVelocity, d, this.maxSpeed, s, this._focalOffset), this._needsUpdate = !0;\n }\n if (X(r))\n this._zoomVelocity.value = 0, this._zoom = this._zoomEnd;\n else {\n const d = this._isUserControllingZoom ? this.draggingSmoothTime : this.smoothTime;\n this._zoom = hs(this._zoom, this._zoomEnd, this._zoomVelocity, d, 1 / 0, s);\n }\n if (this.dollyToCursor) {\n if (Zt(this._camera) && this._changedDolly !== 0) {\n const d = this._spherical.radius - this._lastDistance, E = this._camera, u = this._getCameraDirection(Le), f = G.copy(u).cross(E.up).normalize();\n f.lengthSq() === 0 && (f.x = 1);\n const R = z.crossVectors(f, u), m = this._sphericalEnd.radius * Math.tan(E.getEffectiveFOV() * Se * 0.5), A = (this._sphericalEnd.radius - d - this._sphericalEnd.radius) / this._sphericalEnd.radius, F = Ee.copy(this._targetEnd).add(f.multiplyScalar(this._dollyControlCoord.x * m * E.aspect)).add(R.multiplyScalar(this._dollyControlCoord.y * m)), p = G.copy(this._targetEnd).lerp(F, A), T = this._lastDollyDirection === le.IN && this._spherical.radius <= this.minDistance, O = this._lastDollyDirection === le.OUT && this.maxDistance <= this._spherical.radius;\n if (this.infinityDolly && (T || O)) {\n this._sphericalEnd.radius -= d, this._spherical.radius -= d;\n const S = z.copy(u).multiplyScalar(-d);\n p.add(S);\n }\n this._boundary.clampPoint(p, p);\n const _ = z.subVectors(p, this._targetEnd);\n this._targetEnd.copy(p), this._target.add(_), this._changedDolly -= d, X(this._changedDolly) && (this._changedDolly = 0);\n } else if (bt(this._camera) && this._changedZoom !== 0) {\n const d = this._zoom - this._lastZoom, E = this._camera, u = G.set(this._dollyControlCoord.x, this._dollyControlCoord.y, (E.near + E.far) / (E.near - E.far)).unproject(E), f = z.set(0, 0, -1).applyQuaternion(E.quaternion), R = Ee.copy(u).add(f.multiplyScalar(-u.dot(E.up))), C = -(this._zoom - d - this._zoom) / this._zoom, A = this._getCameraDirection(Le), F = this._targetEnd.dot(A), p = G.copy(this._targetEnd).lerp(R, C), T = p.dot(A), O = A.multiplyScalar(T - F);\n p.sub(O), this._boundary.clampPoint(p, p);\n const _ = z.subVectors(p, this._targetEnd);\n this._targetEnd.copy(p), this._target.add(_), this._changedZoom -= d, X(this._changedZoom) && (this._changedZoom = 0);\n }\n }\n this._camera.zoom !== this._zoom && (this._camera.zoom = this._zoom, this._camera.updateProjectionMatrix(), this._updateNearPlaneCorners(), this._needsUpdate = !0), this._dragNeedsUpdate = !0;\n const a = this._collisionTest();\n this._spherical.radius = Math.min(this._spherical.radius, a), this._spherical.makeSafe(), this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target), this._camera.lookAt(this._target), (!X(this._focalOffset.x) || !X(this._focalOffset.y) || !X(this._focalOffset.z)) && (this._camera.updateMatrixWorld(), gt.setFromMatrixColumn(this._camera.matrix, 0), _t.setFromMatrixColumn(this._camera.matrix, 1), Qt.setFromMatrixColumn(this._camera.matrix, 2), gt.multiplyScalar(this._focalOffset.x), _t.multiplyScalar(-this._focalOffset.y), Qt.multiplyScalar(this._focalOffset.z), G.copy(gt).add(_t).add(Qt), this._camera.position.add(G)), this._boundaryEnclosesCamera && this._encloseToBoundary(this._camera.position.copy(this._target), G.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse), 1);\n const h = this._needsUpdate;\n return h && !this._updatedLastTime ? (this._hasRested = !1, this.dispatchEvent({ type: \"wake\" }), this.dispatchEvent({ type: \"update\" })) : h ? (this.dispatchEvent({ type: \"update\" }), X(t, this.restThreshold) && X(e, this.restThreshold) && X(i, this.restThreshold) && X(o.x, this.restThreshold) && X(o.y, this.restThreshold) && X(o.z, this.restThreshold) && X(n.x, this.restThreshold) && X(n.y, this.restThreshold) && X(n.z, this.restThreshold) && X(r, this.restThreshold) && !this._hasRested && (this._hasRested = !0, this.dispatchEvent({ type: \"rest\" }))) : !h && this._updatedLastTime && this.dispatchEvent({ type: \"sleep\" }), this._lastDistance = this._spherical.radius, this._lastZoom = this._zoom, this._updatedLastTime = h, this._needsUpdate = !1, h;\n }\n /**\n * Get all state in JSON string\n * @category Methods\n */\n toJSON() {\n return JSON.stringify({\n enabled: this._enabled,\n minDistance: this.minDistance,\n maxDistance: Ne(this.maxDistance),\n minZoom: this.minZoom,\n maxZoom: Ne(this.maxZoom),\n minPolarAngle: this.minPolarAngle,\n maxPolarAngle: Ne(this.maxPolarAngle),\n minAzimuthAngle: Ne(this.minAzimuthAngle),\n maxAzimuthAngle: Ne(this.maxAzimuthAngle),\n smoothTime: this.smoothTime,\n draggingSmoothTime: this.draggingSmoothTime,\n dollySpeed: this.dollySpeed,\n truckSpeed: this.truckSpeed,\n dollyToCursor: this.dollyToCursor,\n verticalDragToForward: this.verticalDragToForward,\n target: this._targetEnd.toArray(),\n position: G.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),\n zoom: this._zoomEnd,\n focalOffset: this._focalOffsetEnd.toArray(),\n target0: this._target0.toArray(),\n position0: this._position0.toArray(),\n zoom0: this._zoom0,\n focalOffset0: this._focalOffset0.toArray()\n });\n }\n /**\n * Reproduce the control state with JSON. enableTransition is where anim or not in a boolean.\n * @param json\n * @param enableTransition\n * @category Methods\n */\n fromJSON(s, t = !1) {\n const e = JSON.parse(s);\n this.enabled = e.enabled, this.minDistance = e.minDistance, this.maxDistance = Pe(e.maxDistance), this.minZoom = e.minZoom, this.maxZoom = Pe(e.maxZoom), this.minPolarAngle = e.minPolarAngle, this.maxPolarAngle = Pe(e.maxPolarAngle), this.minAzimuthAngle = Pe(e.minAzimuthAngle), this.maxAzimuthAngle = Pe(e.maxAzimuthAngle), this.smoothTime = e.smoothTime, this.draggingSmoothTime = e.draggingSmoothTime, this.dollySpeed = e.dollySpeed, this.truckSpeed = e.truckSpeed, this.dollyToCursor = e.dollyToCursor, this.verticalDragToForward = e.verticalDragToForward, this._target0.fromArray(e.target0), this._position0.fromArray(e.position0), this._zoom0 = e.zoom0, this._focalOffset0.fromArray(e.focalOffset0), this.moveTo(e.target[0], e.target[1], e.target[2], t), ut.setFromVector3(G.fromArray(e.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)), this.rotateTo(ut.theta, ut.phi, t), this.dollyTo(ut.radius, t), this.zoomTo(e.zoom, t), this.setFocalOffset(e.focalOffset[0], e.focalOffset[1], e.focalOffset[2], t), this._needsUpdate = !0;\n }\n /**\n * Attach all internal event handlers to enable drag control.\n * @category Methods\n */\n connect(s) {\n if (this._domElement) {\n console.warn(\"camera-controls is already connected.\");\n return;\n }\n s.setAttribute(\"data-camera-controls-version\", gr), this._addAllEventListeners(s), this._getClientRect(this._elementRect);\n }\n /**\n * Detach all internal event handlers to disable drag control.\n */\n disconnect() {\n this.cancel(), this._removeAllEventListeners(), this._domElement && (this._domElement.removeAttribute(\"data-camera-controls-version\"), this._domElement = void 0);\n }\n /**\n * Dispose the cameraControls instance itself, remove all eventListeners.\n * @category Methods\n */\n dispose() {\n this.removeAllEventListeners(), this.disconnect();\n }\n // it's okay to expose public though\n _getTargetDirection(s) {\n return s.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse);\n }\n // it's okay to expose public though\n _getCameraDirection(s) {\n return this._getTargetDirection(s).negate();\n }\n _findPointerById(s) {\n return this._activePointers.find((t) => t.pointerId === s);\n }\n _findPointerByMouseButton(s) {\n return this._activePointers.find((t) => t.mouseButton === s);\n }\n _disposePointer(s) {\n this._activePointers.splice(this._activePointers.indexOf(s), 1);\n }\n _encloseToBoundary(s, t, e) {\n const i = t.lengthSq();\n if (i === 0)\n return s;\n const o = z.copy(t).add(s), r = this._boundary.clampPoint(o, Ee).sub(o), a = r.lengthSq();\n if (a === 0)\n return s.add(t);\n if (a === i)\n return s;\n if (e === 0)\n return s.add(t).add(r);\n {\n const c = 1 + e * a / t.dot(r);\n return s.add(z.copy(t).multiplyScalar(c)).add(r.multiplyScalar(1 - e));\n }\n }\n _updateNearPlaneCorners() {\n if (Zt(this._camera)) {\n const s = this._camera, t = s.near, e = s.getEffectiveFOV() * Se, i = Math.tan(e * 0.5) * t, o = i * s.aspect;\n this._nearPlaneCorners[0].set(-o, -i, 0), this._nearPlaneCorners[1].set(o, -i, 0), this._nearPlaneCorners[2].set(o, i, 0), this._nearPlaneCorners[3].set(-o, i, 0);\n } else if (bt(this._camera)) {\n const s = this._camera, t = 1 / s.zoom, e = s.left * t, i = s.right * t, o = s.top * t, n = s.bottom * t;\n this._nearPlaneCorners[0].set(e, o, 0), this._nearPlaneCorners[1].set(i, o, 0), this._nearPlaneCorners[2].set(i, n, 0), this._nearPlaneCorners[3].set(e, n, 0);\n }\n }\n // lateUpdate\n _collisionTest() {\n let s = 1 / 0;\n if (!(this.colliderMeshes.length >= 1) || Js(this._camera, \"_collisionTest\"))\n return s;\n const e = this._getTargetDirection(Le);\n ii.lookAt(an, e, this._camera.up);\n for (let i = 0; i < 4; i++) {\n const o = z.copy(this._nearPlaneCorners[i]);\n o.applyMatrix4(ii);\n const n = Ee.addVectors(this._target, o);\n us.set(n, e), us.far = this._spherical.radius + 1;\n const r = us.intersectObjects(this.colliderMeshes);\n r.length !== 0 && r[0].distance < s && (s = r[0].distance);\n }\n return s;\n }\n /**\n * Get its client rect and package into given `DOMRect` .\n */\n _getClientRect(s) {\n if (!this._domElement)\n return;\n const t = this._domElement.getBoundingClientRect();\n return s.x = t.left, s.y = t.top, this._viewport ? (s.x += this._viewport.x, s.y += t.height - this._viewport.w - this._viewport.y, s.width = this._viewport.z, s.height = this._viewport.w) : (s.width = t.width, s.height = t.height), s;\n }\n _createOnRestPromise(s) {\n return s ? Promise.resolve() : (this._hasRested = !1, this.dispatchEvent({ type: \"transitionstart\" }), new Promise((t) => {\n const e = () => {\n this.removeEventListener(\"rest\", e), t();\n };\n this.addEventListener(\"rest\", e);\n }));\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _addAllEventListeners(s) {\n }\n _removeAllEventListeners() {\n }\n /**\n * backward compatible\n * @deprecated use smoothTime (in seconds) instead\n * @category Properties\n */\n get dampingFactor() {\n return console.warn(\".dampingFactor has been deprecated. use smoothTime (in seconds) instead.\"), 0;\n }\n /**\n * backward compatible\n * @deprecated use smoothTime (in seconds) instead\n * @category Properties\n */\n set dampingFactor(s) {\n console.warn(\".dampingFactor has been deprecated. use smoothTime (in seconds) instead.\");\n }\n /**\n * backward compatible\n * @deprecated use draggingSmoothTime (in seconds) instead\n * @category Properties\n */\n get draggingDampingFactor() {\n return console.warn(\".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.\"), 0;\n }\n /**\n * backward compatible\n * @deprecated use draggingSmoothTime (in seconds) instead\n * @category Properties\n */\n set draggingDampingFactor(s) {\n console.warn(\".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.\");\n }\n static createBoundingSphere(s, t = new Y.Sphere()) {\n const e = t, i = e.center;\n de.makeEmpty(), s.traverseVisible((n) => {\n n.isMesh && de.expandByObject(n);\n }), de.getCenter(i);\n let o = 0;\n return s.traverseVisible((n) => {\n if (!n.isMesh)\n return;\n const r = n, a = r.geometry.clone();\n a.applyMatrix4(r.matrixWorld);\n const h = a.attributes.position;\n for (let d = 0, E = h.count; d < E; d++)\n G.fromBufferAttribute(h, d), o = Math.max(o, i.distanceToSquared(G));\n }), e.radius = Math.sqrt(o), e;\n }\n}\nclass He extends ar {\n constructor(t) {\n super(t);\n /** {@link Updateable.onBeforeUpdate} */\n I(this, \"onBeforeUpdate\", new D());\n /** {@link Updateable.onAfterUpdate} */\n I(this, \"onAfterUpdate\", new D());\n /**\n * Event that is triggered when the aspect of the camera has been updated.\n * This event is useful when you need to perform actions after the aspect of the camera has been changed.\n */\n I(this, \"onAspectUpdated\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * A three.js PerspectiveCamera or OrthographicCamera instance.\n * This camera is used for rendering the scene.\n */\n I(this, \"three\");\n I(this, \"_allControls\", /* @__PURE__ */ new Map());\n /**\n * Updates the aspect of the camera to match the size of the\n * {@link Components.renderer}.\n */\n I(this, \"updateAspect\", () => {\n var t;\n if (!(!this.currentWorld || !this.currentWorld.renderer)) {\n if (this.three instanceof g.OrthographicCamera) {\n this.onAspectUpdated.trigger();\n return;\n }\n if ((t = this.currentWorld.renderer) != null && t.isResizeable()) {\n const e = this.currentWorld.renderer.getSize();\n this.three.aspect = e.width / e.height, this.three.updateProjectionMatrix(), this.onAspectUpdated.trigger();\n }\n }\n });\n this.three = this.setupCamera(), this.setupEvents(!0), this.onWorldChanged.add(({ action: e, world: i }) => {\n if (e === \"added\") {\n const o = this.newCameraControls();\n this._allControls.set(i.uuid, o);\n }\n if (e === \"removed\") {\n const o = this._allControls.get(i.uuid);\n o && (o.dispose(), this._allControls.delete(i.uuid));\n }\n });\n }\n /**\n * The object that controls the camera. An instance of\n * [yomotsu's cameracontrols](https://github.com/yomotsu/camera-controls).\n * Transforming the camera directly will have no effect: you need to use this\n * object to move, rotate, look at objects, etc.\n */\n get controls() {\n if (!this.currentWorld)\n throw new Error(\"This camera needs a world to work!\");\n const t = this._allControls.get(this.currentWorld.uuid);\n if (!t)\n throw new Error(\"Controls not found!\");\n return t;\n }\n /**\n * Getter for the enabled state of the camera controls.\n * If the current world is null, it returns false.\n * Otherwise, it returns the enabled state of the camera controls.\n *\n * @returns {boolean} The enabled state of the camera controls.\n */\n get enabled() {\n return this.currentWorld === null ? !1 : this.controls.enabled;\n }\n /**\n * Setter for the enabled state of the camera controls.\n * If the current world is not null, it sets the enabled state of the camera controls to the provided value.\n *\n * @param {boolean} enabled - The new enabled state of the camera controls.\n */\n set enabled(t) {\n this.currentWorld !== null && (this.controls.enabled = t);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.onAspectUpdated.reset(), this.onBeforeUpdate.reset(), this.onAfterUpdate.reset(), this.three.removeFromParent(), this.onDisposed.trigger(), this.onDisposed.reset();\n for (const [t, e] of this._allControls)\n e.dispose();\n }\n /** {@link Updateable.update} */\n update(t) {\n this.enabled && (this.onBeforeUpdate.trigger(this), this.controls.update(t), this.onAfterUpdate.trigger(this));\n }\n setupCamera() {\n const t = window.innerWidth / window.innerHeight, e = new g.PerspectiveCamera(60, t, 1, 1e3);\n return e.position.set(50, 50, 50), e.lookAt(new g.Vector3(0, 0, 0)), e;\n }\n newCameraControls() {\n if (!this.currentWorld)\n throw new Error(\"This camera needs a world to work!\");\n if (!this.currentWorld.renderer)\n throw new Error(\"This camera needs a renderer to work!\");\n ot.install({ THREE: He.getSubsetOfThree() });\n const { domElement: t } = this.currentWorld.renderer.three, e = new ot(this.three, t);\n return e.smoothTime = 0.2, e.dollyToCursor = !0, e.infinityDolly = !0, e;\n }\n setupEvents(t) {\n t ? window.addEventListener(\"resize\", this.updateAspect) : window.removeEventListener(\"resize\", this.updateAspect);\n }\n static getSubsetOfThree() {\n return {\n MOUSE: g.MOUSE,\n Vector2: g.Vector2,\n Vector3: g.Vector3,\n Vector4: g.Vector4,\n Quaternion: g.Quaternion,\n Matrix4: g.Matrix4,\n Spherical: g.Spherical,\n Box3: g.Box3,\n Sphere: g.Sphere,\n Raycaster: g.Raycaster,\n MathUtils: g.MathUtils\n };\n }\n}\nconst gs = class gs extends et {\n constructor(t) {\n super(t);\n /** {@link Updateable.onAfterUpdate} */\n I(this, \"onAfterUpdate\", new D());\n /** {@link Updateable.onBeforeUpdate} */\n I(this, \"onBeforeUpdate\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * An event that is triggered when a new world is created.\n * The event passes the newly created world as a parameter.\n */\n I(this, \"onWorldCreated\", new D());\n /**\n * An event that is triggered when a world is deleted.\n * The event passes the UUID of the deleted world as a parameter.\n */\n I(this, \"onWorldDeleted\", new D());\n /**\n * A collection of worlds managed by this component.\n * The key is the unique identifier (UUID) of the world, and the value is the World instance.\n */\n I(this, \"list\", /* @__PURE__ */ new Map());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n t.add(gs.uuid, this);\n }\n /**\n * Creates a new instance of a SimpleWorld and adds it to the list of worlds.\n *\n * @template T - The type of the scene, extending from BaseScene. Defaults to BaseScene.\n * @template U - The type of the camera, extending from BaseCamera. Defaults to BaseCamera.\n * @template S - The type of the renderer, extending from BaseRenderer. Defaults to BaseRenderer.\n *\n * @throws {Error} - Throws an error if a world with the same UUID already exists in the list.\n */\n create() {\n const t = new Fr(this.components), e = t.uuid;\n if (this.list.has(e))\n throw new Error(\"There is already a world with this name!\");\n return this.list.set(e, t), this.onWorldCreated.trigger(t), t;\n }\n /**\n * Deletes a world from the list of worlds.\n *\n * @param {World} world - The world to be deleted.\n *\n * @throws {Error} - Throws an error if the provided world is not found in the list.\n *\n * @returns {void}\n */\n delete(t) {\n if (!this.list.has(t.uuid))\n throw new Error(\"The provided world is not found in the list!\");\n const e = t.uuid;\n this.list.delete(t.uuid), t.dispose(), this.onWorldDeleted.trigger(e);\n }\n /**\n * Disposes of the Worlds component and all its managed worlds.\n * This method sets the enabled flag to false, disposes of all worlds, clears the list,\n * and triggers the onDisposed event.\n *\n * @returns {void}\n */\n dispose() {\n this.enabled = !1;\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger();\n }\n /** {@link Updateable.update} */\n update(t) {\n if (this.enabled)\n for (const [e, i] of this.list)\n i.update(t);\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(gs, \"uuid\", \"fdb61dc4-2ec1-4966-b83d-54ea795fad4a\");\nlet Ci = gs;\nclass Nr {\n constructor(s, t, e) {\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** The world instance to which this Raycaster belongs. */\n I(this, \"world\");\n /** The components instance to which this grid belongs. */\n I(this, \"components\");\n /** The Three.js mesh that contains the infinite grid. */\n I(this, \"three\");\n I(this, \"_fade\", 3);\n I(this, \"updateZoom\", () => {\n this.world.camera instanceof He && (this.material.uniforms.uZoom.value = this.world.camera.three.zoom);\n });\n this.world = t;\n const { color: i, size1: o, size2: n, distance: r } = e;\n this.components = s;\n const a = new g.PlaneGeometry(2, 2, 1, 1), c = new g.ShaderMaterial({\n side: g.DoubleSide,\n uniforms: {\n uSize1: {\n value: o\n },\n uSize2: {\n value: n\n },\n uColor: {\n value: i\n },\n uDistance: {\n value: r\n },\n uFade: {\n value: this._fade\n },\n uZoom: {\n value: 1\n }\n },\n transparent: !0,\n vertexShader: `\n \n varying vec3 worldPosition;\n \n uniform float uDistance;\n \n void main() {\n \n vec3 pos = position.xzy * uDistance;\n pos.xz += cameraPosition.xz;\n \n worldPosition = pos;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n \n }\n `,\n fragmentShader: `\n \n varying vec3 worldPosition;\n \n uniform float uZoom;\n uniform float uFade;\n uniform float uSize1;\n uniform float uSize2;\n uniform vec3 uColor;\n uniform float uDistance;\n \n \n \n float getGrid(float size) {\n \n vec2 r = worldPosition.xz / size;\n \n \n vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);\n float line = min(grid.x, grid.y);\n \n \n return 1.0 - min(line, 1.0);\n }\n \n void main() {\n \n \n float d = 1.0 - min(distance(cameraPosition.xz, worldPosition.xz) / uDistance, 1.0);\n \n float g1 = getGrid(uSize1);\n float g2 = getGrid(uSize2);\n \n // Ortho camera fades the grid away when zooming out\n float minZoom = step(0.2, uZoom);\n float zoomFactor = pow(min(uZoom, 1.), 2.) * minZoom;\n \n gl_FragColor = vec4(uColor.rgb, mix(g2, g1, g1) * pow(d, uFade));\n gl_FragColor.a = mix(0.5 * gl_FragColor.a, gl_FragColor.a, g2) * zoomFactor;\n \n if ( gl_FragColor.a <= 0.0 ) discard;\n \n \n }\n \n `,\n extensions: {\n derivatives: !0\n }\n });\n this.three = new g.Mesh(a, c), this.three.frustumCulled = !1, t.scene.three.add(this.three), this.setupEvents(!0);\n }\n /** {@link Hideable.visible} */\n get visible() {\n return this.three.visible;\n }\n /** {@link Hideable.visible} */\n set visible(s) {\n s ? this.world.scene.three.add(this.three) : this.three.removeFromParent();\n }\n /** The material of the grid. */\n get material() {\n return this.three.material;\n }\n /**\n * Whether the grid should fade away with distance. Recommended to be true for\n * perspective cameras and false for orthographic cameras.\n */\n get fade() {\n return this._fade === 3;\n }\n /**\n * Whether the grid should fade away with distance. Recommended to be true for\n * perspective cameras and false for orthographic cameras.\n */\n set fade(s) {\n this._fade = s ? 3 : 0, this.material.uniforms.uFade.value = this._fade;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.components.get(zt).destroy(this.three), this.onDisposed.trigger(), this.onDisposed.reset(), this.world = null, this.components = null;\n }\n setupEvents(s) {\n if (this.world.isDisposing || !(this.world.camera instanceof He))\n return;\n const t = this.world.camera.controls;\n s ? t.addEventListener(\"update\", this.updateZoom) : t.removeEventListener(\"update\", this.updateZoom);\n }\n}\nconst _s = class _s extends et {\n constructor(t) {\n super(t);\n /**\n * A map of world UUIDs to their corresponding grid instances.\n */\n I(this, \"list\", /* @__PURE__ */ new Map());\n /**\n * The default configuration for grid creation.\n */\n I(this, \"config\", {\n color: new g.Color(12303291),\n size1: 1,\n size2: 10,\n distance: 500\n });\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n t.add(_s.uuid, this);\n }\n /**\n * Creates a new grid for the given world.\n * Throws an error if a grid already exists for the world.\n *\n * @param world - The world to create the grid for.\n * @returns The newly created grid.\n *\n * @throws Will throw an error if a grid already exists for the given world.\n */\n create(t) {\n if (this.list.has(t.uuid))\n throw new Error(\"This world already has a grid!\");\n const e = new Nr(this.components, t, this.config);\n return this.list.set(t.uuid, e), t.onDisposed.add(() => {\n this.delete(t);\n }), e;\n }\n /**\n * Deletes the grid associated with the given world.\n * If a grid does not exist for the given world, this method does nothing.\n *\n * @param world - The world for which to delete the grid.\n *\n * @remarks\n * This method will dispose of the grid and remove it from the internal list.\n * If the world is disposed before calling this method, the grid will be automatically deleted.\n */\n delete(t) {\n const e = this.list.get(t.uuid);\n e && e.dispose(), this.list.delete(t.uuid);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(_s, \"uuid\", \"d1e814d5-b81c-4452-87a2-f039375e0489\");\nlet dn = _s;\nconst jt = new jn(), nt = new M(), xt = new M(), j = new Pt(), un = {\n X: new M(1, 0, 0),\n Y: new M(0, 1, 0),\n Z: new M(0, 0, 1)\n}, ni = { type: \"change\" }, In = { type: \"mouseDown\" }, fn = { type: \"mouseUp\", mode: null }, pn = { type: \"objectChange\" };\nclass Pr extends ri {\n constructor(s, t) {\n super(), t === void 0 && (console.warn('THREE.TransformControls: The second parameter \"domElement\" is now mandatory.'), t = document), this.isTransformControls = !0, this.visible = !1, this.domElement = t, this.domElement.style.touchAction = \"none\";\n const e = new Ur();\n this._gizmo = e, this.add(e);\n const i = new xr();\n this._plane = i, this.add(i);\n const o = this;\n function n(A, F) {\n let p = F;\n Object.defineProperty(o, A, {\n get: function() {\n return p !== void 0 ? p : F;\n },\n set: function(T) {\n p !== T && (p = T, i[A] = T, e[A] = T, o.dispatchEvent({ type: A + \"-changed\", value: T }), o.dispatchEvent(ni));\n }\n }), o[A] = F, i[A] = F, e[A] = F;\n }\n n(\"camera\", s), n(\"object\", void 0), n(\"enabled\", !0), n(\"axis\", null), n(\"mode\", \"translate\"), n(\"translationSnap\", null), n(\"rotationSnap\", null), n(\"scaleSnap\", null), n(\"space\", \"world\"), n(\"size\", 1), n(\"dragging\", !1), n(\"showX\", !0), n(\"showY\", !0), n(\"showZ\", !0);\n const r = new M(), a = new M(), c = new Pt(), h = new Pt(), d = new M(), E = new Pt(), u = new M(), f = new M(), R = new M(), m = 0, C = new M();\n n(\"worldPosition\", r), n(\"worldPositionStart\", a), n(\"worldQuaternion\", c), n(\"worldQuaternionStart\", h), n(\"cameraPosition\", d), n(\"cameraQuaternion\", E), n(\"pointStart\", u), n(\"pointEnd\", f), n(\"rotationAxis\", R), n(\"rotationAngle\", m), n(\"eye\", C), this._offset = new M(), this._startNorm = new M(), this._endNorm = new M(), this._cameraScale = new M(), this._parentPosition = new M(), this._parentQuaternion = new Pt(), this._parentQuaternionInv = new Pt(), this._parentScale = new M(), this._worldScaleStart = new M(), this._worldQuaternionInv = new Pt(), this._worldScale = new M(), this._positionStart = new M(), this._quaternionStart = new Pt(), this._scaleStart = new M(), this._getPointer = Lr.bind(this), this._onPointerDown = Mr.bind(this), this._onPointerHover = yr.bind(this), this._onPointerMove = wr.bind(this), this._onPointerUp = Dr.bind(this), this.domElement.addEventListener(\"pointerdown\", this._onPointerDown), this.domElement.addEventListener(\"pointermove\", this._onPointerHover), this.domElement.addEventListener(\"pointerup\", this._onPointerUp);\n }\n // updateMatrixWorld updates key transformation variables\n updateMatrixWorld() {\n this.object !== void 0 && (this.object.updateMatrixWorld(), this.object.parent === null ? console.error(\"TransformControls: The attached 3D object must be a part of the scene graph.\") : this.object.parent.matrixWorld.decompose(this._parentPosition, this._parentQuaternion, this._parentScale), this.object.matrixWorld.decompose(this.worldPosition, this.worldQuaternion, this._worldScale), this._parentQuaternionInv.copy(this._parentQuaternion).invert(), this._worldQuaternionInv.copy(this.worldQuaternion).invert()), this.camera.updateMatrixWorld(), this.camera.matrixWorld.decompose(this.cameraPosition, this.cameraQuaternion, this._cameraScale), this.camera.isOrthographicCamera ? this.camera.getWorldDirection(this.eye).negate() : this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(), super.updateMatrixWorld(this);\n }\n pointerHover(s) {\n if (this.object === void 0 || this.dragging === !0)\n return;\n jt.setFromCamera(s, this.camera);\n const t = oi(this._gizmo.picker[this.mode], jt);\n t ? this.axis = t.object.name : this.axis = null;\n }\n pointerDown(s) {\n if (!(this.object === void 0 || this.dragging === !0 || s.button !== 0) && this.axis !== null) {\n jt.setFromCamera(s, this.camera);\n const t = oi(this._plane, jt, !0);\n t && (this.object.updateMatrixWorld(), this.object.parent.updateMatrixWorld(), this._positionStart.copy(this.object.position), this._quaternionStart.copy(this.object.quaternion), this._scaleStart.copy(this.object.scale), this.object.matrixWorld.decompose(this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart), this.pointStart.copy(t.point).sub(this.worldPositionStart)), this.dragging = !0, In.mode = this.mode, this.dispatchEvent(In);\n }\n }\n pointerMove(s) {\n const t = this.axis, e = this.mode, i = this.object;\n let o = this.space;\n if (e === \"scale\" ? o = \"local\" : (t === \"E\" || t === \"XYZE\" || t === \"XYZ\") && (o = \"world\"), i === void 0 || t === null || this.dragging === !1 || s.button !== -1)\n return;\n jt.setFromCamera(s, this.camera);\n const n = oi(this._plane, jt, !0);\n if (n) {\n if (this.pointEnd.copy(n.point).sub(this.worldPositionStart), e === \"translate\")\n this._offset.copy(this.pointEnd).sub(this.pointStart), o === \"local\" && t !== \"XYZ\" && this._offset.applyQuaternion(this._worldQuaternionInv), t.indexOf(\"X\") === -1 && (this._offset.x = 0), t.indexOf(\"Y\") === -1 && (this._offset.y = 0), t.indexOf(\"Z\") === -1 && (this._offset.z = 0), o === \"local\" && t !== \"XYZ\" ? this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale) : this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale), i.position.copy(this._offset).add(this._positionStart), this.translationSnap && (o === \"local\" && (i.position.applyQuaternion(j.copy(this._quaternionStart).invert()), t.search(\"X\") !== -1 && (i.position.x = Math.round(i.position.x / this.translationSnap) * this.translationSnap), t.search(\"Y\") !== -1 && (i.position.y = Math.round(i.position.y / this.translationSnap) * this.translationSnap), t.search(\"Z\") !== -1 && (i.position.z = Math.round(i.position.z / this.translationSnap) * this.translationSnap), i.position.applyQuaternion(this._quaternionStart)), o === \"world\" && (i.parent && i.position.add(nt.setFromMatrixPosition(i.parent.matrixWorld)), t.search(\"X\") !== -1 && (i.position.x = Math.round(i.position.x / this.translationSnap) * this.translationSnap), t.search(\"Y\") !== -1 && (i.position.y = Math.round(i.position.y / this.translationSnap) * this.translationSnap), t.search(\"Z\") !== -1 && (i.position.z = Math.round(i.position.z / this.translationSnap) * this.translationSnap), i.parent && i.position.sub(nt.setFromMatrixPosition(i.parent.matrixWorld))));\n else if (e === \"scale\") {\n if (t.search(\"XYZ\") !== -1) {\n let r = this.pointEnd.length() / this.pointStart.length();\n this.pointEnd.dot(this.pointStart) < 0 && (r *= -1), xt.set(r, r, r);\n } else\n nt.copy(this.pointStart), xt.copy(this.pointEnd), nt.applyQuaternion(this._worldQuaternionInv), xt.applyQuaternion(this._worldQuaternionInv), xt.divide(nt), t.search(\"X\") === -1 && (xt.x = 1), t.search(\"Y\") === -1 && (xt.y = 1), t.search(\"Z\") === -1 && (xt.z = 1);\n i.scale.copy(this._scaleStart).multiply(xt), this.scaleSnap && (t.search(\"X\") !== -1 && (i.scale.x = Math.round(i.scale.x / this.scaleSnap) * this.scaleSnap || this.scaleSnap), t.search(\"Y\") !== -1 && (i.scale.y = Math.round(i.scale.y / this.scaleSnap) * this.scaleSnap || this.scaleSnap), t.search(\"Z\") !== -1 && (i.scale.z = Math.round(i.scale.z / this.scaleSnap) * this.scaleSnap || this.scaleSnap));\n } else if (e === \"rotate\") {\n this._offset.copy(this.pointEnd).sub(this.pointStart);\n const r = 20 / this.worldPosition.distanceTo(nt.setFromMatrixPosition(this.camera.matrixWorld));\n let a = !1;\n t === \"XYZE\" ? (this.rotationAxis.copy(this._offset).cross(this.eye).normalize(), this.rotationAngle = this._offset.dot(nt.copy(this.rotationAxis).cross(this.eye)) * r) : (t === \"X\" || t === \"Y\" || t === \"Z\") && (this.rotationAxis.copy(un[t]), nt.copy(un[t]), o === \"local\" && nt.applyQuaternion(this.worldQuaternion), nt.cross(this.eye), nt.length() === 0 ? a = !0 : this.rotationAngle = this._offset.dot(nt.normalize()) * r), (t === \"E\" || a) && (this.rotationAxis.copy(this.eye), this.rotationAngle = this.pointEnd.angleTo(this.pointStart), this._startNorm.copy(this.pointStart).normalize(), this._endNorm.copy(this.pointEnd).normalize(), this.rotationAngle *= this._endNorm.cross(this._startNorm).dot(this.eye) < 0 ? 1 : -1), this.rotationSnap && (this.rotationAngle = Math.round(this.rotationAngle / this.rotationSnap) * this.rotationSnap), o === \"local\" && t !== \"E\" && t !== \"XYZE\" ? (i.quaternion.copy(this._quaternionStart), i.quaternion.multiply(j.setFromAxisAngle(this.rotationAxis, this.rotationAngle)).normalize()) : (this.rotationAxis.applyQuaternion(this._parentQuaternionInv), i.quaternion.copy(j.setFromAxisAngle(this.rotationAxis, this.rotationAngle)), i.quaternion.multiply(this._quaternionStart).normalize());\n }\n this.dispatchEvent(ni), this.dispatchEvent(pn);\n }\n }\n pointerUp(s) {\n s.button === 0 && (this.dragging && this.axis !== null && (fn.mode = this.mode, this.dispatchEvent(fn)), this.dragging = !1, this.axis = null);\n }\n dispose() {\n this.domElement.removeEventListener(\"pointerdown\", this._onPointerDown), this.domElement.removeEventListener(\"pointermove\", this._onPointerHover), this.domElement.removeEventListener(\"pointermove\", this._onPointerMove), this.domElement.removeEventListener(\"pointerup\", this._onPointerUp), this.traverse(function(s) {\n s.geometry && s.geometry.dispose(), s.material && s.material.dispose();\n });\n }\n // Set current object\n attach(s) {\n return this.object = s, this.visible = !0, this;\n }\n // Detach from object\n detach() {\n return this.object = void 0, this.visible = !1, this.axis = null, this;\n }\n reset() {\n this.enabled && this.dragging && (this.object.position.copy(this._positionStart), this.object.quaternion.copy(this._quaternionStart), this.object.scale.copy(this._scaleStart), this.dispatchEvent(ni), this.dispatchEvent(pn), this.pointStart.copy(this.pointEnd));\n }\n getRaycaster() {\n return jt;\n }\n // TODO: deprecate\n getMode() {\n return this.mode;\n }\n setMode(s) {\n this.mode = s;\n }\n setTranslationSnap(s) {\n this.translationSnap = s;\n }\n setRotationSnap(s) {\n this.rotationSnap = s;\n }\n setScaleSnap(s) {\n this.scaleSnap = s;\n }\n setSize(s) {\n this.size = s;\n }\n setSpace(s) {\n this.space = s;\n }\n}\nfunction Lr(l) {\n if (this.domElement.ownerDocument.pointerLockElement)\n return {\n x: 0,\n y: 0,\n button: l.button\n };\n {\n const s = this.domElement.getBoundingClientRect();\n return {\n x: (l.clientX - s.left) / s.width * 2 - 1,\n y: -(l.clientY - s.top) / s.height * 2 + 1,\n button: l.button\n };\n }\n}\nfunction yr(l) {\n if (this.enabled)\n switch (l.pointerType) {\n case \"mouse\":\n case \"pen\":\n this.pointerHover(this._getPointer(l));\n break;\n }\n}\nfunction Mr(l) {\n this.enabled && (document.pointerLockElement || this.domElement.setPointerCapture(l.pointerId), this.domElement.addEventListener(\"pointermove\", this._onPointerMove), this.pointerHover(this._getPointer(l)), this.pointerDown(this._getPointer(l)));\n}\nfunction wr(l) {\n this.enabled && this.pointerMove(this._getPointer(l));\n}\nfunction Dr(l) {\n this.enabled && (this.domElement.releasePointerCapture(l.pointerId), this.domElement.removeEventListener(\"pointermove\", this._onPointerMove), this.pointerUp(this._getPointer(l)));\n}\nfunction oi(l, s, t) {\n const e = s.intersectObject(l, !0);\n for (let i = 0; i < e.length; i++)\n if (e[i].object.visible || t)\n return e[i];\n return !1;\n}\nconst Is = new qn(), W = new M(0, 1, 0), Cn = new M(0, 0, 0), Tn = new yt(), fs = new Pt(), Rs = new Pt(), St = new M(), mn = new yt(), De = new M(1, 0, 0), qt = new M(0, 1, 0), Ue = new M(0, 0, 1), ps = new M(), Me = new M(), we = new M();\nclass Ur extends ri {\n constructor() {\n super(), this.isTransformControlsGizmo = !0, this.type = \"TransformControlsGizmo\";\n const s = new yn({\n depthTest: !1,\n depthWrite: !1,\n fog: !1,\n toneMapped: !1,\n transparent: !0\n }), t = new Kn({\n depthTest: !1,\n depthWrite: !1,\n fog: !1,\n toneMapped: !1,\n transparent: !0\n }), e = s.clone();\n e.opacity = 0.15;\n const i = t.clone();\n i.opacity = 0.5;\n const o = s.clone();\n o.color.setHex(16711680);\n const n = s.clone();\n n.color.setHex(65280);\n const r = s.clone();\n r.color.setHex(255);\n const a = s.clone();\n a.color.setHex(16711680), a.opacity = 0.5;\n const c = s.clone();\n c.color.setHex(65280), c.opacity = 0.5;\n const h = s.clone();\n h.color.setHex(255), h.opacity = 0.5;\n const d = s.clone();\n d.opacity = 0.25;\n const E = s.clone();\n E.color.setHex(16776960), E.opacity = 0.25, s.clone().color.setHex(16776960);\n const f = s.clone();\n f.color.setHex(7895160);\n const R = new ct(0, 0.04, 0.1, 12);\n R.translate(0, 0.05, 0);\n const m = new rt(0.08, 0.08, 0.08);\n m.translate(0, 0.04, 0);\n const C = new Di();\n C.setAttribute(\"position\", new Ui([0, 0, 0, 1, 0, 0], 3));\n const A = new ct(75e-4, 75e-4, 0.5, 3);\n A.translate(0, 0.25, 0);\n function F(B, H) {\n const q = new me(B, 75e-4, 3, 64, H * Math.PI * 2);\n return q.rotateY(Math.PI / 2), q.rotateX(Math.PI / 2), q;\n }\n function p() {\n const B = new Di();\n return B.setAttribute(\"position\", new Ui([0, 0, 0, 1, 1, 1], 3)), B;\n }\n const T = {\n X: [\n [new v(R, o), [0.5, 0, 0], [0, 0, -Math.PI / 2]],\n [new v(R, o), [-0.5, 0, 0], [0, 0, Math.PI / 2]],\n [new v(A, o), [0, 0, 0], [0, 0, -Math.PI / 2]]\n ],\n Y: [\n [new v(R, n), [0, 0.5, 0]],\n [new v(R, n), [0, -0.5, 0], [Math.PI, 0, 0]],\n [new v(A, n)]\n ],\n Z: [\n [new v(R, r), [0, 0, 0.5], [Math.PI / 2, 0, 0]],\n [new v(R, r), [0, 0, -0.5], [-Math.PI / 2, 0, 0]],\n [new v(A, r), null, [Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new v(new Ze(0.1, 0), d.clone()), [0, 0, 0]]\n ],\n XY: [\n [new v(new rt(0.15, 0.15, 0.01), h.clone()), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new v(new rt(0.15, 0.15, 0.01), a.clone()), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new v(new rt(0.15, 0.15, 0.01), c.clone()), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ]\n }, O = {\n X: [\n [new v(new ct(0.2, 0, 0.6, 4), e), [0.3, 0, 0], [0, 0, -Math.PI / 2]],\n [new v(new ct(0.2, 0, 0.6, 4), e), [-0.3, 0, 0], [0, 0, Math.PI / 2]]\n ],\n Y: [\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, 0.3, 0]],\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, -0.3, 0], [0, 0, Math.PI]]\n ],\n Z: [\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, 0, 0.3], [Math.PI / 2, 0, 0]],\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new v(new Ze(0.2, 0), e)]\n ],\n XY: [\n [new v(new rt(0.2, 0.2, 0.01), e), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new v(new rt(0.2, 0.2, 0.01), e), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new v(new rt(0.2, 0.2, 0.01), e), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ]\n }, _ = {\n START: [\n [new v(new Ze(0.01, 2), i), null, null, null, \"helper\"]\n ],\n END: [\n [new v(new Ze(0.01, 2), i), null, null, null, \"helper\"]\n ],\n DELTA: [\n [new Dt(p(), i), null, null, null, \"helper\"]\n ],\n X: [\n [new Dt(C, i.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], \"helper\"]\n ],\n Y: [\n [new Dt(C, i.clone()), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], \"helper\"]\n ],\n Z: [\n [new Dt(C, i.clone()), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], \"helper\"]\n ]\n }, S = {\n XYZE: [\n [new v(F(0.5, 1), f), null, [0, Math.PI / 2, 0]]\n ],\n X: [\n [new v(F(0.5, 0.5), o)]\n ],\n Y: [\n [new v(F(0.5, 0.5), n), null, [0, 0, -Math.PI / 2]]\n ],\n Z: [\n [new v(F(0.5, 0.5), r), null, [0, Math.PI / 2, 0]]\n ],\n E: [\n [new v(F(0.75, 1), E), null, [0, Math.PI / 2, 0]]\n ]\n }, N = {\n AXIS: [\n [new Dt(C, i.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], \"helper\"]\n ]\n }, L = {\n XYZE: [\n [new v(new $n(0.25, 10, 8), e)]\n ],\n X: [\n [new v(new me(0.5, 0.1, 4, 24), e), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]]\n ],\n Y: [\n [new v(new me(0.5, 0.1, 4, 24), e), [0, 0, 0], [Math.PI / 2, 0, 0]]\n ],\n Z: [\n [new v(new me(0.5, 0.1, 4, 24), e), [0, 0, 0], [0, 0, -Math.PI / 2]]\n ],\n E: [\n [new v(new me(0.75, 0.1, 2, 24), e)]\n ]\n }, w = {\n X: [\n [new v(m, o), [0.5, 0, 0], [0, 0, -Math.PI / 2]],\n [new v(A, o), [0, 0, 0], [0, 0, -Math.PI / 2]],\n [new v(m, o), [-0.5, 0, 0], [0, 0, Math.PI / 2]]\n ],\n Y: [\n [new v(m, n), [0, 0.5, 0]],\n [new v(A, n)],\n [new v(m, n), [0, -0.5, 0], [0, 0, Math.PI]]\n ],\n Z: [\n [new v(m, r), [0, 0, 0.5], [Math.PI / 2, 0, 0]],\n [new v(A, r), [0, 0, 0], [Math.PI / 2, 0, 0]],\n [new v(m, r), [0, 0, -0.5], [-Math.PI / 2, 0, 0]]\n ],\n XY: [\n [new v(new rt(0.15, 0.15, 0.01), h), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new v(new rt(0.15, 0.15, 0.01), a), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new v(new rt(0.15, 0.15, 0.01), c), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new v(new rt(0.1, 0.1, 0.1), d.clone())]\n ]\n }, y = {\n X: [\n [new v(new ct(0.2, 0, 0.6, 4), e), [0.3, 0, 0], [0, 0, -Math.PI / 2]],\n [new v(new ct(0.2, 0, 0.6, 4), e), [-0.3, 0, 0], [0, 0, Math.PI / 2]]\n ],\n Y: [\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, 0.3, 0]],\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, -0.3, 0], [0, 0, Math.PI]]\n ],\n Z: [\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, 0, 0.3], [Math.PI / 2, 0, 0]],\n [new v(new ct(0.2, 0, 0.6, 4), e), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]\n ],\n XY: [\n [new v(new rt(0.2, 0.2, 0.01), e), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new v(new rt(0.2, 0.2, 0.01), e), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new v(new rt(0.2, 0.2, 0.01), e), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new v(new rt(0.2, 0.2, 0.2), e), [0, 0, 0]]\n ]\n }, U = {\n X: [\n [new Dt(C, i.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], \"helper\"]\n ],\n Y: [\n [new Dt(C, i.clone()), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], \"helper\"]\n ],\n Z: [\n [new Dt(C, i.clone()), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], \"helper\"]\n ]\n };\n function x(B) {\n const H = new ri();\n for (const q in B)\n for (let st = B[q].length; st--; ) {\n const Q = B[q][st][0].clone(), Ht = B[q][st][1], kt = B[q][st][2], Wt = B[q][st][3], We = B[q][st][4];\n Q.name = q, Q.tag = We, Ht && Q.position.set(Ht[0], Ht[1], Ht[2]), kt && Q.rotation.set(kt[0], kt[1], kt[2]), Wt && Q.scale.set(Wt[0], Wt[1], Wt[2]), Q.updateMatrix();\n const Ce = Q.geometry.clone();\n Ce.applyMatrix4(Q.matrix), Q.geometry = Ce, Q.renderOrder = 1 / 0, Q.position.set(0, 0, 0), Q.rotation.set(0, 0, 0), Q.scale.set(1, 1, 1), H.add(Q);\n }\n return H;\n }\n this.gizmo = {}, this.picker = {}, this.helper = {}, this.add(this.gizmo.translate = x(T)), this.add(this.gizmo.rotate = x(S)), this.add(this.gizmo.scale = x(w)), this.add(this.picker.translate = x(O)), this.add(this.picker.rotate = x(L)), this.add(this.picker.scale = x(y)), this.add(this.helper.translate = x(_)), this.add(this.helper.rotate = x(N)), this.add(this.helper.scale = x(U)), this.picker.translate.visible = !1, this.picker.rotate.visible = !1, this.picker.scale.visible = !1;\n }\n // updateMatrixWorld will update transformations and appearance of individual handles\n updateMatrixWorld(s) {\n const e = (this.mode === \"scale\" ? \"local\" : this.space) === \"local\" ? this.worldQuaternion : Rs;\n this.gizmo.translate.visible = this.mode === \"translate\", this.gizmo.rotate.visible = this.mode === \"rotate\", this.gizmo.scale.visible = this.mode === \"scale\", this.helper.translate.visible = this.mode === \"translate\", this.helper.rotate.visible = this.mode === \"rotate\", this.helper.scale.visible = this.mode === \"scale\";\n let i = [];\n i = i.concat(this.picker[this.mode].children), i = i.concat(this.gizmo[this.mode].children), i = i.concat(this.helper[this.mode].children);\n for (let o = 0; o < i.length; o++) {\n const n = i[o];\n n.visible = !0, n.rotation.set(0, 0, 0), n.position.copy(this.worldPosition);\n let r;\n if (this.camera.isOrthographicCamera ? r = (this.camera.top - this.camera.bottom) / this.camera.zoom : r = this.worldPosition.distanceTo(this.cameraPosition) * Math.min(1.9 * Math.tan(Math.PI * this.camera.fov / 360) / this.camera.zoom, 7), n.scale.set(1, 1, 1).multiplyScalar(r * this.size / 4), n.tag === \"helper\") {\n n.visible = !1, n.name === \"AXIS\" ? (n.visible = !!this.axis, this.axis === \"X\" && (j.setFromEuler(Is.set(0, 0, 0)), n.quaternion.copy(e).multiply(j), Math.abs(W.copy(De).applyQuaternion(e).dot(this.eye)) > 0.9 && (n.visible = !1)), this.axis === \"Y\" && (j.setFromEuler(Is.set(0, 0, Math.PI / 2)), n.quaternion.copy(e).multiply(j), Math.abs(W.copy(qt).applyQuaternion(e).dot(this.eye)) > 0.9 && (n.visible = !1)), this.axis === \"Z\" && (j.setFromEuler(Is.set(0, Math.PI / 2, 0)), n.quaternion.copy(e).multiply(j), Math.abs(W.copy(Ue).applyQuaternion(e).dot(this.eye)) > 0.9 && (n.visible = !1)), this.axis === \"XYZE\" && (j.setFromEuler(Is.set(0, Math.PI / 2, 0)), W.copy(this.rotationAxis), n.quaternion.setFromRotationMatrix(Tn.lookAt(Cn, W, qt)), n.quaternion.multiply(j), n.visible = this.dragging), this.axis === \"E\" && (n.visible = !1)) : n.name === \"START\" ? (n.position.copy(this.worldPositionStart), n.visible = this.dragging) : n.name === \"END\" ? (n.position.copy(this.worldPosition), n.visible = this.dragging) : n.name === \"DELTA\" ? (n.position.copy(this.worldPositionStart), n.quaternion.copy(this.worldQuaternionStart), nt.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1), nt.applyQuaternion(this.worldQuaternionStart.clone().invert()), n.scale.copy(nt), n.visible = this.dragging) : (n.quaternion.copy(e), this.dragging ? n.position.copy(this.worldPositionStart) : n.position.copy(this.worldPosition), this.axis && (n.visible = this.axis.search(n.name) !== -1));\n continue;\n }\n n.quaternion.copy(e), this.mode === \"translate\" || this.mode === \"scale\" ? (n.name === \"X\" && Math.abs(W.copy(De).applyQuaternion(e).dot(this.eye)) > 0.99 && (n.scale.set(1e-10, 1e-10, 1e-10), n.visible = !1), n.name === \"Y\" && Math.abs(W.copy(qt).applyQuaternion(e).dot(this.eye)) > 0.99 && (n.scale.set(1e-10, 1e-10, 1e-10), n.visible = !1), n.name === \"Z\" && Math.abs(W.copy(Ue).applyQuaternion(e).dot(this.eye)) > 0.99 && (n.scale.set(1e-10, 1e-10, 1e-10), n.visible = !1), n.name === \"XY\" && Math.abs(W.copy(Ue).applyQuaternion(e).dot(this.eye)) < 0.2 && (n.scale.set(1e-10, 1e-10, 1e-10), n.visible = !1), n.name === \"YZ\" && Math.abs(W.copy(De).applyQuaternion(e).dot(this.eye)) < 0.2 && (n.scale.set(1e-10, 1e-10, 1e-10), n.visible = !1), n.name === \"XZ\" && Math.abs(W.copy(qt).applyQuaternion(e).dot(this.eye)) < 0.2 && (n.scale.set(1e-10, 1e-10, 1e-10), n.visible = !1)) : this.mode === \"rotate\" && (fs.copy(e), W.copy(this.eye).applyQuaternion(j.copy(e).invert()), n.name.search(\"E\") !== -1 && n.quaternion.setFromRotationMatrix(Tn.lookAt(this.eye, Cn, qt)), n.name === \"X\" && (j.setFromAxisAngle(De, Math.atan2(-W.y, W.z)), j.multiplyQuaternions(fs, j), n.quaternion.copy(j)), n.name === \"Y\" && (j.setFromAxisAngle(qt, Math.atan2(W.x, W.z)), j.multiplyQuaternions(fs, j), n.quaternion.copy(j)), n.name === \"Z\" && (j.setFromAxisAngle(Ue, Math.atan2(W.y, W.x)), j.multiplyQuaternions(fs, j), n.quaternion.copy(j))), n.visible = n.visible && (n.name.indexOf(\"X\") === -1 || this.showX), n.visible = n.visible && (n.name.indexOf(\"Y\") === -1 || this.showY), n.visible = n.visible && (n.name.indexOf(\"Z\") === -1 || this.showZ), n.visible = n.visible && (n.name.indexOf(\"E\") === -1 || this.showX && this.showY && this.showZ), n.material._color = n.material._color || n.material.color.clone(), n.material._opacity = n.material._opacity || n.material.opacity, n.material.color.copy(n.material._color), n.material.opacity = n.material._opacity, this.enabled && this.axis && (n.name === this.axis || this.axis.split(\"\").some(function(a) {\n return n.name === a;\n })) && (n.material.color.setHex(16776960), n.material.opacity = 1);\n }\n super.updateMatrixWorld(s);\n }\n}\nclass xr extends v {\n constructor() {\n super(\n new Jn(1e5, 1e5, 2, 2),\n new yn({ visible: !1, wireframe: !0, side: Ln, transparent: !0, opacity: 0.1, toneMapped: !1 })\n ), this.isTransformControlsPlane = !0, this.type = \"TransformControlsPlane\";\n }\n updateMatrixWorld(s) {\n let t = this.space;\n switch (this.position.copy(this.worldPosition), this.mode === \"scale\" && (t = \"local\"), ps.copy(De).applyQuaternion(t === \"local\" ? this.worldQuaternion : Rs), Me.copy(qt).applyQuaternion(t === \"local\" ? this.worldQuaternion : Rs), we.copy(Ue).applyQuaternion(t === \"local\" ? this.worldQuaternion : Rs), W.copy(Me), this.mode) {\n case \"translate\":\n case \"scale\":\n switch (this.axis) {\n case \"X\":\n W.copy(this.eye).cross(ps), St.copy(ps).cross(W);\n break;\n case \"Y\":\n W.copy(this.eye).cross(Me), St.copy(Me).cross(W);\n break;\n case \"Z\":\n W.copy(this.eye).cross(we), St.copy(we).cross(W);\n break;\n case \"XY\":\n St.copy(we);\n break;\n case \"YZ\":\n St.copy(ps);\n break;\n case \"XZ\":\n W.copy(we), St.copy(Me);\n break;\n case \"XYZ\":\n case \"E\":\n St.set(0, 0, 0);\n break;\n }\n break;\n case \"rotate\":\n default:\n St.set(0, 0, 0);\n }\n St.length() === 0 ? this.quaternion.copy(this.cameraQuaternion) : (mn.lookAt(nt.set(0, 0, 0), St, W), this.quaternion.setFromRotationMatrix(mn)), super.updateMatrixWorld(s);\n }\n}\nclass Pi {\n constructor(s, t, e, i, o, n = 5, r = !0) {\n /** Event that fires when the user starts dragging a clipping plane. */\n I(this, \"onDraggingStarted\", new D());\n /** Event that fires when the user stops dragging a clipping plane. */\n I(this, \"onDraggingEnded\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * The normal vector of the clipping plane.\n */\n I(this, \"normal\");\n /**\n * The origin point of the clipping plane.\n */\n I(this, \"origin\");\n /**\n * The THREE.js Plane object representing the clipping plane.\n */\n I(this, \"three\", new g.Plane());\n /** The components instance to which this plane belongs. */\n I(this, \"components\");\n /** The world instance to which this plane belongs. */\n I(this, \"world\");\n I(this, \"_helper\");\n I(this, \"_visible\", !0);\n I(this, \"_enabled\", !0);\n I(this, \"_controlsActive\", !1);\n I(this, \"_arrowBoundBox\", new g.Mesh());\n I(this, \"_planeMesh\");\n I(this, \"_controls\");\n I(this, \"_hiddenMaterial\", new g.MeshBasicMaterial({\n visible: !1\n }));\n /** {@link Updateable.update} */\n I(this, \"update\", () => {\n this._enabled && this.three.setFromNormalAndCoplanarPoint(\n this.normal,\n this._helper.position\n );\n });\n I(this, \"changeDrag\", (s) => {\n this._visible = !s.value, this.preventCameraMovement(), this.notifyDraggingChanged(s);\n });\n if (this.components = s, this.world = t, !t.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this.normal = i, this.origin = e, t.renderer.setPlane(!0, this.three), this._planeMesh = Pi.newPlaneMesh(n, o), this._helper = this.newHelper(), this._controls = this.newTransformControls(), this.three.setFromNormalAndCoplanarPoint(i, e), r && this.toggleControls(!0);\n }\n /**\n * Getter for the enabled state of the clipping plane.\n * @returns {boolean} The current enabled state.\n */\n get enabled() {\n return this._enabled;\n }\n /**\n * Setter for the enabled state of the clipping plane.\n * Updates the clipping plane state in the renderer and throws an error if no renderer is found.\n * @param {boolean} state - The new enabled state.\n */\n set enabled(s) {\n if (!this.world.renderer)\n throw new Error(\"No renderer found for clipping plane!\");\n this._enabled = s, this.world.renderer.setPlane(s, this.three);\n }\n /** {@link Hideable.visible } */\n get visible() {\n return this._visible;\n }\n /** {@link Hideable.visible } */\n set visible(s) {\n this._visible = s, this._controls.visible = s, this._helper.visible = s, this.toggleControls(s);\n }\n /** The meshes used for raycasting */\n get meshes() {\n return [this._planeMesh, this._arrowBoundBox];\n }\n /** The material of the clipping plane representation. */\n get planeMaterial() {\n return this._planeMesh.material;\n }\n /** The material of the clipping plane representation. */\n set planeMaterial(s) {\n this._planeMesh.material = s;\n }\n /** The size of the clipping plane representation. */\n get size() {\n return this._planeMesh.scale.x;\n }\n /** Sets the size of the clipping plane representation. */\n set size(s) {\n this._planeMesh.scale.set(s, s, s);\n }\n /**\n * Getter for the helper object of the clipping plane.\n * The helper object is a THREE.Object3D that contains the clipping plane mesh and other related objects.\n * It is used for positioning, rotating, and scaling the clipping plane in the 3D scene.\n *\n * @returns {THREE.Object3D} The helper object of the clipping plane.\n */\n get helper() {\n return this._helper;\n }\n /**\n * Sets the clipping plane's normal and origin from the given normal and point.\n * This method resets the clipping plane's state, updates the normal and origin,\n * and positions the helper object accordingly.\n *\n * @param normal - The new normal vector for the clipping plane.\n * @param point - The new origin point for the clipping plane.\n *\n * @returns {void}\n */\n setFromNormalAndCoplanarPoint(s, t) {\n this.reset(), this.normal.equals(s) || (this.normal.copy(s), this._helper.lookAt(s)), this.origin.copy(t), this._helper.position.copy(t), this._helper.updateMatrix(), this.update();\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this._enabled = !1, this.onDraggingStarted.reset(), this.onDraggingEnded.reset(), this._helper.removeFromParent(), this.world.renderer && this.world.renderer.setPlane(!1, this.three), this._arrowBoundBox.removeFromParent(), this._arrowBoundBox.geometry.dispose(), this._planeMesh.geometry.dispose(), this._controls.removeFromParent(), this._controls.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n reset() {\n const s = new g.Vector3(1, 0, 0), t = new g.Vector3();\n this.normal.equals(s) || (this.normal.copy(s), this._helper.lookAt(s)), this.origin.copy(t), this._helper.position.copy(t), this._helper.updateMatrix();\n }\n toggleControls(s) {\n if (s) {\n if (this._controlsActive)\n return;\n this._controls.addEventListener(\"change\", this.update), this._controls.addEventListener(\"dragging-changed\", this.changeDrag);\n } else\n this._controls.removeEventListener(\"change\", this.update), this._controls.removeEventListener(\"dragging-changed\", this.changeDrag);\n this._controlsActive = s;\n }\n newTransformControls() {\n if (!this.world.renderer)\n throw new Error(\"No renderer found for clipping plane!\");\n const s = this.world.camera.three, t = this.world.renderer.three.domElement, e = new Pr(s, t);\n return this.initializeControls(e), this.world.scene.three.add(e), e;\n }\n initializeControls(s) {\n s.attach(this._helper), s.showX = !1, s.showY = !1, s.setSpace(\"local\"), this.createArrowBoundingBox(), s.children[0].children[0].add(this._arrowBoundBox);\n }\n createArrowBoundingBox() {\n this._arrowBoundBox.geometry = new g.CylinderGeometry(0.18, 0.18, 1.2), this._arrowBoundBox.material = this._hiddenMaterial, this._arrowBoundBox.rotateX(Math.PI / 2), this._arrowBoundBox.updateMatrix(), this._arrowBoundBox.geometry.applyMatrix4(this._arrowBoundBox.matrix);\n }\n notifyDraggingChanged(s) {\n s.value ? this.onDraggingStarted.trigger() : this.onDraggingEnded.trigger();\n }\n preventCameraMovement() {\n this.world.camera.enabled = this._visible;\n }\n newHelper() {\n const s = new g.Object3D();\n return s.lookAt(this.normal), s.position.copy(this.origin), this._planeMesh.position.z += 0.01, s.add(this._planeMesh), this.world.scene.three.add(s), s;\n }\n static newPlaneMesh(s, t) {\n const e = new g.PlaneGeometry(1), i = new g.Mesh(e, t);\n return i.scale.set(s, s, s), i;\n }\n}\nconst ve = class ve extends et {\n constructor(t) {\n super(t);\n /** Event that fires when the user starts dragging a clipping plane. */\n I(this, \"onBeforeDrag\", new D());\n /** Event that fires when the user stops dragging a clipping plane. */\n I(this, \"onAfterDrag\", new D());\n /**\n * Event that fires when the user starts creating a clipping plane.\n */\n I(this, \"onBeforeCreate\", new D());\n /**\n * Event that fires when the user cancels the creation of a clipping plane.\n */\n I(this, \"onBeforeCancel\", new D());\n /**\n * Event that fires after the user cancels the creation of a clipping plane.\n */\n I(this, \"onAfterCancel\", new D());\n /**\n * Event that fires when the user starts deleting a clipping plane.\n */\n I(this, \"onBeforeDelete\", new D());\n /**\n * Event that fires after a clipping plane has been created.\n * @param plane - The newly created clipping plane.\n */\n I(this, \"onAfterCreate\", new D());\n /**\n * Event that fires after a clipping plane has been deleted.\n * @param plane - The deleted clipping plane.\n */\n I(this, \"onAfterDelete\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * Whether to force the clipping plane to be orthogonal in the Y direction\n * (up). This is desirable when clipping a building horizontally and a\n * clipping plane is created in its roof, which might have a slight\n * slope for draining purposes.\n */\n I(this, \"orthogonalY\", !1);\n /**\n * The tolerance that determines whether an almost-horizontal clipping plane\n * will be forced to be orthogonal to the Y direction. {@link orthogonalY}\n * has to be `true` for this to apply.\n */\n I(this, \"toleranceOrthogonalY\", 0.7);\n /**\n * The type of clipping plane to be created.\n * Default is {@link SimplePlane}.\n */\n I(this, \"Type\", Pi);\n /**\n * A list of all the clipping planes created by this component.\n */\n I(this, \"list\", []);\n /** The material used in all the clipping planes. */\n I(this, \"_material\", new g.MeshBasicMaterial({\n color: 12255487,\n side: g.DoubleSide,\n transparent: !0,\n opacity: 0.2\n }));\n I(this, \"_size\", 5);\n I(this, \"_enabled\", !1);\n I(this, \"_visible\", !0);\n I(this, \"_onStartDragging\", () => {\n this.onBeforeDrag.trigger();\n });\n I(this, \"_onEndDragging\", () => {\n this.onAfterDrag.trigger();\n });\n this.components.add(ve.uuid, this);\n }\n /** {@link Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link Component.enabled} */\n set enabled(t) {\n this._enabled = t;\n for (const e of this.list)\n e.enabled = t;\n this.updateMaterialsAndPlanes();\n }\n /** {@link Hideable.visible } */\n get visible() {\n return this._visible;\n }\n /** {@link Hideable.visible } */\n set visible(t) {\n this._visible = t;\n for (const e of this.list)\n e.visible = t;\n }\n /** The material of the clipping plane representation. */\n get material() {\n return this._material;\n }\n /** The material of the clipping plane representation. */\n set material(t) {\n this._material = t;\n for (const e of this.list)\n e.planeMaterial = t;\n }\n /** The size of the geometric representation of the clippings planes. */\n get size() {\n return this._size;\n }\n /** The size of the geometric representation of the clippings planes. */\n set size(t) {\n this._size = t;\n for (const e of this.list)\n e.size = t;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this._enabled = !1;\n for (const t of this.list)\n t.dispose();\n this.list.length = 0, this._material.dispose(), this.onBeforeCreate.reset(), this.onBeforeCancel.reset(), this.onBeforeDelete.reset(), this.onBeforeDrag.reset(), this.onAfterCreate.reset(), this.onAfterCancel.reset(), this.onAfterDelete.reset(), this.onAfterDrag.reset(), this.onDisposed.trigger(ve.uuid), this.onDisposed.reset();\n }\n /** {@link Createable.create} */\n create(t) {\n const o = this.components.get(ze).get(t).castRay();\n o && this.createPlaneFromIntersection(t, o);\n }\n /**\n * Creates a plane in a certain place and with a certain orientation,\n * without the need of the mouse.\n *\n * @param world - the world where this plane should be created.\n * @param normal - the orientation of the clipping plane.\n * @param point - the position of the clipping plane.\n * navigation.\n */\n createFromNormalAndCoplanarPoint(t, e, i) {\n const o = this.newPlane(t, i, e);\n return this.updateMaterialsAndPlanes(), o;\n }\n /**\n * {@link Createable.delete}\n *\n * @param world - the world where the plane to delete is.\n * @param plane - the plane to delete. If undefined, the first plane\n * found under the cursor will be deleted.\n */\n delete(t, e) {\n e || (e = this.pickPlane(t)), e && this.deletePlane(e);\n }\n /** Deletes all the existing clipping planes. */\n deleteAll() {\n for (; this.list.length > 0; ) {\n const t = this.list[0];\n this.delete(t.world, t);\n }\n }\n deletePlane(t) {\n const e = this.list.indexOf(t);\n if (e !== -1) {\n if (this.list.splice(e, 1), !t.world.renderer)\n throw new Error(\"Renderer not found for this plane's world!\");\n t.world.renderer.setPlane(!1, t.three), t.dispose(), this.updateMaterialsAndPlanes(), this.onAfterDelete.trigger(t);\n }\n }\n pickPlane(t) {\n const i = this.components.get(ze).get(t), o = this.getAllPlaneMeshes(), n = i.castRay(o);\n if (n) {\n const r = n.object;\n return this.list.find((a) => a.meshes.includes(r));\n }\n }\n getAllPlaneMeshes() {\n const t = [];\n for (const e of this.list)\n t.push(...e.meshes);\n return t;\n }\n createPlaneFromIntersection(t, e) {\n var a;\n if (!t.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const i = e.point.distanceTo(new g.Vector3(0, 0, 0)), o = (a = e.face) == null ? void 0 : a.normal;\n if (!i || !o)\n return;\n const n = this.getWorldNormal(e, o), r = this.newPlane(t, e.point, n.negate());\n r.visible = this._visible, r.size = this._size, t.renderer.setPlane(!0, r.three), this.updateMaterialsAndPlanes();\n }\n getWorldNormal(t, e) {\n const i = t.object;\n let o = t.object.matrixWorld.clone();\n if (i instanceof g.InstancedMesh && t.instanceId !== void 0) {\n const c = new g.Matrix4();\n i.getMatrixAt(t.instanceId, c), o = c.multiply(o);\n }\n const r = new g.Matrix3().getNormalMatrix(o), a = e.clone().applyMatrix3(r).normalize();\n return this.normalizePlaneDirectionY(a), a;\n }\n normalizePlaneDirectionY(t) {\n this.orthogonalY && (t.y > this.toleranceOrthogonalY && (t.x = 0, t.y = 1, t.z = 0), t.y < -this.toleranceOrthogonalY && (t.x = 0, t.y = -1, t.z = 0));\n }\n newPlane(t, e, i) {\n const o = new this.Type(\n this.components,\n t,\n e,\n i,\n this._material\n );\n return o.onDraggingStarted.add(this._onStartDragging), o.onDraggingEnded.add(this._onEndDragging), this.list.push(o), this.onAfterCreate.trigger(o), o;\n }\n updateMaterialsAndPlanes() {\n const t = this.components.get(Ci);\n for (const [e, i] of t.list) {\n if (!i.renderer)\n continue;\n i.renderer.updateClippingPlanes();\n const { clippingPlanes: o } = i.renderer;\n for (const n of i.meshes)\n if (n.material)\n if (Array.isArray(n.material))\n for (const r of n.material)\n r.clippingPlanes = o;\n else\n n.material.clippingPlanes = o;\n }\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(ve, \"uuid\", \"66290bc5-18c4-4cd1-9379-2e17a0617611\");\nlet Rn = ve;\nfunction br(l, s, t, e) {\n return new Promise((i, o) => {\n function n() {\n const r = l.clientWaitSync(s, t, 0);\n if (r === l.WAIT_FAILED) {\n o();\n return;\n }\n if (r === l.TIMEOUT_EXPIRED) {\n setTimeout(n, e);\n return;\n }\n i();\n }\n n();\n });\n}\nasync function vr(l, s, t, e, i, o, n) {\n const r = l.fenceSync(l.SYNC_GPU_COMMANDS_COMPLETE, 0);\n l.flush(), await br(l, r, 0, 10), l.deleteSync(r), l.bindBuffer(s, t), l.getBufferSubData(s, e, i, o, n), l.bindBuffer(s, null);\n}\nasync function Br(l, s, t, e, i, o, n, r) {\n const a = l.createBuffer();\n return l.bindBuffer(l.PIXEL_PACK_BUFFER, a), l.bufferData(l.PIXEL_PACK_BUFFER, r.byteLength, l.STREAM_READ), l.readPixels(s, t, e, i, o, n, 0), l.bindBuffer(l.PIXEL_PACK_BUFFER, null), await vr(l, l.PIXEL_PACK_BUFFER, a, 0, r), l.deleteBuffer(a), r;\n}\nclass Yr {\n constructor(s, t, e) {\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * Fires after making the visibility check to the meshes. It lists the\n * meshes that are currently visible, and the ones that were visible\n * just before but not anymore.\n */\n I(this, \"onViewUpdated\", new Ts());\n /**\n * Whether this renderer is active or not. If not, it won't render anything.\n */\n I(this, \"enabled\", !0);\n /**\n * Needs to check whether there are objects that need to be hidden or shown.\n * You can bind this to the camera movement, to a certain interval, etc.\n */\n I(this, \"needsUpdate\", !1);\n /**\n * Render the internal scene used to determine the object visibility. Used\n * for debugging purposes.\n */\n I(this, \"renderDebugFrame\", !1);\n /** The components instance to which this renderer belongs. */\n I(this, \"components\");\n /** The world instance to which this renderer belongs. */\n I(this, \"world\");\n /** The THREE.js renderer used to make the visibility test. */\n I(this, \"renderer\");\n I(this, \"autoUpdate\", !0);\n I(this, \"updateInterval\", 1e3);\n I(this, \"worker\");\n I(this, \"scene\", new g.Scene());\n I(this, \"_width\", 512);\n I(this, \"_height\", 512);\n I(this, \"_availableColor\", 1);\n I(this, \"renderTarget\");\n I(this, \"bufferSize\");\n I(this, \"_buffer\");\n // Prevents worker being fired multiple times\n I(this, \"_isWorkerBusy\", !1);\n /**\n * The function that the culler uses to reprocess the scene. Generally it's\n * better to call needsUpdate, but you can also call this to force it.\n * @param force if true, it will refresh the scene even if needsUpdate is\n * not true.\n */\n I(this, \"updateVisibility\", async (s) => {\n if (!this.enabled || !this.needsUpdate && !s || this._isWorkerBusy)\n return;\n this._isWorkerBusy = !0;\n const t = this.world.camera.three;\n t.updateMatrix(), this.renderer.setSize(this._width, this._height), this.renderer.setRenderTarget(this.renderTarget), this.renderer.render(this.scene, t);\n const e = this.renderer.getContext();\n await Br(\n e,\n 0,\n 0,\n this._width,\n this._height,\n e.RGBA,\n e.UNSIGNED_BYTE,\n this._buffer\n ), this.renderer.setRenderTarget(null), this.renderDebugFrame && this.renderer.render(this.scene, t), this.worker.postMessage({\n buffer: this._buffer\n }), this.needsUpdate = !1;\n });\n if (!t.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this.components = s, this.applySettings(e), this.world = t, this.renderer = new g.WebGLRenderer(), this.renderTarget = new g.WebGLRenderTarget(this._width, this._height), this.bufferSize = this._width * this._height * 4, this._buffer = new Uint8Array(this.bufferSize), this.renderer.clippingPlanes = t.renderer.clippingPlanes;\n const i = `\n addEventListener(\"message\", (event) => {\n const { buffer } = event.data;\n const colors = new Map();\n for (let i = 0; i < buffer.length; i += 4) {\n const r = buffer[i];\n const g = buffer[i + 1];\n const b = buffer[i + 2];\n const code = \"\" + r + \"-\" + g + \"-\" + b;\n if(colors.has(code)) {\n colors.set(code, colors.get(code) + 1);\n } else {\n colors.set(code, 1);\n }\n }\n postMessage({ colors });\n });\n `, o = new Blob([i], { type: \"application/javascript\" });\n this.worker = new Worker(URL.createObjectURL(o));\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1;\n for (const s of this.scene.children)\n s.removeFromParent();\n this.onViewUpdated.reset(), this.worker.terminate(), this.renderer.dispose(), this.renderTarget.dispose(), this._buffer = null, this.onDisposed.reset();\n }\n getAvailableColor() {\n let s = BigInt(this._availableColor.toString());\n const t = [];\n do\n t.unshift(Number(s % 256n)), s /= 256n;\n while (s);\n for (; t.length !== 3; )\n t.unshift(0);\n const [e, i, o] = t, n = `${e}-${i}-${o}`;\n return { r: e, g: i, b: o, code: n };\n }\n increaseColor() {\n if (this._availableColor === 256 * 256 * 256) {\n console.warn(\"Color can't be increased over 256 x 256 x 256!\");\n return;\n }\n this._availableColor++;\n }\n decreaseColor() {\n if (this._availableColor === 1) {\n console.warn(\"Color can't be decreased under 0!\");\n return;\n }\n this._availableColor--;\n }\n applySettings(s) {\n s && (s.updateInterval !== void 0 && (this.updateInterval = s.updateInterval), s.height !== void 0 && (this._height = s.height), s.width !== void 0 && (this._width = s.width), s.autoUpdate !== void 0 && (this.autoUpdate = s.autoUpdate));\n }\n}\nclass Vr extends Yr {\n constructor(t, e, i) {\n super(t, e, i);\n /**\n * Event triggered when the visibility of meshes is updated.\n * Contains two sets: seen and unseen.\n */\n I(this, \"onViewUpdated\", new D());\n /**\n * Pixels in screen a geometry must occupy to be considered \"seen\".\n * Default value is 100.\n */\n I(this, \"threshold\", 100);\n /**\n * Map of color code to THREE.InstancedMesh.\n * Used to keep track of color-coded meshes.\n */\n I(this, \"colorMeshes\", /* @__PURE__ */ new Map());\n /**\n * Flag to indicate if the renderer is currently processing.\n * Used to prevent concurrent processing.\n */\n I(this, \"isProcessing\", !1);\n I(this, \"_colorCodeMeshMap\", /* @__PURE__ */ new Map());\n I(this, \"_meshIDColorCodeMap\", /* @__PURE__ */ new Map());\n I(this, \"_currentVisibleMeshes\", /* @__PURE__ */ new Set());\n I(this, \"_recentlyHiddenMeshes\", /* @__PURE__ */ new Set());\n I(this, \"_intervalID\", null);\n I(this, \"_transparentMat\", new g.MeshBasicMaterial({\n transparent: !0,\n opacity: 0\n }));\n I(this, \"handleWorkerMessage\", async (t) => {\n if (this.isProcessing)\n return;\n const e = t.data.colors;\n this._recentlyHiddenMeshes = new Set(this._currentVisibleMeshes), this._currentVisibleMeshes.clear();\n for (const [i, o] of e) {\n if (o < this.threshold)\n continue;\n const n = this._colorCodeMeshMap.get(i);\n n && (this._currentVisibleMeshes.add(n), this._recentlyHiddenMeshes.delete(n));\n }\n this.onViewUpdated.trigger({\n seen: this._currentVisibleMeshes,\n unseen: this._recentlyHiddenMeshes\n }), this._isWorkerBusy = !1;\n });\n this.worker.addEventListener(\"message\", this.handleWorkerMessage), this.autoUpdate && window.setInterval(async () => {\n this.isProcessing || await this.updateVisibility();\n }, this.updateInterval), this.onViewUpdated.add(({ seen: o, unseen: n }) => {\n for (const r of o)\n r.visible = !0;\n for (const r of n)\n r.visible = !1;\n });\n }\n /** {@link Disposable.dispose} */\n dispose() {\n super.dispose(), this._intervalID !== null && (window.clearInterval(this._intervalID), this._intervalID = null), this._currentVisibleMeshes.clear(), this._recentlyHiddenMeshes.clear(), this._meshIDColorCodeMap.clear(), this._transparentMat.dispose(), this._colorCodeMeshMap.clear();\n const t = this.components.get(zt);\n for (const e in this.colorMeshes) {\n const i = this.colorMeshes.get(e);\n i && t.destroy(i, !0);\n }\n this.colorMeshes.clear();\n }\n /**\n * Adds a mesh to the culler. When the mesh is not visibile anymore, it will be removed from the scene. When it's visible again, it will be added to the scene.\n * @param mesh - The mesh to add. It can be a regular THREE.Mesh or an instance of THREE.InstancedMesh.\n * @returns {void}\n */\n add(t) {\n if (!this.enabled)\n return;\n if (this.isProcessing) {\n console.log(\"Culler processing not finished yet.\");\n return;\n }\n this.isProcessing = !0;\n const e = t instanceof g.InstancedMesh, { geometry: i, material: o } = t, { colorMaterial: n, code: r } = this.getAvailableMaterial();\n let a;\n if (Array.isArray(o)) {\n let d = !0;\n const E = [];\n for (const u of o)\n sn.isTransparent(u) ? E.push(this._transparentMat) : (d = !1, E.push(n));\n if (d) {\n n.dispose(), this.isProcessing = !1;\n return;\n }\n a = E;\n } else if (sn.isTransparent(o)) {\n n.dispose(), this.isProcessing = !1;\n return;\n } else\n a = n;\n this._colorCodeMeshMap.set(r, t), this._meshIDColorCodeMap.set(t.uuid, r);\n const c = e ? t.count : 1, h = new g.InstancedMesh(i, a, c);\n e ? h.instanceMatrix = t.instanceMatrix : h.setMatrixAt(0, new g.Matrix4()), t.visible = !1, t.updateWorldMatrix(!0, !1), h.applyMatrix4(t.matrixWorld), h.updateMatrix(), this.scene.add(h), this.colorMeshes.set(t.uuid, h), this.increaseColor(), this.isProcessing = !1;\n }\n /**\n * Removes a mesh from the culler, so its visibility is not controlled by the culler anymore.\n * When the mesh is removed, it will be hidden from the scene and its color-coded mesh will be destroyed.\n * @param mesh - The mesh to remove. It can be a regular THREE.Mesh or an instance of THREE.InstancedMesh.\n * @returns {void}\n */\n remove(t) {\n if (this.isProcessing) {\n console.log(\"Culler processing not finished yet.\");\n return;\n }\n this.isProcessing = !0;\n const e = this.components.get(zt);\n this._currentVisibleMeshes.delete(t), this._recentlyHiddenMeshes.delete(t);\n const i = this.colorMeshes.get(t.uuid), o = this._meshIDColorCodeMap.get(t.uuid);\n if (!i || !o) {\n this.isProcessing = !1, console.log(t.visible);\n return;\n }\n this._colorCodeMeshMap.delete(o), this._meshIDColorCodeMap.delete(t.uuid), this.colorMeshes.delete(t.uuid), i.geometry = void 0, i.material = [], e.destroy(i, !0), this._recentlyHiddenMeshes.delete(t), this._currentVisibleMeshes.delete(t), this.isProcessing = !1;\n }\n getAvailableMaterial() {\n const { r: t, g: e, b: i, code: o } = this.getAvailableColor(), n = g.ColorManagement.enabled;\n g.ColorManagement.enabled = !1;\n const r = new g.Color(`rgb(${t}, ${e}, ${i})`);\n if (!this.world.renderer)\n throw new Error(\"Renderer not found in the world!\");\n const a = this.world.renderer.clippingPlanes, c = new g.MeshBasicMaterial({\n color: r,\n clippingPlanes: a,\n side: g.DoubleSide\n });\n return g.ColorManagement.enabled = n, { colorMaterial: c, code: o };\n }\n}\nconst Be = class Be extends et {\n constructor(t) {\n super(t);\n /**\n * An event that is triggered when the Cullers component is disposed.\n */\n I(this, \"onDisposed\", new D());\n I(this, \"_enabled\", !0);\n /**\n * A map of MeshCullerRenderer instances, keyed by their world UUIDs.\n */\n I(this, \"list\", /* @__PURE__ */ new Map());\n t.add(Be.uuid, this);\n }\n /** {@link Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link Component.enabled} */\n set enabled(t) {\n this._enabled = t;\n for (const [e, i] of this.list)\n i.enabled = t;\n }\n /**\n * Creates a new MeshCullerRenderer for the given world.\n * If a MeshCullerRenderer already exists for the world, it will return the existing one.\n *\n * @param world - The world for which to create the MeshCullerRenderer.\n * @param config - Optional configuration settings for the MeshCullerRenderer.\n *\n * @returns The newly created or existing MeshCullerRenderer for the given world.\n */\n create(t, e) {\n if (this.list.has(t.uuid))\n return this.list.get(t.uuid);\n const i = new Vr(this.components, t, e);\n return this.list.set(t.uuid, i), i;\n }\n /**\n * Deletes the MeshCullerRenderer associated with the given world.\n * If a MeshCullerRenderer exists for the given world, it will be disposed and removed from the list.\n *\n * @param world - The world for which to delete the MeshCullerRenderer.\n *\n * @returns {void}\n */\n delete(t) {\n const e = this.list.get(t.uuid);\n e && e.dispose(), this.list.delete(t.uuid);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1, this.onDisposed.trigger(Be.uuid), this.onDisposed.reset();\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear();\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Be, \"uuid\", \"69f2a50d-c266-44fc-b1bd-fa4d34be89e6\");\nlet Ti = Be;\nclass Gr {\n constructor(s) {\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** {@link Updateable.onAfterUpdate} */\n I(this, \"onAfterUpdate\", new D());\n /** {@link Updateable.onBeforeUpdate} */\n I(this, \"onBeforeUpdate\", new D());\n /** {@link Resizeable.onResize} */\n I(this, \"onResize\", new D());\n /**\n * The front offset of the minimap.\n * It determines how much the minimap's view is offset from the camera's view.\n * By pushing the map to the front, what the user sees on screen corresponds with what they see on the map\n */\n I(this, \"frontOffset\", 0);\n /**\n * The override material for the minimap.\n * It is used to render the depth information of the world onto the minimap.\n */\n I(this, \"overrideMaterial\", new g.MeshDepthMaterial());\n /**\n * The background color of the minimap.\n * It is used to set the background color of the minimap's renderer.\n */\n I(this, \"backgroundColor\", new g.Color(395274));\n /**\n * The WebGL renderer for the minimap.\n * It is used to render the minimap onto the screen.\n */\n I(this, \"renderer\");\n /**\n * A flag indicating whether the minimap is enabled.\n * If disabled, the minimap will not update or render.\n */\n I(this, \"enabled\", !0);\n /**\n * The world in which the minimap is displayed.\n * It provides access to the 3D scene, camera, and other relevant world elements.\n */\n I(this, \"world\");\n I(this, \"_lockRotation\", !0);\n I(this, \"_camera\");\n I(this, \"_plane\");\n I(this, \"_size\", new g.Vector2(320, 160));\n I(this, \"_tempVector1\", new g.Vector3());\n I(this, \"_tempVector2\", new g.Vector3());\n I(this, \"_tempTarget\", new g.Vector3());\n I(this, \"down\", new g.Vector3(0, -1, 0));\n I(this, \"updatePlanes\", () => {\n if (!this.world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const s = [], t = this.world.renderer.three;\n for (const e of t.clippingPlanes)\n s.push(e);\n s.push(this._plane), this.renderer.clippingPlanes = s;\n });\n if (this.world = s, !this.world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this.renderer = new g.WebGLRenderer(), this.renderer.setSize(this._size.x, this._size.y);\n const t = 1, e = this._size.x / this._size.y;\n this._camera = new g.OrthographicCamera(\n t * e / -2,\n t * e / 2,\n t / 2,\n t / -2\n ), this.world.renderer.onClippingPlanesUpdated.add(this.updatePlanes), this._camera.position.set(0, 200, 0), this._camera.zoom = 0.1, this._camera.rotation.x = -Math.PI / 2, this._plane = new g.Plane(this.down, 200), this.updatePlanes();\n }\n /**\n * Gets or sets whether the minimap rotation is locked.\n * When rotation is locked, the minimap will always face the same direction as the camera.\n */\n get lockRotation() {\n return this._lockRotation;\n }\n /**\n * Sets whether the minimap rotation is locked.\n * When rotation is locked, the minimap will always face the same direction as the camera.\n * @param active - If `true`, rotation is locked. If `false`, rotation is not locked.\n */\n set lockRotation(s) {\n this._lockRotation = s, s && (this._camera.rotation.z = 0);\n }\n /**\n * Gets the current zoom level of the minimap.\n * The zoom level determines how much of the world is visible on the minimap.\n * @returns The current zoom level of the minimap.\n */\n get zoom() {\n return this._camera.zoom;\n }\n /**\n * Sets the zoom level of the minimap.\n * The zoom level determines how much of the world is visible on the minimap.\n * @param value - The new zoom level of the minimap.\n */\n set zoom(s) {\n this._camera.zoom = s, this._camera.updateProjectionMatrix();\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1, this.onBeforeUpdate.reset(), this.onAfterUpdate.reset(), this.onResize.reset(), this.overrideMaterial.dispose(), this.renderer.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /** Returns the camera used by the MiniMap */\n get() {\n return this._camera;\n }\n /** {@link Updateable.update} */\n update() {\n if (!this.enabled)\n return;\n this.onBeforeUpdate.trigger();\n const s = this.world.scene.three, t = this.world.camera;\n if (!t.hasCameraControls())\n throw new Error(\"The given world must use camera controls!\");\n if (!(s instanceof g.Scene))\n throw new Error(\"The given world must have a THREE.Scene as a root!\");\n const e = t.controls;\n if (e.getPosition(this._tempVector1), this._camera.position.x = this._tempVector1.x, this._camera.position.z = this._tempVector1.z, this.frontOffset !== 0 && (e.getTarget(this._tempVector2), this._tempVector2.sub(this._tempVector1), this._tempVector2.normalize().multiplyScalar(this.frontOffset), this._camera.position.x += this._tempVector2.x, this._camera.position.z += this._tempVector2.z), !this._lockRotation) {\n e.getTarget(this._tempTarget);\n const o = Math.atan2(\n this._tempTarget.x - this._tempVector1.x,\n this._tempTarget.z - this._tempVector1.z\n );\n this._camera.rotation.z = o + Math.PI;\n }\n this._plane.set(this.down, this._tempVector1.y);\n const i = s.background;\n s.background = this.backgroundColor, this.renderer.render(s, this._camera), s.background = i, this.onAfterUpdate.trigger();\n }\n /** {@link Resizeable.getSize} */\n getSize() {\n return this._size;\n }\n /** {@link Resizeable.resize} */\n resize(s = this._size) {\n this._size.copy(s), this.renderer.setSize(s.x, s.y);\n const t = s.x / s.y, e = 1;\n this._camera.left = e * t / -2, this._camera.right = e * t / 2, this._camera.top = e / 2, this._camera.bottom = -e / 2, this._camera.updateProjectionMatrix(), this.onResize.trigger(s);\n }\n}\nconst Ss = class Ss extends et {\n constructor(t) {\n super(t);\n /** {@link Updateable.onAfterUpdate} */\n I(this, \"onAfterUpdate\", new D());\n /** {@link Updateable.onBeforeUpdate} */\n I(this, \"onBeforeUpdate\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /**\n * A collection of {@link MiniMap} instances, each associated with a unique world ID.\n */\n I(this, \"list\", /* @__PURE__ */ new Map());\n this.components.add(Ss.uuid, this);\n }\n /**\n * Creates a new {@link MiniMap} instance associated with the given world.\n * If a {@link MiniMap} instance already exists for the given world, an error will be thrown.\n *\n * @param world - The {@link World} for which to create a {@link MiniMap} instance.\n * @returns The newly created {@link MiniMap} instance.\n * @throws Will throw an error if a {@link MiniMap} instance already exists for the given world.\n */\n create(t) {\n if (this.list.has(t.uuid))\n throw new Error(\"This world already has a minimap!\");\n const e = new Gr(t);\n return this.list.set(t.uuid, e), e;\n }\n /**\n * Deletes a {@link MiniMap} instance associated with the given world ID.\n * If a {@link MiniMap} instance does not exist for the given ID, nothing happens.\n *\n * @param id - The unique identifier of the world for which to delete the {@link MiniMap} instance.\n * @returns {void}\n */\n delete(t) {\n const e = this.list.get(t);\n e && e.dispose(), this.list.delete(t);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger();\n }\n /** {@link Updateable.update} */\n update() {\n for (const [t, e] of this.list)\n e.update();\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ss, \"uuid\", \"39ad6aad-84c8-4adf-a1e0-7f25313a9e7f\");\nlet An = Ss;\nclass zr {\n constructor(s) {\n /** {@link NavigationMode.enabled} */\n I(this, \"enabled\", !1);\n /** {@link NavigationMode.id} */\n I(this, \"id\", \"FirstPerson\");\n this.camera = s;\n }\n /** {@link NavigationMode.set} */\n set(s) {\n if (this.enabled = s, s) {\n if (this.camera.projection.current !== \"Perspective\") {\n this.camera.set(\"Orbit\");\n return;\n }\n this.setupFirstPersonCamera();\n }\n }\n setupFirstPersonCamera() {\n const s = this.camera.controls, t = new g.Vector3();\n s.distance--, s.getPosition(t), s.minDistance = 1, s.maxDistance = 1, s.distance = 1, s.moveTo(\n t.x,\n t.y,\n t.z\n ), s.truckSpeed = 50, s.mouseButtons.wheel = ot.ACTION.DOLLY, s.touches.two = ot.ACTION.TOUCH_ZOOM_TRUCK;\n }\n}\nclass Hr {\n constructor(s) {\n /** {@link NavigationMode.enabled} */\n I(this, \"enabled\", !0);\n /** {@link NavigationMode.id} */\n I(this, \"id\", \"Orbit\");\n this.camera = s, this.activateOrbitControls();\n }\n /** {@link NavigationMode.set} */\n set(s) {\n this.enabled = s, s && this.activateOrbitControls();\n }\n activateOrbitControls() {\n const s = this.camera.controls;\n s.minDistance = 1, s.maxDistance = 300;\n const t = new g.Vector3();\n s.getPosition(t);\n const e = t.length();\n s.distance = e, s.truckSpeed = 2;\n const { rotation: i } = this.camera.three, o = new g.Vector3(0, 0, -1).applyEuler(i), n = t.addScaledVector(o, e);\n s.moveTo(n.x, n.y, n.z);\n }\n}\nclass kr {\n constructor(s) {\n /** {@link NavigationMode.enabled} */\n I(this, \"enabled\", !1);\n /** {@link NavigationMode.id} */\n I(this, \"id\", \"Plan\");\n I(this, \"mouseAction1\");\n I(this, \"mouseAction2\");\n I(this, \"mouseInitialized\", !1);\n I(this, \"defaultAzimuthSpeed\");\n I(this, \"defaultPolarSpeed\");\n this.camera = s, this.defaultAzimuthSpeed = s.controls.azimuthRotateSpeed, this.defaultPolarSpeed = s.controls.polarRotateSpeed;\n }\n /** {@link NavigationMode.set} */\n set(s) {\n this.enabled = s;\n const t = this.camera.controls;\n t.azimuthRotateSpeed = s ? 0 : this.defaultAzimuthSpeed, t.polarRotateSpeed = s ? 0 : this.defaultPolarSpeed, this.mouseInitialized || (this.mouseAction1 = t.touches.one, this.mouseAction2 = t.touches.two, this.mouseInitialized = !0), s ? (t.mouseButtons.left = ot.ACTION.TRUCK, t.touches.one = ot.ACTION.TOUCH_TRUCK, t.touches.two = ot.ACTION.TOUCH_ZOOM) : (t.mouseButtons.left = ot.ACTION.ROTATE, t.touches.one = this.mouseAction1, t.touches.two = this.mouseAction2);\n }\n}\nclass Wr {\n constructor(s) {\n /**\n * Event that fires when the {@link CameraProjection} changes.\n */\n I(this, \"onChanged\", new D());\n /**\n * Current projection mode of the camera.\n * Default is \"Perspective\".\n */\n I(this, \"current\", \"Perspective\");\n /**\n * The camera controlled by this ProjectionManager.\n * It can be either a PerspectiveCamera or an OrthographicCamera.\n */\n I(this, \"camera\");\n /** Match Ortho zoom with Perspective distance when changing projection mode */\n I(this, \"matchOrthoDistanceEnabled\", !1);\n I(this, \"_component\");\n I(this, \"_previousDistance\", -1);\n this._component = s, this.camera = s.three;\n }\n /**\n * Sets the {@link CameraProjection} of the {@link OrthoPerspectiveCamera}.\n *\n * @param projection - the new projection to set. If it is the current projection,\n * it will have no effect.\n */\n async set(s) {\n this.current !== s && (s === \"Orthographic\" ? this.setOrthoCamera() : await this.setPerspectiveCamera(), this.onChanged.trigger(this.camera));\n }\n /**\n * Changes the current {@link CameraProjection} from Ortographic to Perspective\n * and vice versa.\n */\n async toggle() {\n const t = this.current === \"Perspective\" ? \"Orthographic\" : \"Perspective\";\n await this.set(t);\n }\n setOrthoCamera() {\n if (this._component.mode === null || this._component.mode.id === \"FirstPerson\")\n return;\n this._previousDistance = this._component.controls.distance, this._component.controls.distance = 200;\n const s = this.getPerspectiveDims();\n if (!s)\n return;\n const { width: t, height: e } = s;\n this.setupOrthoCamera(e, t), this.camera = this._component.threeOrtho, this.current = \"Orthographic\";\n }\n getPerspectiveDims() {\n const s = this._component.currentWorld;\n if (!s || !s.renderer)\n return null;\n const t = new g.Vector3();\n this._component.threePersp.getWorldDirection(t);\n const e = new g.Vector3();\n this._component.controls.getTarget(e);\n const o = e.clone().sub(this._component.threePersp.position).dot(t), n = s.renderer.getSize(), r = n.x / n.y, a = this._component.threePersp, c = o * 2 * Math.atan(a.fov * (Math.PI / 180) / 2);\n return { width: c * r, height: c };\n }\n setupOrthoCamera(s, t) {\n this._component.controls.mouseButtons.wheel = ot.ACTION.ZOOM, this._component.controls.mouseButtons.middle = ot.ACTION.ZOOM;\n const e = this._component.threePersp, i = this._component.threeOrtho;\n i.zoom = 1, i.left = t / -2, i.right = t / 2, i.top = s / 2, i.bottom = s / -2, i.updateProjectionMatrix(), i.position.copy(e.position), i.quaternion.copy(e.quaternion), this._component.controls.camera = i;\n }\n getDistance() {\n const s = this._component.threePersp, t = this._component.threeOrtho;\n return (t.top - t.bottom) / t.zoom / (2 * Math.atan(s.fov * (Math.PI / 180) / 2));\n }\n async setPerspectiveCamera() {\n this._component.controls.mouseButtons.wheel = ot.ACTION.DOLLY, this._component.controls.mouseButtons.middle = ot.ACTION.DOLLY;\n const s = this._component.threePersp, t = this._component.threeOrtho;\n s.position.copy(t.position), s.quaternion.copy(t.quaternion), this._component.controls.mouseButtons.wheel = ot.ACTION.DOLLY, this.matchOrthoDistanceEnabled ? this._component.controls.distance = this.getDistance() : this._component.controls.distance = this._previousDistance, await this._component.controls.zoomTo(1), s.updateProjectionMatrix(), this._component.controls.camera = s, this.camera = s, this.current = \"Perspective\";\n }\n}\nclass na extends He {\n constructor(t) {\n super(t);\n /**\n * A ProjectionManager instance that manages the projection modes of the camera.\n */\n I(this, \"projection\");\n /**\n * A THREE.OrthographicCamera instance that represents the orthographic camera.\n * This camera is used when the projection mode is set to orthographic.\n */\n I(this, \"threeOrtho\");\n /**\n * A THREE.PerspectiveCamera instance that represents the perspective camera.\n * This camera is used when the projection mode is set to perspective.\n */\n I(this, \"threePersp\");\n I(this, \"_userInputButtons\", {});\n I(this, \"_frustumSize\", 50);\n I(this, \"_navigationModes\", /* @__PURE__ */ new Map());\n I(this, \"_mode\", null);\n I(this, \"previousSize\", null);\n this.threePersp = this.three, this.threeOrtho = this.newOrthoCamera(), this.projection = new Wr(this), this.onAspectUpdated.add(() => {\n this.setOrthoPerspCameraAspect();\n }), this.projection.onChanged.add(\n (e) => {\n this.three = e, this.updateAspect();\n }\n ), this.onWorldChanged.add(({ action: e }) => {\n e === \"added\" && (this._navigationModes.clear(), this._navigationModes.set(\"Orbit\", new Hr(this)), this._navigationModes.set(\"FirstPerson\", new zr(this)), this._navigationModes.set(\"Plan\", new kr(this)), this._mode = this._navigationModes.get(\"Orbit\"), this.mode.set(!0, { preventTargetAdjustment: !0 }), this.currentWorld && this.currentWorld.renderer && (this.previousSize = this.currentWorld.renderer.getSize().clone()));\n });\n }\n /**\n * Getter for the current navigation mode.\n * Throws an error if the mode is not found or the camera is not initialized.\n *\n * @returns {NavigationMode} The current navigation mode.\n *\n * @throws {Error} Throws an error if the mode is not found or the camera is not initialized.\n */\n get mode() {\n if (!this._mode)\n throw new Error(\"Mode not found, camera not initialized\");\n return this._mode;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n super.dispose(), this.threeOrtho.removeFromParent();\n }\n /**\n * Sets a new {@link NavigationMode} and disables the previous one.\n *\n * @param mode - The {@link NavigationMode} to set.\n */\n set(t) {\n if (this.mode !== null && this.mode.id !== t) {\n if (this.mode.set(!1), !this._navigationModes.has(t))\n throw new Error(\"The specified mode does not exist!\");\n this._mode = this._navigationModes.get(t), this.mode.set(!0);\n }\n }\n /**\n * Make the camera view fit all the specified meshes.\n *\n * @param meshes the meshes to fit. If it is not defined, it will\n * evaluate {@link Components.meshes}.\n * @param offset the distance to the fit object\n */\n async fit(t, e = 1.5) {\n if (!this.enabled)\n return;\n const i = Number.MAX_VALUE, o = Number.MIN_VALUE, n = new g.Vector3(i, i, i), r = new g.Vector3(o, o, o);\n for (const u of t) {\n const f = new g.Box3().setFromObject(u);\n f.min.x < n.x && (n.x = f.min.x), f.min.y < n.y && (n.y = f.min.y), f.min.z < n.z && (n.z = f.min.z), f.max.x > r.x && (r.x = f.max.x), f.max.y > r.y && (r.y = f.max.y), f.max.z > r.z && (r.z = f.max.z);\n }\n const a = new g.Box3(n, r), c = new g.Vector3();\n a.getSize(c);\n const h = new g.Vector3();\n a.getCenter(h);\n const d = Math.max(c.x, c.y, c.z) * e, E = new g.Sphere(h, d);\n await this.controls.fitToSphere(E, !0);\n }\n /**\n * Allows or prevents all user input.\n *\n * @param active - whether to enable or disable user inputs.\n */\n setUserInput(t) {\n t ? this.enableUserInput() : this.disableUserInput();\n }\n disableUserInput() {\n this._userInputButtons.left = this.controls.mouseButtons.left, this._userInputButtons.right = this.controls.mouseButtons.right, this._userInputButtons.middle = this.controls.mouseButtons.middle, this._userInputButtons.wheel = this.controls.mouseButtons.wheel, this.controls.mouseButtons.left = 0, this.controls.mouseButtons.right = 0, this.controls.mouseButtons.middle = 0, this.controls.mouseButtons.wheel = 0;\n }\n enableUserInput() {\n Object.keys(this._userInputButtons).length !== 0 && (this.controls.mouseButtons.left = this._userInputButtons.left, this.controls.mouseButtons.right = this._userInputButtons.right, this.controls.mouseButtons.middle = this._userInputButtons.middle, this.controls.mouseButtons.wheel = this._userInputButtons.wheel);\n }\n newOrthoCamera() {\n const t = window.innerWidth / window.innerHeight;\n return new g.OrthographicCamera(\n this._frustumSize * t / -2,\n this._frustumSize * t / 2,\n this._frustumSize / 2,\n this._frustumSize / -2,\n 0.1,\n 1e3\n );\n }\n setOrthoPerspCameraAspect() {\n if (!this.currentWorld || !this.currentWorld.renderer || !this.previousSize)\n return;\n const t = this.currentWorld.renderer.getSize(), e = this.threeOrtho.top, i = this.threeOrtho.right, o = t.y / this.previousSize.y, n = t.x / this.previousSize.x, r = e * o, a = i * n;\n this.threeOrtho.left = -a, this.threeOrtho.right = a, this.threeOrtho.top = r, this.threeOrtho.bottom = -r, this.threeOrtho.updateProjectionMatrix(), this.previousSize.copy(t);\n }\n}\nconst Xr = /* @__PURE__ */ new Map([\n [\n b.IFCRELAGGREGATES,\n {\n forRelating: \"IsDecomposedBy\",\n forRelated: \"Decomposes\"\n }\n ],\n [\n b.IFCRELASSOCIATESMATERIAL,\n {\n forRelating: \"AssociatedTo\",\n forRelated: \"HasAssociations\"\n }\n ],\n [\n b.IFCRELASSOCIATESCLASSIFICATION,\n {\n forRelating: \"ClassificationForObjects\",\n forRelated: \"HasAssociations\"\n }\n ],\n [\n b.IFCRELASSIGNSTOGROUP,\n {\n forRelating: \"IsGroupedBy\",\n forRelated: \"HasAssignments\"\n }\n ],\n [\n b.IFCRELDEFINESBYPROPERTIES,\n {\n forRelated: \"IsDefinedBy\",\n forRelating: \"DefinesOcurrence\"\n }\n ],\n [\n b.IFCRELDEFINESBYTYPE,\n {\n forRelated: \"IsTypedBy\",\n forRelating: \"Types\"\n }\n ],\n [\n b.IFCRELDEFINESBYTEMPLATE,\n {\n forRelated: \"IsDefinedBy\",\n forRelating: \"Defines\"\n }\n ],\n [\n b.IFCRELCONTAINEDINSPATIALSTRUCTURE,\n {\n forRelated: \"ContainedInStructure\",\n forRelating: \"ContainsElements\"\n }\n ]\n]), Ye = class Ye extends et {\n constructor(t) {\n super(t);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * Event triggered when relations for a model have been indexed.\n * This event provides the model's UUID and the relations map generated for that model.\n *\n * @property {string} modelID - The UUID of the model for which relations have been indexed.\n * @property {RelationsMap} relationsMap - The relations map generated for the specified model.\n * The map keys are expressIDs of entities, and the values are maps where each key is a relation type ID and its value is an array of expressIDs of entities related through that relation type.\n */\n I(this, \"onRelationsIndexed\", new D());\n /**\n * Holds the relationship mappings for each model processed by the indexer.\n * The structure is a map where each key is a model's UUID, and the value is another map.\n * This inner map's keys are entity expressIDs, and its values are maps where each key is an index\n * representing a specific relation type, and the value is an array of expressIDs of entities\n * that are related through that relation type. This structure allows for efficient querying\n * of entity relationships within a model.\n */\n I(this, \"relationMaps\", {});\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n I(this, \"_relToAttributesMap\", Xr);\n I(this, \"_inverseAttributes\", [\n \"IsDecomposedBy\",\n \"Decomposes\",\n \"AssociatedTo\",\n \"HasAssociations\",\n \"ClassificationForObjects\",\n \"IsGroupedBy\",\n \"HasAssignments\",\n \"IsDefinedBy\",\n \"DefinesOcurrence\",\n \"IsTypedBy\",\n \"Types\",\n \"Defines\",\n \"ContainedInStructure\",\n \"ContainsElements\"\n ]);\n I(this, \"_ifcRels\", [\n b.IFCRELAGGREGATES,\n b.IFCRELASSOCIATESMATERIAL,\n b.IFCRELASSOCIATESCLASSIFICATION,\n b.IFCRELASSIGNSTOGROUP,\n b.IFCRELDEFINESBYPROPERTIES,\n b.IFCRELDEFINESBYTYPE,\n b.IFCRELDEFINESBYTEMPLATE,\n b.IFCRELCONTAINEDINSPATIALSTRUCTURE\n ]);\n I(this, \"onFragmentsDisposed\", (t) => {\n delete this.relationMaps[t.groupID];\n });\n this.components.add(Ye.uuid, this), t.get(ht).onFragmentsDisposed.add(this.onFragmentsDisposed);\n }\n indexRelations(t, e, i, o) {\n const n = Object.keys(e).find(\n (E) => E.startsWith(\"Relating\")\n ), r = Object.keys(e).find(\n (E) => E.startsWith(\"Related\")\n );\n if (!(n && r))\n return;\n const a = e[n].value, c = e[r].map((E) => E.value), h = t.get(a) ?? /* @__PURE__ */ new Map(), d = this._inverseAttributes.indexOf(o);\n h.set(d, c), t.set(a, h);\n for (const E of c) {\n const u = t.get(E) ?? /* @__PURE__ */ new Map(), f = this._inverseAttributes.indexOf(i), R = u.get(f) ?? [];\n R.push(a), u.set(f, R), t.set(E, u);\n }\n }\n /**\n * Adds a relation map to the model's relations map.\n *\n * @param model - The `FragmentsGroup` model to which the relation map will be added.\n * @param relationMap - The `RelationsMap` to be added to the model's relations map.\n *\n * @fires onRelationsIndexed - Triggers an event with the model's UUID and the added relation map.\n */\n setRelationMap(t, e) {\n this.relationMaps[t.uuid] = e, this.onRelationsIndexed.trigger({\n modelID: t.uuid,\n relationsMap: e\n });\n }\n /**\n * Processes a given model to index its IFC entities relations based on predefined inverse attributes.\n * This method iterates through each specified inverse attribute, retrieves the corresponding relations,\n * and maps them in a structured way to facilitate quick access to related entities.\n *\n * The process involves querying the model for each relation type associated with the inverse attributes\n * and updating the internal relationMaps with the relationships found. This map is keyed by the model's UUID\n * and contains a nested map where each key is an entity's expressID and its value is another map.\n * This inner map's keys are the indices of the inverse attributes, and its values are arrays of expressIDs\n * of entities that are related through that attribute.\n *\n * @param model The `FragmentsGroup` model to be processed. It must have properties loaded.\n * @returns A promise that resolves to the relations map for the processed model. This map is a detailed\n * representation of the relations indexed by entity expressIDs and relation types.\n * @throws An error if the model does not have properties loaded.\n */\n async process(t) {\n if (!t.hasProperties)\n throw new Error(\"FragmentsGroup properties not found\");\n let e = this.relationMaps[t.uuid];\n if (e)\n return e;\n e = /* @__PURE__ */ new Map();\n for (const i of this._ifcRels) {\n const o = await t.getAllPropertiesOfType(i);\n if (!o)\n continue;\n const n = this._relToAttributesMap.get(i);\n if (!n)\n continue;\n const { forRelated: r, forRelating: a } = n;\n for (const c in o) {\n const h = o[c];\n this.indexRelations(e, h, r, a);\n }\n }\n return this.setRelationMap(t, e), e;\n }\n /**\n * Processes a given model from a WebIfc API to index its IFC entities relations.\n *\n * @param ifcApi - The WebIfc API instance from which to retrieve the model's properties.\n * @param modelID - The unique identifier of the model within the WebIfc API.\n * @returns A promise that resolves to the relations map for the processed model.\n * This map is a detailed representation of the relations indexed by entity expressIDs and relation types.\n */\n async processFromWebIfc(t, e) {\n const i = /* @__PURE__ */ new Map();\n for (const o of this._ifcRels) {\n const n = this._relToAttributesMap.get(o);\n if (!n)\n continue;\n const { forRelated: r, forRelating: a } = n, c = t.GetLineIDsWithType(e, o);\n for (let h = 0; h < c.size(); h++) {\n const d = await t.properties.getItemProperties(\n e,\n c.get(h)\n );\n this.indexRelations(i, d, r, a);\n }\n }\n return this.onRelationsIndexed.trigger({\n modelID: e.toString(),\n relationsMap: i\n }), i;\n }\n /**\n * Retrieves the relations of a specific entity within a model based on the given relation name.\n * This method searches the indexed relation maps for the specified model and entity,\n * returning the IDs of related entities if a match is found.\n *\n * @param model The `FragmentsGroup` model containing the entity.\n * @param expressID The unique identifier of the entity within the model.\n * @param relationName The IFC schema inverse attribute of the relation to search for (e.g., \"IsDefinedBy\", \"ContainsElements\").\n * @returns An array of express IDs representing the related entities, or `null` if no relations are found\n * or the specified relation name is not indexed.\n */\n getEntityRelations(t, e, i) {\n const o = this.relationMaps[t.uuid];\n if (!o)\n return null;\n const n = o.get(e), r = this._inverseAttributes.indexOf(i);\n if (!n || r === -1)\n return null;\n const a = n.get(r);\n return a || null;\n }\n /**\n * Serializes the relations of a given relation map into a JSON string.\n * This method iterates through the relations in the given map, organizing them into a structured object where each key is an expressID of an entity,\n * and its value is another object mapping relation indices to arrays of related entity expressIDs.\n * The resulting object is then serialized into a JSON string.\n *\n * @param relationMap - The map of relations to be serialized. The map keys are expressIDs of entities, and the values are maps where each key is a relation type ID and its value is an array of expressIDs of entities related through that relation type.\n * @returns A JSON string representing the serialized relations of the given relation map.\n */\n serializeRelations(t) {\n const e = {};\n for (const [i, o] of t.entries()) {\n e[i] || (e[i] = {});\n for (const [n, r] of o.entries())\n e[i][n] = r;\n }\n return JSON.stringify(e);\n }\n /**\n * Serializes the relations of a specific model into a JSON string.\n * This method iterates through the relations indexed for the given model,\n * organizing them into a structured object where each key is an expressID of an entity,\n * and its value is another object mapping relation indices to arrays of related entity expressIDs.\n * The resulting object is then serialized into a JSON string.\n *\n * @param model The `FragmentsGroup` model whose relations are to be serialized.\n * @returns A JSON string representing the serialized relations of the specified model.\n * If the model has no indexed relations, `null` is returned.\n */\n serializeModelRelations(t) {\n const e = this.relationMaps[t.uuid];\n return e ? this.serializeRelations(e) : null;\n }\n /**\n * Serializes all relations of every model processed by the indexer into a JSON string.\n * This method iterates through each model's relations indexed in `relationMaps`, organizing them\n * into a structured JSON object. Each top-level key in this object corresponds to a model's UUID,\n * and its value is another object mapping entity expressIDs to their related entities, categorized\n * by relation types. The structure facilitates easy access to any entity's relations across all models.\n *\n * @returns A JSON string representing the serialized relations of all models processed by the indexer.\n * If no relations have been indexed, an empty object is returned as a JSON string.\n */\n serializeAllRelations() {\n const t = {};\n for (const e in this.relationMaps) {\n const i = this.relationMaps[e], o = {};\n for (const [n, r] of i.entries()) {\n o[n] || (o[n] = {});\n for (const [a, c] of r.entries())\n o[n][a] = c;\n }\n t[e] = o;\n }\n return JSON.stringify(t);\n }\n /**\n * Converts a JSON string representing relations between entities into a structured map.\n * This method parses the JSON string to reconstruct the relations map that indexes\n * entity relations by their express IDs. The outer map keys are the express IDs of entities,\n * and the values are maps where each key is a relation type ID and its value is an array\n * of express IDs of entities related through that relation type.\n *\n * @param json The JSON string to be parsed into the relations map.\n * @returns A `Map` where the key is the express ID of an entity as a number, and the value\n * is another `Map`. This inner map's key is the relation type ID as a number, and its value\n * is an array of express IDs (as numbers) of entities related through that relation type.\n */\n getRelationsMapFromJSON(t) {\n const e = JSON.parse(t), i = /* @__PURE__ */ new Map();\n for (const o in e) {\n const n = e[o], r = /* @__PURE__ */ new Map();\n for (const a in n)\n r.set(Number(a), n[a]);\n i.set(Number(o), r);\n }\n return i;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.relationMaps = {}, this.components.get(ht).onFragmentsDisposed.remove(this.onFragmentsDisposed), this.onDisposed.trigger(Ye.uuid), this.onDisposed.reset();\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ye, \"uuid\", \"23a889ab-83b3-44a4-8bee-ead83438370b\");\nlet ke = Ye;\nconst Ns = class Ns extends et {\n constructor(t) {\n super(t);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * Event triggered when fragments are loaded.\n */\n I(this, \"onFragmentsLoaded\", new D());\n /**\n * Event triggered when fragments are disposed.\n */\n I(this, \"onFragmentsDisposed\", new D());\n /**\n * Map containing all loaded fragments.\n * The key is the fragment's unique identifier, and the value is the fragment itself.\n */\n I(this, \"list\", /* @__PURE__ */ new Map());\n /**\n * Map containing all loaded fragment groups.\n * The key is the group's unique identifier, and the value is the group itself.\n */\n I(this, \"groups\", /* @__PURE__ */ new Map());\n I(this, \"baseCoordinationModel\", \"\");\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n I(this, \"_loader\", new to());\n this.components.add(Ns.uuid, this);\n }\n /**\n * Getter for the meshes of all fragments in the FragmentsManager.\n * It iterates over the fragments in the list and pushes their meshes into an array.\n * @returns {THREE.Mesh[]} An array of THREE.Mesh objects representing the fragments.\n */\n get meshes() {\n const t = [];\n for (const [e, i] of this.list)\n t.push(i.mesh);\n return t;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.groups)\n e.dispose(!0);\n this.baseCoordinationModel = \"\", this.groups.clear(), this.list.clear(), this.onFragmentsLoaded.reset(), this.onFragmentsDisposed.reset(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Dispose of a specific fragment group.\n * This method removes the group from the groups map, deletes all fragments within the group from the list,\n * disposes of the group, and triggers the onFragmentsDisposed event.\n *\n * @param group - The fragment group to be disposed.\n */\n disposeGroup(t) {\n const { uuid: e } = t, i = [];\n for (const o of t.items)\n i.push(o.id), this.list.delete(o.id);\n t.dispose(!0), this.groups.delete(t.uuid), this.onFragmentsDisposed.trigger({\n groupID: e,\n fragmentIDs: i\n });\n }\n /**\n * Loads a binary file that contain fragment geometry.\n * @param data - The binary data to load.\n * @param config - Optional configuration for loading.\n * @param config.coordinate - Whether to apply coordinate transformation. Default is true.\n * @param config.properties - Ifc properties to set on the loaded fragments. Not to be used when streaming.\n * @returns The loaded FragmentsGroup.\n */\n load(t, e) {\n const o = { ...{ coordinate: !0 }, ...e }, { coordinate: n, name: r, properties: a, relationsMap: c } = o, h = this._loader.import(t);\n r && (h.name = r);\n for (const d of h.items)\n d.group = h, this.list.set(d.id, d);\n return n && this.coordinate([h]), this.groups.set(h.uuid, h), a && h.setLocalProperties(a), c && this.components.get(ke).setRelationMap(h, c), this.onFragmentsLoaded.trigger(h), h;\n }\n /**\n * Export the specified fragmentsgroup to binary data.\n * @param group - the fragments group to be exported.\n * @returns the exported data as binary buffer.\n */\n export(t) {\n return this._loader.export(t);\n }\n /**\n * Gets a map of model IDs to sets of express IDs for the given fragment ID map.\n * @param fragmentIdMap - A map of fragment IDs to their corresponding express IDs.\n * @returns A map of model IDs to sets of express IDs.\n */\n getModelIdMap(t) {\n const e = {};\n for (const i in t) {\n const o = this.list.get(i);\n if (!(o && o.group))\n continue;\n const n = o.group;\n n.uuid in e || (e[n.uuid] = /* @__PURE__ */ new Set());\n const r = t[i];\n for (const a of r)\n e[n.uuid].add(a);\n }\n return e;\n }\n /**\n * Converts a map of model IDs to sets of express IDs to a fragment ID map.\n * @param modelIdMap - A map of model IDs to their corresponding express IDs.\n * @returns A fragment ID map.\n * @remarks\n * This method iterates through the provided model ID map, retrieves the corresponding model from the `groups` map,\n * and then calls the `getFragmentMap` method of the model to obtain a fragment ID map for the given express IDs.\n * The fragment ID maps are then merged into a single map and returned.\n * If a model with a given ID is not found in the `groups` map, the method skips that model and continues with the next one.\n */\n modelIdToFragmentIdMap(t) {\n let e = {};\n for (const i in t) {\n const o = this.groups.get(i);\n if (!o)\n continue;\n const n = t[i], r = o.getFragmentMap(n);\n e = { ...e, ...r };\n }\n return e;\n }\n /**\n * Applies coordinate transformation to the provided models.\n * If no models are provided, all groups are used.\n * The first model in the list becomes the base model for coordinate transformation.\n * All other models are then transformed to match the base model's coordinate system.\n *\n * @param models - The models to apply coordinate transformation to.\n * If not provided, all groups are used.\n *\n * @returns {void}\n */\n coordinate(t = Array.from(this.groups.values())) {\n if (this.baseCoordinationModel.length === 0) {\n const o = t.pop();\n if (!o)\n return;\n this.baseCoordinationModel = o.uuid;\n }\n if (!t.length)\n return;\n const i = this.groups.get(this.baseCoordinationModel);\n if (!i) {\n console.log(\"No base model found for coordination!\");\n return;\n }\n for (const o of t)\n o !== i && (o.position.set(0, 0, 0), o.rotation.set(0, 0, 0), o.scale.set(1, 1, 1), o.updateMatrix(), o.applyMatrix4(o.coordinationMatrix.clone().invert()), o.applyMatrix4(i.coordinationMatrix));\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ns, \"uuid\", \"fef46874-46a3-461b-8c44-2922ab77c806\");\nlet ht = Ns;\nconst At = class At extends et {\n constructor(t) {\n super(t);\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n I(this, \"_absoluteMin\");\n I(this, \"_absoluteMax\");\n I(this, \"_meshes\", []);\n this.components.add(At.uuid, this), this._absoluteMin = At.newBound(!0), this._absoluteMax = At.newBound(!1);\n }\n /**\n * A static method to calculate the dimensions of a given bounding box.\n *\n * @param bbox - The bounding box to calculate the dimensions for.\n * @returns An object containing the width, height, depth, and center of the bounding box.\n */\n static getDimensions(t) {\n const { min: e, max: i } = t, o = Math.abs(i.x - e.x), n = Math.abs(i.y - e.y), r = Math.abs(i.z - e.z), a = new g.Vector3();\n return a.subVectors(i, e).divideScalar(2).add(e), { width: o, height: n, depth: r, center: a };\n }\n /**\n * A static method to create a new bounding box boundary.\n *\n * @param positive - A boolean indicating whether to create a boundary for positive or negative values.\n * @returns A new THREE.Vector3 representing the boundary.\n *\n * @remarks\n * This method is used to create a new boundary for calculating bounding boxes.\n * It sets the x, y, and z components of the returned vector to positive or negative infinity,\n * depending on the value of the `positive` parameter.\n *\n * @example\n * ```typescript\n * const positiveBound = BoundingBoxer.newBound(true);\n * console.log(positiveBound); // Output: Vector3 { x: Infinity, y: Infinity, z: Infinity }\n *\n * const negativeBound = BoundingBoxer.newBound(false);\n * console.log(negativeBound); // Output: Vector3 { x: -Infinity, y: -Infinity, z: -Infinity }\n * ```\n */\n static newBound(t) {\n const e = t ? 1 : -1;\n return new g.Vector3(\n e * Number.MAX_VALUE,\n e * Number.MAX_VALUE,\n e * Number.MAX_VALUE\n );\n }\n /**\n * A static method to calculate the bounding box of a set of points.\n *\n * @param points - An array of THREE.Vector3 representing the points.\n * @param min - An optional THREE.Vector3 representing the minimum bounds. If not provided, it will be calculated.\n * @param max - An optional THREE.Vector3 representing the maximum bounds. If not provided, it will be calculated.\n * @returns A THREE.Box3 representing the bounding box of the given points.\n *\n * @remarks\n * This method calculates the bounding box of a set of points by iterating through each point and updating the minimum and maximum bounds accordingly.\n * If the `min` or `max` parameters are provided, they will be used as the initial bounds. Otherwise, the initial bounds will be set to positive and negative infinity.\n *\n * @example\n * ```typescript\n * const points = [\n * new THREE.Vector3(1, 2, 3),\n * new THREE.Vector3(4, 5, 6),\n * new THREE.Vector3(7, 8, 9),\n * ];\n *\n * const bbox = BoundingBoxer.getBounds(points);\n * console.log(bbox); // Output: Box3 { min: Vector3 { x: 1, y: 2, z: 3 }, max: Vector3 { x: 7, y: 8, z: 9 } }\n * ```\n */\n static getBounds(t, e, i) {\n const o = i || this.newBound(!1), n = e || this.newBound(!0);\n for (const r of t)\n r.x < n.x && (n.x = r.x), r.y < n.y && (n.y = r.y), r.z < n.z && (n.z = r.z), r.x > o.x && (o.x = r.x), r.y > o.y && (o.y = r.y), r.z > o.z && (o.z = r.z);\n return new g.Box3(e, i);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n const t = this.components.get(zt);\n for (const e of this._meshes)\n t.destroy(e);\n this._meshes = [], this.onDisposed.trigger(At.uuid), this.onDisposed.reset();\n }\n /**\n * Returns the bounding box of the calculated fragments.\n *\n * @returns A new THREE.Box3 instance representing the bounding box.\n *\n * @remarks\n * This method clones the internal minimum and maximum vectors and returns a new THREE.Box3 instance.\n * The returned box represents the bounding box of the calculated fragments.\n *\n * @example\n * ```typescript\n * const boundingBox = boundingBoxer.get();\n * console.log(boundingBox); // Output: Box3 { min: Vector3 { x: -10, y: -10, z: -10 }, max: Vector3 { x: 10, y: 10, z: 10 } }\n * ```\n */\n get() {\n const t = this._absoluteMin.clone(), e = this._absoluteMax.clone();\n return new g.Box3(t, e);\n }\n /**\n * Calculates and returns a sphere that encompasses the entire bounding box.\n *\n * @returns A new THREE.Sphere instance representing the calculated sphere.\n *\n * @remarks\n * This method calculates the center and radius of a sphere that encompasses the entire bounding box.\n * The center is calculated as the midpoint between the minimum and maximum bounds of the bounding box.\n * The radius is calculated as the distance from the center to the minimum bound.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * const boundingSphere = boundingBoxer.getSphere();\n * console.log(boundingSphere); // Output: Sphere { center: Vector3 { x: 0, y: 0, z: 0 }, radius: 10 }\n * ```\n */\n getSphere() {\n const t = this._absoluteMin.clone(), e = this._absoluteMax.clone(), i = Math.abs((e.x - t.x) / 2), o = Math.abs((e.y - t.y) / 2), n = Math.abs((e.z - t.z) / 2), r = new g.Vector3(t.x + i, t.y + o, t.z + n), a = r.distanceTo(t);\n return new g.Sphere(r, a);\n }\n /**\n * Returns a THREE.Mesh instance representing the bounding box.\n *\n * @returns A new THREE.Mesh instance representing the bounding box.\n *\n * @remarks\n * This method calculates the dimensions of the bounding box using the `getDimensions` method.\n * It then creates a new THREE.BoxGeometry with the calculated dimensions.\n * A new THREE.Mesh is created using the box geometry, and it is added to the `_meshes` array.\n * The position of the mesh is set to the center of the bounding box.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * const boundingBoxMesh = boundingBoxer.getMesh();\n * scene.add(boundingBoxMesh);\n * ```\n */\n getMesh() {\n const t = new g.Box3(this._absoluteMin, this._absoluteMax), e = At.getDimensions(t), { width: i, height: o, depth: n, center: r } = e, a = new g.BoxGeometry(i, o, n), c = new g.Mesh(a);\n return this._meshes.push(c), c.position.copy(r), c;\n }\n /**\n * Resets the internal minimum and maximum vectors to positive and negative infinity, respectively.\n * This method is used to prepare the BoundingBoxer for a new set of fragments.\n *\n * @remarks\n * This method is called when a new set of fragments is added to the BoundingBoxer.\n * It ensures that the bounding box calculations are accurate and up-to-date.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * // ...\n * boundingBoxer.reset();\n * ```\n */\n reset() {\n this._absoluteMin = At.newBound(!0), this._absoluteMax = At.newBound(!1);\n }\n /**\n * Adds a FragmentsGroup to the BoundingBoxer.\n *\n * @param group - The FragmentsGroup to add.\n *\n * @remarks\n * This method iterates through each fragment in the provided FragmentsGroup,\n * and calls the `addMesh` method for each fragment's mesh.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * ```\n */\n add(t) {\n for (const e of t.items)\n this.addMesh(e.mesh);\n }\n /**\n * Adds a mesh to the BoundingBoxer and calculates the bounding box.\n *\n * @param mesh - The mesh to add. It can be an instance of THREE.InstancedMesh, THREE.Mesh, or FRAGS.CurveMesh.\n * @param itemIDs - An optional iterable of numbers representing the item IDs.\n *\n * @remarks\n * This method calculates the bounding box of the provided mesh and updates the internal minimum and maximum vectors.\n * If the mesh is an instance of THREE.InstancedMesh, it calculates the bounding box for each instance.\n * If the mesh is an instance of FRAGS.FragmentMesh and itemIDs are provided, it calculates the bounding box for the specified item IDs.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.addMesh(mesh);\n * ```\n */\n addMesh(t, e) {\n if (!t.geometry.index)\n return;\n const i = At.getFragmentBounds(t);\n t.updateMatrixWorld();\n const o = t.matrixWorld, n = new g.Matrix4(), r = t instanceof g.InstancedMesh, a = /* @__PURE__ */ new Set();\n if (e && t instanceof Vt.FragmentMesh)\n for (const c of e) {\n const h = t.fragment.getInstancesIDs(c);\n if (h)\n for (const d of h)\n a.add(d);\n }\n else\n a.add(0);\n for (const c of a) {\n const h = i.min.clone(), d = i.max.clone();\n r && (t.getMatrixAt(c, n), h.applyMatrix4(n), d.applyMatrix4(n)), h.applyMatrix4(o), d.applyMatrix4(o), h.x < this._absoluteMin.x && (this._absoluteMin.x = h.x), h.y < this._absoluteMin.y && (this._absoluteMin.y = h.y), h.z < this._absoluteMin.z && (this._absoluteMin.z = h.z), h.x > this._absoluteMax.x && (this._absoluteMax.x = h.x), h.y > this._absoluteMax.y && (this._absoluteMax.y = h.y), h.z > this._absoluteMax.z && (this._absoluteMax.z = h.z), d.x > this._absoluteMax.x && (this._absoluteMax.x = d.x), d.y > this._absoluteMax.y && (this._absoluteMax.y = d.y), d.z > this._absoluteMax.z && (this._absoluteMax.z = d.z), d.x < this._absoluteMin.x && (this._absoluteMin.x = d.x), d.y < this._absoluteMin.y && (this._absoluteMin.y = d.y), d.z < this._absoluteMin.z && (this._absoluteMin.z = d.z);\n }\n }\n /**\n * Uses a FragmentIdMap to add its meshes to the bb calculation.\n *\n * This method iterates through the provided `fragmentIdMap`, retrieves the corresponding fragment from the `FragmentsManager`,\n * and then calls the `addMesh` method for each fragment's mesh, passing the expression IDs as the second parameter.\n *\n * @param fragmentIdMap - A mapping of fragment IDs to their corresponding expression IDs.\n *\n * @remarks\n * This method is used to add a mapping of fragment IDs to their corresponding expression IDs.\n * It ensures that the bounding box calculations are accurate and up-to-date by updating the internal minimum and maximum vectors.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * const fragmentIdMap: FRAGS.FragmentIdMap = {\n * '5991fa75-2eef-4825-90b3-85177f51a9c9': [123, 245, 389],\n * '3469077e-39bf-4fc9-b3e6-4a1d78ad52b0': [454, 587, 612],\n * };\n * boundingBoxer.addFragmentIdMap(fragmentIdMap);\n * ```\n */\n addFragmentIdMap(t) {\n const e = this.components.get(ht);\n for (const i in t) {\n const o = e.list.get(i);\n if (!o)\n continue;\n const n = t[i];\n this.addMesh(o.mesh, n);\n }\n }\n static getFragmentBounds(t) {\n const e = t.geometry.attributes.position, i = Number.MAX_VALUE, o = -i, n = new g.Vector3(i, i, i), r = new g.Vector3(o, o, o);\n if (!t.geometry.index)\n throw new Error(\"Geometry must be indexed!\");\n const a = Array.from(t.geometry.index.array);\n for (let c = 0; c < a.length; c++) {\n if (c % 3 === 0 && a[c] === 0 && a[c + 1] === 0 && a[c + 2] === 0) {\n c += 2;\n continue;\n }\n const h = a[c], d = e.getX(h), E = e.getY(h), u = e.getZ(h);\n d < n.x && (n.x = d), E < n.y && (n.y = E), u < n.z && (n.z = u), d > r.x && (r.x = d), E > r.y && (r.y = E), u > r.z && (r.z = u);\n }\n return new g.Box3(n, r);\n }\n};\nI(At, \"uuid\", \"d1444724-dba6-4cdd-a0c7-68ee1450d166\");\nlet Fn = At;\nconst vn = /* @__PURE__ */ new Set([\n 1123145078,\n 574549367,\n 1675464909,\n 2059837836,\n 3798115385,\n 32440307,\n 3125803723,\n 3207858831,\n 2740243338,\n 2624227202,\n 4240577450,\n 3615266464,\n 3724593414,\n 220341763,\n 477187591,\n 1878645084,\n 1300840506,\n 3303107099,\n 1607154358,\n 1878645084,\n 846575682,\n 1351298697,\n 2417041796,\n 3049322572,\n 3331915920,\n 1416205885,\n 776857604,\n 3285139300,\n 3958052878,\n 2827736869,\n 2732653382,\n 673634403,\n 3448662350,\n 4142052618,\n 2924175390,\n 803316827,\n 2556980723,\n 1809719519,\n 2205249479,\n 807026263,\n 3737207727,\n 1660063152,\n 2347385850,\n 2705031697,\n 3732776249,\n 2485617015,\n 2611217952,\n 1704287377,\n 2937912522,\n 2770003689,\n 1281925730,\n 1484403080,\n 3448662350,\n 4142052618,\n 3800577675,\n 4006246654,\n 3590301190,\n 1383045692,\n 2775532180,\n 2047409740,\n 370225590,\n 3593883385,\n 2665983363,\n 4124623270,\n 812098782,\n 3649129432,\n 987898635,\n 1105321065,\n 3510044353,\n 1635779807,\n 2603310189,\n 3406155212,\n 1310608509,\n 4261334040,\n 2736907675,\n 3649129432,\n 1136057603,\n 1260505505,\n 4182860854,\n 2713105998,\n 2898889636,\n 59481748,\n 3749851601,\n 3486308946,\n 3150382593,\n 1062206242,\n 3264961684,\n 15328376,\n 1485152156,\n 370225590,\n 1981873012,\n 2859738748,\n 45288368,\n 2614616156,\n 2732653382,\n 775493141,\n 2147822146,\n 2601014836,\n 2629017746,\n 1186437898,\n 2367409068,\n 1213902940,\n 3632507154,\n 3900360178,\n 476780140,\n 1472233963,\n 2804161546,\n 3008276851,\n 738692330,\n 374418227,\n 315944413,\n 3905492369,\n 3570813810,\n 2571569899,\n 178912537,\n 2294589976,\n 1437953363,\n 2133299955,\n 572779678,\n 3092502836,\n 388784114,\n 2624227202,\n 1425443689,\n 3057273783,\n 2347385850,\n 1682466193,\n 2519244187,\n 2839578677,\n 3958567839,\n 2513912981,\n 2830218821,\n 427810014\n]), Ps = class Ps extends et {\n constructor(t) {\n super(t);\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n t.add(Ps.uuid, this);\n }\n /**\n * Exports all the properties of an IFC into an array of JS objects.\n * @param webIfc The instance of [web-ifc](https://github.com/ThatOpen/engine_web-ifc) to use.\n * @param modelID ID of the IFC model whose properties to extract.\n * @param indirect whether to get the indirect relationships as well.\n * @param recursiveSpatial whether to get the properties of spatial items recursively\n * to make the location data available (e.g. absolute position of building).\n */\n async export(t, e, i = !1, o = !0) {\n const n = {}, r = new Set(t.GetIfcEntityList(e)), a = /* @__PURE__ */ new Set([\n b.IFCPROJECT,\n b.IFCSITE,\n b.IFCBUILDING,\n b.IFCBUILDINGSTOREY,\n b.IFCSPACE\n ]);\n for (const c of a)\n r.add(c);\n for (const c of r) {\n if (vn.has(c))\n continue;\n const h = a.has(c) && o, d = t.GetLineIDsWithType(e, c);\n for (const E of d) {\n const u = t.GetLine(0, E, h, i);\n n[u.expressID] = u;\n }\n }\n return n;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ps, \"uuid\", \"b32c4332-cd67-436e-ba7f-196646c7a635\");\nlet mi = Ps;\nconst Zr = {\n 103090709: \"IFCPROJECT\",\n 4097777520: \"IFCSITE\",\n 4031249490: \"IFCBUILDING\",\n 3124254112: \"IFCBUILDINGSTOREY\",\n 3856911033: \"IFCSPACE\",\n 1674181508: \"IFCANNOTATION\",\n 25142252: \"IFCCONTROLLER\",\n 32344328: \"IFCBOILER\",\n 76236018: \"IFCLAMP\",\n 90941305: \"IFCPUMP\",\n 177149247: \"IFCAIRTERMINALBOX\",\n 182646315: \"IFCFLOWINSTRUMENT\",\n 263784265: \"IFCFURNISHINGELEMENT\",\n 264262732: \"IFCELECTRICGENERATOR\",\n 277319702: \"IFCAUDIOVISUALAPPLIANCE\",\n 310824031: \"IFCPIPEFITTING\",\n 331165859: \"IFCSTAIR\",\n 342316401: \"IFCDUCTFITTING\",\n 377706215: \"IFCMECHANICALFASTENER\",\n 395920057: \"IFCDOOR\",\n 402227799: \"IFCELECTRICMOTOR\",\n 413509423: \"IFCSYSTEMFURNITUREELEMENT\",\n 484807127: \"IFCEVAPORATOR\",\n 486154966: \"IFCWINDOWSTANDARDCASE\",\n 629592764: \"IFCLIGHTFIXTURE\",\n 630975310: \"IFCUNITARYCONTROLELEMENT\",\n 635142910: \"IFCCABLECARRIERFITTING\",\n 639361253: \"IFCCOIL\",\n 647756555: \"IFCFASTENER\",\n 707683696: \"IFCFLOWSTORAGEDEVICE\",\n 738039164: \"IFCPROTECTIVEDEVICE\",\n 753842376: \"IFCBEAM\",\n 812556717: \"IFCTANK\",\n 819412036: \"IFCFILTER\",\n 843113511: \"IFCCOLUMN\",\n 862014818: \"IFCELECTRICDISTRIBUTIONBOARD\",\n 900683007: \"IFCFOOTING\",\n 905975707: \"IFCCOLUMNSTANDARDCASE\",\n 926996030: \"IFCVOIDINGFEATURE\",\n 979691226: \"IFCREINFORCINGBAR\",\n 987401354: \"IFCFLOWSEGMENT\",\n 1003880860: \"IFCELECTRICTIMECONTROL\",\n 1051757585: \"IFCCABLEFITTING\",\n 1052013943: \"IFCDISTRIBUTIONCHAMBERELEMENT\",\n 1062813311: \"IFCDISTRIBUTIONCONTROLELEMENT\",\n 1073191201: \"IFCMEMBER\",\n 1095909175: \"IFCBUILDINGELEMENTPROXY\",\n 1156407060: \"IFCPLATESTANDARDCASE\",\n 1162798199: \"IFCSWITCHINGDEVICE\",\n 1329646415: \"IFCSHADINGDEVICE\",\n 1335981549: \"IFCDISCRETEACCESSORY\",\n 1360408905: \"IFCDUCTSILENCER\",\n 1404847402: \"IFCSTACKTERMINAL\",\n 1426591983: \"IFCFIRESUPPRESSIONTERMINAL\",\n 1437502449: \"IFCMEDICALDEVICE\",\n 1509553395: \"IFCFURNITURE\",\n 1529196076: \"IFCSLAB\",\n 1620046519: \"IFCTRANSPORTELEMENT\",\n 1634111441: \"IFCAIRTERMINAL\",\n 1658829314: \"IFCENERGYCONVERSIONDEVICE\",\n 1677625105: \"IFCCIVILELEMENT\",\n 1687234759: \"IFCPILE\",\n 1904799276: \"IFCELECTRICAPPLIANCE\",\n 1911478936: \"IFCMEMBERSTANDARDCASE\",\n 1945004755: \"IFCDISTRIBUTIONELEMENT\",\n 1973544240: \"IFCCOVERING\",\n 1999602285: \"IFCSPACEHEATER\",\n 2016517767: \"IFCROOF\",\n 2056796094: \"IFCAIRTOAIRHEATRECOVERY\",\n 2058353004: \"IFCFLOWCONTROLLER\",\n 2068733104: \"IFCHUMIDIFIER\",\n 2176052936: \"IFCJUNCTIONBOX\",\n 2188021234: \"IFCFLOWMETER\",\n 2223149337: \"IFCFLOWTERMINAL\",\n 2262370178: \"IFCRAILING\",\n 2272882330: \"IFCCONDENSER\",\n 2295281155: \"IFCPROTECTIVEDEVICETRIPPINGUNIT\",\n 2320036040: \"IFCREINFORCINGMESH\",\n 2347447852: \"IFCTENDONANCHOR\",\n 2391383451: \"IFCVIBRATIONISOLATOR\",\n 2391406946: \"IFCWALL\",\n 2474470126: \"IFCMOTORCONNECTION\",\n 2769231204: \"IFCVIRTUALELEMENT\",\n 2814081492: \"IFCENGINE\",\n 2906023776: \"IFCBEAMSTANDARDCASE\",\n 2938176219: \"IFCBURNER\",\n 2979338954: \"IFCBUILDINGELEMENTPART\",\n 3024970846: \"IFCRAMP\",\n 3026737570: \"IFCTUBEBUNDLE\",\n 3027962421: \"IFCSLABSTANDARDCASE\",\n 3040386961: \"IFCDISTRIBUTIONFLOWELEMENT\",\n 3053780830: \"IFCSANITARYTERMINAL\",\n 3079942009: \"IFCOPENINGSTANDARDCASE\",\n 3087945054: \"IFCALARM\",\n 3101698114: \"IFCSURFACEFEATURE\",\n 3127900445: \"IFCSLABELEMENTEDCASE\",\n 3132237377: \"IFCFLOWMOVINGDEVICE\",\n 3171933400: \"IFCPLATE\",\n 3221913625: \"IFCCOMMUNICATIONSAPPLIANCE\",\n 3242481149: \"IFCDOORSTANDARDCASE\",\n 3283111854: \"IFCRAMPFLIGHT\",\n 3296154744: \"IFCCHIMNEY\",\n 3304561284: \"IFCWINDOW\",\n 3310460725: \"IFCELECTRICFLOWSTORAGEDEVICE\",\n 3319311131: \"IFCHEATEXCHANGER\",\n 3415622556: \"IFCFAN\",\n 3420628829: \"IFCSOLARDEVICE\",\n 3493046030: \"IFCGEOGRAPHICELEMENT\",\n 3495092785: \"IFCCURTAINWALL\",\n 3508470533: \"IFCFLOWTREATMENTDEVICE\",\n 3512223829: \"IFCWALLSTANDARDCASE\",\n 3518393246: \"IFCDUCTSEGMENT\",\n 3571504051: \"IFCCOMPRESSOR\",\n 3588315303: \"IFCOPENINGELEMENT\",\n 3612865200: \"IFCPIPESEGMENT\",\n 3640358203: \"IFCCOOLINGTOWER\",\n 3651124850: \"IFCPROJECTIONELEMENT\",\n 3694346114: \"IFCOUTLET\",\n 3747195512: \"IFCEVAPORATIVECOOLER\",\n 3758799889: \"IFCCABLECARRIERSEGMENT\",\n 3824725483: \"IFCTENDON\",\n 3825984169: \"IFCTRANSFORMER\",\n 3902619387: \"IFCCHILLER\",\n 4074379575: \"IFCDAMPER\",\n 4086658281: \"IFCSENSOR\",\n 4123344466: \"IFCELEMENTASSEMBLY\",\n 4136498852: \"IFCCOOLEDBEAM\",\n 4156078855: \"IFCWALLELEMENTEDCASE\",\n 4175244083: \"IFCINTERCEPTOR\",\n 4207607924: \"IFCVALVE\",\n 4217484030: \"IFCCABLESEGMENT\",\n 4237592921: \"IFCWASTETERMINAL\",\n 4252922144: \"IFCSTAIRFLIGHT\",\n 4278956645: \"IFCFLOWFITTING\",\n 4288193352: \"IFCACTUATOR\",\n 4292641817: \"IFCUNITARYEQUIPMENT\",\n 3009204131: \"IFCGRID\"\n};\nclass oa {\n getAll(s, t) {\n const e = {}, i = Object.keys(Zr).map((o) => parseInt(o, 10));\n for (let o = 0; o < i.length; o++) {\n const n = i[o], r = s.GetLineIDsWithType(t, n), a = r.size();\n for (let c = 0; c < a; c++)\n e[r.get(c)] = n;\n }\n return e;\n }\n}\nconst Bn = {\n 950732822: \"IFCURIREFERENCE\",\n 4075327185: \"IFCTIME\",\n 1209108979: \"IFCTEMPERATURERATEOFCHANGEMEASURE\",\n 3457685358: \"IFCSOUNDPRESSURELEVELMEASURE\",\n 4157543285: \"IFCSOUNDPOWERLEVELMEASURE\",\n 2798247006: \"IFCPROPERTYSETDEFINITIONSET\",\n 1790229001: \"IFCPOSITIVEINTEGER\",\n 525895558: \"IFCNONNEGATIVELENGTHMEASURE\",\n 1774176899: \"IFCLINEINDEX\",\n 1275358634: \"IFCLANGUAGEID\",\n 2541165894: \"IFCDURATION\",\n 3701338814: \"IFCDAYINWEEKNUMBER\",\n 2195413836: \"IFCDATETIME\",\n 937566702: \"IFCDATE\",\n 1683019596: \"IFCCARDINALPOINTREFERENCE\",\n 2314439260: \"IFCBINARY\",\n 1500781891: \"IFCAREADENSITYMEASURE\",\n 3683503648: \"IFCARCINDEX\",\n 4065007721: \"IFCYEARNUMBER\",\n 1718600412: \"IFCWARPINGMOMENTMEASURE\",\n 51269191: \"IFCWARPINGCONSTANTMEASURE\",\n 2593997549: \"IFCVOLUMETRICFLOWRATEMEASURE\",\n 3458127941: \"IFCVOLUMEMEASURE\",\n 3345633955: \"IFCVAPORPERMEABILITYMEASURE\",\n 1278329552: \"IFCTORQUEMEASURE\",\n 2591213694: \"IFCTIMESTAMP\",\n 2726807636: \"IFCTIMEMEASURE\",\n 743184107: \"IFCTHERMODYNAMICTEMPERATUREMEASURE\",\n 2016195849: \"IFCTHERMALTRANSMITTANCEMEASURE\",\n 857959152: \"IFCTHERMALRESISTANCEMEASURE\",\n 2281867870: \"IFCTHERMALEXPANSIONCOEFFICIENTMEASURE\",\n 2645777649: \"IFCTHERMALCONDUCTIVITYMEASURE\",\n 232962298: \"IFCTHERMALADMITTANCEMEASURE\",\n 296282323: \"IFCTEXTTRANSFORMATION\",\n 603696268: \"IFCTEXTFONTNAME\",\n 3490877962: \"IFCTEXTDECORATION\",\n 1460886941: \"IFCTEXTALIGNMENT\",\n 2801250643: \"IFCTEXT\",\n 58845555: \"IFCTEMPERATUREGRADIENTMEASURE\",\n 361837227: \"IFCSPECULARROUGHNESS\",\n 2757832317: \"IFCSPECULAREXPONENT\",\n 3477203348: \"IFCSPECIFICHEATCAPACITYMEASURE\",\n 993287707: \"IFCSOUNDPRESSUREMEASURE\",\n 846465480: \"IFCSOUNDPOWERMEASURE\",\n 3471399674: \"IFCSOLIDANGLEMEASURE\",\n 408310005: \"IFCSHEARMODULUSMEASURE\",\n 2190458107: \"IFCSECTIONALAREAINTEGRALMEASURE\",\n 3467162246: \"IFCSECTIONMODULUSMEASURE\",\n 2766185779: \"IFCSECONDINMINUTE\",\n 3211557302: \"IFCROTATIONALSTIFFNESSMEASURE\",\n 1755127002: \"IFCROTATIONALMASSMEASURE\",\n 2133746277: \"IFCROTATIONALFREQUENCYMEASURE\",\n 200335297: \"IFCREAL\",\n 96294661: \"IFCRATIOMEASURE\",\n 3972513137: \"IFCRADIOACTIVITYMEASURE\",\n 3665567075: \"IFCPRESSUREMEASURE\",\n 2169031380: \"IFCPRESENTABLETEXT\",\n 1364037233: \"IFCPOWERMEASURE\",\n 1245737093: \"IFCPOSITIVERATIOMEASURE\",\n 3054510233: \"IFCPOSITIVEPLANEANGLEMEASURE\",\n 2815919920: \"IFCPOSITIVELENGTHMEASURE\",\n 4042175685: \"IFCPLANEANGLEMEASURE\",\n 2642773653: \"IFCPLANARFORCEMEASURE\",\n 2260317790: \"IFCPARAMETERVALUE\",\n 929793134: \"IFCPHMEASURE\",\n 2395907400: \"IFCNUMERICMEASURE\",\n 2095195183: \"IFCNORMALISEDRATIOMEASURE\",\n 765770214: \"IFCMONTHINYEARNUMBER\",\n 2615040989: \"IFCMONETARYMEASURE\",\n 3114022597: \"IFCMOMENTOFINERTIAMEASURE\",\n 1648970520: \"IFCMOLECULARWEIGHTMEASURE\",\n 3177669450: \"IFCMOISTUREDIFFUSIVITYMEASURE\",\n 1753493141: \"IFCMODULUSOFSUBGRADEREACTIONMEASURE\",\n 1052454078: \"IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE\",\n 2173214787: \"IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE\",\n 3341486342: \"IFCMODULUSOFELASTICITYMEASURE\",\n 102610177: \"IFCMINUTEINHOUR\",\n 3531705166: \"IFCMASSPERLENGTHMEASURE\",\n 3124614049: \"IFCMASSMEASURE\",\n 4017473158: \"IFCMASSFLOWRATEMEASURE\",\n 1477762836: \"IFCMASSDENSITYMEASURE\",\n 2486716878: \"IFCMAGNETICFLUXMEASURE\",\n 286949696: \"IFCMAGNETICFLUXDENSITYMEASURE\",\n 151039812: \"IFCLUMINOUSINTENSITYMEASURE\",\n 2755797622: \"IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE\",\n 2095003142: \"IFCLUMINOUSFLUXMEASURE\",\n 503418787: \"IFCLOGICAL\",\n 3086160713: \"IFCLINEARVELOCITYMEASURE\",\n 1307019551: \"IFCLINEARSTIFFNESSMEASURE\",\n 2128979029: \"IFCLINEARMOMENTMEASURE\",\n 191860431: \"IFCLINEARFORCEMEASURE\",\n 1243674935: \"IFCLENGTHMEASURE\",\n 3258342251: \"IFCLABEL\",\n 2054016361: \"IFCKINEMATICVISCOSITYMEASURE\",\n 3192672207: \"IFCISOTHERMALMOISTURECAPACITYMEASURE\",\n 3686016028: \"IFCIONCONCENTRATIONMEASURE\",\n 3809634241: \"IFCINTEGERCOUNTRATEMEASURE\",\n 1939436016: \"IFCINTEGER\",\n 2679005408: \"IFCINDUCTANCEMEASURE\",\n 3358199106: \"IFCILLUMINANCEMEASURE\",\n 983778844: \"IFCIDENTIFIER\",\n 2589826445: \"IFCHOURINDAY\",\n 1158859006: \"IFCHEATINGVALUEMEASURE\",\n 3113092358: \"IFCHEATFLUXDENSITYMEASURE\",\n 3064340077: \"IFCGLOBALLYUNIQUEID\",\n 3044325142: \"IFCFREQUENCYMEASURE\",\n 1361398929: \"IFCFORCEMEASURE\",\n 2590844177: \"IFCFONTWEIGHT\",\n 2715512545: \"IFCFONTVARIANT\",\n 1102727119: \"IFCFONTSTYLE\",\n 2078135608: \"IFCENERGYMEASURE\",\n 2506197118: \"IFCELECTRICVOLTAGEMEASURE\",\n 2951915441: \"IFCELECTRICRESISTANCEMEASURE\",\n 3790457270: \"IFCELECTRICCURRENTMEASURE\",\n 2093906313: \"IFCELECTRICCONDUCTANCEMEASURE\",\n 3818826038: \"IFCELECTRICCHARGEMEASURE\",\n 1827137117: \"IFCELECTRICCAPACITANCEMEASURE\",\n 69416015: \"IFCDYNAMICVISCOSITYMEASURE\",\n 524656162: \"IFCDOSEEQUIVALENTMEASURE\",\n 4134073009: \"IFCDIMENSIONCOUNT\",\n 1514641115: \"IFCDESCRIPTIVEMEASURE\",\n 300323983: \"IFCDAYLIGHTSAVINGHOUR\",\n 86635668: \"IFCDAYINMONTHNUMBER\",\n 94842927: \"IFCCURVATUREMEASURE\",\n 1778710042: \"IFCCOUNTMEASURE\",\n 3238673880: \"IFCCONTEXTDEPENDENTMEASURE\",\n 3812528620: \"IFCCOMPOUNDPLANEANGLEMEASURE\",\n 2991860651: \"IFCCOMPLEXNUMBER\",\n 1867003952: \"IFCBOXALIGNMENT\",\n 2735952531: \"IFCBOOLEAN\",\n 2650437152: \"IFCAREAMEASURE\",\n 632304761: \"IFCANGULARVELOCITYMEASURE\",\n 360377573: \"IFCAMOUNTOFSUBSTANCEMEASURE\",\n 4182062534: \"IFCACCELERATIONMEASURE\",\n 3699917729: \"IFCABSORBEDDOSEMEASURE\",\n 1971632696: \"IFCGEOSLICE\",\n 2680139844: \"IFCGEOMODEL\",\n 24726584: \"IFCELECTRICFLOWTREATMENTDEVICE\",\n 3693000487: \"IFCDISTRIBUTIONBOARD\",\n 3460952963: \"IFCCONVEYORSEGMENT\",\n 3999819293: \"IFCCAISSONFOUNDATION\",\n 3314249567: \"IFCBOREHOLE\",\n 4196446775: \"IFCBEARING\",\n 325726236: \"IFCALIGNMENT\",\n 3425753595: \"IFCTRACKELEMENT\",\n 991950508: \"IFCSIGNAL\",\n 3798194928: \"IFCREINFORCEDSOIL\",\n 3290496277: \"IFCRAIL\",\n 1383356374: \"IFCPAVEMENT\",\n 2182337498: \"IFCNAVIGATIONELEMENT\",\n 234836483: \"IFCMOORINGDEVICE\",\n 2078563270: \"IFCMOBILETELECOMMUNICATIONSAPPLIANCE\",\n 1638804497: \"IFCLIQUIDTERMINAL\",\n 1154579445: \"IFCLINEARPOSITIONINGELEMENT\",\n 2696325953: \"IFCKERB\",\n 2713699986: \"IFCGEOTECHNICALASSEMBLY\",\n 2142170206: \"IFCELECTRICFLOWTREATMENTDEVICETYPE\",\n 3376911765: \"IFCEARTHWORKSFILL\",\n 1077100507: \"IFCEARTHWORKSELEMENT\",\n 3071239417: \"IFCEARTHWORKSCUT\",\n 479945903: \"IFCDISTRIBUTIONBOARDTYPE\",\n 3426335179: \"IFCDEEPFOUNDATION\",\n 1502416096: \"IFCCOURSE\",\n 2940368186: \"IFCCONVEYORSEGMENTTYPE\",\n 3203706013: \"IFCCAISSONFOUNDATIONTYPE\",\n 3862327254: \"IFCBUILTSYSTEM\",\n 1876633798: \"IFCBUILTELEMENT\",\n 963979645: \"IFCBRIDGEPART\",\n 644574406: \"IFCBRIDGE\",\n 3649138523: \"IFCBEARINGTYPE\",\n 1662888072: \"IFCALIGNMENTVERTICAL\",\n 317615605: \"IFCALIGNMENTSEGMENT\",\n 1545765605: \"IFCALIGNMENTHORIZONTAL\",\n 4266260250: \"IFCALIGNMENTCANT\",\n 3956297820: \"IFCVIBRATIONDAMPERTYPE\",\n 1530820697: \"IFCVIBRATIONDAMPER\",\n 840318589: \"IFCVEHICLE\",\n 1953115116: \"IFCTRANSPORTATIONDEVICE\",\n 618700268: \"IFCTRACKELEMENTTYPE\",\n 2281632017: \"IFCTENDONCONDUITTYPE\",\n 3663046924: \"IFCTENDONCONDUIT\",\n 42703149: \"IFCSINESPIRAL\",\n 1894708472: \"IFCSIGNALTYPE\",\n 3599934289: \"IFCSIGNTYPE\",\n 33720170: \"IFCSIGN\",\n 1027922057: \"IFCSEVENTHORDERPOLYNOMIALSPIRAL\",\n 544395925: \"IFCSEGMENTEDREFERENCECURVE\",\n 3649235739: \"IFCSECONDORDERPOLYNOMIALSPIRAL\",\n 550521510: \"IFCROADPART\",\n 146592293: \"IFCROAD\",\n 3818125796: \"IFCRELADHERESTOELEMENT\",\n 4021432810: \"IFCREFERENT\",\n 1891881377: \"IFCRAILWAYPART\",\n 3992365140: \"IFCRAILWAY\",\n 1763565496: \"IFCRAILTYPE\",\n 1946335990: \"IFCPOSITIONINGELEMENT\",\n 514975943: \"IFCPAVEMENTTYPE\",\n 506776471: \"IFCNAVIGATIONELEMENTTYPE\",\n 710110818: \"IFCMOORINGDEVICETYPE\",\n 1950438474: \"IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE\",\n 976884017: \"IFCMARINEPART\",\n 525669439: \"IFCMARINEFACILITY\",\n 1770583370: \"IFCLIQUIDTERMINALTYPE\",\n 2176059722: \"IFCLINEARELEMENT\",\n 679976338: \"IFCKERBTYPE\",\n 3948183225: \"IFCIMPACTPROTECTIONDEVICETYPE\",\n 2568555532: \"IFCIMPACTPROTECTIONDEVICE\",\n 2898700619: \"IFCGRADIENTCURVE\",\n 1594536857: \"IFCGEOTECHNICALSTRATUM\",\n 4230923436: \"IFCGEOTECHNICALELEMENT\",\n 4228831410: \"IFCFACILITYPARTCOMMON\",\n 1310830890: \"IFCFACILITYPART\",\n 24185140: \"IFCFACILITY\",\n 4234616927: \"IFCDIRECTRIXDERIVEDREFERENCESWEPTAREASOLID\",\n 1306400036: \"IFCDEEPFOUNDATIONTYPE\",\n 4189326743: \"IFCCOURSETYPE\",\n 2000195564: \"IFCCOSINESPIRAL\",\n 3497074424: \"IFCCLOTHOID\",\n 1626504194: \"IFCBUILTELEMENTTYPE\",\n 3651464721: \"IFCVEHICLETYPE\",\n 1229763772: \"IFCTRIANGULATEDIRREGULARNETWORK\",\n 3665877780: \"IFCTRANSPORTATIONDEVICETYPE\",\n 782932809: \"IFCTHIRDORDERPOLYNOMIALSPIRAL\",\n 2735484536: \"IFCSPIRAL\",\n 1356537516: \"IFCSECTIONEDSURFACE\",\n 1290935644: \"IFCSECTIONEDSOLIDHORIZONTAL\",\n 1862484736: \"IFCSECTIONEDSOLID\",\n 1441486842: \"IFCRELPOSITIONS\",\n 1033248425: \"IFCRELASSOCIATESPROFILEDEF\",\n 3381221214: \"IFCPOLYNOMIALCURVE\",\n 2485787929: \"IFCOFFSETCURVEBYDISTANCES\",\n 590820931: \"IFCOFFSETCURVE\",\n 3465909080: \"IFCINDEXEDPOLYGONALTEXTUREMAP\",\n 593015953: \"IFCDIRECTRIXCURVESWEPTAREASOLID\",\n 4212018352: \"IFCCURVESEGMENT\",\n 3425423356: \"IFCAXIS2PLACEMENTLINEAR\",\n 823603102: \"IFCSEGMENT\",\n 2165702409: \"IFCPOINTBYDISTANCEEXPRESSION\",\n 182550632: \"IFCOPENCROSSPROFILEDEF\",\n 388784114: \"IFCLINEARPLACEMENT\",\n 536804194: \"IFCALIGNMENTHORIZONTALSEGMENT\",\n 3752311538: \"IFCALIGNMENTCANTSEGMENT\",\n 1010789467: \"IFCTEXTURECOORDINATEINDICESWITHVOIDS\",\n 222769930: \"IFCTEXTURECOORDINATEINDICES\",\n 2691318326: \"IFCQUANTITYNUMBER\",\n 3633395639: \"IFCALIGNMENTVERTICALSEGMENT\",\n 2879124712: \"IFCALIGNMENTPARAMETERSEGMENT\",\n 25142252: \"IFCCONTROLLER\",\n 3087945054: \"IFCALARM\",\n 4288193352: \"IFCACTUATOR\",\n 630975310: \"IFCUNITARYCONTROLELEMENT\",\n 4086658281: \"IFCSENSOR\",\n 2295281155: \"IFCPROTECTIVEDEVICETRIPPINGUNIT\",\n 182646315: \"IFCFLOWINSTRUMENT\",\n 1426591983: \"IFCFIRESUPPRESSIONTERMINAL\",\n 819412036: \"IFCFILTER\",\n 3415622556: \"IFCFAN\",\n 1003880860: \"IFCELECTRICTIMECONTROL\",\n 402227799: \"IFCELECTRICMOTOR\",\n 264262732: \"IFCELECTRICGENERATOR\",\n 3310460725: \"IFCELECTRICFLOWSTORAGEDEVICE\",\n 862014818: \"IFCELECTRICDISTRIBUTIONBOARD\",\n 1904799276: \"IFCELECTRICAPPLIANCE\",\n 1360408905: \"IFCDUCTSILENCER\",\n 3518393246: \"IFCDUCTSEGMENT\",\n 342316401: \"IFCDUCTFITTING\",\n 562808652: \"IFCDISTRIBUTIONCIRCUIT\",\n 4074379575: \"IFCDAMPER\",\n 3640358203: \"IFCCOOLINGTOWER\",\n 4136498852: \"IFCCOOLEDBEAM\",\n 2272882330: \"IFCCONDENSER\",\n 3571504051: \"IFCCOMPRESSOR\",\n 3221913625: \"IFCCOMMUNICATIONSAPPLIANCE\",\n 639361253: \"IFCCOIL\",\n 3902619387: \"IFCCHILLER\",\n 4217484030: \"IFCCABLESEGMENT\",\n 1051757585: \"IFCCABLEFITTING\",\n 3758799889: \"IFCCABLECARRIERSEGMENT\",\n 635142910: \"IFCCABLECARRIERFITTING\",\n 2938176219: \"IFCBURNER\",\n 32344328: \"IFCBOILER\",\n 2906023776: \"IFCBEAMSTANDARDCASE\",\n 277319702: \"IFCAUDIOVISUALAPPLIANCE\",\n 2056796094: \"IFCAIRTOAIRHEATRECOVERY\",\n 177149247: \"IFCAIRTERMINALBOX\",\n 1634111441: \"IFCAIRTERMINAL\",\n 486154966: \"IFCWINDOWSTANDARDCASE\",\n 4237592921: \"IFCWASTETERMINAL\",\n 4156078855: \"IFCWALLELEMENTEDCASE\",\n 4207607924: \"IFCVALVE\",\n 4292641817: \"IFCUNITARYEQUIPMENT\",\n 3179687236: \"IFCUNITARYCONTROLELEMENTTYPE\",\n 3026737570: \"IFCTUBEBUNDLE\",\n 3825984169: \"IFCTRANSFORMER\",\n 812556717: \"IFCTANK\",\n 1162798199: \"IFCSWITCHINGDEVICE\",\n 385403989: \"IFCSTRUCTURALLOADCASE\",\n 1404847402: \"IFCSTACKTERMINAL\",\n 1999602285: \"IFCSPACEHEATER\",\n 3420628829: \"IFCSOLARDEVICE\",\n 3027962421: \"IFCSLABSTANDARDCASE\",\n 3127900445: \"IFCSLABELEMENTEDCASE\",\n 1329646415: \"IFCSHADINGDEVICE\",\n 3053780830: \"IFCSANITARYTERMINAL\",\n 2572171363: \"IFCREINFORCINGBARTYPE\",\n 1232101972: \"IFCRATIONALBSPLINECURVEWITHKNOTS\",\n 90941305: \"IFCPUMP\",\n 655969474: \"IFCPROTECTIVEDEVICETRIPPINGUNITTYPE\",\n 738039164: \"IFCPROTECTIVEDEVICE\",\n 1156407060: \"IFCPLATESTANDARDCASE\",\n 3612865200: \"IFCPIPESEGMENT\",\n 310824031: \"IFCPIPEFITTING\",\n 3694346114: \"IFCOUTLET\",\n 144952367: \"IFCOUTERBOUNDARYCURVE\",\n 2474470126: \"IFCMOTORCONNECTION\",\n 1911478936: \"IFCMEMBERSTANDARDCASE\",\n 1437502449: \"IFCMEDICALDEVICE\",\n 629592764: \"IFCLIGHTFIXTURE\",\n 76236018: \"IFCLAMP\",\n 2176052936: \"IFCJUNCTIONBOX\",\n 4175244083: \"IFCINTERCEPTOR\",\n 2068733104: \"IFCHUMIDIFIER\",\n 3319311131: \"IFCHEATEXCHANGER\",\n 2188021234: \"IFCFLOWMETER\",\n 1209101575: \"IFCEXTERNALSPATIALELEMENT\",\n 484807127: \"IFCEVAPORATOR\",\n 3747195512: \"IFCEVAPORATIVECOOLER\",\n 2814081492: \"IFCENGINE\",\n 2417008758: \"IFCELECTRICDISTRIBUTIONBOARDTYPE\",\n 3242481149: \"IFCDOORSTANDARDCASE\",\n 3205830791: \"IFCDISTRIBUTIONSYSTEM\",\n 400855858: \"IFCCOMMUNICATIONSAPPLIANCETYPE\",\n 905975707: \"IFCCOLUMNSTANDARDCASE\",\n 1677625105: \"IFCCIVILELEMENT\",\n 3296154744: \"IFCCHIMNEY\",\n 2674252688: \"IFCCABLEFITTINGTYPE\",\n 2188180465: \"IFCBURNERTYPE\",\n 1177604601: \"IFCBUILDINGSYSTEM\",\n 39481116: \"IFCBUILDINGELEMENTPARTTYPE\",\n 1136057603: \"IFCBOUNDARYCURVE\",\n 2461110595: \"IFCBSPLINECURVEWITHKNOTS\",\n 1532957894: \"IFCAUDIOVISUALAPPLIANCETYPE\",\n 4088093105: \"IFCWORKCALENDAR\",\n 4009809668: \"IFCWINDOWTYPE\",\n 926996030: \"IFCVOIDINGFEATURE\",\n 2391383451: \"IFCVIBRATIONISOLATOR\",\n 2415094496: \"IFCTENDONTYPE\",\n 3081323446: \"IFCTENDONANCHORTYPE\",\n 413509423: \"IFCSYSTEMFURNITUREELEMENT\",\n 3101698114: \"IFCSURFACEFEATURE\",\n 3657597509: \"IFCSTRUCTURALSURFACEACTION\",\n 2757150158: \"IFCSTRUCTURALCURVEREACTION\",\n 1004757350: \"IFCSTRUCTURALCURVEACTION\",\n 338393293: \"IFCSTAIRTYPE\",\n 1072016465: \"IFCSOLARDEVICETYPE\",\n 4074543187: \"IFCSHADINGDEVICETYPE\",\n 2157484638: \"IFCSEAMCURVE\",\n 2781568857: \"IFCROOFTYPE\",\n 2310774935: \"IFCREINFORCINGMESHTYPE\",\n 964333572: \"IFCREINFORCINGELEMENTTYPE\",\n 683857671: \"IFCRATIONALBSPLINESURFACEWITHKNOTS\",\n 1469900589: \"IFCRAMPTYPE\",\n 2839578677: \"IFCPOLYGONALFACESET\",\n 1158309216: \"IFCPILETYPE\",\n 3079942009: \"IFCOPENINGSTANDARDCASE\",\n 1114901282: \"IFCMEDICALDEVICETYPE\",\n 3113134337: \"IFCINTERSECTIONCURVE\",\n 3946677679: \"IFCINTERCEPTORTYPE\",\n 2571569899: \"IFCINDEXEDPOLYCURVE\",\n 3493046030: \"IFCGEOGRAPHICELEMENT\",\n 1509553395: \"IFCFURNITURE\",\n 1893162501: \"IFCFOOTINGTYPE\",\n 2853485674: \"IFCEXTERNALSPATIALSTRUCTUREELEMENT\",\n 4148101412: \"IFCEVENT\",\n 132023988: \"IFCENGINETYPE\",\n 2397081782: \"IFCELEMENTASSEMBLYTYPE\",\n 2323601079: \"IFCDOORTYPE\",\n 1213902940: \"IFCCYLINDRICALSURFACE\",\n 1525564444: \"IFCCONSTRUCTIONPRODUCTRESOURCETYPE\",\n 4105962743: \"IFCCONSTRUCTIONMATERIALRESOURCETYPE\",\n 2185764099: \"IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE\",\n 15328376: \"IFCCOMPOSITECURVEONSURFACE\",\n 3875453745: \"IFCCOMPLEXPROPERTYTEMPLATE\",\n 3893394355: \"IFCCIVILELEMENTTYPE\",\n 2197970202: \"IFCCHIMNEYTYPE\",\n 167062518: \"IFCBSPLINESURFACEWITHKNOTS\",\n 2887950389: \"IFCBSPLINESURFACE\",\n 2603310189: \"IFCADVANCEDBREPWITHVOIDS\",\n 1635779807: \"IFCADVANCEDBREP\",\n 2916149573: \"IFCTRIANGULATEDFACESET\",\n 1935646853: \"IFCTOROIDALSURFACE\",\n 2387106220: \"IFCTESSELLATEDFACESET\",\n 3206491090: \"IFCTASKTYPE\",\n 699246055: \"IFCSURFACECURVE\",\n 4095615324: \"IFCSUBCONTRACTRESOURCETYPE\",\n 603775116: \"IFCSTRUCTURALSURFACEREACTION\",\n 4015995234: \"IFCSPHERICALSURFACE\",\n 2481509218: \"IFCSPATIALZONETYPE\",\n 463610769: \"IFCSPATIALZONE\",\n 710998568: \"IFCSPATIALELEMENTTYPE\",\n 1412071761: \"IFCSPATIALELEMENT\",\n 3663146110: \"IFCSIMPLEPROPERTYTEMPLATE\",\n 3243963512: \"IFCREVOLVEDAREASOLIDTAPERED\",\n 816062949: \"IFCREPARAMETRISEDCOMPOSITECURVESEGMENT\",\n 1521410863: \"IFCRELSPACEBOUNDARY2NDLEVEL\",\n 3523091289: \"IFCRELSPACEBOUNDARY1STLEVEL\",\n 427948657: \"IFCRELINTERFERESELEMENTS\",\n 307848117: \"IFCRELDEFINESBYTEMPLATE\",\n 1462361463: \"IFCRELDEFINESBYOBJECT\",\n 2565941209: \"IFCRELDECLARES\",\n 1027710054: \"IFCRELASSIGNSTOGROUPBYFACTOR\",\n 3521284610: \"IFCPROPERTYTEMPLATE\",\n 492091185: \"IFCPROPERTYSETTEMPLATE\",\n 653396225: \"IFCPROJECTLIBRARY\",\n 569719735: \"IFCPROCEDURETYPE\",\n 3967405729: \"IFCPREDEFINEDPROPERTYSET\",\n 1682466193: \"IFCPCURVE\",\n 428585644: \"IFCLABORRESOURCETYPE\",\n 2294589976: \"IFCINDEXEDPOLYGONALFACEWITHVOIDS\",\n 178912537: \"IFCINDEXEDPOLYGONALFACE\",\n 4095422895: \"IFCGEOGRAPHICELEMENTTYPE\",\n 2652556860: \"IFCFIXEDREFERENCESWEPTAREASOLID\",\n 2804161546: \"IFCEXTRUDEDAREASOLIDTAPERED\",\n 4024345920: \"IFCEVENTTYPE\",\n 2629017746: \"IFCCURVEBOUNDEDSURFACE\",\n 1815067380: \"IFCCREWRESOURCETYPE\",\n 3419103109: \"IFCCONTEXT\",\n 2574617495: \"IFCCONSTRUCTIONRESOURCETYPE\",\n 2059837836: \"IFCCARTESIANPOINTLIST3D\",\n 1675464909: \"IFCCARTESIANPOINTLIST2D\",\n 574549367: \"IFCCARTESIANPOINTLIST\",\n 3406155212: \"IFCADVANCEDFACE\",\n 3698973494: \"IFCTYPERESOURCE\",\n 3736923433: \"IFCTYPEPROCESS\",\n 901063453: \"IFCTESSELLATEDITEM\",\n 1096409881: \"IFCSWEPTDISKSOLIDPOLYGONAL\",\n 1042787934: \"IFCRESOURCETIME\",\n 1608871552: \"IFCRESOURCECONSTRAINTRELATIONSHIP\",\n 2943643501: \"IFCRESOURCEAPPROVALRELATIONSHIP\",\n 2090586900: \"IFCQUANTITYSET\",\n 1482703590: \"IFCPROPERTYTEMPLATEDEFINITION\",\n 3778827333: \"IFCPREDEFINEDPROPERTIES\",\n 2998442950: \"IFCMIRROREDPROFILEDEF\",\n 853536259: \"IFCMATERIALRELATIONSHIP\",\n 3404854881: \"IFCMATERIALPROFILESETUSAGETAPERING\",\n 3079605661: \"IFCMATERIALPROFILESETUSAGE\",\n 2852063980: \"IFCMATERIALCONSTITUENTSET\",\n 3708119e3: \"IFCMATERIALCONSTITUENT\",\n 1585845231: \"IFCLAGTIME\",\n 2133299955: \"IFCINDEXEDTRIANGLETEXTUREMAP\",\n 1437953363: \"IFCINDEXEDTEXTUREMAP\",\n 3570813810: \"IFCINDEXEDCOLOURMAP\",\n 1437805879: \"IFCEXTERNALREFERENCERELATIONSHIP\",\n 297599258: \"IFCEXTENDEDPROPERTIES\",\n 211053100: \"IFCEVENTTIME\",\n 2713554722: \"IFCCONVERSIONBASEDUNITWITHOFFSET\",\n 3285139300: \"IFCCOLOURRGBLIST\",\n 1236880293: \"IFCWORKTIME\",\n 1199560280: \"IFCTIMEPERIOD\",\n 3611470254: \"IFCTEXTUREVERTEXLIST\",\n 2771591690: \"IFCTASKTIMERECURRING\",\n 1549132990: \"IFCTASKTIME\",\n 2043862942: \"IFCTABLECOLUMN\",\n 2934153892: \"IFCSURFACEREINFORCEMENTAREA\",\n 609421318: \"IFCSTRUCTURALLOADORRESULT\",\n 3478079324: \"IFCSTRUCTURALLOADCONFIGURATION\",\n 1054537805: \"IFCSCHEDULINGTIME\",\n 2439245199: \"IFCRESOURCELEVELRELATIONSHIP\",\n 2433181523: \"IFCREFERENCE\",\n 3915482550: \"IFCRECURRENCEPATTERN\",\n 986844984: \"IFCPROPERTYABSTRACTION\",\n 3843373140: \"IFCPROJECTEDCRS\",\n 677532197: \"IFCPRESENTATIONITEM\",\n 1507914824: \"IFCMATERIALUSAGEDEFINITION\",\n 552965576: \"IFCMATERIALPROFILEWITHOFFSETS\",\n 164193824: \"IFCMATERIALPROFILESET\",\n 2235152071: \"IFCMATERIALPROFILE\",\n 1847252529: \"IFCMATERIALLAYERWITHOFFSETS\",\n 760658860: \"IFCMATERIALDEFINITION\",\n 3057273783: \"IFCMAPCONVERSION\",\n 4294318154: \"IFCEXTERNALINFORMATION\",\n 1466758467: \"IFCCOORDINATEREFERENCESYSTEM\",\n 1785450214: \"IFCCOORDINATEOPERATION\",\n 775493141: \"IFCCONNECTIONVOLUMEGEOMETRY\",\n 979691226: \"IFCREINFORCINGBAR\",\n 3700593921: \"IFCELECTRICDISTRIBUTIONPOINT\",\n 1062813311: \"IFCDISTRIBUTIONCONTROLELEMENT\",\n 1052013943: \"IFCDISTRIBUTIONCHAMBERELEMENT\",\n 578613899: \"IFCCONTROLLERTYPE\",\n 2454782716: \"IFCCHAMFEREDGEFEATURE\",\n 753842376: \"IFCBEAM\",\n 3001207471: \"IFCALARMTYPE\",\n 2874132201: \"IFCACTUATORTYPE\",\n 3304561284: \"IFCWINDOW\",\n 3512223829: \"IFCWALLSTANDARDCASE\",\n 2391406946: \"IFCWALL\",\n 3313531582: \"IFCVIBRATIONISOLATORTYPE\",\n 2347447852: \"IFCTENDONANCHOR\",\n 3824725483: \"IFCTENDON\",\n 2515109513: \"IFCSTRUCTURALANALYSISMODEL\",\n 4252922144: \"IFCSTAIRFLIGHT\",\n 331165859: \"IFCSTAIR\",\n 1529196076: \"IFCSLAB\",\n 1783015770: \"IFCSENSORTYPE\",\n 1376911519: \"IFCROUNDEDEDGEFEATURE\",\n 2016517767: \"IFCROOF\",\n 2320036040: \"IFCREINFORCINGMESH\",\n 3027567501: \"IFCREINFORCINGELEMENT\",\n 3055160366: \"IFCRATIONALBEZIERCURVE\",\n 3283111854: \"IFCRAMPFLIGHT\",\n 3024970846: \"IFCRAMP\",\n 2262370178: \"IFCRAILING\",\n 3171933400: \"IFCPLATE\",\n 1687234759: \"IFCPILE\",\n 1073191201: \"IFCMEMBER\",\n 900683007: \"IFCFOOTING\",\n 3508470533: \"IFCFLOWTREATMENTDEVICE\",\n 2223149337: \"IFCFLOWTERMINAL\",\n 707683696: \"IFCFLOWSTORAGEDEVICE\",\n 987401354: \"IFCFLOWSEGMENT\",\n 3132237377: \"IFCFLOWMOVINGDEVICE\",\n 4037862832: \"IFCFLOWINSTRUMENTTYPE\",\n 4278956645: \"IFCFLOWFITTING\",\n 2058353004: \"IFCFLOWCONTROLLER\",\n 4222183408: \"IFCFIRESUPPRESSIONTERMINALTYPE\",\n 1810631287: \"IFCFILTERTYPE\",\n 346874300: \"IFCFANTYPE\",\n 1658829314: \"IFCENERGYCONVERSIONDEVICE\",\n 857184966: \"IFCELECTRICALELEMENT\",\n 1634875225: \"IFCELECTRICALCIRCUIT\",\n 712377611: \"IFCELECTRICTIMECONTROLTYPE\",\n 1217240411: \"IFCELECTRICMOTORTYPE\",\n 1365060375: \"IFCELECTRICHEATERTYPE\",\n 1534661035: \"IFCELECTRICGENERATORTYPE\",\n 3277789161: \"IFCELECTRICFLOWSTORAGEDEVICETYPE\",\n 663422040: \"IFCELECTRICAPPLIANCETYPE\",\n 855621170: \"IFCEDGEFEATURE\",\n 2030761528: \"IFCDUCTSILENCERTYPE\",\n 3760055223: \"IFCDUCTSEGMENTTYPE\",\n 869906466: \"IFCDUCTFITTINGTYPE\",\n 395920057: \"IFCDOOR\",\n 3041715199: \"IFCDISTRIBUTIONPORT\",\n 3040386961: \"IFCDISTRIBUTIONFLOWELEMENT\",\n 1945004755: \"IFCDISTRIBUTIONELEMENT\",\n 2063403501: \"IFCDISTRIBUTIONCONTROLELEMENTTYPE\",\n 1599208980: \"IFCDISTRIBUTIONCHAMBERELEMENTTYPE\",\n 2635815018: \"IFCDISCRETEACCESSORYTYPE\",\n 1335981549: \"IFCDISCRETEACCESSORY\",\n 4147604152: \"IFCDIAMETERDIMENSION\",\n 3961806047: \"IFCDAMPERTYPE\",\n 3495092785: \"IFCCURTAINWALL\",\n 1973544240: \"IFCCOVERING\",\n 2954562838: \"IFCCOOLINGTOWERTYPE\",\n 335055490: \"IFCCOOLEDBEAMTYPE\",\n 488727124: \"IFCCONSTRUCTIONPRODUCTRESOURCE\",\n 1060000209: \"IFCCONSTRUCTIONMATERIALRESOURCE\",\n 3898045240: \"IFCCONSTRUCTIONEQUIPMENTRESOURCE\",\n 1163958913: \"IFCCONDITIONCRITERION\",\n 2188551683: \"IFCCONDITION\",\n 2816379211: \"IFCCONDENSERTYPE\",\n 3850581409: \"IFCCOMPRESSORTYPE\",\n 843113511: \"IFCCOLUMN\",\n 2301859152: \"IFCCOILTYPE\",\n 2611217952: \"IFCCIRCLE\",\n 2951183804: \"IFCCHILLERTYPE\",\n 1285652485: \"IFCCABLESEGMENTTYPE\",\n 3293546465: \"IFCCABLECARRIERSEGMENTTYPE\",\n 395041908: \"IFCCABLECARRIERFITTINGTYPE\",\n 1909888760: \"IFCBUILDINGELEMENTPROXYTYPE\",\n 1095909175: \"IFCBUILDINGELEMENTPROXY\",\n 2979338954: \"IFCBUILDINGELEMENTPART\",\n 52481810: \"IFCBUILDINGELEMENTCOMPONENT\",\n 3299480353: \"IFCBUILDINGELEMENT\",\n 231477066: \"IFCBOILERTYPE\",\n 1916977116: \"IFCBEZIERCURVE\",\n 819618141: \"IFCBEAMTYPE\",\n 1967976161: \"IFCBSPLINECURVE\",\n 3460190687: \"IFCASSET\",\n 2470393545: \"IFCANGULARDIMENSION\",\n 1871374353: \"IFCAIRTOAIRHEATRECOVERYTYPE\",\n 3352864051: \"IFCAIRTERMINALTYPE\",\n 1411407467: \"IFCAIRTERMINALBOXTYPE\",\n 3821786052: \"IFCACTIONREQUEST\",\n 1213861670: \"IFC2DCOMPOSITECURVE\",\n 1033361043: \"IFCZONE\",\n 3342526732: \"IFCWORKSCHEDULE\",\n 4218914973: \"IFCWORKPLAN\",\n 1028945134: \"IFCWORKCONTROL\",\n 1133259667: \"IFCWASTETERMINALTYPE\",\n 1898987631: \"IFCWALLTYPE\",\n 2769231204: \"IFCVIRTUALELEMENT\",\n 728799441: \"IFCVALVETYPE\",\n 1911125066: \"IFCUNITARYEQUIPMENTTYPE\",\n 1600972822: \"IFCTUBEBUNDLETYPE\",\n 3593883385: \"IFCTRIMMEDCURVE\",\n 1620046519: \"IFCTRANSPORTELEMENT\",\n 1692211062: \"IFCTRANSFORMERTYPE\",\n 1637806684: \"IFCTIMESERIESSCHEDULE\",\n 5716631: \"IFCTANKTYPE\",\n 2254336722: \"IFCSYSTEM\",\n 2315554128: \"IFCSWITCHINGDEVICETYPE\",\n 148013059: \"IFCSUBCONTRACTRESOURCE\",\n 1975003073: \"IFCSTRUCTURALSURFACECONNECTION\",\n 2986769608: \"IFCSTRUCTURALRESULTGROUP\",\n 1235345126: \"IFCSTRUCTURALPOINTREACTION\",\n 734778138: \"IFCSTRUCTURALPOINTCONNECTION\",\n 2082059205: \"IFCSTRUCTURALPOINTACTION\",\n 3987759626: \"IFCSTRUCTURALPLANARACTIONVARYING\",\n 1621171031: \"IFCSTRUCTURALPLANARACTION\",\n 1252848954: \"IFCSTRUCTURALLOADGROUP\",\n 1721250024: \"IFCSTRUCTURALLINEARACTIONVARYING\",\n 1807405624: \"IFCSTRUCTURALLINEARACTION\",\n 2445595289: \"IFCSTRUCTURALCURVEMEMBERVARYING\",\n 214636428: \"IFCSTRUCTURALCURVEMEMBER\",\n 4243806635: \"IFCSTRUCTURALCURVECONNECTION\",\n 1179482911: \"IFCSTRUCTURALCONNECTION\",\n 682877961: \"IFCSTRUCTURALACTION\",\n 1039846685: \"IFCSTAIRFLIGHTTYPE\",\n 3112655638: \"IFCSTACKTERMINALTYPE\",\n 3812236995: \"IFCSPACETYPE\",\n 652456506: \"IFCSPACEPROGRAM\",\n 1305183839: \"IFCSPACEHEATERTYPE\",\n 3856911033: \"IFCSPACE\",\n 2533589738: \"IFCSLABTYPE\",\n 4097777520: \"IFCSITE\",\n 4105383287: \"IFCSERVICELIFE\",\n 3517283431: \"IFCSCHEDULETIMECONTROL\",\n 1768891740: \"IFCSANITARYTERMINALTYPE\",\n 2863920197: \"IFCRELASSIGNSTASKS\",\n 160246688: \"IFCRELAGGREGATES\",\n 2324767716: \"IFCRAMPFLIGHTTYPE\",\n 2893384427: \"IFCRAILINGTYPE\",\n 3248260540: \"IFCRADIUSDIMENSION\",\n 2250791053: \"IFCPUMPTYPE\",\n 1842657554: \"IFCPROTECTIVEDEVICETYPE\",\n 3651124850: \"IFCPROJECTIONELEMENT\",\n 3642467123: \"IFCPROJECTORDERRECORD\",\n 2904328755: \"IFCPROJECTORDER\",\n 2744685151: \"IFCPROCEDURE\",\n 3740093272: \"IFCPORT\",\n 3724593414: \"IFCPOLYLINE\",\n 4017108033: \"IFCPLATETYPE\",\n 4231323485: \"IFCPIPESEGMENTTYPE\",\n 804291784: \"IFCPIPEFITTINGTYPE\",\n 3327091369: \"IFCPERMIT\",\n 2382730787: \"IFCPERFORMANCEHISTORY\",\n 2837617999: \"IFCOUTLETTYPE\",\n 3425660407: \"IFCORDERACTION\",\n 3588315303: \"IFCOPENINGELEMENT\",\n 4143007308: \"IFCOCCUPANT\",\n 1916936684: \"IFCMOVE\",\n 977012517: \"IFCMOTORCONNECTIONTYPE\",\n 3181161470: \"IFCMEMBERTYPE\",\n 2108223431: \"IFCMECHANICALFASTENERTYPE\",\n 377706215: \"IFCMECHANICALFASTENER\",\n 2506943328: \"IFCLINEARDIMENSION\",\n 1161773419: \"IFCLIGHTFIXTURETYPE\",\n 1051575348: \"IFCLAMPTYPE\",\n 3827777499: \"IFCLABORRESOURCE\",\n 4288270099: \"IFCJUNCTIONBOXTYPE\",\n 2391368822: \"IFCINVENTORY\",\n 1806887404: \"IFCHUMIDIFIERTYPE\",\n 1251058090: \"IFCHEATEXCHANGERTYPE\",\n 2706460486: \"IFCGROUP\",\n 3009204131: \"IFCGRID\",\n 200128114: \"IFCGASTERMINALTYPE\",\n 814719939: \"IFCFURNITURESTANDARD\",\n 263784265: \"IFCFURNISHINGELEMENT\",\n 3009222698: \"IFCFLOWTREATMENTDEVICETYPE\",\n 2297155007: \"IFCFLOWTERMINALTYPE\",\n 1339347760: \"IFCFLOWSTORAGEDEVICETYPE\",\n 1834744321: \"IFCFLOWSEGMENTTYPE\",\n 1482959167: \"IFCFLOWMOVINGDEVICETYPE\",\n 3815607619: \"IFCFLOWMETERTYPE\",\n 3198132628: \"IFCFLOWFITTINGTYPE\",\n 3907093117: \"IFCFLOWCONTROLLERTYPE\",\n 1287392070: \"IFCFEATUREELEMENTSUBTRACTION\",\n 2143335405: \"IFCFEATUREELEMENTADDITION\",\n 2827207264: \"IFCFEATUREELEMENT\",\n 2489546625: \"IFCFASTENERTYPE\",\n 647756555: \"IFCFASTENER\",\n 3737207727: \"IFCFACETEDBREPWITHVOIDS\",\n 807026263: \"IFCFACETEDBREP\",\n 3390157468: \"IFCEVAPORATORTYPE\",\n 3174744832: \"IFCEVAPORATIVECOOLERTYPE\",\n 3272907226: \"IFCEQUIPMENTSTANDARD\",\n 1962604670: \"IFCEQUIPMENTELEMENT\",\n 2107101300: \"IFCENERGYCONVERSIONDEVICETYPE\",\n 1704287377: \"IFCELLIPSE\",\n 2590856083: \"IFCELEMENTCOMPONENTTYPE\",\n 1623761950: \"IFCELEMENTCOMPONENT\",\n 4123344466: \"IFCELEMENTASSEMBLY\",\n 1758889154: \"IFCELEMENT\",\n 360485395: \"IFCELECTRICALBASEPROPERTIES\",\n 3849074793: \"IFCDISTRIBUTIONFLOWELEMENTTYPE\",\n 3256556792: \"IFCDISTRIBUTIONELEMENTTYPE\",\n 681481545: \"IFCDIMENSIONCURVEDIRECTEDCALLOUT\",\n 1457835157: \"IFCCURTAINWALLTYPE\",\n 3295246426: \"IFCCREWRESOURCE\",\n 1916426348: \"IFCCOVERINGTYPE\",\n 1419761937: \"IFCCOSTSCHEDULE\",\n 3895139033: \"IFCCOSTITEM\",\n 3293443760: \"IFCCONTROL\",\n 2559216714: \"IFCCONSTRUCTIONRESOURCE\",\n 2510884976: \"IFCCONIC\",\n 3732776249: \"IFCCOMPOSITECURVE\",\n 300633059: \"IFCCOLUMNTYPE\",\n 2937912522: \"IFCCIRCLEHOLLOWPROFILEDEF\",\n 3124254112: \"IFCBUILDINGSTOREY\",\n 1950629157: \"IFCBUILDINGELEMENTTYPE\",\n 4031249490: \"IFCBUILDING\",\n 1260505505: \"IFCBOUNDEDCURVE\",\n 3649129432: \"IFCBOOLEANCLIPPINGRESULT\",\n 1334484129: \"IFCBLOCK\",\n 3207858831: \"IFCASYMMETRICISHAPEPROFILEDEF\",\n 1674181508: \"IFCANNOTATION\",\n 2296667514: \"IFCACTOR\",\n 2097647324: \"IFCTRANSPORTELEMENTTYPE\",\n 3473067441: \"IFCTASK\",\n 1580310250: \"IFCSYSTEMFURNITUREELEMENTTYPE\",\n 4124788165: \"IFCSURFACEOFREVOLUTION\",\n 2809605785: \"IFCSURFACEOFLINEAREXTRUSION\",\n 2028607225: \"IFCSURFACECURVESWEPTAREASOLID\",\n 4070609034: \"IFCSTRUCTUREDDIMENSIONCALLOUT\",\n 2218152070: \"IFCSTRUCTURALSURFACEMEMBERVARYING\",\n 3979015343: \"IFCSTRUCTURALSURFACEMEMBER\",\n 3689010777: \"IFCSTRUCTURALREACTION\",\n 530289379: \"IFCSTRUCTURALMEMBER\",\n 3136571912: \"IFCSTRUCTURALITEM\",\n 3544373492: \"IFCSTRUCTURALACTIVITY\",\n 451544542: \"IFCSPHERE\",\n 3893378262: \"IFCSPATIALSTRUCTUREELEMENTTYPE\",\n 2706606064: \"IFCSPATIALSTRUCTUREELEMENT\",\n 3626867408: \"IFCRIGHTCIRCULARCYLINDER\",\n 4158566097: \"IFCRIGHTCIRCULARCONE\",\n 1856042241: \"IFCREVOLVEDAREASOLID\",\n 2914609552: \"IFCRESOURCE\",\n 1401173127: \"IFCRELVOIDSELEMENT\",\n 3451746338: \"IFCRELSPACEBOUNDARY\",\n 366585022: \"IFCRELSERVICESBUILDINGS\",\n 4122056220: \"IFCRELSEQUENCE\",\n 1058617721: \"IFCRELSCHEDULESCOSTITEMS\",\n 1245217292: \"IFCRELREFERENCEDINSPATIALSTRUCTURE\",\n 750771296: \"IFCRELPROJECTSELEMENT\",\n 202636808: \"IFCRELOVERRIDESPROPERTIES\",\n 2051452291: \"IFCRELOCCUPIESSPACES\",\n 3268803585: \"IFCRELNESTS\",\n 4189434867: \"IFCRELINTERACTIONREQUIREMENTS\",\n 279856033: \"IFCRELFLOWCONTROLELEMENTS\",\n 3940055652: \"IFCRELFILLSELEMENT\",\n 781010003: \"IFCRELDEFINESBYTYPE\",\n 4186316022: \"IFCRELDEFINESBYPROPERTIES\",\n 693640335: \"IFCRELDEFINES\",\n 2551354335: \"IFCRELDECOMPOSES\",\n 2802773753: \"IFCRELCOVERSSPACES\",\n 886880790: \"IFCRELCOVERSBLDGELEMENTS\",\n 3242617779: \"IFCRELCONTAINEDINSPATIALSTRUCTURE\",\n 3678494232: \"IFCRELCONNECTSWITHREALIZINGELEMENTS\",\n 504942748: \"IFCRELCONNECTSWITHECCENTRICITY\",\n 1638771189: \"IFCRELCONNECTSSTRUCTURALMEMBER\",\n 3912681535: \"IFCRELCONNECTSSTRUCTURALELEMENT\",\n 2127690289: \"IFCRELCONNECTSSTRUCTURALACTIVITY\",\n 3190031847: \"IFCRELCONNECTSPORTS\",\n 4201705270: \"IFCRELCONNECTSPORTTOELEMENT\",\n 3945020480: \"IFCRELCONNECTSPATHELEMENTS\",\n 1204542856: \"IFCRELCONNECTSELEMENTS\",\n 826625072: \"IFCRELCONNECTS\",\n 2851387026: \"IFCRELASSOCIATESPROFILEPROPERTIES\",\n 2655215786: \"IFCRELASSOCIATESMATERIAL\",\n 3840914261: \"IFCRELASSOCIATESLIBRARY\",\n 982818633: \"IFCRELASSOCIATESDOCUMENT\",\n 2728634034: \"IFCRELASSOCIATESCONSTRAINT\",\n 919958153: \"IFCRELASSOCIATESCLASSIFICATION\",\n 4095574036: \"IFCRELASSOCIATESAPPROVAL\",\n 1327628568: \"IFCRELASSOCIATESAPPLIEDVALUE\",\n 1865459582: \"IFCRELASSOCIATES\",\n 205026976: \"IFCRELASSIGNSTORESOURCE\",\n 3372526763: \"IFCRELASSIGNSTOPROJECTORDER\",\n 2857406711: \"IFCRELASSIGNSTOPRODUCT\",\n 4278684876: \"IFCRELASSIGNSTOPROCESS\",\n 1307041759: \"IFCRELASSIGNSTOGROUP\",\n 2495723537: \"IFCRELASSIGNSTOCONTROL\",\n 1683148259: \"IFCRELASSIGNSTOACTOR\",\n 3939117080: \"IFCRELASSIGNS\",\n 3454111270: \"IFCRECTANGULARTRIMMEDSURFACE\",\n 2798486643: \"IFCRECTANGULARPYRAMID\",\n 2770003689: \"IFCRECTANGLEHOLLOWPROFILEDEF\",\n 3219374653: \"IFCPROXY\",\n 1451395588: \"IFCPROPERTYSET\",\n 4194566429: \"IFCPROJECTIONCURVE\",\n 103090709: \"IFCPROJECT\",\n 4208778838: \"IFCPRODUCT\",\n 2945172077: \"IFCPROCESS\",\n 220341763: \"IFCPLANE\",\n 603570806: \"IFCPLANARBOX\",\n 3566463478: \"IFCPERMEABLECOVERINGPROPERTIES\",\n 3505215534: \"IFCOFFSETCURVE3D\",\n 3388369263: \"IFCOFFSETCURVE2D\",\n 3888040117: \"IFCOBJECT\",\n 1425443689: \"IFCMANIFOLDSOLIDBREP\",\n 1281925730: \"IFCLINE\",\n 572779678: \"IFCLSHAPEPROFILEDEF\",\n 1484403080: \"IFCISHAPEPROFILEDEF\",\n 987898635: \"IFCGEOMETRICCURVESET\",\n 1268542332: \"IFCFURNITURETYPE\",\n 4238390223: \"IFCFURNISHINGELEMENTTYPE\",\n 3455213021: \"IFCFLUIDFLOWPROPERTIES\",\n 315944413: \"IFCFILLAREASTYLETILES\",\n 4203026998: \"IFCFILLAREASTYLETILESYMBOLWITHSTYLE\",\n 374418227: \"IFCFILLAREASTYLEHATCHING\",\n 2047409740: \"IFCFACEBASEDSURFACEMODEL\",\n 477187591: \"IFCEXTRUDEDAREASOLID\",\n 80994333: \"IFCENERGYPROPERTIES\",\n 2835456948: \"IFCELLIPSEPROFILEDEF\",\n 2777663545: \"IFCELEMENTARYSURFACE\",\n 339256511: \"IFCELEMENTTYPE\",\n 1883228015: \"IFCELEMENTQUANTITY\",\n 1472233963: \"IFCEDGELOOP\",\n 4006246654: \"IFCDRAUGHTINGPREDEFINEDCURVEFONT\",\n 445594917: \"IFCDRAUGHTINGPREDEFINEDCOLOUR\",\n 3073041342: \"IFCDRAUGHTINGCALLOUT\",\n 526551008: \"IFCDOORSTYLE\",\n 1714330368: \"IFCDOORPANELPROPERTIES\",\n 2963535650: \"IFCDOORLININGPROPERTIES\",\n 32440307: \"IFCDIRECTION\",\n 4054601972: \"IFCDIMENSIONCURVETERMINATOR\",\n 606661476: \"IFCDIMENSIONCURVE\",\n 693772133: \"IFCDEFINEDSYMBOL\",\n 2827736869: \"IFCCURVEBOUNDEDPLANE\",\n 2601014836: \"IFCCURVE\",\n 2147822146: \"IFCCSGSOLID\",\n 2506170314: \"IFCCSGPRIMITIVE3D\",\n 194851669: \"IFCCRANERAILFSHAPEPROFILEDEF\",\n 4133800736: \"IFCCRANERAILASHAPEPROFILEDEF\",\n 2485617015: \"IFCCOMPOSITECURVESEGMENT\",\n 2205249479: \"IFCCLOSEDSHELL\",\n 1383045692: \"IFCCIRCLEPROFILEDEF\",\n 1416205885: \"IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM\",\n 3331915920: \"IFCCARTESIANTRANSFORMATIONOPERATOR3D\",\n 3486308946: \"IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM\",\n 3749851601: \"IFCCARTESIANTRANSFORMATIONOPERATOR2D\",\n 59481748: \"IFCCARTESIANTRANSFORMATIONOPERATOR\",\n 1123145078: \"IFCCARTESIANPOINT\",\n 2898889636: \"IFCCSHAPEPROFILEDEF\",\n 2713105998: \"IFCBOXEDHALFSPACE\",\n 2581212453: \"IFCBOUNDINGBOX\",\n 4182860854: \"IFCBOUNDEDSURFACE\",\n 2736907675: \"IFCBOOLEANRESULT\",\n 2740243338: \"IFCAXIS2PLACEMENT3D\",\n 3125803723: \"IFCAXIS2PLACEMENT2D\",\n 4261334040: \"IFCAXIS1PLACEMENT\",\n 1302238472: \"IFCANNOTATIONSURFACE\",\n 2265737646: \"IFCANNOTATIONFILLAREAOCCURRENCE\",\n 669184980: \"IFCANNOTATIONFILLAREA\",\n 3288037868: \"IFCANNOTATIONCURVEOCCURRENCE\",\n 2543172580: \"IFCZSHAPEPROFILEDEF\",\n 1299126871: \"IFCWINDOWSTYLE\",\n 512836454: \"IFCWINDOWPANELPROPERTIES\",\n 336235671: \"IFCWINDOWLININGPROPERTIES\",\n 2759199220: \"IFCVERTEXLOOP\",\n 1417489154: \"IFCVECTOR\",\n 427810014: \"IFCUSHAPEPROFILEDEF\",\n 2347495698: \"IFCTYPEPRODUCT\",\n 1628702193: \"IFCTYPEOBJECT\",\n 1345879162: \"IFCTWODIRECTIONREPEATFACTOR\",\n 2715220739: \"IFCTRAPEZIUMPROFILEDEF\",\n 3124975700: \"IFCTEXTLITERALWITHEXTENT\",\n 4282788508: \"IFCTEXTLITERAL\",\n 3028897424: \"IFCTERMINATORSYMBOL\",\n 3071757647: \"IFCTSHAPEPROFILEDEF\",\n 230924584: \"IFCSWEPTSURFACE\",\n 1260650574: \"IFCSWEPTDISKSOLID\",\n 2247615214: \"IFCSWEPTAREASOLID\",\n 1878645084: \"IFCSURFACESTYLERENDERING\",\n 2513912981: \"IFCSURFACE\",\n 2233826070: \"IFCSUBEDGE\",\n 3653947884: \"IFCSTRUCTURALSTEELPROFILEPROPERTIES\",\n 3843319758: \"IFCSTRUCTURALPROFILEPROPERTIES\",\n 1190533807: \"IFCSTRUCTURALLOADSINGLEFORCEWARPING\",\n 1597423693: \"IFCSTRUCTURALLOADSINGLEFORCE\",\n 1973038258: \"IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION\",\n 2473145415: \"IFCSTRUCTURALLOADSINGLEDISPLACEMENT\",\n 2668620305: \"IFCSTRUCTURALLOADPLANARFORCE\",\n 1595516126: \"IFCSTRUCTURALLOADLINEARFORCE\",\n 390701378: \"IFCSPACETHERMALLOADPROPERTIES\",\n 1202362311: \"IFCSOUNDVALUE\",\n 2485662743: \"IFCSOUNDPROPERTIES\",\n 723233188: \"IFCSOLIDMODEL\",\n 2609359061: \"IFCSLIPPAGECONNECTIONCONDITION\",\n 4124623270: \"IFCSHELLBASEDSURFACEMODEL\",\n 2411513650: \"IFCSERVICELIFEFACTOR\",\n 1509187699: \"IFCSECTIONEDSPINE\",\n 2778083089: \"IFCROUNDEDRECTANGLEPROFILEDEF\",\n 478536968: \"IFCRELATIONSHIP\",\n 3765753017: \"IFCREINFORCEMENTDEFINITIONPROPERTIES\",\n 3413951693: \"IFCREGULARTIMESERIES\",\n 3615266464: \"IFCRECTANGLEPROFILEDEF\",\n 110355661: \"IFCPROPERTYTABLEVALUE\",\n 3650150729: \"IFCPROPERTYSINGLEVALUE\",\n 3357820518: \"IFCPROPERTYSETDEFINITION\",\n 941946838: \"IFCPROPERTYREFERENCEVALUE\",\n 2752243245: \"IFCPROPERTYLISTVALUE\",\n 4166981789: \"IFCPROPERTYENUMERATEDVALUE\",\n 1680319473: \"IFCPROPERTYDEFINITION\",\n 871118103: \"IFCPROPERTYBOUNDEDVALUE\",\n 673634403: \"IFCPRODUCTDEFINITIONSHAPE\",\n 179317114: \"IFCPREDEFINEDPOINTMARKERSYMBOL\",\n 433424934: \"IFCPREDEFINEDDIMENSIONSYMBOL\",\n 2559016684: \"IFCPREDEFINEDCURVEFONT\",\n 759155922: \"IFCPREDEFINEDCOLOUR\",\n 2775532180: \"IFCPOLYGONALBOUNDEDHALFSPACE\",\n 2924175390: \"IFCPOLYLOOP\",\n 1423911732: \"IFCPOINTONSURFACE\",\n 4022376103: \"IFCPOINTONCURVE\",\n 2067069095: \"IFCPOINT\",\n 1663979128: \"IFCPLANAREXTENT\",\n 2004835150: \"IFCPLACEMENT\",\n 597895409: \"IFCPIXELTEXTURE\",\n 3021840470: \"IFCPHYSICALCOMPLEXQUANTITY\",\n 2519244187: \"IFCPATH\",\n 2529465313: \"IFCPARAMETERIZEDPROFILEDEF\",\n 1029017970: \"IFCORIENTEDEDGE\",\n 2665983363: \"IFCOPENSHELL\",\n 2833995503: \"IFCONEDIRECTIONREPEATFACTOR\",\n 219451334: \"IFCOBJECTDEFINITION\",\n 1430189142: \"IFCMECHANICALCONCRETEMATERIALPROPERTIES\",\n 2022407955: \"IFCMATERIALDEFINITIONREPRESENTATION\",\n 2347385850: \"IFCMAPPEDITEM\",\n 1008929658: \"IFCLOOP\",\n 2624227202: \"IFCLOCALPLACEMENT\",\n 3422422726: \"IFCLIGHTSOURCESPOT\",\n 1520743889: \"IFCLIGHTSOURCEPOSITIONAL\",\n 4266656042: \"IFCLIGHTSOURCEGONIOMETRIC\",\n 2604431987: \"IFCLIGHTSOURCEDIRECTIONAL\",\n 125510826: \"IFCLIGHTSOURCEAMBIENT\",\n 1402838566: \"IFCLIGHTSOURCE\",\n 3741457305: \"IFCIRREGULARTIMESERIES\",\n 3905492369: \"IFCIMAGETEXTURE\",\n 2445078500: \"IFCHYGROSCOPICMATERIALPROPERTIES\",\n 812098782: \"IFCHALFSPACESOLID\",\n 178086475: \"IFCGRIDPLACEMENT\",\n 3590301190: \"IFCGEOMETRICSET\",\n 4142052618: \"IFCGEOMETRICREPRESENTATIONSUBCONTEXT\",\n 2453401579: \"IFCGEOMETRICREPRESENTATIONITEM\",\n 3448662350: \"IFCGEOMETRICREPRESENTATIONCONTEXT\",\n 1446786286: \"IFCGENERALPROFILEPROPERTIES\",\n 803998398: \"IFCGENERALMATERIALPROPERTIES\",\n 3857492461: \"IFCFUELPROPERTIES\",\n 738692330: \"IFCFILLAREASTYLE\",\n 4219587988: \"IFCFAILURECONNECTIONCONDITION\",\n 3008276851: \"IFCFACESURFACE\",\n 803316827: \"IFCFACEOUTERBOUND\",\n 1809719519: \"IFCFACEBOUND\",\n 2556980723: \"IFCFACE\",\n 1860660968: \"IFCEXTENDEDMATERIALPROPERTIES\",\n 476780140: \"IFCEDGECURVE\",\n 3900360178: \"IFCEDGE\",\n 4170525392: \"IFCDRAUGHTINGPREDEFINEDTEXTFONT\",\n 3732053477: \"IFCDOCUMENTREFERENCE\",\n 1694125774: \"IFCDIMENSIONPAIR\",\n 2273265877: \"IFCDIMENSIONCALLOUTRELATIONSHIP\",\n 3632507154: \"IFCDERIVEDPROFILEDEF\",\n 3800577675: \"IFCCURVESTYLE\",\n 2889183280: \"IFCCONVERSIONBASEDUNIT\",\n 3050246964: \"IFCCONTEXTDEPENDENTUNIT\",\n 45288368: \"IFCCONNECTIONPOINTECCENTRICITY\",\n 1981873012: \"IFCCONNECTIONCURVEGEOMETRY\",\n 370225590: \"IFCCONNECTEDFACESET\",\n 1485152156: \"IFCCOMPOSITEPROFILEDEF\",\n 2542286263: \"IFCCOMPLEXPROPERTY\",\n 776857604: \"IFCCOLOURRGB\",\n 647927063: \"IFCCLASSIFICATIONREFERENCE\",\n 3150382593: \"IFCCENTERLINEPROFILEDEF\",\n 616511568: \"IFCBLOBTEXTURE\",\n 2705031697: \"IFCARBITRARYPROFILEDEFWITHVOIDS\",\n 1310608509: \"IFCARBITRARYOPENPROFILEDEF\",\n 3798115385: \"IFCARBITRARYCLOSEDPROFILEDEF\",\n 2297822566: \"IFCANNOTATIONTEXTOCCURRENCE\",\n 3612888222: \"IFCANNOTATIONSYMBOLOCCURRENCE\",\n 962685235: \"IFCANNOTATIONSURFACEOCCURRENCE\",\n 2442683028: \"IFCANNOTATIONOCCURRENCE\",\n 1065908215: \"IFCWATERPROPERTIES\",\n 891718957: \"IFCVIRTUALGRIDINTERSECTION\",\n 1907098498: \"IFCVERTEXPOINT\",\n 3304826586: \"IFCVERTEXBASEDTEXTUREMAP\",\n 2799835756: \"IFCVERTEX\",\n 180925521: \"IFCUNITASSIGNMENT\",\n 1735638870: \"IFCTOPOLOGYREPRESENTATION\",\n 1377556343: \"IFCTOPOLOGICALREPRESENTATIONITEM\",\n 581633288: \"IFCTIMESERIESVALUE\",\n 1718945513: \"IFCTIMESERIESREFERENCERELATIONSHIP\",\n 3101149627: \"IFCTIMESERIES\",\n 3317419933: \"IFCTHERMALMATERIALPROPERTIES\",\n 1210645708: \"IFCTEXTUREVERTEX\",\n 2552916305: \"IFCTEXTUREMAP\",\n 1742049831: \"IFCTEXTURECOORDINATEGENERATOR\",\n 280115917: \"IFCTEXTURECOORDINATE\",\n 1484833681: \"IFCTEXTSTYLEWITHBOXCHARACTERISTICS\",\n 1640371178: \"IFCTEXTSTYLETEXTMODEL\",\n 2636378356: \"IFCTEXTSTYLEFORDEFINEDFONT\",\n 1983826977: \"IFCTEXTSTYLEFONTMODEL\",\n 1447204868: \"IFCTEXTSTYLE\",\n 912023232: \"IFCTELECOMADDRESS\",\n 531007025: \"IFCTABLEROW\",\n 985171141: \"IFCTABLE\",\n 1290481447: \"IFCSYMBOLSTYLE\",\n 626085974: \"IFCSURFACETEXTURE\",\n 1351298697: \"IFCSURFACESTYLEWITHTEXTURES\",\n 846575682: \"IFCSURFACESTYLESHADING\",\n 1607154358: \"IFCSURFACESTYLEREFRACTION\",\n 3303107099: \"IFCSURFACESTYLELIGHTING\",\n 1300840506: \"IFCSURFACESTYLE\",\n 3049322572: \"IFCSTYLEDREPRESENTATION\",\n 3958052878: \"IFCSTYLEDITEM\",\n 2830218821: \"IFCSTYLEMODEL\",\n 3408363356: \"IFCSTRUCTURALLOADTEMPERATURE\",\n 2525727697: \"IFCSTRUCTURALLOADSTATIC\",\n 2162789131: \"IFCSTRUCTURALLOAD\",\n 2273995522: \"IFCSTRUCTURALCONNECTIONCONDITION\",\n 3692461612: \"IFCSIMPLEPROPERTY\",\n 4240577450: \"IFCSHAPEREPRESENTATION\",\n 3982875396: \"IFCSHAPEMODEL\",\n 867548509: \"IFCSHAPEASPECT\",\n 4165799628: \"IFCSECTIONREINFORCEMENTPROPERTIES\",\n 2042790032: \"IFCSECTIONPROPERTIES\",\n 448429030: \"IFCSIUNIT\",\n 2341007311: \"IFCROOT\",\n 3679540991: \"IFCRIBPLATEPROFILEPROPERTIES\",\n 1660063152: \"IFCREPRESENTATIONMAP\",\n 3008791417: \"IFCREPRESENTATIONITEM\",\n 3377609919: \"IFCREPRESENTATIONCONTEXT\",\n 1076942058: \"IFCREPRESENTATION\",\n 1222501353: \"IFCRELAXATION\",\n 1580146022: \"IFCREINFORCEMENTBARPROPERTIES\",\n 2692823254: \"IFCREFERENCESVALUEDOCUMENT\",\n 825690147: \"IFCQUANTITYWEIGHT\",\n 2405470396: \"IFCQUANTITYVOLUME\",\n 3252649465: \"IFCQUANTITYTIME\",\n 931644368: \"IFCQUANTITYLENGTH\",\n 2093928680: \"IFCQUANTITYCOUNT\",\n 2044713172: \"IFCQUANTITYAREA\",\n 3710013099: \"IFCPROPERTYENUMERATION\",\n 148025276: \"IFCPROPERTYDEPENDENCYRELATIONSHIP\",\n 3896028662: \"IFCPROPERTYCONSTRAINTRELATIONSHIP\",\n 2598011224: \"IFCPROPERTY\",\n 2802850158: \"IFCPROFILEPROPERTIES\",\n 3958567839: \"IFCPROFILEDEF\",\n 2267347899: \"IFCPRODUCTSOFCOMBUSTIONPROPERTIES\",\n 2095639259: \"IFCPRODUCTREPRESENTATION\",\n 2417041796: \"IFCPRESENTATIONSTYLEASSIGNMENT\",\n 3119450353: \"IFCPRESENTATIONSTYLE\",\n 1304840413: \"IFCPRESENTATIONLAYERWITHSTYLE\",\n 2022622350: \"IFCPRESENTATIONLAYERASSIGNMENT\",\n 1775413392: \"IFCPREDEFINEDTEXTFONT\",\n 3213052703: \"IFCPREDEFINEDTERMINATORSYMBOL\",\n 990879717: \"IFCPREDEFINEDSYMBOL\",\n 3727388367: \"IFCPREDEFINEDITEM\",\n 3355820592: \"IFCPOSTALADDRESS\",\n 2226359599: \"IFCPHYSICALSIMPLEQUANTITY\",\n 2483315170: \"IFCPHYSICALQUANTITY\",\n 101040310: \"IFCPERSONANDORGANIZATION\",\n 2077209135: \"IFCPERSON\",\n 1207048766: \"IFCOWNERHISTORY\",\n 1411181986: \"IFCORGANIZATIONRELATIONSHIP\",\n 4251960020: \"IFCORGANIZATION\",\n 1227763645: \"IFCOPTICALMATERIALPROPERTIES\",\n 2251480897: \"IFCOBJECTIVE\",\n 3701648758: \"IFCOBJECTPLACEMENT\",\n 1918398963: \"IFCNAMEDUNIT\",\n 2706619895: \"IFCMONETARYUNIT\",\n 3368373690: \"IFCMETRIC\",\n 677618848: \"IFCMECHANICALSTEELMATERIALPROPERTIES\",\n 4256014907: \"IFCMECHANICALMATERIALPROPERTIES\",\n 2597039031: \"IFCMEASUREWITHUNIT\",\n 3265635763: \"IFCMATERIALPROPERTIES\",\n 2199411900: \"IFCMATERIALLIST\",\n 1303795690: \"IFCMATERIALLAYERSETUSAGE\",\n 3303938423: \"IFCMATERIALLAYERSET\",\n 248100487: \"IFCMATERIALLAYER\",\n 1847130766: \"IFCMATERIALCLASSIFICATIONRELATIONSHIP\",\n 1838606355: \"IFCMATERIAL\",\n 30780891: \"IFCLOCALTIME\",\n 1566485204: \"IFCLIGHTINTENSITYDISTRIBUTION\",\n 4162380809: \"IFCLIGHTDISTRIBUTIONDATA\",\n 3452421091: \"IFCLIBRARYREFERENCE\",\n 2655187982: \"IFCLIBRARYINFORMATION\",\n 3020489413: \"IFCIRREGULARTIMESERIESVALUE\",\n 852622518: \"IFCGRIDAXIS\",\n 3548104201: \"IFCEXTERNALLYDEFINEDTEXTFONT\",\n 3207319532: \"IFCEXTERNALLYDEFINEDSYMBOL\",\n 1040185647: \"IFCEXTERNALLYDEFINEDSURFACESTYLE\",\n 2242383968: \"IFCEXTERNALLYDEFINEDHATCHSTYLE\",\n 3200245327: \"IFCEXTERNALREFERENCE\",\n 1648886627: \"IFCENVIRONMENTALIMPACTVALUE\",\n 3796139169: \"IFCDRAUGHTINGCALLOUTRELATIONSHIP\",\n 770865208: \"IFCDOCUMENTINFORMATIONRELATIONSHIP\",\n 1154170062: \"IFCDOCUMENTINFORMATION\",\n 1376555844: \"IFCDOCUMENTELECTRONICFORMAT\",\n 2949456006: \"IFCDIMENSIONALEXPONENTS\",\n 1045800335: \"IFCDERIVEDUNITELEMENT\",\n 1765591967: \"IFCDERIVEDUNIT\",\n 1072939445: \"IFCDATEANDTIME\",\n 3510044353: \"IFCCURVESTYLEFONTPATTERN\",\n 2367409068: \"IFCCURVESTYLEFONTANDSCALING\",\n 1105321065: \"IFCCURVESTYLEFONT\",\n 539742890: \"IFCCURRENCYRELATIONSHIP\",\n 602808272: \"IFCCOSTVALUE\",\n 1065062679: \"IFCCOORDINATEDUNIVERSALTIMEOFFSET\",\n 347226245: \"IFCCONSTRAINTRELATIONSHIP\",\n 613356794: \"IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP\",\n 1658513725: \"IFCCONSTRAINTAGGREGATIONRELATIONSHIP\",\n 1959218052: \"IFCCONSTRAINT\",\n 2732653382: \"IFCCONNECTIONSURFACEGEOMETRY\",\n 4257277454: \"IFCCONNECTIONPORTGEOMETRY\",\n 2614616156: \"IFCCONNECTIONPOINTGEOMETRY\",\n 2859738748: \"IFCCONNECTIONGEOMETRY\",\n 3264961684: \"IFCCOLOURSPECIFICATION\",\n 3639012971: \"IFCCLASSIFICATIONNOTATIONFACET\",\n 938368621: \"IFCCLASSIFICATIONNOTATION\",\n 1098599126: \"IFCCLASSIFICATIONITEMRELATIONSHIP\",\n 1767535486: \"IFCCLASSIFICATIONITEM\",\n 747523909: \"IFCCLASSIFICATION\",\n 622194075: \"IFCCALENDARDATE\",\n 2069777674: \"IFCBOUNDARYNODECONDITIONWARPING\",\n 1387855156: \"IFCBOUNDARYNODECONDITION\",\n 3367102660: \"IFCBOUNDARYFACECONDITION\",\n 1560379544: \"IFCBOUNDARYEDGECONDITION\",\n 4037036970: \"IFCBOUNDARYCONDITION\",\n 3869604511: \"IFCAPPROVALRELATIONSHIP\",\n 390851274: \"IFCAPPROVALPROPERTYRELATIONSHIP\",\n 2080292479: \"IFCAPPROVALACTORRELATIONSHIP\",\n 130549933: \"IFCAPPROVAL\",\n 1110488051: \"IFCAPPLIEDVALUERELATIONSHIP\",\n 411424972: \"IFCAPPLIEDVALUE\",\n 639542469: \"IFCAPPLICATION\",\n 618182010: \"IFCADDRESS\",\n 3630933823: \"IFCACTORROLE\",\n 599546466: \"FILE_DESCRIPTION\",\n 1390159747: \"FILE_NAME\",\n 1109904537: \"FILE_SCHEMA\"\n};\nclass Kt {\n static async getUnits(s) {\n var n, r, a;\n const { IFCUNITASSIGNMENT: t } = b, e = await s.getAllPropertiesOfType(t);\n if (!e)\n return 1;\n const i = Object.keys(e), o = e[parseInt(i[0], 10)];\n for (const c of o.Units) {\n if (c.value === void 0 || c.value === null)\n continue;\n const h = await s.getProperties(c.value);\n if (!h || !h.UnitType || !h.UnitType.value || h.UnitType.value !== \"LENGTHUNIT\")\n continue;\n let E = 1, u = 1;\n return h.Name.value === \"METRE\" && (u = 1), h.Name.value === \"FOOT\" && (u = 0.3048), ((n = h.Prefix) == null ? void 0 : n.value) === \"MILLI\" ? E = 1e-3 : ((r = h.Prefix) == null ? void 0 : r.value) === \"CENTI\" ? E = 0.01 : ((a = h.Prefix) == null ? void 0 : a.value) === \"DECI\" && (E = 0.1), u * E;\n }\n return 1;\n }\n static async findItemByGuid(s, t) {\n var i;\n const e = s.getAllPropertiesIDs();\n for (const o of e) {\n const n = await s.getProperties(o);\n if (n && ((i = n.GlobalId) == null ? void 0 : i.value) === t)\n return n;\n }\n return null;\n }\n static async getRelationMap(s, t, e) {\n var a;\n const o = e ?? (async () => {\n }), n = {}, r = s.getAllPropertiesIDs();\n for (const c of r) {\n const h = await s.getProperties(c);\n if (!h)\n continue;\n const d = h.type === t, E = Object.keys(h).find(\n (C) => C.startsWith(\"Relating\")\n ), u = Object.keys(h).find(\n (C) => C.startsWith(\"Related\")\n );\n if (!(d && E && u))\n continue;\n const f = await s.getProperties((a = h[E]) == null ? void 0 : a.value), R = h[u];\n if (!f || !R || !(R && Array.isArray(R)))\n continue;\n const m = R.map((C) => C.value);\n await o(f.expressID, m), n[f.expressID] = m;\n }\n return n;\n }\n static async getQsetQuantities(s, t, e) {\n const o = e ?? (() => {\n }), n = await s.getProperties(t);\n return !n || n.type !== b.IFCELEMENTQUANTITY ? null : (n.Quantities ?? [{}]).map((c) => (c.value && o(c.value), c.value)).filter((c) => c !== null);\n }\n static async getPsetProps(s, t, e) {\n const o = e ?? (() => {\n }), n = await s.getProperties(t);\n return !n || n.type !== b.IFCPROPERTYSET ? null : (n.HasProperties ?? [{}]).map((c) => (c.value && o(c.value), c.value)).filter((c) => c !== null);\n }\n static async getPsetRel(s, t) {\n var r;\n if (!await s.getProperties(t))\n return null;\n const i = await s.getAllPropertiesOfType(\n b.IFCRELDEFINESBYPROPERTIES\n );\n if (!i)\n return null;\n const o = Object.values(i);\n let n = null;\n for (const a of o)\n ((r = a.RelatingPropertyDefinition) == null ? void 0 : r.value) === t && (n = a.expressID);\n return n;\n }\n static async getQsetRel(s, t) {\n return Kt.getPsetRel(s, t);\n }\n static async getEntityName(s, t) {\n var n;\n const e = await s.getProperties(t);\n if (!e)\n return { key: null, name: null };\n const i = Object.keys(e).find((r) => r.endsWith(\"Name\")) ?? null, o = i ? (n = e[i]) == null ? void 0 : n.value : null;\n return { key: i, name: o };\n }\n static async getQuantityValue(s, t) {\n const e = await s.getProperties(t);\n if (!e)\n return { key: null, value: null };\n const i = Object.keys(e).find((n) => n.endsWith(\"Value\")) ?? null;\n let o;\n return i === null || e[i] === void 0 || e[i] === null ? o = null : o = e[i].value, { key: i, value: o };\n }\n static isRel(s) {\n return Bn[s].startsWith(\"IFCREL\");\n }\n static async attributeExists(s, t, e) {\n const i = await s.getProperties(t);\n return i ? Object.keys(i).includes(e) : !1;\n }\n static async groupEntitiesByType(s, t) {\n var i;\n const e = /* @__PURE__ */ new Map();\n for (const o of t) {\n const n = await s.getProperties(o);\n if (!n)\n continue;\n const r = n.type;\n e.get(r) || e.set(r, /* @__PURE__ */ new Set()), (i = e.get(r)) == null || i.add(o);\n }\n return e;\n }\n // static getPropertyUnits(properties: IfcProperties, expressID: number) {\n // const entity = properties[expressID];\n // if (!entity) return null;\n // const propertyInstance =\n // entity instanceof WEBIFC.IFC2X3.IfcProperty ||\n // entity instanceof WEBIFC.IFC4.IfcProperty ||\n // entity instanceof WEBIFC.IFC4X3.IfcProperty;\n // if (!propertyInstance) return null;\n // const { key: valueKey } = IfcPropertiesUtils.getQuantityValue(\n // properties,\n // expressID\n // );\n // if (!valueKey) return null;\n // // @ts-ignore\n // const measureName = entity[valueKey].constructor.name as string;\n // const isMeasureAttribute = measureName.endsWith(\"Measure\");\n // if (!isMeasureAttribute) return null;\n // const measureType = measureName.slice(3, measureName.length - 7);\n // return propertyInstance;\n // }\n}\nclass Qr {\n constructor() {\n I(this, \"factor\", 1);\n I(this, \"complement\", 1);\n }\n apply(s) {\n const e = this.getScaleMatrix().multiply(s);\n s.copy(e);\n }\n setUp(s) {\n var o, n, r;\n this.factor = 1;\n const t = this.getLengthUnits(s);\n if (!t)\n return;\n const e = t == null, i = t.Name === void 0 || t.Name === null;\n e || i || (t.Name.value === \"FOOT\" && (this.factor = 0.3048), ((o = t.Prefix) == null ? void 0 : o.value) === \"MILLI\" ? this.complement = 1e-3 : ((n = t.Prefix) == null ? void 0 : n.value) === \"CENTI\" ? this.complement = 0.01 : ((r = t.Prefix) == null ? void 0 : r.value) === \"DECI\" && (this.complement = 0.01));\n }\n getLengthUnits(s) {\n try {\n const e = s.GetLineIDsWithType(\n 0,\n b.IFCUNITASSIGNMENT\n ).get(0), i = s.GetLine(0, e);\n for (const o of i.Units) {\n if (!o || o.value === null || o.value === void 0)\n continue;\n const n = s.GetLine(0, o.value);\n if (n.UnitType && n.UnitType.value === \"LENGTHUNIT\")\n return n;\n }\n return null;\n } catch {\n return console.log(\"Could not get units\"), null;\n }\n }\n getScaleMatrix() {\n const s = this.factor;\n return new g.Matrix4().fromArray([\n s,\n 0,\n 0,\n 0,\n 0,\n s,\n 0,\n 0,\n 0,\n 0,\n s,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n}\nclass Yn {\n constructor() {\n I(this, \"itemsByFloor\", {});\n I(this, \"_units\", new Qr());\n }\n // TODO: Maybe make this more flexible so that it also support more exotic spatial structures?\n setUp(s) {\n this._units.setUp(s), this.cleanUp();\n try {\n const t = s.GetLineIDsWithType(\n 0,\n b.IFCRELCONTAINEDINSPATIALSTRUCTURE\n ), e = /* @__PURE__ */ new Set(), i = s.GetLineIDsWithType(0, b.IFCSPACE);\n for (let c = 0; c < i.size(); c++)\n e.add(i.get(c));\n const o = s.GetLineIDsWithType(0, b.IFCRELAGGREGATES), n = o.size();\n for (let c = 0; c < n; c++) {\n const h = o.get(c), d = s.GetLine(0, h);\n if (!d || !d.RelatingObject || !d.RelatedObjects)\n continue;\n const E = d.RelatingObject.value, u = d.RelatedObjects;\n for (const f of u) {\n const R = f.value;\n e.has(R) && (this.itemsByFloor[R] = E);\n }\n }\n const r = {}, a = t.size();\n for (let c = 0; c < a; c++) {\n const h = t.get(c), d = s.GetLine(0, h);\n if (!d || !d.RelatingStructure || !d.RelatedElements)\n continue;\n const E = d.RelatingStructure.value, u = d.RelatedElements;\n if (e.has(E))\n for (const f of u) {\n r[E] || (r[E] = []);\n const R = f.value;\n r[E].push(R);\n }\n else\n for (const f of u) {\n const R = f.value;\n this.itemsByFloor[R] = E;\n }\n }\n for (const c in r) {\n const h = this.itemsByFloor[c];\n if (h !== void 0) {\n const d = r[c];\n for (const E of d)\n this.itemsByFloor[E] = h;\n }\n }\n for (let c = 0; c < n; c++) {\n const h = o.get(c), d = s.GetLine(0, h);\n if (!d || !d.RelatingObject || !d.RelatedObjects)\n continue;\n const E = d.RelatingObject.value, u = d.RelatedObjects;\n for (const f of u) {\n const R = f.value, m = this.itemsByFloor[E];\n m !== void 0 && (this.itemsByFloor[R] = m);\n }\n }\n } catch {\n console.log(\"Could not get floors.\");\n }\n }\n cleanUp() {\n this.itemsByFloor = {};\n }\n}\nclass Li {\n constructor() {\n /** Whether to extract the IFC properties into a JSON. */\n I(this, \"includeProperties\", !0);\n /**\n * Generate the geometry for categories that are not included by default,\n * like IFCSPACE.\n */\n I(this, \"optionalCategories\", [b.IFCSPACE]);\n /** Whether to use the coordination data coming from the IFC files. */\n I(this, \"coordinate\", !0);\n /** Path of the WASM for [web-ifc](https://github.com/ThatOpen/engine_web-ifc). */\n I(this, \"wasm\", {\n path: \"\",\n absolute: !1,\n logLevel: b.LogLevel.LOG_LEVEL_OFF\n });\n /** List of categories that won't be converted to fragments. */\n I(this, \"excludedCategories\", /* @__PURE__ */ new Set());\n /** Whether to save the absolute location of all IFC items. */\n I(this, \"saveLocations\", !1);\n /** Loader settings for [web-ifc](https://github.com/ThatOpen/engine_web-ifc). */\n I(this, \"webIfc\", {\n COORDINATE_TO_ORIGIN: !0\n // OPTIMIZE_PROFILES: true,\n });\n /**\n * Whether to automatically set the path to the WASM file for [web-ifc](https://github.com/ThatOpen/engine_web-ifc).\n * If set to true, the path will be set to the default path of the WASM file.\n * If set to false, the path must be provided manually in the `wasm.path` property.\n * Default value is true.\n */\n I(this, \"autoSetWasm\", !0);\n /**\n * Custom function to handle the file location for [web-ifc](https://github.com/ThatOpen/engine_web-ifc).\n * This function will be called when [web-ifc](https://github.com/ThatOpen/engine_web-ifc) needs to locate a file.\n * If set to null, the default file location handler will be used.\n *\n * @param url - The URL of the file to locate.\n * @returns The absolute path of the file.\n */\n I(this, \"customLocateFileHandler\", null);\n }\n}\nclass Vn {\n constructor() {\n I(this, \"defLineMat\", new g.LineBasicMaterial({ color: 16777215 }));\n }\n read(s) {\n const t = s.GetAllAlignments(0), e = s.GetAllCrossSections2D(0), i = s.GetAllCrossSections3D(0), o = {\n IfcAlignment: t,\n IfcCrossSection2D: e,\n IfcCrossSection3D: i\n };\n return this.get(o);\n }\n get(s) {\n if (s.IfcAlignment) {\n const t = /* @__PURE__ */ new Map();\n for (const e of s.IfcAlignment) {\n const i = new Vt.Alignment();\n i.absolute = this.getCurves(e.curve3D, i), i.horizontal = this.getCurves(e.horizontal, i), i.vertical = this.getCurves(e.vertical, i), t.set(t.size, i);\n }\n return { alignments: t, coordinationMatrix: new g.Matrix4() };\n }\n }\n getCurves(s, t) {\n const e = [];\n let i = 0;\n for (const o of s) {\n const n = {};\n if (o.data)\n for (const E of o.data) {\n const [u, f] = E.split(\": \"), R = parseFloat(f);\n n[u] = R || f;\n }\n const { points: r } = o, a = new Float32Array(r.length * 3);\n for (let E = 0; E < r.length; E++) {\n const { x: u, y: f, z: R } = r[E];\n a[E * 3] = u, a[E * 3 + 1] = f, a[E * 3 + 2] = R || 0;\n }\n const c = new g.BufferAttribute(a, 3), h = new g.EdgesGeometry();\n h.setAttribute(\"position\", c);\n const d = new Vt.CurveMesh(\n i,\n n,\n t,\n h,\n this.defLineMat\n );\n e.push(d.curve), i++;\n }\n return e;\n }\n}\nclass Gn {\n getNameInfo(s) {\n var d;\n const t = {}, { arguments: e } = s.GetHeaderLine(0, b.FILE_NAME) || {};\n if (!e)\n return t;\n const [\n i,\n o,\n n,\n r,\n a,\n c,\n h\n ] = e;\n if (i != null && i.value && (t.name = i.value), o != null && o.value && (t.creationDate = new Date(o.value)), n) {\n t.author = {};\n const [E, u] = n;\n E != null && E.value && (t.author.name = E.value), u != null && u.value && (t.author.email = u.value);\n }\n return (d = r[0]) != null && d.value && (t.organization = r[0].value), a != null && a.value && (t.preprocessorVersion = a == null ? void 0 : a.value), c != null && c.value && (t.originatingSystem = c == null ? void 0 : c.value), h != null && h.value && (t.authorization = h == null ? void 0 : h.value), t;\n }\n getDescriptionInfo(s) {\n var n;\n const t = {}, { arguments: e } = s.GetHeaderLine(0, b.FILE_DESCRIPTION) || {};\n if (!e)\n return t;\n const [i, o] = e;\n if ((n = i[0]) != null && n.value) {\n const r = i[0].value.match(/\\[([^\\]]+)\\]/);\n r && r[1] && (t.viewDefinition = r[1]);\n }\n return o != null && o.value && (t.implementationLevel = o.value), t;\n }\n}\nconst Ve = class Ve extends et {\n constructor(t) {\n super(t);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * An event triggered when the IFC file starts loading.\n */\n I(this, \"onIfcStartedLoading\", new D());\n /**\n * An event triggered when the setup process is completed.\n */\n I(this, \"onSetup\", new D());\n /**\n * The settings for the IfcLoader.\n * It includes options for excluding categories, setting WASM paths, and more.\n */\n I(this, \"settings\", new Li());\n /**\n * The instance of the Web-IFC library used for handling IFC data.\n */\n I(this, \"webIfc\", new b.IfcAPI());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n I(this, \"_material\", new g.MeshLambertMaterial());\n I(this, \"_spatialTree\", new Yn());\n I(this, \"_metaData\", new Gn());\n I(this, \"_fragmentInstances\", /* @__PURE__ */ new Map());\n I(this, \"_civil\", new Vn());\n I(this, \"_visitedFragments\", /* @__PURE__ */ new Map());\n I(this, \"_materialT\", new g.MeshLambertMaterial({\n transparent: !0,\n opacity: 0.5\n }));\n this.components.add(Ve.uuid, this), this.settings.excludedCategories.add(b.IFCOPENINGELEMENT);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.webIfc = null, this.onDisposed.trigger(Ve.uuid), this.onDisposed.reset();\n }\n /**\n * Sets up the IfcLoader component with the provided configuration.\n *\n * @param config - Optional configuration settings for the IfcLoader.\n * If not provided, the existing settings will be used.\n *\n * @returns A Promise that resolves when the setup process is completed.\n *\n * @remarks\n * If the `autoSetWasm` option is enabled in the configuration,\n * the method will automatically set the WASM paths for the Web-IFC library.\n *\n * @example\n * ```typescript\n * const ifcLoader = new IfcLoader(components);\n * await ifcLoader.setup({ autoSetWasm: true });\n * ```\n */\n async setup(t) {\n this.settings = { ...this.settings, ...t }, this.settings.autoSetWasm && await this.autoSetWasm(), this.onSetup.trigger();\n }\n /**\n * Loads an IFC file and processes it for 3D visualization.\n *\n * @param data - The Uint8Array containing the IFC file data.\n * @param coordinate - Optional boolean indicating whether to coordinate the loaded IFC data. Default is true.\n *\n * @returns A Promise that resolves to the FragmentsGroup containing the loaded and processed IFC data.\n *\n * @example\n * ```typescript\n * const ifcLoader = components.get(IfcLoader);\n * const group = await ifcLoader.load(ifcData);\n * ```\n */\n async load(t, e = !0) {\n const i = performance.now();\n this.onIfcStartedLoading.trigger(), await this.readIfcFile(t);\n const o = await this.getAllGeometries(), r = await this.components.get(mi).export(this.webIfc, 0);\n o.setLocalProperties(r), this.cleanUp();\n const a = this.components.get(ht);\n a.groups.set(o.uuid, o);\n for (const c of o.items)\n a.list.set(c.id, c), c.mesh.uuid = c.id, c.group = o;\n a.onFragmentsLoaded.trigger(o), e && a.coordinate([o]);\n for (const [c] of o.data) {\n const h = r[c];\n if (!h || !h.GlobalId)\n continue;\n const d = h.GlobalId.value || h.GlobalId;\n o.globalToExpressIDs.set(d, c);\n }\n return console.log(`Streaming the IFC took ${performance.now() - i} ms!`), o;\n }\n /**\n * Reads an IFC file and initializes the Web-IFC library.\n *\n * @param data - The Uint8Array containing the IFC file data.\n *\n * @returns A Promise that resolves when the IFC file is opened and initialized.\n *\n * @remarks\n * This method sets the WASM path and initializes the Web-IFC library based on the provided settings.\n * It also opens the IFC model using the provided data and settings.\n *\n * @example\n * ```typescript\n * const ifcLoader = components.get(IfcLoader);\n * await ifcLoader.readIfcFile(ifcData);\n * ```\n */\n async readIfcFile(t) {\n const { path: e, absolute: i, logLevel: o } = this.settings.wasm;\n return this.webIfc.SetWasmPath(e, i), await this.webIfc.Init(), o && this.webIfc.SetLogLevel(o), this.webIfc.OpenModel(t, this.settings.webIfc);\n }\n /**\n * Cleans up the IfcLoader component by resetting the Web-IFC library,\n * clearing the visited fragments and fragment instances maps, and creating a new instance of the Web-IFC library.\n *\n * @remarks\n * This method is called automatically after using the .load() method, so usually you don't need to use it manually.\n *\n * @example\n * ```typescript\n * const ifcLoader = components.get(IfcLoader);\n * ifcLoader.cleanUp();\n * ```\n */\n cleanUp() {\n this.webIfc = null, this.webIfc = new b.IfcAPI(), this._visitedFragments.clear(), this._fragmentInstances.clear();\n }\n async getAllGeometries() {\n this._spatialTree.setUp(this.webIfc);\n const t = this.webIfc.GetIfcEntityList(0), e = new Vt.FragmentsGroup();\n e.ifcMetadata = {\n name: \"\",\n description: \"\",\n ...this._metaData.getNameInfo(this.webIfc),\n ...this._metaData.getDescriptionInfo(this.webIfc),\n schema: this.webIfc.GetModelSchema(0) || \"IFC2X3\",\n maxExpressID: this.webIfc.GetMaxExpressID(0)\n };\n const i = [];\n for (const n of t) {\n if (!this.webIfc.IsIfcElement(n) && n !== b.IFCSPACE || this.settings.excludedCategories.has(n))\n continue;\n const r = this.webIfc.GetLineIDsWithType(0, n), a = r.size();\n for (let c = 0; c < a; c++) {\n const h = r.get(c);\n i.push(h);\n const d = this._spatialTree.itemsByFloor[h] || 0;\n e.data.set(h, [[], [d, n]]);\n }\n }\n this._spatialTree.cleanUp(), this.webIfc.StreamMeshes(0, i, (n) => {\n this.getMesh(n, e);\n });\n for (const n of this._visitedFragments) {\n const { index: r, fragment: a } = n[1];\n e.keyFragments.set(r, a.id);\n }\n for (const n of e.items) {\n const r = this._fragmentInstances.get(n.id);\n if (!r)\n throw new Error(\"Fragment not found!\");\n const a = [];\n for (const [c, h] of r)\n a.push(h);\n n.add(a);\n }\n const o = this.webIfc.GetCoordinationMatrix(0);\n return e.coordinationMatrix.fromArray(o), e.civilData = this._civil.read(this.webIfc), e;\n }\n getMesh(t, e) {\n const i = t.geometries.size(), o = t.expressID;\n for (let n = 0; n < i; n++) {\n const r = t.geometries.get(n), { x: a, y: c, z: h, w: d } = r.color, E = d !== 1, { geometryExpressID: u } = r, f = `${u}-${E}`;\n if (!this._visitedFragments.has(f)) {\n const T = this.getGeometry(this.webIfc, u), O = E ? this._materialT : this._material, _ = new Vt.Fragment(T, O, 1);\n e.add(_.mesh), e.items.push(_);\n const S = this._visitedFragments.size;\n this._visitedFragments.set(f, { index: S, fragment: _ });\n }\n const R = new g.Color().setRGB(a, c, h, \"srgb\"), m = new g.Matrix4();\n m.fromArray(r.flatTransformation);\n const C = this._visitedFragments.get(f);\n if (C === void 0)\n throw new Error(\"Error getting geometry data for streaming!\");\n const A = e.data.get(o);\n if (!A)\n throw new Error(\"Data not found!\");\n A[0].push(C.index);\n const { fragment: F } = C;\n this._fragmentInstances.has(F.id) || this._fragmentInstances.set(F.id, /* @__PURE__ */ new Map());\n const p = this._fragmentInstances.get(F.id);\n if (!p)\n throw new Error(\"Instances not found!\");\n if (p.has(o)) {\n const T = p.get(o);\n if (!T)\n throw new Error(\"Instance not found!\");\n T.transforms.push(m), T.colors && T.colors.push(R);\n } else\n p.set(o, { id: o, transforms: [m], colors: [R] });\n }\n }\n getGeometry(t, e) {\n const i = t.GetGeometry(0, e), o = t.GetIndexArray(\n i.GetIndexData(),\n i.GetIndexDataSize()\n ), n = t.GetVertexArray(\n i.GetVertexData(),\n i.GetVertexDataSize()\n ), r = new Float32Array(n.length / 2), a = new Float32Array(n.length / 2);\n for (let E = 0; E < n.length; E += 6)\n r[E / 2] = n[E], r[E / 2 + 1] = n[E + 1], r[E / 2 + 2] = n[E + 2], a[E / 2] = n[E + 3], a[E / 2 + 1] = n[E + 4], a[E / 2 + 2] = n[E + 5];\n const c = new g.BufferGeometry(), h = new g.BufferAttribute(r, 3), d = new g.BufferAttribute(a, 3);\n return c.setAttribute(\"position\", h), c.setAttribute(\"normal\", d), c.setIndex(Array.from(o)), i.delete(), c;\n }\n async autoSetWasm() {\n const t = await fetch(\n `https://unpkg.com/@thatopen/components@${pi.release}/package.json`\n );\n if (!t.ok) {\n console.warn(\n \"Couldn't get openbim-components package.json. Set wasm settings manually.\"\n );\n return;\n }\n const e = await t.json();\n if (!(\"web-ifc\" in e.peerDependencies))\n console.warn(\n \"Couldn't get web-ifc from peer dependencies in openbim-components. Set wasm settings manually.\"\n );\n else {\n const i = e.peerDependencies[\"web-ifc\"];\n this.settings.wasm.path = `https://unpkg.com/web-ifc@${i}/`, this.settings.wasm.absolute = !0;\n }\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ve, \"uuid\", \"a659add7-1418-4771-a0d6-7d4d438e4624\");\nlet Ri = Ve;\nconst Bt = class Bt extends et {\n constructor(t) {\n super(t);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * Event triggered when a file is requested for export.\n */\n I(this, \"onRequestFile\", new D());\n /**\n * ArrayBuffer containing the IFC data to be exported.\n */\n I(this, \"ifcToExport\", null);\n /**\n * Event triggered when an element is added to a Pset.\n */\n I(this, \"onElementToPset\", new D());\n /**\n * Event triggered when a property is added to a Pset.\n */\n I(this, \"onPropToPset\", new D());\n /**\n * Event triggered when a Pset is removed.\n */\n I(this, \"onPsetRemoved\", new D());\n /**\n * Event triggered when data in the model changes.\n */\n I(this, \"onDataChanged\", new D());\n /**\n * Configuration for the WebAssembly module.\n */\n I(this, \"wasm\", {\n path: \"/\",\n absolute: !1\n });\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /**\n * Map of attribute listeners.\n */\n I(this, \"attributeListeners\", {});\n /**\n * The currently selected model.\n */\n I(this, \"selectedModel\");\n /**\n * Map of changed entities in the model.\n */\n I(this, \"changeMap\", {});\n this.components.add(Bt.uuid, this);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.selectedModel = void 0, this.attributeListeners = {}, this.changeMap = {}, this.onElementToPset.reset(), this.onPropToPset.reset(), this.onPsetRemoved.reset(), this.onDataChanged.reset(), this.onDisposed.trigger(Bt.uuid), this.onDisposed.reset();\n }\n /**\n * Static method to retrieve the IFC schema from a given model.\n *\n * @param model - The FragmentsGroup model from which to retrieve the IFC schema.\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @returns The IFC schema associated with the given model.\n */\n static getIFCSchema(t) {\n const e = t.ifcMetadata.schema;\n if (!e)\n throw new Error(\"IFC Schema not found\");\n return e;\n }\n /**\n * Method to set properties data in the model.\n *\n * @param model - The FragmentsGroup model in which to set the properties.\n * @param dataToSave - An array of objects representing the properties to be saved.\n * Each object must have an `expressID` property, which is the express ID of the entity in the model.\n * The rest of the properties will be set as the properties of the entity.\n *\n * @returns {Promise} A promise that resolves when all the properties have been set.\n *\n * @throws Will throw an error if any of the `expressID` properties are missing in the `dataToSave` array.\n */\n async setData(t, ...e) {\n for (const i of e) {\n const o = i.expressID;\n o && (await t.setProperties(o, i), this.registerChange(t, o));\n }\n }\n /**\n * Creates a new Property Set (Pset) in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the Pset.\n * @param name - The name of the Pset.\n * @param description - (Optional) The description of the Pset.\n *\n * @returns A promise that resolves with an object containing the newly created Pset and its relation.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n async newPset(t, e, i) {\n const o = Bt.getIFCSchema(t), { ownerHistoryHandle: n } = await this.getOwnerHistory(t), r = this.newGUID(t), a = new b[o].IfcLabel(e), c = i ? new b[o].IfcText(i) : null, h = new b[o].IfcPropertySet(\n r,\n n,\n a,\n c,\n []\n );\n h.expressID = this.increaseMaxID(t);\n const d = this.newGUID(t), E = new b[o].IfcRelDefinesByProperties(\n d,\n n,\n null,\n null,\n [],\n new b.Handle(h.expressID)\n );\n return E.expressID = this.increaseMaxID(t), await this.setData(t, h, E), { pset: h, rel: E };\n }\n /**\n * Removes a Property Set (Pset) from the given model.\n *\n * @param model - The FragmentsGroup model from which to remove the Pset.\n * @param psetID - The express IDs of the Psets to be removed.\n *\n * @returns {Promise} A promise that resolves when all the Psets have been removed.\n *\n * @throws Will throw an error if any of the `expressID` properties are missing in the `psetID` array.\n * @throws Will throw an error if the Pset to be removed is not of type `IFCPROPERTYSET`.\n * @throws Will throw an error if no relation is found between the Pset and the model.\n */\n async removePset(t, ...e) {\n for (const i of e) {\n const o = await t.getProperties(i);\n if ((o == null ? void 0 : o.type) !== b.IFCPROPERTYSET)\n continue;\n const n = await Kt.getPsetRel(t, i);\n if (n && (await t.setProperties(n, null), this.registerChange(t, n)), o) {\n for (const r of o.HasProperties)\n await t.setProperties(r.value, null);\n await t.setProperties(i, null), this.onPsetRemoved.trigger({ model: t, psetID: i }), this.registerChange(t, i);\n }\n }\n }\n /**\n * Creates a new single-value property of type string in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the property.\n * @param type - The type of the property value. Must be a string property type.\n * @param name - The name of the property.\n * @param value - The value of the property. Must be a string.\n *\n * @returns The newly created single-value property.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n newSingleStringProperty(t, e, i, o) {\n return this.newSingleProperty(t, e, i, o);\n }\n /**\n * Creates a new single-value property of type numeric in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the property.\n * @param type - The type of the property value. Must be a numeric property type.\n * @param name - The name of the property.\n * @param value - The value of the property. Must be a number.\n *\n * @returns The newly created single-value property.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n newSingleNumericProperty(t, e, i, o) {\n return this.newSingleProperty(t, e, i, o);\n }\n /**\n * Creates a new single-value property of type boolean in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the property.\n * @param type - The type of the property value. Must be a boolean property type.\n * @param name - The name of the property.\n * @param value - The value of the property. Must be a boolean.\n *\n * @returns The newly created single-value property.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n newSingleBooleanProperty(t, e, i, o) {\n return this.newSingleProperty(t, e, i, o);\n }\n /**\n * Removes a property from a Property Set (Pset) in the given model.\n *\n * @param model - The FragmentsGroup model from which to remove the property.\n * @param psetID - The express ID of the Pset from which to remove the property.\n * @param propID - The express ID of the property to be removed.\n *\n * @returns {Promise} A promise that resolves when the property has been removed.\n *\n * @throws Will throw an error if the Pset or the property to be removed are not found in the model.\n * @throws Will throw an error if the Pset to be removed is not of type `IFCPROPERTYSET`.\n */\n async removePsetProp(t, e, i) {\n const o = await t.getProperties(e), n = await t.getProperties(i);\n !o || !n || o.type === b.IFCPROPERTYSET && n && (o.HasProperties = o.HasProperties.filter((r) => r.value !== i), await t.setProperties(i, null), this.registerChange(t, e, i));\n }\n async addElementToPset(t, e, ...i) {\n const o = await Kt.getPsetRel(t, e);\n if (!o)\n return;\n const n = await t.getProperties(o);\n if (n) {\n for (const r of i) {\n const a = new b.Handle(r);\n n.RelatedObjects.push(a), this.onElementToPset.trigger({\n model: t,\n psetID: e,\n elementID: r\n });\n }\n this.registerChange(t, e);\n }\n }\n /**\n * Adds elements to a Property Set (Pset) in the given model.\n *\n * @param model - The FragmentsGroup model in which to add the elements.\n * @param psetID - The express ID of the Pset to which to add the elements.\n * @param elementID - The express IDs of the elements to be added.\n *\n * @returns {Promise} A promise that resolves when all the elements have been added.\n *\n * @throws Will throw an error if the Pset or the elements to be added are not found in the model.\n * @throws Will throw an error if the Pset to be added to is not of type `IFCPROPERTYSET`.\n * @throws Will throw an error if no relation is found between the Pset and the model.\n */\n async addPropToPset(t, e, ...i) {\n const o = await t.getProperties(e);\n if (o) {\n for (const n of i) {\n if (o.HasProperties.includes(n))\n continue;\n const r = new b.Handle(n);\n o.HasProperties.push(r), this.onPropToPset.trigger({ model: t, psetID: e, propID: n });\n }\n this.registerChange(t, e);\n }\n }\n /**\n * Saves the changes made to the model to a new IFC file.\n *\n * @param model - The FragmentsGroup model from which to save the changes.\n * @param ifcToSaveOn - The Uint8Array representing the original IFC file.\n *\n * @returns A promise that resolves with the modified IFC data as a Uint8Array.\n *\n * @throws Will throw an error if any issues occur during the saving process.\n */\n async saveToIfc(t, e) {\n const i = this.components.get(Ri), o = i.webIfc, n = await i.readIfcFile(e), r = this.changeMap[t.uuid] ?? [];\n for (const c of r) {\n const h = await t.getProperties(c);\n if (h)\n try {\n o.WriteLine(n, h);\n } catch {\n }\n else\n try {\n o.DeleteLine(n, c);\n } catch {\n }\n }\n const a = o.SaveModel(n);\n return i.webIfc.CloseModel(n), i.cleanUp(), a;\n }\n /**\n * Sets an attribute listener for a specific attribute of an entity in the model.\n * The listener will trigger an event whenever the attribute's value changes.\n *\n * @param model - The FragmentsGroup model in which to set the attribute listener.\n * @param expressID - The express ID of the entity for which to set the listener.\n * @param attributeName - The name of the attribute for which to set the listener.\n *\n * @returns The event that will be triggered when the attribute's value changes.\n *\n * @throws Will throw an error if the entity with the given expressID doesn't exist.\n * @throws Will throw an error if the attribute is an array or null, and it can't have a listener.\n * @throws Will throw an error if the attribute has a badly defined handle.\n */\n async setAttributeListener(t, e, i) {\n this.attributeListeners[t.uuid] || (this.attributeListeners[t.uuid] = {});\n const o = this.attributeListeners[t.uuid][e] ? this.attributeListeners[t.uuid][e][i] : null;\n if (o)\n return o;\n const n = await t.getProperties(e);\n if (!n)\n throw new Error(`Entity with expressID ${e} doesn't exists.`);\n const r = n[i];\n if (Array.isArray(r) || !r)\n throw new Error(\n `Attribute ${i} is array or null, and it can't have a listener.`\n );\n const a = r.value;\n if (a === void 0 || a == null)\n throw new Error(`Attribute ${i} has a badly defined handle.`);\n const c = new D();\n return Object.defineProperty(n[i], \"value\", {\n get() {\n return this._value;\n },\n async set(h) {\n this._value = h, c.trigger(h);\n }\n }), n[i].value = a, this.attributeListeners[t.uuid][e] || (this.attributeListeners[t.uuid][e] = {}), this.attributeListeners[t.uuid][e][i] = c, c;\n }\n increaseMaxID(t) {\n return t.ifcMetadata.maxExpressID++, t.ifcMetadata.maxExpressID;\n }\n newGUID(t) {\n const e = Bt.getIFCSchema(t);\n return new b[e].IfcGloballyUniqueId(Ge.create());\n }\n async getOwnerHistory(t) {\n const e = await t.getAllPropertiesOfType(\n b.IFCOWNERHISTORY\n );\n if (!e)\n throw new Error(\"No OwnerHistory was found.\");\n const i = Object.keys(e).map((r) => parseInt(r, 10)), o = e[i[0]], n = new b.Handle(o.expressID);\n return { ownerHistory: o, ownerHistoryHandle: n };\n }\n registerChange(t, ...e) {\n this.changeMap[t.uuid] || (this.changeMap[t.uuid] = /* @__PURE__ */ new Set());\n for (const i of e)\n this.changeMap[t.uuid].add(i), this.onDataChanged.trigger({ model: t, expressID: i });\n }\n async newSingleProperty(t, e, i, o) {\n const n = Bt.getIFCSchema(t), r = new b[n].IfcIdentifier(i), a = new b[n][e](o), c = new b[n].IfcPropertySingleValue(\n r,\n null,\n a,\n null\n );\n return c.expressID = this.increaseMaxID(t), await this.setData(t, c), c;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Bt, \"uuid\", \"58c2d9f0-183c-48d6-a402-dfcf5b9a34df\");\nlet On = Bt;\nconst Ls = class Ls extends et {\n constructor(t) {\n super(t);\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /**\n * A map representing the classification systems.\n * The key is the system name, and the value is an object representing the classes within the system.\n */\n I(this, \"list\", {});\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n I(this, \"onFragmentsDisposed\", (t) => {\n const { groupID: e, fragmentIDs: i } = t;\n for (const o in this.list) {\n const n = this.list[o], r = Object.keys(n);\n if (r.includes(e))\n delete n[e], Object.values(n).length === 0 && delete this.list[o];\n else\n for (const a of r) {\n const c = n[a];\n for (const h of i)\n delete c[h];\n Object.values(c).length === 0 && delete n[a];\n }\n }\n });\n t.add(Ls.uuid, this), t.get(ht).onFragmentsDisposed.add(this.onFragmentsDisposed);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.list = {}, this.components.get(ht).onFragmentsDisposed.remove(this.onFragmentsDisposed), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Removes a fragment from the classification based on its unique identifier (guid).\n * This method iterates through all classification systems and classes, and deletes the fragment with the specified guid from the respective group.\n *\n * @param guid - The unique identifier of the fragment to be removed.\n */\n remove(t) {\n for (const e in this.list) {\n const i = this.list[e];\n for (const o in i) {\n const n = i[o];\n delete n[t];\n }\n }\n }\n /**\n * Finds and returns fragments based on the provided filter criteria.\n * If no filter is provided, it returns all fragments.\n *\n * @param filter - An optional object containing filter criteria.\n * The keys of the object represent the classification system names,\n * and the values are arrays of class names to match.\n *\n * @returns A map of fragment GUIDs to their respective express IDs,\n * where the express IDs are filtered based on the provided filter criteria.\n *\n * @throws Will throw an error if the fragments map is malformed.\n */\n find(t) {\n const e = this.components.get(ht);\n if (!t) {\n const r = {};\n for (const [a, c] of e.list)\n r[a] = new Set(c.ids);\n return r;\n }\n const i = Object.keys(t).length, o = {};\n for (const r in t) {\n const a = t[r];\n if (!this.list[r]) {\n console.warn(`Classification ${r} does not exist.`);\n continue;\n }\n for (const c of a) {\n const h = this.list[r][c];\n if (h)\n for (const d in h) {\n o[d] || (o[d] = /* @__PURE__ */ new Map());\n for (const E of h[d]) {\n const u = o[d].get(E);\n u === void 0 ? o[d].set(E, 1) : o[d].set(E, u + 1);\n }\n }\n }\n }\n const n = {};\n for (const r in o) {\n const a = o[r];\n for (const [c, h] of a) {\n if (h === void 0)\n throw new Error(\"Malformed fragments map!\");\n h === i && (n[r] || (n[r] = /* @__PURE__ */ new Set()), n[r].add(c));\n }\n }\n return n;\n }\n /**\n * Classifies fragments based on their modelID.\n *\n * @param modelID - The unique identifier of the model to classify fragments by.\n * @param group - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the fragments in the provided group,\n * and classifies them based on their modelID.\n * The classification is stored in the `list.models` property,\n * with the modelID as the key and a map of fragment IDs to their respective express IDs as the value.\n *\n */\n byModel(t, e) {\n this.list.models || (this.list.models = {});\n const i = this.list.models;\n i[t] || (i[t] = {});\n const o = i[t];\n for (const [n, r] of e.data) {\n const a = r[0];\n for (const c of a) {\n const h = e.keyFragments.get(c);\n h && (o[h] || (o[h] = /* @__PURE__ */ new Set()), o[h].add(n));\n }\n }\n }\n /**\n * Classifies fragments based on their PredefinedType property.\n *\n * @param group - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the properties of the fragments in the provided group,\n * and classifies them based on their PredefinedType property.\n * The classification is stored in the `list.predefinedTypes` property,\n * with the PredefinedType as the key and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found.\n */\n async byPredefinedType(t) {\n var o;\n this.list.predefinedTypes || (this.list.predefinedTypes = {});\n const e = this.list.predefinedTypes, i = t.getAllPropertiesIDs();\n for (const n of i) {\n const r = await t.getProperties(n);\n if (!r)\n continue;\n const a = String((o = r.PredefinedType) == null ? void 0 : o.value).toUpperCase();\n e[a] || (e[a] = {});\n const c = e[a];\n for (const [h, d] of t.data) {\n const E = d[0];\n for (const u of E) {\n const f = t.keyFragments.get(u);\n if (!f)\n throw new Error(\"Fragment ID not found!\");\n c[f] || (c[f] = /* @__PURE__ */ new Set()), c[f].add(r.expressID);\n }\n }\n }\n }\n /**\n * Classifies fragments based on their entity type.\n *\n * @param group - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the relations of the fragments in the provided group,\n * and classifies them based on their entity type.\n * The classification is stored in the `list.entities` property,\n * with the entity type as the key and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found.\n */\n byEntity(t) {\n this.list.entities || (this.list.entities = {});\n for (const [e, i] of t.data) {\n const n = i[1][1], r = Bn[n];\n this.saveItem(t, \"entities\", r, e);\n }\n }\n /**\n * Classifies fragments based on a specific IFC relationship.\n *\n * @param group - The FragmentsGroup containing the fragments to be classified.\n * @param ifcRel - The IFC relationship number to classify fragments by.\n * @param systemName - The name of the classification system to store the classification.\n *\n * @remarks\n * This method iterates through the relations of the fragments in the provided group,\n * and classifies them based on the specified IFC relationship.\n * The classification is stored in the `list` property under the specified system name,\n * with the relationship name as the class name and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found or if the IFC relationship is not valid.\n */\n async byIfcRel(t, e, i) {\n Kt.isRel(e) && await Kt.getRelationMap(\n t,\n e,\n async (o, n) => {\n const { name: r } = await Kt.getEntityName(\n t,\n o\n );\n for (const a of n)\n this.saveItem(\n t,\n i,\n r ?? \"NO REL NAME\",\n a\n );\n }\n );\n }\n /**\n * Classifies fragments based on their spatial structure in the IFC model.\n *\n * @param model - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the relations of the fragments in the provided group,\n * and classifies them based on their spatial structure in the IFC model.\n * The classification is stored in the `list` property under the system name \"spatialStructures\",\n * with the relationship name as the class name and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found or if the model relations do not exist.\n */\n async bySpatialStructure(t) {\n var n, r;\n const e = this.components.get(ke), i = e.relationMaps[t.uuid];\n if (!i)\n throw new Error(\n `Classifier: model relations of ${t.name || t.uuid} have to exists to group by spatial structure.`\n );\n const o = \"spatialStructures\";\n for (const [a] of i) {\n const c = e.getEntityRelations(\n t,\n a,\n \"Decomposes\"\n );\n if (c)\n for (const u of c) {\n const f = await t.getProperties(u);\n if (!f)\n continue;\n const R = (n = f.Name) == null ? void 0 : n.value;\n this.saveItem(t, o, R, a);\n }\n const h = e.getEntityRelations(\n t,\n a,\n \"ContainsElements\"\n );\n if (!h)\n continue;\n const d = await t.getProperties(a);\n if (!d)\n continue;\n const E = (r = d.Name) == null ? void 0 : r.value;\n for (const u of h) {\n this.saveItem(t, o, E, u);\n const f = e.getEntityRelations(\n t,\n Number(u),\n \"IsDecomposedBy\"\n );\n if (f)\n for (const R of f)\n this.saveItem(t, o, E, R);\n }\n }\n }\n /**\n * Sets the color of the specified fragments.\n *\n * @param items - A map of fragment IDs to their respective express IDs.\n * @param color - The color to set for the fragments.\n * @param override - A boolean indicating whether to override the existing color of the fragments.\n *\n * @remarks\n * This method iterates through the provided fragment IDs, retrieves the corresponding fragments,\n * and sets their color using the `setColor` method of the FragmentsGroup class.\n *\n * @throws Will throw an error if the fragment with the specified ID is not found.\n */\n setColor(t, e, i = !1) {\n const o = this.components.get(ht);\n for (const n in t) {\n const r = o.list.get(n);\n if (!r)\n continue;\n const a = t[n];\n r.setColor(e, a, i);\n }\n }\n /**\n * Resets the color of the specified fragments to their original color.\n *\n * @param items - A map of fragment IDs to their respective express IDs.\n *\n * @remarks\n * This method iterates through the provided fragment IDs, retrieves the corresponding fragments,\n * and resets their color using the `resetColor` method of the FragmentsGroup class.\n *\n * @throws Will throw an error if the fragment with the specified ID is not found.\n */\n resetColor(t) {\n const e = this.components.get(ht);\n for (const i in t) {\n const o = e.list.get(i);\n if (!o)\n continue;\n const n = t[i];\n o.resetColor(n);\n }\n }\n saveItem(t, e, i, o) {\n this.list[e] || (this.list[e] = {});\n const n = t.data.get(o);\n if (n)\n for (const r of n[0]) {\n const a = t.keyFragments.get(r);\n if (a) {\n const c = this.list[e];\n c[i] || (c[i] = {}), c[i][a] || (c[i][a] = /* @__PURE__ */ new Set()), c[i][a].add(o);\n }\n }\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ls, \"uuid\", \"e25a7f3c-46c4-4a14-9d3d-5115f24ebeb7\");\nlet Ai = Ls;\nconst ys = class ys extends et {\n constructor(t) {\n super(t);\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /**\n * The height of the explosion animation.\n * This property determines the vertical distance by which fragments are moved during the explosion.\n * Default value is 10.\n */\n I(this, \"height\", 10);\n /**\n * The group name used for the explosion animation.\n * This property specifies the group of fragments that will be affected by the explosion.\n * Default value is \"storeys\".\n */\n I(this, \"groupName\", \"spatialStructures\");\n /**\n * A set of strings representing the exploded items.\n * This set is used to keep track of which items have been exploded.\n */\n I(this, \"list\", /* @__PURE__ */ new Set());\n t.add(ys.uuid, this);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.list.clear(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Sets the explosion state of the fragments.\n *\n * @param active - A boolean indicating whether to activate or deactivate the explosion.\n *\n * @remarks\n * This method applies a vertical transformation to the fragments based on the `active` parameter.\n * If `active` is true, the fragments are moved upwards by a distance determined by the `height` property.\n * If `active` is false, the fragments are moved back to their original position.\n *\n * The method also keeps track of the exploded items using the `list` set.\n *\n * @throws Will throw an error if the `Classifier` or `FragmentsManager` components are not found in the `components` system.\n */\n set(t) {\n if (!this.enabled)\n return;\n const e = this.components.get(Ai), i = this.components.get(ht), o = t ? 1 : -1;\n let n = 0;\n const r = e.list[this.groupName], a = new g.Matrix4();\n for (const c in r) {\n a.elements[13] = n * o * this.height;\n for (const h in r[c]) {\n const d = i.list.get(h), E = c + h, u = this.list.has(E);\n if (!d || t && u || !t && !u)\n continue;\n t ? this.list.add(E) : this.list.delete(E);\n const f = r[c][h];\n d.applyTransform(f, a);\n }\n n++;\n }\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(ys, \"uuid\", \"d260618b-ce88-4c7d-826c-6debb91de3e2\");\nlet gn = ys;\nconst Ms = class Ms extends et {\n constructor(t) {\n super(t);\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n this.components.add(Ms.uuid, this);\n }\n /**\n * Sets the visibility of fragments within the 3D scene.\n * If no `items` parameter is provided, all fragments will be set to the specified visibility.\n * If `items` is provided, only the specified fragments will be affected.\n *\n * @param visible - The visibility state to set for the fragments.\n * @param items - An optional map of fragment IDs and their corresponding sub-fragment IDs to be affected.\n * If not provided, all fragments will be affected.\n *\n * @returns {void}\n */\n set(t, e) {\n const i = this.components.get(ht);\n if (!e) {\n for (const [o, n] of i.list)\n n && (n.setVisibility(t), this.updateCulledVisibility(n));\n return;\n }\n for (const o in e) {\n const n = e[o], r = i.list.get(o);\n r && (r.setVisibility(t, n), this.updateCulledVisibility(r));\n }\n }\n /**\n * Isolates fragments within the 3D scene by hiding all other fragments and showing only the specified ones.\n * It calls the `set` method twice: first to hide all fragments, and then to show only the specified ones.\n *\n * @param items - A map of fragment IDs and their corresponding sub-fragment IDs to be isolated.\n * If not provided, all fragments will be isolated.\n *\n * @returns {void}\n */\n isolate(t) {\n this.set(!1), this.set(!0, t);\n }\n updateCulledVisibility(t) {\n const e = this.components.get(Ti);\n for (const [i, o] of e.list) {\n const n = o.colorMeshes.get(t.id);\n n && (n.count = t.mesh.count);\n }\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ms, \"uuid\", \"dd9ccf2d-8a21-4821-b7f6-2949add16a29\");\nlet _n = Ms;\nclass jr extends Li {\n constructor() {\n super(...arguments);\n /**\n * Minimum number of geometries to be streamed.\n * Defaults to 10 geometries.\n */\n I(this, \"minGeometrySize\", 10);\n /**\n * Minimum amount of assets to be streamed.\n * Defaults to 1000 assets.\n */\n I(this, \"minAssetsSize\", 1e3);\n }\n}\nconst ws = class ws extends et {\n constructor(t) {\n super(t);\n /**\n * Event triggered when geometry is streamed.\n * Contains the streamed geometry data and its buffer.\n */\n I(this, \"onGeometryStreamed\", new D());\n /**\n * Event triggered when assets are streamed.\n * Contains the streamed assets.\n */\n I(this, \"onAssetStreamed\", new D());\n /**\n * Event triggered to indicate the progress of the streaming process.\n * Contains the progress percentage.\n */\n I(this, \"onProgress\", new D());\n /**\n * Event triggered when the IFC file is loaded.\n * Contains the loaded IFC file data.\n */\n I(this, \"onIfcLoaded\", new D());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /**\n * Settings for the IfcGeometryTiler.\n */\n I(this, \"settings\", new jr());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /**\n * The WebIFC API instance used for IFC file processing.\n */\n I(this, \"webIfc\", new b.IfcAPI());\n I(this, \"_spatialTree\", new Yn());\n I(this, \"_metaData\", new Gn());\n I(this, \"_visitedGeometries\", /* @__PURE__ */ new Map());\n I(this, \"_streamSerializer\", new Vt.StreamSerializer());\n I(this, \"_geometries\", /* @__PURE__ */ new Map());\n I(this, \"_geometryCount\", 0);\n I(this, \"_civil\", new Vn());\n I(this, \"_groupSerializer\", new Vt.Serializer());\n I(this, \"_assets\", []);\n I(this, \"_meshesWithHoles\", /* @__PURE__ */ new Set());\n this.components.add(ws.uuid, this), this.settings.excludedCategories.add(b.IFCOPENINGELEMENT);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.onIfcLoaded.reset(), this.onGeometryStreamed.reset(), this.onAssetStreamed.reset(), this.webIfc = null, this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * This method streams the IFC file from a given buffer.\n *\n * @param data - The Uint8Array containing the IFC file data.\n * @returns A Promise that resolves when the streaming process is complete.\n *\n * @remarks\n * This method cleans up any resources after the streaming process is complete.\n *\n * @example\n * ```typescript\n * const ifcData = await fetch('path/to/ifc/file.ifc');\n * const rawBuffer = await response.arrayBuffer();\n * const ifcBuffer = new Uint8Array(rawBuffer);\n * await ifcGeometryTiler.streamFromBuffer(ifcBuffer);\n * ```\n */\n async streamFromBuffer(t) {\n await this.readIfcFile(t), await this.streamAllGeometries(), this.cleanUp();\n }\n /**\n * This method streams the IFC file from a given callback.\n *\n * @param loadCallback - The callback function that will be used to load the IFC file.\n * @returns A Promise that resolves when the streaming process is complete.\n *\n * @remarks\n * This method cleans up any resources after the streaming process is complete.\n *\n */\n async streamFromCallBack(t) {\n await this.streamIfcFile(t), await this.streamAllGeometries(), this.cleanUp();\n }\n async readIfcFile(t) {\n const { path: e, absolute: i, logLevel: o } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, i), await this.webIfc.Init(), o && this.webIfc.SetLogLevel(o), this.webIfc.OpenModel(t, this.settings.webIfc);\n }\n async streamIfcFile(t) {\n const { path: e, absolute: i, logLevel: o } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, i), await this.webIfc.Init(), o && this.webIfc.SetLogLevel(o), this.webIfc.OpenModelFromCallback(t, this.settings.webIfc);\n }\n async streamAllGeometries() {\n const { minGeometrySize: t, minAssetsSize: e } = this.settings;\n this._spatialTree.setUp(this.webIfc);\n const i = this.webIfc.GetIfcEntityList(0), o = [[]], n = new Vt.FragmentsGroup();\n n.ifcMetadata = {\n name: \"\",\n description: \"\",\n ...this._metaData.getNameInfo(this.webIfc),\n ...this._metaData.getDescriptionInfo(this.webIfc),\n schema: this.webIfc.GetModelSchema(0) || \"IFC2X3\",\n maxExpressID: this.webIfc.GetMaxExpressID(0)\n };\n let r = 0, a = 0;\n for (const m of i) {\n if (!this.webIfc.IsIfcElement(m) && m !== b.IFCSPACE || this.settings.excludedCategories.has(m))\n continue;\n const C = this.webIfc.GetLineIDsWithType(0, m), A = C.size();\n for (let F = 0; F < A; F++) {\n r > t && (r = 0, a++, o.push([]));\n const p = C.get(F);\n o[a].push(p);\n const T = this.webIfc.GetLine(0, p);\n if (T.GlobalId) {\n const _ = (T == null ? void 0 : T.GlobalId.value) || (T == null ? void 0 : T.GlobalId);\n n.globalToExpressIDs.set(_, p);\n }\n const O = this._spatialTree.itemsByFloor[p] || 0;\n n.data.set(p, [[], [O, m]]), r++;\n }\n }\n this._spatialTree.cleanUp();\n let c = 0.01, h = 0;\n for (const m of o) {\n h++, this.webIfc.StreamMeshes(0, m, (A) => {\n this.getMesh(this.webIfc, A, n);\n }), this._geometryCount > t && await this.streamGeometries(), this._assets.length > e && await this.streamAssets();\n const C = h / o.length;\n C > c && (c += 0.01, c = Math.max(c, C), this.onProgress.trigger(Math.round(c * 100) / 100));\n }\n this._geometryCount && await this.streamGeometries(), this._assets.length && await this.streamAssets();\n const { opaque: d, transparent: E } = n.geometryIDs;\n for (const [m, { index: C, uuid: A }] of this._visitedGeometries)\n n.keyFragments.set(C, A), (m > 1 ? d : E).set(m, C);\n const u = n.data.keys();\n for (const m of u) {\n const [C] = n.data.get(m);\n C.length || n.data.delete(m);\n }\n const f = this.webIfc.GetCoordinationMatrix(0);\n n.coordinationMatrix.fromArray(f), n.civilData = this._civil.read(this.webIfc);\n const R = this._groupSerializer.export(n);\n this.onIfcLoaded.trigger(R), n.dispose(!0);\n }\n cleanUp() {\n this.webIfc = null, this.webIfc = new b.IfcAPI(), this._visitedGeometries.clear(), this._geometries.clear(), this._assets = [], this._meshesWithHoles.clear();\n }\n getMesh(t, e, i) {\n const o = e.geometries.size(), n = e.expressID, r = { id: n, geometries: [] };\n for (let a = 0; a < o; a++) {\n const c = e.geometries.get(a), h = c.geometryExpressID, d = c.color.w === 1 ? 1 : -1, E = h * d;\n if (!this._visitedGeometries.has(E)) {\n this._visitedGeometries.has(h) || this.getGeometry(t, h);\n const T = this._visitedGeometries.size, O = g.MathUtils.generateUUID();\n this._visitedGeometries.set(E, { uuid: O, index: T });\n }\n const u = this._visitedGeometries.get(E);\n if (u === void 0)\n throw new Error(\"Error getting geometry data for streaming!\");\n const f = i.data.get(n);\n if (!f)\n throw new Error(\"Data not found!\");\n f[0].push(u.index);\n const { x: R, y: m, z: C, w: A } = c.color, F = [R, m, C, A], p = c.flatTransformation;\n r.geometries.push({ color: F, geometryID: h, transformation: p });\n }\n this._assets.push(r);\n }\n getGeometry(t, e) {\n const i = t.GetGeometry(0, e), o = t.GetIndexArray(\n i.GetIndexData(),\n i.GetIndexDataSize()\n ), n = t.GetVertexArray(\n i.GetVertexData(),\n i.GetVertexDataSize()\n ), r = new Float32Array(n.length / 2), a = new Float32Array(n.length / 2);\n for (let u = 0; u < n.length; u += 6)\n r[u / 2] = n[u], r[u / 2 + 1] = n[u + 1], r[u / 2 + 2] = n[u + 2], a[u / 2] = n[u + 3], a[u / 2 + 1] = n[u + 4], a[u / 2 + 2] = n[u + 5];\n const c = Tr(r), h = new Float32Array(c.transformation.elements), d = [c.center.x, c.center.y, c.center.z];\n let E = !1;\n for (let u = 0; u < r.length - 2; u += 3) {\n const f = r[u], R = r[u + 1], m = r[u + 2], C = a[u], A = a[u + 1], F = a[u + 2];\n if (mr(d, [f, R, m], [C, A, F])) {\n E = !0;\n break;\n }\n }\n this._geometries.set(e, {\n position: r,\n normal: a,\n index: o,\n boundingBox: h,\n hasHoles: E\n }), i.delete(), this._geometryCount++;\n }\n async streamAssets() {\n await this.onAssetStreamed.trigger(this._assets), this._assets = null, this._assets = [];\n }\n async streamGeometries() {\n let t = this._streamSerializer.export(this._geometries), e = {};\n for (const [i, { boundingBox: o, hasHoles: n }] of this._geometries)\n e[i] = { boundingBox: o, hasHoles: n };\n this.onGeometryStreamed.trigger({ data: e, buffer: t }), e = null, t = null, this._geometries.clear(), this._geometryCount = 0;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(ws, \"uuid\", \"d9999a00-e1f5-4d3f-8cfe-c56e08609764\");\nlet Sn = ws;\nclass qr extends Li {\n constructor() {\n super(...arguments);\n /**\n * Amount of properties to be streamed.\n * Defaults to 100 properties.\n */\n I(this, \"propertiesSize\", 100);\n }\n}\nclass Kr extends et {\n constructor() {\n super(...arguments);\n /**\n * An event that is triggered when properties are streamed from the IFC file.\n * The event provides the type of the IFC entity and the corresponding data.\n */\n I(this, \"onPropertiesStreamed\", new Ts());\n /**\n * An event that is triggered to indicate the progress of the streaming process.\n * The event provides a number between 0 and 1 representing the progress percentage.\n */\n I(this, \"onProgress\", new Ts());\n /**\n * An event that is triggered when indices are streamed from the IFC file.\n * The event provides a map of indices, where the key is the entity type and the value is another map of indices.\n */\n I(this, \"onIndicesStreamed\", new Ts());\n /** {@link Disposable.onDisposed} */\n I(this, \"onDisposed\", new D());\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n /**\n * An instance of the PropertiesStreamingSettings class, which holds the settings for the streaming process.\n */\n I(this, \"settings\", new qr());\n /**\n * An instance of the IfcAPI class from the Web-IFC library, which provides methods for reading and processing IFC data.\n */\n I(this, \"webIfc\", new b.IfcAPI());\n }\n /** {@link Disposable.dispose} */\n async dispose() {\n this.onIndicesStreamed.reset(), this.onPropertiesStreamed.reset(), this.webIfc = null, this.onDisposed.reset();\n }\n /**\n * This method converts properties from an IFC file to tiles given its data as a Uint8Array.\n *\n * @param data - The Uint8Array containing the IFC file data.\n * @returns A Promise that resolves when the streaming process is complete.\n */\n async streamFromBuffer(t) {\n await this.readIfcFile(t), await this.streamAllProperties(), this.cleanUp();\n }\n /**\n * This method converts properties from an IFC file to tiles using a given callback function to read the file.\n *\n * @param loadCallback - A callback function that loads the IFC file data.\n * @returns A Promise that resolves when the streaming process is complete.\n */\n async streamFromCallBack(t) {\n await this.streamIfcFile(t), await this.streamAllProperties(), this.cleanUp();\n }\n async readIfcFile(t) {\n const { path: e, absolute: i, logLevel: o } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, i), await this.webIfc.Init(), o && this.webIfc.SetLogLevel(o), this.webIfc.OpenModel(t, this.settings.webIfc);\n }\n async streamIfcFile(t) {\n const { path: e, absolute: i, logLevel: o } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, i), await this.webIfc.Init(), o && this.webIfc.SetLogLevel(o), this.webIfc.OpenModelFromCallback(t, this.settings.webIfc);\n }\n async streamAllProperties() {\n const { propertiesSize: t } = this.settings, e = new Set(this.webIfc.GetIfcEntityList(0)), i = /* @__PURE__ */ new Set([\n b.IFCPROJECT,\n b.IFCSITE,\n b.IFCBUILDING,\n b.IFCBUILDINGSTOREY,\n b.IFCSPACE\n ]);\n for (const c of i)\n e.add(c);\n let o = 0.01, n = 0;\n for (const c of e) {\n if (n++, vn.has(c))\n continue;\n const h = i.has(c), d = this.webIfc.GetLineIDsWithType(0, c), E = d.size();\n let u = 0;\n for (let R = 0; R < E - t; R += t) {\n const m = {};\n for (let C = 0; C < t; C++) {\n u++;\n const A = d.get(R + C);\n try {\n const F = this.webIfc.GetLine(0, A, h);\n m[F.expressID] = F;\n } catch {\n console.log(`Could not get property: ${A}`);\n }\n }\n await this.onPropertiesStreamed.trigger({ type: c, data: m });\n }\n if (u !== E) {\n const R = {};\n for (let m = u; m < E; m++) {\n const C = d.get(m);\n try {\n const A = this.webIfc.GetLine(0, C, h);\n R[A.expressID] = A;\n } catch {\n console.log(`Could not get property: ${C}`);\n }\n }\n await this.onPropertiesStreamed.trigger({ type: c, data: R });\n }\n const f = n / e.size;\n f > o && (o += 0.01, o = Math.max(o, f), await this.onProgress.trigger(Math.round(o * 100) / 100));\n }\n const a = await this.components.get(ke).processFromWebIfc(this.webIfc, 0);\n await this.onIndicesStreamed.trigger(a);\n }\n cleanUp() {\n this.webIfc = null, this.webIfc = new b.IfcAPI();\n }\n}\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Kr, \"uuid\", \"88d2c89c-ce32-47d7-8cb6-d51e4b311a0b\");\nconst Ds = class Ds extends et {\n constructor(t) {\n super(t);\n /** {@link Component.enabled} */\n I(this, \"enabled\", !0);\n t.add(Ds.uuid, this);\n }\n /**\n * Utility method to calculate the distance from a point to a line segment.\n *\n * @param point - The point from which to calculate the distance.\n * @param lineStart - The start point of the line segment.\n * @param lineEnd - The end point of the line segment.\n * @param clamp - If true, the distance will be clamped to the line segment's length.\n * @returns The distance from the point to the line segment.\n */\n static distanceFromPointToLine(t, e, i, o = !1) {\n const n = new g.Line3(), r = new g.Vector3();\n return n.set(e, i), n.closestPointToPoint(t, o, r), r.distanceTo(t);\n }\n /**\n * Method to get the face of a mesh that contains a given triangle index.\n * It also returns the edges of the found face and their indices.\n *\n * @param mesh - The mesh to get the face from. It must be indexed.\n * @param triangleIndex - The index of the triangle within the mesh.\n * @param instance - The instance of the mesh (optional).\n * @returns An object containing the edges of the found face and their indices, or null if no face was found.\n */\n getFace(t, e, i) {\n if (!t.geometry.index)\n throw new Error(\"Geometry must be indexed!\");\n const o = /* @__PURE__ */ new Map(), n = t.geometry.index.array, { plane: r } = this.getFaceData(\n e,\n i,\n t\n ), a = [];\n for (let E = 0; E < n.length / 3; E++) {\n const { plane: u, edges: f } = this.getFaceData(E, i, t);\n if (u.equals(r)) {\n a.push({ index: E, edges: f });\n for (const { id: R, points: m, distance: C } of f)\n o.set(R, { points: m, distance: C });\n }\n }\n let c = 0;\n const h = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map();\n for (const { index: E, edges: u } of a) {\n const f = /* @__PURE__ */ new Map();\n for (const { id: T } of u)\n if (h.has(T)) {\n const O = h.get(T);\n f.set(T, O);\n }\n const R = u.map((T) => T.id);\n if (!f.size) {\n const T = c++;\n for (const { id: O } of u)\n h.set(O, T);\n d.set(T, {\n edges: new Set(R),\n indices: /* @__PURE__ */ new Set([E])\n });\n continue;\n }\n let m = null;\n const C = /* @__PURE__ */ new Set(), A = new Set(R);\n for (const [T, O] of f) {\n m === null ? m = O : O !== m && C.add(O), h.delete(T);\n const { edges: _ } = d.get(O);\n _.delete(T), A.delete(T);\n }\n if (m === null)\n throw new Error(\"Error computing face!\");\n const F = d.get(m), { indices: p } = F;\n p.add(E);\n for (const T of A) {\n h.set(T, m);\n const { edges: O } = F;\n O.add(T);\n }\n for (const T of C) {\n const O = d.get(T), { edges: _, indices: S } = O, N = d.get(m), { edges: L, indices: w } = N;\n for (const y of _)\n L.add(y), h.set(y, m);\n for (const y of S)\n w.add(y);\n d.delete(T);\n }\n }\n for (const [E, { indices: u, edges: f }] of d)\n if (u.has(e)) {\n const R = [];\n for (const m of f) {\n const C = o.get(m);\n R.push(C);\n }\n return { edges: R, indices: u };\n }\n return null;\n }\n /**\n * Method to get the vertices and normal of a mesh face at a given index.\n * It also applies instance transformation if provided.\n *\n * @param mesh - The mesh to get the face from. It must be indexed.\n * @param faceIndex - The index of the face within the mesh.\n * @param instance - The instance of the mesh (optional).\n * @returns An object containing the vertices and normal of the face.\n * @throws Will throw an error if the geometry is not indexed.\n */\n getVerticesAndNormal(t, e, i) {\n if (!t.geometry.index)\n throw new Error(\"Geometry must be indexed!\");\n const o = t.geometry.index.array, n = t.geometry.attributes.position.array, r = t.geometry.attributes.normal.array, a = o[e * 3] * 3, c = o[e * 3 + 1] * 3, h = o[e * 3 + 2] * 3, d = new g.Vector3(n[a], n[a + 1], n[a + 2]), E = new g.Vector3(n[c], n[c + 1], n[c + 2]), u = new g.Vector3(n[h], n[h + 1], n[h + 2]), f = new g.Vector3(r[a], r[a + 1], r[a + 2]), R = new g.Vector3(r[c], r[c + 1], r[c + 2]), m = new g.Vector3(r[h], r[h + 1], r[h + 2]), C = (f.x + R.x + m.x) / 3, A = (f.y + R.y + m.y) / 3, F = (f.z + R.z + m.z) / 3, p = new g.Vector3(C, A, F);\n if (i !== void 0 && t instanceof g.InstancedMesh) {\n const T = new g.Matrix4();\n t.getMatrixAt(i, T);\n const O = new g.Matrix4();\n O.extractRotation(T), p.applyMatrix4(O), d.applyMatrix4(T), E.applyMatrix4(T), u.applyMatrix4(T);\n }\n return { p1: d, p2: E, p3: u, faceNormal: p };\n }\n /**\n * Method to round the vector's components to a specified number of decimal places.\n * This is used to ensure numerical precision in edge detection.\n *\n * @param vector - The vector to round.\n * @returns The vector with rounded components.\n */\n round(t) {\n t.x = Math.trunc(t.x * 1e3) / 1e3, t.y = Math.trunc(t.y * 1e3) / 1e3, t.z = Math.trunc(t.z * 1e3) / 1e3;\n }\n /**\n * Calculates the volume of a set of fragments.\n *\n * @param frags - A map of fragment IDs to their corresponding item IDs.\n * @returns The total volume of the fragments and the bounding sphere.\n *\n * @remarks\n * This method creates a set of instanced meshes from the given fragments and item IDs.\n * It then calculates the volume of each mesh and returns the total volume and its bounding sphere.\n *\n * @throws Will throw an error if the geometry of the meshes is not indexed.\n * @throws Will throw an error if the fragment manager is not available.\n */\n getVolumeFromFragments(t) {\n const e = this.components.get(ht), i = new g.Matrix4(), o = [];\n for (const r in t) {\n const a = e.list.get(r);\n if (!a)\n continue;\n const c = t[r];\n let h = 0;\n for (const u of c) {\n const f = a.getInstancesIDs(u);\n f && (h += f.size);\n }\n const d = new g.InstancedMesh(\n a.mesh.geometry,\n void 0,\n h\n );\n let E = 0;\n for (const u of c) {\n const f = a.getInstancesIDs(u);\n if (f)\n for (const R of f)\n a.mesh.getMatrixAt(R, i), d.setMatrixAt(E++, i);\n }\n o.push(d);\n }\n const n = this.getVolumeFromMeshes(o);\n for (const r of o)\n r.geometry = null, r.material = [], r.dispose();\n return n;\n }\n /**\n * Calculates the total volume of a set of meshes.\n *\n * @param meshes - An array of meshes or instanced meshes to calculate the volume from.\n * @returns The total volume of the meshes and the bounding sphere.\n *\n * @remarks\n * This method calculates the volume of each mesh in the provided array and returns the total volume\n * and its bounding sphere.\n *\n */\n getVolumeFromMeshes(t) {\n let e = 0;\n for (const i of t)\n e += this.getVolumeOfMesh(i);\n return e;\n }\n getFaceData(t, e, i) {\n const o = this.getVerticesAndNormal(i, t, e), { p1: n, p2: r, p3: a, faceNormal: c } = o;\n this.round(n), this.round(r), this.round(a), this.round(c);\n const h = [\n { id: `${n.x}|${n.y}|${n.z}`, value: n },\n { id: `${r.x}|${r.y}|${r.z}`, value: r },\n { id: `${a.x}|${a.y}|${a.z}`, value: a }\n ];\n h.sort((F, p) => F.id < p.id ? -1 : F.id > p.id ? 1 : 0);\n const [\n { id: d, value: E },\n { id: u, value: f },\n { id: R, value: m }\n ] = h, C = [\n {\n id: `${d}|${u}`,\n distance: E.distanceTo(f),\n points: [E, f]\n },\n {\n id: `${u}|${R}`,\n distance: f.distanceTo(m),\n points: [f, m]\n },\n {\n id: `${d}|${R}`,\n distance: E.distanceTo(m),\n points: [E, m]\n }\n ], A = new g.Plane();\n return A.setFromNormalAndCoplanarPoint(c, n), A.constant = Math.round(A.constant * 10) / 10, { plane: A, edges: C };\n }\n // https://stackoverflow.com/a/1568551\n getVolumeOfMesh(t) {\n let e = 0;\n const i = new g.Vector3(), o = new g.Vector3(), n = new g.Vector3(), { index: r } = t.geometry, a = t.geometry.attributes.position.array;\n if (!r)\n return console.warn(\"Geometry must be indexed to compute its volume!\"), 0;\n const c = [];\n if (t instanceof g.InstancedMesh)\n for (let d = 0; d < t.count; d++) {\n const E = new g.Matrix4();\n t.getMatrixAt(d, E), c.push(E);\n }\n else\n c.push(new g.Matrix4().identity());\n const { matrixWorld: h } = t;\n for (let d = 0; d < r.array.length - 2; d += 3)\n for (const E of c) {\n const u = E.multiply(h), f = r.array[d] * 3, R = r.array[d + 1] * 3, m = r.array[d + 2] * 3;\n i.set(a[f], a[f + 1], a[f + 2]).applyMatrix4(u), o.set(a[R], a[R + 1], a[R + 2]).applyMatrix4(u), n.set(a[m], a[m + 1], a[m + 2]).applyMatrix4(u), e += this.getSignedVolumeOfTriangle(i, o, n);\n }\n return Math.abs(e);\n }\n getSignedVolumeOfTriangle(t, e, i) {\n const o = i.x * e.y * t.z, n = e.x * i.y * t.z, r = i.x * t.y * e.z, a = t.x * i.y * e.z, c = e.x * t.y * i.z, h = t.x * e.y * i.z;\n return 1 / 6 * (-o + n + r - a - c + h);\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nI(Ds, \"uuid\", \"267ca032-672f-4cb0-afa9-d24e904f39d6\");\nlet Nn = Ds;\nexport {\n Ts as AsyncEvent,\n Si as Base,\n ar as BaseCamera,\n cr as BaseRenderer,\n lr as BaseScene,\n Ni as BaseWorldItem,\n Fn as BoundingBoxer,\n Ai as Classifier,\n Rn as Clipper,\n et as Component,\n pi as Components,\n Yr as CullerRenderer,\n Ti as Cullers,\n zt as Disposer,\n D as Event,\n gn as Exploder,\n zr as FirstPersonMode,\n ht as FragmentsManager,\n vn as GeometryTypes,\n dn as Grids,\n _n as Hider,\n oa as IfcCategories,\n Bn as IfcCategoryMap,\n Zr as IfcElements,\n Li as IfcFragmentSettings,\n Sn as IfcGeometryTiler,\n mi as IfcJsonExporter,\n Ri as IfcLoader,\n On as IfcPropertiesManager,\n Kr as IfcPropertiesTiler,\n Kt as IfcPropertiesUtils,\n ke as IfcRelationsIndexer,\n jr as IfcStreamingSettings,\n sn as MaterialsUtils,\n Nn as MeasurementUtils,\n Vr as MeshCullerRenderer,\n Gr as MiniMap,\n An as MiniMaps,\n Rr as Mouse,\n Hr as OrbitMode,\n na as OrthoPerspectiveCamera,\n kr as PlanMode,\n Wr as ProjectionManager,\n qr as PropertiesStreamingSettings,\n ze as Raycasters,\n He as SimpleCamera,\n Nr as SimpleGrid,\n Pi as SimplePlane,\n Ar as SimpleRaycaster,\n ia as SimpleRenderer,\n sa as SimpleScene,\n Fr as SimpleWorld,\n Ge as UUID,\n ea as VertexPicker,\n Ci as Worlds,\n mr as isPointInFrontOfPlane,\n Tr as obbFromPoints,\n Br as readPixelsAsync\n};\n"],"names":["kn","Object","defineProperty","I","l","s","t","enumerable","configurable","writable","value","Wn","Mn","eo","so","xi","Ys","bi","Us","io","Math","pow","Vs","Symbol","pe","index","count","attributes","position","no","wn","drawRange","e","start","i","o","max","n","min","offset","floor","Dn","groups","length","Set","r","a","c","add","Array","from","values","sort","push","K","x","y","z","vi","Bi","set","Yi","Qe","Re","Gs","h","d","E","u","f","R","m","C","A","F","p","T","O","_","S","N","L","w","U","B","Mt","Eo","candidate","Ut","fill","map","bounds","Float32Array","rightCacheBounds","leftCacheBounds","je","qe","constructor","fo","pos","axis","po","mo","geometry","indirect","_indirectBuffer","SharedArrayBuffer","ArrayBuffer","Uint32Array","Uint16Array","Co","useSharedArrayBuffer","forEach","ao","verbose","console","warn","oo","setIndex","ro","array","maxDepth","maxLeafTris","strategy","onProgress","co","normalized","isInterleavedBufferAttribute","data","stride","abs","ho","boundingData","lo","Io","splice","uo","splitAxis","left","H","right","To","_roots","Error","wt","this","setFromPointsField","setFromPoints","dot","isSeparated","prototype","setFromBox","Ro","subVectors","end","Oi","at","closestPointToPoint","distanceToSquared","copy","Ao","radius","center","b","distanceTo","getPlane","distanceToPoint","projectPoint","containsPoint","zs","Ft","super","isExtendedTriangle","satAxes","satBounds","points","sphere","plane","needsUpdate","intersectsSphere","update","getNormal","setFromNormalAndCoplanarPoint","closestPointToSegment","sqrt","intersectsTriangle","delta","normal","intersectLine","crossVectors","distanceToTriangle","getCenter","isOrientedBox","matrix","invMatrix","alignedSatBounds","applyMatrix4","invert","intersectsBox","clamp","distanceToBox","gi","_getNewPrimitive","_primitives","getPrimitive","pop","releasePrimitive","Oo","It","Et","dt","ft","pt","Ct","Un","Z","float32Array","uint16Array","uint32Array","setBuffer","clearBuffer","Yt","Ie","Jt","Ke","_o","ai","Ae","Hs","te","ee","se","$e","Je","ts","Vi","Gi","zi","es","xs","getX","uv","uv1","fromBufferAttribute","intersectTriangle","distance","origin","point","clone","No","getInterpolation","direction","multiplyScalar","materialIndex","face","faceIndex","Po","tt","getY","getZ","Mo","wo","isArray","byteLength","has","q","st","Q","Hi","Gt","intersectBox","xo","resolveTriangleIndex","ki","bo","ci","Lo","Wi","vo","Bo","li","yo","ss","ie","ne","Fe","Xi","is","Yo","hi","boundingBox","computeBoundingBox","boundsTree","shapecast","intersectsBounds","ns","ks","Oe","Vo","Go","zo","Ho","ko","boundsTraverseOrder","intersectsRange","sub","Wo","Zi","Xo","Ei","Do","Qi","Zo","Qo","di","Uo","os","oe","re","ge","ji","rs","jo","ui","as","Ws","_e","qo","Ko","$o","Jo","tr","xe","As","vt","ae","ce","Xs","Zs","Qs","Tt","cs","qi","_i","serialize","cloneBuffers","getIndex","roots","slice","indirectBuffer","deserialize","isBufferGeometry","assign","setBoundingBox","getBoundingBox","refit","traverse","Cs","raycast","isMaterial","side","raycastFirst","intersectsGeometry","bvhcast","intersectsRanges","intersectsTriangles","sr","closestPointToGeometry","So","makeEmpty","union","Ki","matrixWorld","ray","object","near","far","js","$i","ir","nr","material","firstHitOnly","call","or","rr","D","handlers","remove","filter","reset","Ts","async","Si","components","et","Ni","Map","onWorldChanged","world","action","worlds","delete","uuid","ar","arguments","cr","updateClippingPlanes","onClippingPlanesUpdated","trigger","setPlane","isLocal","clippingPlanes","indexOf","three","be","get","_disposedComponents","destroy","removeFromParent","dispose","disposeGeometryAndMaterials","children","disposeChildren","disposeGeometry","disposeBoundsTree","disposeMaterial","zt","lr","onDisposed","Er","Ji","qs","tn","ls","dr","tolerance","faces","newFaces","assigned","en","unassigned","vertices","ur","compute","setFromObject","updateMatrixWorld","intersectRay","intersectsRay","addVertexToFace","outside","append","insertBefore","removeVertexFromFace","next","removeAllVerticesFromFace","removeSubList","prev","deleteFaceVertices","appendChain","resolveUnassignedPoints","isEmpty","first","mark","computeExtremes","getComponent","setComponent","Number","EPSILON","computeInitialHull","setFromCoplanarPoints","Rt","create","getEdge","setTwin","reindexFaces","nextVertexToAdd","computeHorizon","twin","addAdjoiningFace","tail","head","addNewFaces","addVertexToHull","clear","cleanup","midpoint","area","constant","edge","Ks","getMidpoint","getArea","vertex","lengthSquared","last","insertAfter","Ii","fi","Nt","fr","elements","pr","identity","mr","sn","isTransparent","transparent","opacity","$","random","_lut","toLowerCase","validate","_pattern","test","Ge","Fs","enabled","_clock","getDelta","list","isUpdateable","requestAnimationFrame","setupBVH","init","isDisposeable","stop","computeBoundsTree","pi","Rr","_event","dom","setupEvents","getBoundingClientRect","_position","getPositionX","getPositionY","clientY","top","bottom","clientX","addEventListener","updateMouseInfo","removeEventListener","Ar","renderer","mouse","domElement","castRay","meshes","camera","setFromCamera","intersect","castRayFromVector","intersectObjects","filterClippingPlanes","every","Os","ze","Fr","scene","_scene","currentWorld","_camera","_renderer","onBeforeUpdate","onAfterUpdate","isDisposing","sa","directionalLight","color","intensity","ambientLight","background","setup","config","isSetup","onSetup","ia","_resizing","onContainerUpdated","container","clientWidth","clientHeight","setSize","onResize","resize","preventDefault","setRenderTarget","canvas","_canvas","antialias","alpha","_parameters","setPixelRatio","window","devicePixelRatio","setupRenderer","getContext","onContextLost","onContextBack","render","getSize","parentElement","_resizeObserver","disconnect","resizeEvent","ResizeObserver","observe","localClippingEnabled","appendChild","P","freeze","NONE","ROTATE","TRUCK","OFFSET","DOLLY","ZOOM","TOUCH_ROTATE","TOUCH_TRUCK","TOUCH_OFFSET","TOUCH_DOLLY","TOUCH_ZOOM","TOUCH_DOLLY_TRUCK","TOUCH_DOLLY_OFFSET","TOUCH_DOLLY_ROTATE","TOUCH_ZOOM_TRUCK","TOUCH_ZOOM_OFFSET","TOUCH_ZOOM_ROTATE","Zt","isPerspectiveCamera","bt","isOrthographicCamera","he","PI","nn","xn","Se","mt","X","k","on","round","Ne","isFinite","MAX_VALUE","Pe","hs","rn","$s","Js","Or","_listeners","hasEventListener","removeAllEventListeners","dispatchEvent","type","target","Es","bn","_r","navigator","platform","Sr","Y","an","ds","ti","lt","G","Ee","Le","gt","_t","Qt","cn","ln","ut","ye","de","hn","ei","En","si","ii","us","ot","install","THREE","Vector3","Vector2","Spherical","Box3","Sphere","Quaternion","Matrix4","Raycaster","ACTION","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","minDistance","maxDistance","infinityDolly","minZoom","maxZoom","smoothTime","draggingSmoothTime","maxSpeed","azimuthRotateSpeed","polarRotateSpeed","dollySpeed","dollyDragInverted","truckSpeed","dollyToCursor","dragToOffset","verticalDragToForward","boundaryFriction","restThreshold","colliderMeshes","cancel","_enabled","_state","_viewport","_changedDolly","_changedZoom","_hasRested","_boundaryEnclosesCamera","_needsUpdate","_updatedLastTime","_elementRect","DOMRect","_isDragging","_dragNeedsUpdate","_activePointers","_lockedPointer","_interactiveArea","_isUserControllingRotate","_isUserControllingDolly","_isUserControllingTruck","_isUserControllingOffset","_isUserControllingZoom","_lastDollyDirection","_thetaVelocity","_phiVelocity","_radiusVelocity","_targetVelocity","_focalOffsetVelocity","_zoomVelocity","_truckInternal","_target","getEffectiveFOV","tan","height","zoom","width","setFocalOffset","_focalOffsetEnd","truck","forward","_rotateInternal","rotate","_dollyInternal","_sphericalEnd","_dollyToNoClamp","dollyInFixed","_dollyControlCoord","sign","_zoomInternal","_zoom","zoomTo","error","_yAxisUpSpace","setFromUnitVectors","up","_yAxisUpSpaceInverse","_targetEnd","_focalOffset","_spherical","setFromVector3","applyQuaternion","_lastDistance","_zoomEnd","_lastZoom","_nearPlaneCorners","_updateNearPlaneCorners","_boundary","_cameraUp0","_target0","_position0","_zoom0","_focalOffset0","mouseButtons","middle","wheel","touches","one","two","_domElement","pointerType","buttons","_findPointerByMouseButton","_disposePointer","pointerId","deltaX","deltaY","mouseButton","ownerDocument","passive","cancelable","_findPointerById","movementX","movementY","performance","now","_getClientRect","deltaMode","PointerEvent","MouseEvent","theta","phi","document","pointerLockElement","lockPointer","requestPointerLock","unlockPointer","exitPointerLock","_addAllEventListeners","style","touchAction","userSelect","webkitUserSelect","_removeAllEventListeners","connect","updateCameraUp","updateProjectionMatrix","active","currentAction","azimuthAngle","polarAngle","boundaryEnclosesCamera","interactiveArea","rotateTo","rotateAzimuthTo","rotatePolarTo","makeSafe","_createOnRestPromise","dolly","dollyTo","_collisionTest","Promise","resolve","_getCameraDirection","pan","updateMatrix","setFromMatrixColumn","moveTo","elevate","_encloseToBoundary","lookInDirectionOf","normalize","setPosition","fitToBox","cover","paddingLeft","paddingRight","paddingBottom","paddingTop","isBox3","setFromSpherical","multiply","setFromAxisAngle","expandByPoint","setX","setY","setZ","premultiply","getDistanceToFitBox","all","fitToSphere","createBoundingSphere","getDistanceToFitSphere","setLookAt","normalizeRotations","lerpLookAt","lerp","setTarget","getPosition","setOrbitPoint","matrixWorldInverse","setBoundary","clampPoint","setViewport","Vector4","aspect","atan","sin","getTarget","isVector3","getSpherical","getFocalOffset","saveState","applyCameraUp","cross","lengthSq","unproject","quaternion","lookAt","toJSON","JSON","stringify","toArray","focalOffset","target0","position0","zoom0","focalOffset0","fromJSON","parse","fromArray","setAttribute","removeAttribute","_getTargetDirection","divideScalar","negate","find","addVectors","dampingFactor","draggingDampingFactor","traverseVisible","isMesh","expandByObject","He","onAspectUpdated","isResizeable","setupCamera","newCameraControls","_allControls","controls","innerWidth","innerHeight","getSubsetOfThree","updateAspect","MOUSE","MathUtils","gs","onWorldCreated","onWorldDeleted","Ci","Nr","uniforms","uZoom","size1","size2","uSize1","uSize2","uColor","uDistance","uFade","_fade","vertexShader","fragmentShader","extensions","derivatives","frustumCulled","visible","fade","updateZoom","_s","dn","jt","nt","xt","j","un","ni","In","fn","mode","pn","Pr","isTransformControls","Ur","_gizmo","xr","_plane","_offset","_startNorm","_endNorm","_cameraScale","_parentPosition","_parentQuaternion","_parentQuaternionInv","_parentScale","_worldScaleStart","_worldQuaternionInv","_worldScale","_positionStart","_quaternionStart","_scaleStart","_getPointer","Lr","bind","_onPointerDown","Mr","_onPointerHover","yr","_onPointerMove","wr","_onPointerUp","Dr","parent","decompose","worldPosition","worldQuaternion","cameraPosition","cameraQuaternion","getWorldDirection","eye","pointerHover","dragging","oi","picker","name","pointerDown","button","scale","worldPositionStart","worldQuaternionStart","pointStart","pointerMove","space","pointEnd","divide","translationSnap","search","setFromMatrixPosition","scaleSnap","rotationAxis","rotationAngle","angleTo","rotationSnap","pointerUp","attach","detach","getRaycaster","getMode","setMode","setTranslationSnap","setRotationSnap","setScaleSnap","size","setSpace","setPointerCapture","releasePointerCapture","intersectObject","Is","W","Cn","Tn","fs","Rs","St","mn","De","qt","Ue","ps","Me","we","isTransformControlsGizmo","depthTest","depthWrite","fog","toneMapped","setHex","translate","rotateY","rotateX","XYZ","XY","YZ","XZ","START","END","DELTA","XYZE","AXIS","Ht","kt","Wt","We","tag","rotation","Ce","renderOrder","gizmo","helper","concat","fov","setFromRotationMatrix","atan2","multiplyQuaternions","showX","showY","showZ","_color","_opacity","split","some","setFromEuler","wireframe","isTransformControlsPlane","Pi","_helper","_visible","preventCameraMovement","notifyDraggingChanged","_planeMesh","newPlaneMesh","newHelper","_controls","newTransformControls","toggleControls","_arrowBoundBox","planeMaterial","equals","onDraggingStarted","onDraggingEnded","_controlsActive","changeDrag","initializeControls","createArrowBoundingBox","_hiddenMaterial","ve","onBeforeDrag","onAfterDrag","updateMaterialsAndPlanes","_material","_size","onBeforeCreate","onBeforeCancel","onBeforeDelete","onAfterCreate","onAfterCancel","onAfterDelete","createPlaneFromIntersection","createFromNormalAndCoplanarPoint","newPlane","pickPlane","deletePlane","deleteAll","getAllPlaneMeshes","includes","getWorldNormal","instanceId","getMatrixAt","getNormalMatrix","applyMatrix3","normalizePlaneDirectionY","orthogonalY","toleranceOrthogonalY","Type","_onStartDragging","_onEndDragging","Rn","Yr","_isWorkerBusy","_width","_height","renderTarget","createBuffer","bindBuffer","PIXEL_PACK_BUFFER","bufferData","STREAM_READ","readPixels","fenceSync","SYNC_GPU_COMMANDS_COMPLETE","flush","clientWaitSync","WAIT_FAILED","TIMEOUT_EXPIRED","setTimeout","br","deleteSync","getBufferSubData","vr","deleteBuffer","Br","RGBA","UNSIGNED_BYTE","_buffer","renderDebugFrame","worker","postMessage","buffer","applySettings","bufferSize","Uint8Array","Blob","Worker","URL","createObjectURL","onViewUpdated","terminate","getAvailableColor","BigInt","_availableColor","toString","unshift","g","code","increaseColor","decreaseColor","updateInterval","autoUpdate","Vr","isProcessing","colors","_recentlyHiddenMeshes","_currentVisibleMeshes","threshold","_colorCodeMeshMap","seen","unseen","handleWorkerMessage","setInterval","updateVisibility","_intervalID","clearInterval","_meshIDColorCodeMap","_transparentMat","colorMeshes","log","colorMaterial","getAvailableMaterial","instanceMatrix","setMatrixAt","updateWorldMatrix","Be","Ti","Gr","updatePlanes","down","lockRotation","_lockRotation","overrideMaterial","hasCameraControls","_tempVector1","frontOffset","_tempVector2","_tempTarget","backgroundColor","Ss","Xr","forRelating","forRelated","Ye","relationMaps","groupID","ht","onFragmentsDisposed","indexRelations","keys","startsWith","_inverseAttributes","setRelationMap","onRelationsIndexed","modelID","relationsMap","process","hasProperties","_ifcRels","getAllPropertiesOfType","_relToAttributesMap","processFromWebIfc","GetLineIDsWithType","properties","getItemProperties","getEntityRelations","serializeRelations","entries","serializeModelRelations","serializeAllRelations","getRelationsMapFromJSON","ke","Ns","mesh","baseCoordinationModel","onFragmentsLoaded","disposeGroup","items","id","fragmentIDs","load","coordinate","_loader","import","group","setLocalProperties","export","getModelIdMap","modelIdToFragmentIdMap","getFragmentMap","coordinationMatrix","At","_absoluteMin","newBound","_absoluteMax","getDimensions","depth","getBounds","_meshes","getSphere","getMesh","addMesh","getFragmentBounds","fragment","getInstancesIDs","addFragmentIdMap","vn","Ps","GetIfcEntityList","GetLine","expressID","mi","Bn","Kt","getUnits","IFCUNITASSIGNMENT","parseInt","Units","getProperties","UnitType","Name","Prefix","findItemByGuid","getAllPropertiesIDs","GlobalId","getRelationMap","getQsetQuantities","Quantities","getPsetProps","HasProperties","getPsetRel","RelatingPropertyDefinition","getQsetRel","getEntityName","key","endsWith","getQuantityValue","isRel","attributeExists","groupEntitiesByType","Qr","apply","getScaleMatrix","setUp","factor","getLengthUnits","complement","Yn","_units","cleanUp","RelatingObject","RelatedObjects","itemsByFloor","RelatingStructure","RelatedElements","Li","path","absolute","logLevel","LOG_LEVEL_OFF","COORDINATE_TO_ORIGIN","Vn","read","IfcAlignment","GetAllAlignments","IfcCrossSection2D","GetAllCrossSections2D","IfcCrossSection3D","GetAllCrossSections3D","getCurves","curve3D","horizontal","vertical","alignments","parseFloat","defLineMat","curve","Gn","getNameInfo","GetHeaderLine","creationDate","Date","author","email","organization","preprocessorVersion","originatingSystem","authorization","getDescriptionInfo","match","viewDefinition","implementationLevel","Ve","settings","excludedCategories","webIfc","autoSetWasm","onIfcStartedLoading","readIfcFile","getAllGeometries","globalToExpressIDs","wasm","SetWasmPath","Init","SetLogLevel","OpenModel","_visitedFragments","_fragmentInstances","_spatialTree","ifcMetadata","description","_metaData","schema","GetModelSchema","maxExpressID","GetMaxExpressID","IsIfcElement","StreamMeshes","keyFragments","GetCoordinationMatrix","civilData","_civil","geometries","geometryExpressID","getGeometry","_materialT","setRGB","flatTransformation","transforms","GetGeometry","GetIndexArray","GetIndexData","GetIndexDataSize","GetVertexArray","GetVertexData","GetVertexDataSize","fetch","release","ok","json","peerDependencies","Ri","Bt","selectedModel","attributeListeners","changeMap","onElementToPset","onPropToPset","onPsetRemoved","onDataChanged","getIFCSchema","setData","setProperties","registerChange","newPset","ownerHistoryHandle","getOwnerHistory","newGUID","IfcLabel","IfcText","IfcPropertySet","increaseMaxID","IfcRelDefinesByProperties","pset","rel","removePset","model","psetID","newSingleStringProperty","newSingleProperty","newSingleNumericProperty","newSingleBooleanProperty","removePsetProp","addElementToPset","elementID","addPropToPset","propID","saveToIfc","WriteLine","DeleteLine","SaveModel","CloseModel","setAttributeListener","_value","IfcGloballyUniqueId","ownerHistory","IfcIdentifier","IfcPropertySingleValue","Ls","ids","byModel","models","byPredefinedType","predefinedTypes","String","PredefinedType","toUpperCase","byEntity","entities","saveItem","byIfcRel","bySpatialStructure","setColor","resetColor","Ai","ys","groupName","applyTransform","Ms","setVisibility","updateCulledVisibility","isolate","_n","jr","ws","onIfcLoaded","onGeometryStreamed","onAssetStreamed","streamFromBuffer","streamAllGeometries","streamFromCallBack","streamIfcFile","OpenModelFromCallback","minGeometrySize","minAssetsSize","_geometryCount","streamGeometries","_assets","streamAssets","opaque","geometryIDs","_visitedGeometries","_groupSerializer","_geometries","_meshesWithHoles","generateUUID","geometryID","transformation","it","Xt","J","$t","unitary","diagonal","Xe","Hn","bs","vs","Bs","Ir","transpose","Cr","extractBasis","makeScale","makeTranslation","yi","Mi","setFromMatrix3","Te","halfSizes","Tr","hasHoles","_streamSerializer","qr","onIndicesStreamed","onPropertiesStreamed","streamAllProperties","propertiesSize","Ds","distanceFromPointToLine","getFace","getFaceData","edges","indices","getVerticesAndNormal","extractRotation","p1","p2","p3","faceNormal","trunc","getVolumeFromFragments","getVolumeFromMeshes","getVolumeOfMesh","getSignedVolumeOfTriangle"],"sourceRoot":""}