{"version":3,"file":"index.cjs","sources":["../../core/dist/node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.core.js","../../core/dist/node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.webgpu.js","../../core/dist/node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js","../../core/dist/utilities/uv.js","../../core/dist/helpers/grain.js","../../core/dist/helpers/distort.js","../../core/dist/helpers/glow.js","../../core/dist/helpers/edgeMask.js","../../core/dist/shaders/chromatic1/index.js","../src/components/OmbreChromatic1.tsx","../../core/dist/shaders/chromatic10/index.js","../src/components/OmbreChromatic10.tsx","../../core/dist/shaders/chromatic2/index.js","../src/components/OmbreChromatic2.tsx","../../core/dist/shaders/chromatic3/index.js","../src/components/OmbreChromatic3.tsx","../../core/dist/shaders/chromatic4/index.js","../src/components/OmbreChromatic4.tsx","../../core/dist/shaders/chromatic5/index.js","../src/components/OmbreChromatic5.tsx","../../core/dist/shaders/chromatic6/index.js","../src/components/OmbreChromatic6.tsx","../../core/dist/shaders/chromatic7/index.js","../src/components/OmbreChromatic7.tsx","../../core/dist/shaders/chromatic8/index.js","../src/components/OmbreChromatic8.tsx","../../core/dist/shaders/chromatic9/index.js","../src/components/OmbreChromatic9.tsx","../../core/dist/shaders/chromaticSoft1/index.js","../src/components/OmbreChromaticSoft1.tsx","../../core/dist/shaders/chromaticSoft2/index.js","../src/components/OmbreChromaticSoft2.tsx","../../core/dist/shaders/chromaticSoft3/index.js","../src/components/OmbreChromaticSoft3.tsx","../../core/dist/shaders/chromaticSoft4/index.js","../src/components/OmbreChromaticSoft4.tsx","../../core/dist/shaders/chromaticSoft5/index.js","../src/components/OmbreChromaticSoft5.tsx","../../core/dist/utilities/transformations.js","../../core/dist/shaders/horizon1/index.js","../src/components/OmbreHorizon1.tsx","../../core/dist/shaders/horizon2/index.js","../src/components/OmbreHorizon2.tsx","../../core/dist/shaders/horizon3/index.js","../src/components/OmbreHorizon3.tsx","../../core/dist/shaders/horizon4/index.js","../src/components/OmbreHorizon4.tsx","../../core/dist/shaders/horizon5/index.js","../src/components/OmbreHorizon5.tsx","../../core/dist/shaders/horizon6/index.js","../src/components/OmbreHorizon6.tsx","../../core/dist/shaders/horizon7/index.js","../src/components/OmbreHorizon7.tsx","../../core/dist/shaders/horizon8/index.js","../src/components/OmbreHorizon8.tsx","../../core/dist/shaders/horizon9/index.js","../src/components/OmbreHorizon9.tsx","../../core/dist/shaders/pearl1/index.js","../src/components/OmbrePearl1.tsx","../../core/dist/shaders/pearl2/index.js","../src/components/OmbrePearl2.tsx","../../core/dist/shaders/pearl3/index.js","../src/components/OmbrePearl3.tsx","../../core/dist/shaders/pearl4/index.js","../src/components/OmbrePearl4.tsx","../../core/dist/shaders/pearl5/index.js","../src/components/OmbrePearl5.tsx","../../core/dist/shaders/pearl6/index.js","../src/components/OmbrePearl6.tsx","../../core/dist/shaders/pearl7/index.js","../src/components/OmbrePearl7.tsx","../../core/dist/shaders/pearl8/index.js","../src/components/OmbrePearl8.tsx","../../core/dist/shaders/satin1/index.js","../src/components/OmbreSatin1.tsx","../../core/dist/shaders/satin2/index.js","../src/components/OmbreSatin2.tsx","../../core/dist/shaders/satin3/index.js","../src/components/OmbreSatin3.tsx","../../core/dist/shaders/satin4/index.js","../src/components/OmbreSatin4.tsx","../../core/dist/shaders/satin5/index.js","../src/components/OmbreSatin5.tsx","../../core/dist/shaders/satin6/index.js","../src/components/OmbreSatin6.tsx","../../core/dist/shaders/satin7/index.js","../src/components/OmbreSatin7.tsx","../../core/dist/shaders/satin8/index.js","../src/components/OmbreSatin8.tsx","../../core/dist/shaders/spiral1/index.js","../src/components/OmbreSpiral1.tsx","../../core/dist/shaders/spiral2/index.js","../src/components/OmbreSpiral2.tsx","../../core/dist/shaders/spiral3/index.js","../src/components/OmbreSpiral3.tsx","../../core/dist/shaders/spiral4/index.js","../src/components/OmbreSpiral4.tsx","../../core/dist/shaders/spiral5/index.js","../src/components/OmbreSpiral5.tsx","../../core/dist/shaders/spiral6/index.js","../src/components/OmbreSpiral6.tsx","../../core/dist/shaders/spiral7/index.js","../src/components/OmbreSpiral7.tsx","../../core/dist/shaders/spiral8/index.js","../src/components/OmbreSpiral8.tsx","../../core/dist/shaders/spiral9/index.js","../src/components/OmbreSpiral9.tsx","../../core/dist/shaders/synthesis1/index.js","../src/components/OmbreSynthesis1.tsx","../../core/dist/shaders/synthesis10/index.js","../src/components/OmbreSynthesis10.tsx","../../core/dist/shaders/synthesis2/index.js","../src/components/OmbreSynthesis2.tsx","../../core/dist/shaders/synthesis3/index.js","../src/components/OmbreSynthesis3.tsx","../../core/dist/shaders/synthesis4/index.js","../src/components/OmbreSynthesis4.tsx","../../core/dist/shaders/synthesis5/index.js","../src/components/OmbreSynthesis5.tsx","../../core/dist/shaders/synthesis6/index.js","../src/components/OmbreSynthesis6.tsx","../../core/dist/shaders/synthesis7/index.js","../src/components/OmbreSynthesis7.tsx","../../core/dist/shaders/synthesis8/index.js","../src/components/OmbreSynthesis8.tsx","../../core/dist/shaders/synthesis9/index.js","../src/components/OmbreSynthesis9.tsx","../../core/dist/shaders/vapor1/index.js","../src/components/OmbreVapor1.tsx","../../core/dist/shaders/vapor10/index.js","../src/components/OmbreVapor10.tsx","../../core/dist/shaders/vapor2/index.js","../src/components/OmbreVapor2.tsx","../../core/dist/shaders/vapor3/index.js","../src/components/OmbreVapor3.tsx","../../core/dist/shaders/vapor4/index.js","../src/components/OmbreVapor4.tsx","../../core/dist/shaders/vapor5/index.js","../src/components/OmbreVapor5.tsx","../../core/dist/shaders/vapor6/index.js","../src/components/OmbreVapor6.tsx","../../core/dist/shaders/vapor7/index.js","../src/components/OmbreVapor7.tsx","../../core/dist/shaders/vapor8/index.js","../src/components/OmbreVapor8.tsx","../../core/dist/shaders/vapor9/index.js","../src/components/OmbreVapor9.tsx","../../core/dist/shaders/whisper1/index.js","../src/components/OmbreWhisper1.tsx","../../core/dist/shaders/whisper2/index.js","../src/components/OmbreWhisper2.tsx","../../core/dist/shaders/whisper3/index.js","../src/components/OmbreWhisper3.tsx","../../core/dist/shaders/whisper4/index.js","../src/components/OmbreWhisper4.tsx","../../core/dist/shaders/whisper5/index.js","../src/components/OmbreWhisper5.tsx","../../core/dist/shaders/whisper6/index.js","../src/components/OmbreWhisper6.tsx","../../core/dist/shaders/whisper7/index.js","../src/components/OmbreWhisper7.tsx","../../core/dist/shaders/whisper8/index.js","../src/components/OmbreWhisper8.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst ze = \"172\", Ps = 0, Ls = 1, Os = 2, Ns = 0, Vs = 1, Ws = 3, Us = 0, qs = 1, js = 2, Gs = 0, Xs = 1, Hs = 2, Ys = 3, Zs = 4, Js = 5, $s = 100, Qs = 101, Ks = 102, tn = 103, en = 104, sn = 200, nn = 201, rn = 202, an = 203, hn = 204, on = 205, ln = 206, cn = 207, un = 208, pn = 209, dn = 210, mn = 0, fn = 1, yn = 2, xn = 3, gn = 4, Mn = 5, wn = 6, bn = 7, Sn = 0, _n = 1, zn = 2, An = 0, Fn = 1, Tn = 2, Cn = 3, Bn = 4, vn = 6, Rn = 7, En = 300, kn = 301, In = 302, Dn = 303, Pn = 304, Ln = 306, On = 1e3, Nn = 1001, Vn = 1002, Wn = 1003, Un = 1004, qn = 1005, jn = 1006, Gn = 1007, Xn = 1008, Hn = 1008, Yn = 1009, Zn = 1010, Jn = 1011, $n = 1012, Qn = 1013, Kn = 1014, tr = 1015, ir = 1016, er = 1017, sr = 1018, nr = 1020, rr = 35902, ar = 1021, hr = 1022, or = 1023, lr = 1024, cr = 1025, ur = 1026, pr = 1027, dr = 1028, mr = 1029, fr = 1030, yr = 1031, xr = 1032, gr = 1033, Mr = 33776, wr = 33777, br = 33778, Sr = 33779, _r = 35840, zr = 35841, Ar = 35842, Fr = 35843, Tr = 36196, Cr = 37492, Br = 37496, vr = 37808, Rr = 37809, Er = 37810, kr = 37811, Ir = 37812, Dr = 37813, Pr = 37814, Lr = 37815, Or = 37816, Nr = 37817, Vr = 37818, Wr = 37819, Ur = 37820, qr = 37821, jr = 36492, Gr = 36283, Xr = 36284, Hr = 36285, Yr = 36286, Zr = 0, Jr = 1, Ae = \"\", et = \"srgb\", ie = \"srgb-linear\", ee = \"linear\", Fi = \"srgb\", $r = 0, Qr = 7680, Kr = 7681, ta = 7682, ia = 7683, ea = 34055, sa = 34056, na = 5386, ra = 512, aa = 513, ha = 514, oa = 515, la = 516, ca = 517, ua = 518, pa = 519, da = 512, ma = 513, fa = 514, ya = 515, xa = 516, ga = 517, Ma = 518, wa = 519, ba = 35044, Sa = 35048, _a = 2e3, za = 2001;\nclass si {\n  addEventListener(t, i) {\n    this._listeners === void 0 && (this._listeners = {});\n    const e = this._listeners;\n    e[t] === void 0 && (e[t] = []), e[t].indexOf(i) === -1 && e[t].push(i);\n  }\n  hasEventListener(t, i) {\n    if (this._listeners === void 0) return !1;\n    const e = this._listeners;\n    return e[t] !== void 0 && e[t].indexOf(i) !== -1;\n  }\n  removeEventListener(t, i) {\n    if (this._listeners === void 0) return;\n    const s = this._listeners[t];\n    if (s !== void 0) {\n      const n = s.indexOf(i);\n      n !== -1 && s.splice(n, 1);\n    }\n  }\n  dispatchEvent(t) {\n    if (this._listeners === void 0) return;\n    const e = this._listeners[t.type];\n    if (e !== void 0) {\n      t.target = this;\n      const s = e.slice(0);\n      for (let n = 0, r = s.length; n < r; n++)\n        s[n].call(this, t);\n      t.target = null;\n    }\n  }\n}\nconst V = [\"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"0a\", \"0b\", \"0c\", \"0d\", \"0e\", \"0f\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"1a\", \"1b\", \"1c\", \"1d\", \"1e\", \"1f\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"2a\", \"2b\", \"2c\", \"2d\", \"2e\", \"2f\", \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\", \"3a\", \"3b\", \"3c\", \"3d\", \"3e\", \"3f\", \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\", \"4a\", \"4b\", \"4c\", \"4d\", \"4e\", \"4f\", \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\", \"5a\", \"5b\", \"5c\", \"5d\", \"5e\", \"5f\", \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\", \"6a\", \"6b\", \"6c\", \"6d\", \"6e\", \"6f\", \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\", \"7a\", \"7b\", \"7c\", \"7d\", \"7e\", \"7f\", \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\", \"8a\", \"8b\", \"8c\", \"8d\", \"8e\", \"8f\", \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\", \"9a\", \"9b\", \"9c\", \"9d\", \"9e\", \"9f\", \"a0\", \"a1\", \"a2\", \"a3\", \"a4\", \"a5\", \"a6\", \"a7\", \"a8\", \"a9\", \"aa\", \"ab\", \"ac\", \"ad\", \"ae\", \"af\", \"b0\", \"b1\", \"b2\", \"b3\", \"b4\", \"b5\", \"b6\", \"b7\", \"b8\", \"b9\", \"ba\", \"bb\", \"bc\", \"bd\", \"be\", \"bf\", \"c0\", \"c1\", \"c2\", \"c3\", \"c4\", \"c5\", \"c6\", \"c7\", \"c8\", \"c9\", \"ca\", \"cb\", \"cc\", \"cd\", \"ce\", \"cf\", \"d0\", \"d1\", \"d2\", \"d3\", \"d4\", \"d5\", \"d6\", \"d7\", \"d8\", \"d9\", \"da\", \"db\", \"dc\", \"dd\", \"de\", \"df\", \"e0\", \"e1\", \"e2\", \"e3\", \"e4\", \"e5\", \"e6\", \"e7\", \"e8\", \"e9\", \"ea\", \"eb\", \"ec\", \"ed\", \"ee\", \"ef\", \"f0\", \"f1\", \"f2\", \"f3\", \"f4\", \"f5\", \"f6\", \"f7\", \"f8\", \"f9\", \"fa\", \"fb\", \"fc\", \"fd\", \"fe\", \"ff\"];\nlet se = 1234567;\nconst ti = Math.PI / 180, ei = 180 / Math.PI;\nfunction mt() {\n  const p = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0, i = Math.random() * 4294967295 | 0, e = Math.random() * 4294967295 | 0;\n  return (V[p & 255] + V[p >> 8 & 255] + V[p >> 16 & 255] + V[p >> 24 & 255] + \"-\" + V[t & 255] + V[t >> 8 & 255] + \"-\" + V[t >> 16 & 15 | 64] + V[t >> 24 & 255] + \"-\" + V[i & 63 | 128] + V[i >> 8 & 255] + \"-\" + V[i >> 16 & 255] + V[i >> 24 & 255] + V[e & 255] + V[e >> 8 & 255] + V[e >> 16 & 255] + V[e >> 24 & 255]).toLowerCase();\n}\nfunction T(p, t, i) {\n  return Math.max(t, Math.min(i, p));\n}\nfunction Ji(p, t) {\n  return (p % t + t) % t;\n}\nfunction ke(p, t, i, e, s) {\n  return e + (p - t) * (s - e) / (i - t);\n}\nfunction Ie(p, t, i) {\n  return p !== t ? (i - p) / (t - p) : 0;\n}\nfunction ii(p, t, i) {\n  return (1 - i) * p + i * t;\n}\nfunction De(p, t, i, e) {\n  return ii(p, t, 1 - Math.exp(-i * e));\n}\nfunction Pe(p, t = 1) {\n  return t - Math.abs(Ji(p, t * 2) - t);\n}\nfunction Le(p, t, i) {\n  return p <= t ? 0 : p >= i ? 1 : (p = (p - t) / (i - t), p * p * (3 - 2 * p));\n}\nfunction Oe(p, t, i) {\n  return p <= t ? 0 : p >= i ? 1 : (p = (p - t) / (i - t), p * p * p * (p * (p * 6 - 15) + 10));\n}\nfunction Ne(p, t) {\n  return p + Math.floor(Math.random() * (t - p + 1));\n}\nfunction Ve(p, t) {\n  return p + Math.random() * (t - p);\n}\nfunction We(p) {\n  return p * (0.5 - Math.random());\n}\nfunction Ue(p) {\n  p !== void 0 && (se = p);\n  let t = se += 1831565813;\n  return t = Math.imul(t ^ t >>> 15, t | 1), t ^= t + Math.imul(t ^ t >>> 7, t | 61), ((t ^ t >>> 14) >>> 0) / 4294967296;\n}\nfunction qe(p) {\n  return p * ti;\n}\nfunction je(p) {\n  return p * ei;\n}\nfunction Ge(p) {\n  return (p & p - 1) === 0 && p !== 0;\n}\nfunction Xe(p) {\n  return Math.pow(2, Math.ceil(Math.log(p) / Math.LN2));\n}\nfunction He(p) {\n  return Math.pow(2, Math.floor(Math.log(p) / Math.LN2));\n}\nfunction Ye(p, t, i, e, s) {\n  const n = Math.cos, r = Math.sin, h = n(i / 2), a = r(i / 2), o = n((t + e) / 2), l = r((t + e) / 2), c = n((t - e) / 2), u = r((t - e) / 2), d = n((e - t) / 2), m = r((e - t) / 2);\n  switch (s) {\n    case \"XYX\":\n      p.set(h * l, a * c, a * u, h * o);\n      break;\n    case \"YZY\":\n      p.set(a * u, h * l, a * c, h * o);\n      break;\n    case \"ZXZ\":\n      p.set(a * c, a * u, h * l, h * o);\n      break;\n    case \"XZX\":\n      p.set(h * l, a * m, a * d, h * o);\n      break;\n    case \"YXY\":\n      p.set(a * d, h * l, a * m, h * o);\n      break;\n    case \"ZYZ\":\n      p.set(a * m, a * d, h * l, h * o);\n      break;\n    default:\n      console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \" + s);\n  }\n}\nfunction q(p, t) {\n  switch (t.constructor) {\n    case Float32Array:\n      return p;\n    case Uint32Array:\n      return p / 4294967295;\n    case Uint16Array:\n      return p / 65535;\n    case Uint8Array:\n      return p / 255;\n    case Int32Array:\n      return Math.max(p / 2147483647, -1);\n    case Int16Array:\n      return Math.max(p / 32767, -1);\n    case Int8Array:\n      return Math.max(p / 127, -1);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction z(p, t) {\n  switch (t.constructor) {\n    case Float32Array:\n      return p;\n    case Uint32Array:\n      return Math.round(p * 4294967295);\n    case Uint16Array:\n      return Math.round(p * 65535);\n    case Uint8Array:\n      return Math.round(p * 255);\n    case Int32Array:\n      return Math.round(p * 2147483647);\n    case Int16Array:\n      return Math.round(p * 32767);\n    case Int8Array:\n      return Math.round(p * 127);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nconst Aa = {\n  DEG2RAD: ti,\n  RAD2DEG: ei,\n  generateUUID: mt,\n  clamp: T,\n  euclideanModulo: Ji,\n  mapLinear: ke,\n  inverseLerp: Ie,\n  lerp: ii,\n  damp: De,\n  pingpong: Pe,\n  smoothstep: Le,\n  smootherstep: Oe,\n  randInt: Ne,\n  randFloat: Ve,\n  randFloatSpread: We,\n  seededRandom: Ue,\n  degToRad: qe,\n  radToDeg: je,\n  isPowerOfTwo: Ge,\n  ceilPowerOfTwo: Xe,\n  floorPowerOfTwo: He,\n  setQuaternionFromProperEuler: Ye,\n  normalize: z,\n  denormalize: q\n};\nclass C {\n  constructor(t = 0, i = 0) {\n    C.prototype.isVector2 = !0, this.x = t, this.y = i;\n  }\n  get width() {\n    return this.x;\n  }\n  set width(t) {\n    this.x = t;\n  }\n  get height() {\n    return this.y;\n  }\n  set height(t) {\n    this.y = t;\n  }\n  set(t, i) {\n    return this.x = t, this.y = i, this;\n  }\n  setScalar(t) {\n    return this.x = t, this.y = t, this;\n  }\n  setX(t) {\n    return this.x = t, this;\n  }\n  setY(t) {\n    return this.y = t, this;\n  }\n  setComponent(t, i) {\n    switch (t) {\n      case 0:\n        this.x = i;\n        break;\n      case 1:\n        this.y = i;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + t);\n    }\n    return this;\n  }\n  getComponent(t) {\n    switch (t) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      default:\n        throw new Error(\"index is out of range: \" + t);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y);\n  }\n  copy(t) {\n    return this.x = t.x, this.y = t.y, this;\n  }\n  add(t) {\n    return this.x += t.x, this.y += t.y, this;\n  }\n  addScalar(t) {\n    return this.x += t, this.y += t, this;\n  }\n  addVectors(t, i) {\n    return this.x = t.x + i.x, this.y = t.y + i.y, this;\n  }\n  addScaledVector(t, i) {\n    return this.x += t.x * i, this.y += t.y * i, this;\n  }\n  sub(t) {\n    return this.x -= t.x, this.y -= t.y, this;\n  }\n  subScalar(t) {\n    return this.x -= t, this.y -= t, this;\n  }\n  subVectors(t, i) {\n    return this.x = t.x - i.x, this.y = t.y - i.y, this;\n  }\n  multiply(t) {\n    return this.x *= t.x, this.y *= t.y, this;\n  }\n  multiplyScalar(t) {\n    return this.x *= t, this.y *= t, this;\n  }\n  divide(t) {\n    return this.x /= t.x, this.y /= t.y, this;\n  }\n  divideScalar(t) {\n    return this.multiplyScalar(1 / t);\n  }\n  applyMatrix3(t) {\n    const i = this.x, e = this.y, s = t.elements;\n    return this.x = s[0] * i + s[3] * e + s[6], this.y = s[1] * i + s[4] * e + s[7], this;\n  }\n  min(t) {\n    return this.x = Math.min(this.x, t.x), this.y = Math.min(this.y, t.y), this;\n  }\n  max(t) {\n    return this.x = Math.max(this.x, t.x), this.y = Math.max(this.y, t.y), this;\n  }\n  clamp(t, i) {\n    return this.x = T(this.x, t.x, i.x), this.y = T(this.y, t.y, i.y), this;\n  }\n  clampScalar(t, i) {\n    return this.x = T(this.x, t, i), this.y = T(this.y, t, i), this;\n  }\n  clampLength(t, i) {\n    const e = this.length();\n    return this.divideScalar(e || 1).multiplyScalar(T(e, t, i));\n  }\n  floor() {\n    return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this;\n  }\n  ceil() {\n    return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this;\n  }\n  round() {\n    return this.x = Math.round(this.x), this.y = Math.round(this.y), this;\n  }\n  roundToZero() {\n    return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this;\n  }\n  negate() {\n    return this.x = -this.x, this.y = -this.y, this;\n  }\n  dot(t) {\n    return this.x * t.x + this.y * t.y;\n  }\n  cross(t) {\n    return this.x * t.y - this.y * t.x;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  angle() {\n    return Math.atan2(-this.y, -this.x) + Math.PI;\n  }\n  angleTo(t) {\n    const i = Math.sqrt(this.lengthSq() * t.lengthSq());\n    if (i === 0) return Math.PI / 2;\n    const e = this.dot(t) / i;\n    return Math.acos(T(e, -1, 1));\n  }\n  distanceTo(t) {\n    return Math.sqrt(this.distanceToSquared(t));\n  }\n  distanceToSquared(t) {\n    const i = this.x - t.x, e = this.y - t.y;\n    return i * i + e * e;\n  }\n  manhattanDistanceTo(t) {\n    return Math.abs(this.x - t.x) + Math.abs(this.y - t.y);\n  }\n  setLength(t) {\n    return this.normalize().multiplyScalar(t);\n  }\n  lerp(t, i) {\n    return this.x += (t.x - this.x) * i, this.y += (t.y - this.y) * i, this;\n  }\n  lerpVectors(t, i, e) {\n    return this.x = t.x + (i.x - t.x) * e, this.y = t.y + (i.y - t.y) * e, this;\n  }\n  equals(t) {\n    return t.x === this.x && t.y === this.y;\n  }\n  fromArray(t, i = 0) {\n    return this.x = t[i], this.y = t[i + 1], this;\n  }\n  toArray(t = [], i = 0) {\n    return t[i] = this.x, t[i + 1] = this.y, t;\n  }\n  fromBufferAttribute(t, i) {\n    return this.x = t.getX(i), this.y = t.getY(i), this;\n  }\n  rotateAround(t, i) {\n    const e = Math.cos(i), s = Math.sin(i), n = this.x - t.x, r = this.y - t.y;\n    return this.x = n * e - r * s + t.x, this.y = n * s + r * e + t.y, this;\n  }\n  random() {\n    return this.x = Math.random(), this.y = Math.random(), this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x, yield this.y;\n  }\n}\nclass xt {\n  constructor(t, i, e, s, n, r, h, a, o) {\n    xt.prototype.isMatrix3 = !0, this.elements = [\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    ], t !== void 0 && this.set(t, i, e, s, n, r, h, a, o);\n  }\n  set(t, i, e, s, n, r, h, a, o) {\n    const l = this.elements;\n    return l[0] = t, l[1] = s, l[2] = h, l[3] = i, l[4] = n, l[5] = a, l[6] = e, l[7] = r, l[8] = o, this;\n  }\n  identity() {\n    return this.set(\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  copy(t) {\n    const i = this.elements, e = t.elements;\n    return i[0] = e[0], i[1] = e[1], i[2] = e[2], i[3] = e[3], i[4] = e[4], i[5] = e[5], i[6] = e[6], i[7] = e[7], i[8] = e[8], this;\n  }\n  extractBasis(t, i, e) {\n    return t.setFromMatrix3Column(this, 0), i.setFromMatrix3Column(this, 1), e.setFromMatrix3Column(this, 2), this;\n  }\n  setFromMatrix4(t) {\n    const i = t.elements;\n    return this.set(\n      i[0],\n      i[4],\n      i[8],\n      i[1],\n      i[5],\n      i[9],\n      i[2],\n      i[6],\n      i[10]\n    ), this;\n  }\n  multiply(t) {\n    return this.multiplyMatrices(this, t);\n  }\n  premultiply(t) {\n    return this.multiplyMatrices(t, this);\n  }\n  multiplyMatrices(t, i) {\n    const e = t.elements, s = i.elements, n = this.elements, r = e[0], h = e[3], a = e[6], o = e[1], l = e[4], c = e[7], u = e[2], d = e[5], m = e[8], y = s[0], x = s[3], g = s[6], w = s[1], b = s[4], M = s[7], S = s[2], F = s[5], _ = s[8];\n    return n[0] = r * y + h * w + a * S, n[3] = r * x + h * b + a * F, n[6] = r * g + h * M + a * _, n[1] = o * y + l * w + c * S, n[4] = o * x + l * b + c * F, n[7] = o * g + l * M + c * _, n[2] = u * y + d * w + m * S, n[5] = u * x + d * b + m * F, n[8] = u * g + d * M + m * _, this;\n  }\n  multiplyScalar(t) {\n    const i = this.elements;\n    return i[0] *= t, i[3] *= t, i[6] *= t, i[1] *= t, i[4] *= t, i[7] *= t, i[2] *= t, i[5] *= t, i[8] *= t, this;\n  }\n  determinant() {\n    const t = this.elements, i = t[0], e = t[1], s = t[2], n = t[3], r = t[4], h = t[5], a = t[6], o = t[7], l = t[8];\n    return i * r * l - i * h * o - e * n * l + e * h * a + s * n * o - s * r * a;\n  }\n  invert() {\n    const t = this.elements, i = t[0], e = t[1], s = t[2], n = t[3], r = t[4], h = t[5], a = t[6], o = t[7], l = t[8], c = l * r - h * o, u = h * a - l * n, d = o * n - r * a, m = i * c + e * u + s * d;\n    if (m === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const y = 1 / m;\n    return t[0] = c * y, t[1] = (s * o - l * e) * y, t[2] = (h * e - s * r) * y, t[3] = u * y, t[4] = (l * i - s * a) * y, t[5] = (s * n - h * i) * y, t[6] = d * y, t[7] = (e * a - o * i) * y, t[8] = (r * i - e * n) * y, this;\n  }\n  transpose() {\n    let t;\n    const i = this.elements;\n    return t = i[1], i[1] = i[3], i[3] = t, t = i[2], i[2] = i[6], i[6] = t, t = i[5], i[5] = i[7], i[7] = t, this;\n  }\n  getNormalMatrix(t) {\n    return this.setFromMatrix4(t).invert().transpose();\n  }\n  transposeIntoArray(t) {\n    const i = this.elements;\n    return t[0] = i[0], t[1] = i[3], t[2] = i[6], t[3] = i[1], t[4] = i[4], t[5] = i[7], t[6] = i[2], t[7] = i[5], t[8] = i[8], this;\n  }\n  setUvTransform(t, i, e, s, n, r, h) {\n    const a = Math.cos(n), o = Math.sin(n);\n    return this.set(\n      e * a,\n      e * o,\n      -e * (a * r + o * h) + r + t,\n      -s * o,\n      s * a,\n      -s * (-o * r + a * h) + h + i,\n      0,\n      0,\n      1\n    ), this;\n  }\n  //\n  scale(t, i) {\n    return this.premultiply(Ti.makeScale(t, i)), this;\n  }\n  rotate(t) {\n    return this.premultiply(Ti.makeRotation(-t)), this;\n  }\n  translate(t, i) {\n    return this.premultiply(Ti.makeTranslation(t, i)), this;\n  }\n  // for 2D Transforms\n  makeTranslation(t, i) {\n    return t.isVector2 ? this.set(\n      1,\n      0,\n      t.x,\n      0,\n      1,\n      t.y,\n      0,\n      0,\n      1\n    ) : this.set(\n      1,\n      0,\n      t,\n      0,\n      1,\n      i,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeRotation(t) {\n    const i = Math.cos(t), e = Math.sin(t);\n    return this.set(\n      i,\n      -e,\n      0,\n      e,\n      i,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeScale(t, i) {\n    return this.set(\n      t,\n      0,\n      0,\n      0,\n      i,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  //\n  equals(t) {\n    const i = this.elements, e = t.elements;\n    for (let s = 0; s < 9; s++)\n      if (i[s] !== e[s]) return !1;\n    return !0;\n  }\n  fromArray(t, i = 0) {\n    for (let e = 0; e < 9; e++)\n      this.elements[e] = t[e + i];\n    return this;\n  }\n  toArray(t = [], i = 0) {\n    const e = this.elements;\n    return t[i] = e[0], t[i + 1] = e[1], t[i + 2] = e[2], t[i + 3] = e[3], t[i + 4] = e[4], t[i + 5] = e[5], t[i + 6] = e[6], t[i + 7] = e[7], t[i + 8] = e[8], t;\n  }\n  clone() {\n    return new this.constructor().fromArray(this.elements);\n  }\n}\nconst Ti = /* @__PURE__ */ new xt();\nfunction Ze(p) {\n  for (let t = p.length - 1; t >= 0; --t)\n    if (p[t] >= 65535) return !0;\n  return !1;\n}\nfunction Zi(p) {\n  return document.createElementNS(\"http://www.w3.org/1999/xhtml\", p);\n}\nfunction Fa() {\n  const p = Zi(\"canvas\");\n  return p.style.display = \"block\", p;\n}\nconst ne = {};\nfunction Ta(p) {\n  p in ne || (ne[p] = !0, console.warn(p));\n}\nconst re = /* @__PURE__ */ new xt().set(\n  0.4123908,\n  0.3575843,\n  0.1804808,\n  0.212639,\n  0.7151687,\n  0.0721923,\n  0.0193308,\n  0.1191948,\n  0.9505322\n), ae = /* @__PURE__ */ new xt().set(\n  3.2409699,\n  -1.5373832,\n  -0.4986108,\n  -0.9692436,\n  1.8759675,\n  0.0415551,\n  0.0556301,\n  -0.203977,\n  1.0569715\n);\nfunction Je() {\n  const p = {\n    enabled: !0,\n    workingColorSpace: ie,\n    /**\n     * Implementations of supported color spaces.\n     *\n     * Required:\n     *\t- primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n     *\t- whitePoint: reference white [ x y ]\n     *\t- transfer: transfer function (pre-defined)\n     *\t- toXYZ: Matrix3 RGB to XYZ transform\n     *\t- fromXYZ: Matrix3 XYZ to RGB transform\n     *\t- luminanceCoefficients: RGB luminance coefficients\n     *\n     * Optional:\n     *  - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace }\n     *  - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n     *\n     * Reference:\n     * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n     */\n    spaces: {},\n    convert: function(s, n, r) {\n      return this.enabled === !1 || n === r || !n || !r || (this.spaces[n].transfer === Fi && (s.r = ft(s.r), s.g = ft(s.g), s.b = ft(s.b)), this.spaces[n].primaries !== this.spaces[r].primaries && (s.applyMatrix3(this.spaces[n].toXYZ), s.applyMatrix3(this.spaces[r].fromXYZ)), this.spaces[r].transfer === Fi && (s.r = Yt(s.r), s.g = Yt(s.g), s.b = Yt(s.b))), s;\n    },\n    fromWorkingColorSpace: function(s, n) {\n      return this.convert(s, this.workingColorSpace, n);\n    },\n    toWorkingColorSpace: function(s, n) {\n      return this.convert(s, n, this.workingColorSpace);\n    },\n    getPrimaries: function(s) {\n      return this.spaces[s].primaries;\n    },\n    getTransfer: function(s) {\n      return s === Ae ? ee : this.spaces[s].transfer;\n    },\n    getLuminanceCoefficients: function(s, n = this.workingColorSpace) {\n      return s.fromArray(this.spaces[n].luminanceCoefficients);\n    },\n    define: function(s) {\n      Object.assign(this.spaces, s);\n    },\n    // Internal APIs\n    _getMatrix: function(s, n, r) {\n      return s.copy(this.spaces[n].toXYZ).multiply(this.spaces[r].fromXYZ);\n    },\n    _getDrawingBufferColorSpace: function(s) {\n      return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace;\n    },\n    _getUnpackColorSpace: function(s = this.workingColorSpace) {\n      return this.spaces[s].workingColorSpaceConfig.unpackColorSpace;\n    }\n  }, t = [0.64, 0.33, 0.3, 0.6, 0.15, 0.06], i = [0.2126, 0.7152, 0.0722], e = [0.3127, 0.329];\n  return p.define({\n    [ie]: {\n      primaries: t,\n      whitePoint: e,\n      transfer: ee,\n      toXYZ: re,\n      fromXYZ: ae,\n      luminanceCoefficients: i,\n      workingColorSpaceConfig: { unpackColorSpace: et },\n      outputColorSpaceConfig: { drawingBufferColorSpace: et }\n    },\n    [et]: {\n      primaries: t,\n      whitePoint: e,\n      transfer: Fi,\n      toXYZ: re,\n      fromXYZ: ae,\n      luminanceCoefficients: i,\n      outputColorSpaceConfig: { drawingBufferColorSpace: et }\n    }\n  }), p;\n}\nconst Q = /* @__PURE__ */ Je();\nfunction ft(p) {\n  return p < 0.04045 ? p * 0.0773993808 : Math.pow(p * 0.9478672986 + 0.0521327014, 2.4);\n}\nfunction Yt(p) {\n  return p < 31308e-7 ? p * 12.92 : 1.055 * Math.pow(p, 0.41666) - 0.055;\n}\nlet Dt;\nclass $e {\n  static getDataURL(t) {\n    if (/^data:/i.test(t.src) || typeof HTMLCanvasElement > \"u\")\n      return t.src;\n    let i;\n    if (t instanceof HTMLCanvasElement)\n      i = t;\n    else {\n      Dt === void 0 && (Dt = Zi(\"canvas\")), Dt.width = t.width, Dt.height = t.height;\n      const e = Dt.getContext(\"2d\");\n      t instanceof ImageData ? e.putImageData(t, 0, 0) : e.drawImage(t, 0, 0, t.width, t.height), i = Dt;\n    }\n    return i.width > 2048 || i.height > 2048 ? (console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\", t), i.toDataURL(\"image/jpeg\", 0.6)) : i.toDataURL(\"image/png\");\n  }\n  static sRGBToLinear(t) {\n    if (typeof HTMLImageElement < \"u\" && t instanceof HTMLImageElement || typeof HTMLCanvasElement < \"u\" && t instanceof HTMLCanvasElement || typeof ImageBitmap < \"u\" && t instanceof ImageBitmap) {\n      const i = Zi(\"canvas\");\n      i.width = t.width, i.height = t.height;\n      const e = i.getContext(\"2d\");\n      e.drawImage(t, 0, 0, t.width, t.height);\n      const s = e.getImageData(0, 0, t.width, t.height), n = s.data;\n      for (let r = 0; r < n.length; r++)\n        n[r] = ft(n[r] / 255) * 255;\n      return e.putImageData(s, 0, 0), i;\n    } else if (t.data) {\n      const i = t.data.slice(0);\n      for (let e = 0; e < i.length; e++)\n        i instanceof Uint8Array || i instanceof Uint8ClampedArray ? i[e] = Math.floor(ft(i[e] / 255) * 255) : i[e] = ft(i[e]);\n      return {\n        data: i,\n        width: t.width,\n        height: t.height\n      };\n    } else\n      return console.warn(\"THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.\"), t;\n  }\n}\nlet Qe = 0;\nclass Fe {\n  constructor(t = null) {\n    this.isSource = !0, Object.defineProperty(this, \"id\", { value: Qe++ }), this.uuid = mt(), this.data = t, this.dataReady = !0, this.version = 0;\n  }\n  set needsUpdate(t) {\n    t === !0 && this.version++;\n  }\n  toJSON(t) {\n    const i = t === void 0 || typeof t == \"string\";\n    if (!i && t.images[this.uuid] !== void 0)\n      return t.images[this.uuid];\n    const e = {\n      uuid: this.uuid,\n      url: \"\"\n    }, s = this.data;\n    if (s !== null) {\n      let n;\n      if (Array.isArray(s)) {\n        n = [];\n        for (let r = 0, h = s.length; r < h; r++)\n          s[r].isDataTexture ? n.push(Ci(s[r].image)) : n.push(Ci(s[r]));\n      } else\n        n = Ci(s);\n      e.url = n;\n    }\n    return i || (t.images[this.uuid] = e), e;\n  }\n}\nfunction Ci(p) {\n  return typeof HTMLImageElement < \"u\" && p instanceof HTMLImageElement || typeof HTMLCanvasElement < \"u\" && p instanceof HTMLCanvasElement || typeof ImageBitmap < \"u\" && p instanceof ImageBitmap ? $e.getDataURL(p) : p.data ? {\n    data: Array.from(p.data),\n    width: p.width,\n    height: p.height,\n    type: p.data.constructor.name\n  } : (console.warn(\"THREE.Texture: Unable to serialize Texture.\"), {});\n}\nlet Ke = 0;\nclass Z extends si {\n  constructor(t = Z.DEFAULT_IMAGE, i = Z.DEFAULT_MAPPING, e = 1001, s = 1001, n = 1006, r = 1008, h = 1023, a = 1009, o = Z.DEFAULT_ANISOTROPY, l = Ae) {\n    super(), this.isTexture = !0, Object.defineProperty(this, \"id\", { value: Ke++ }), this.uuid = mt(), this.name = \"\", this.source = new Fe(t), this.mipmaps = [], this.mapping = i, this.channel = 0, this.wrapS = e, this.wrapT = s, this.magFilter = n, this.minFilter = r, this.anisotropy = o, this.format = h, this.internalFormat = null, this.type = a, this.offset = new C(0, 0), this.repeat = new C(1, 1), this.center = new C(0, 0), this.rotation = 0, this.matrixAutoUpdate = !0, this.matrix = new xt(), this.generateMipmaps = !0, this.premultiplyAlpha = !1, this.flipY = !0, this.unpackAlignment = 4, this.colorSpace = l, this.userData = {}, this.version = 0, this.onUpdate = null, this.renderTarget = null, this.isRenderTargetTexture = !1, this.pmremVersion = 0;\n  }\n  get image() {\n    return this.source.data;\n  }\n  set image(t = null) {\n    this.source.data = t;\n  }\n  updateMatrix() {\n    this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(t) {\n    return this.name = t.name, this.source = t.source, this.mipmaps = t.mipmaps.slice(0), this.mapping = t.mapping, this.channel = t.channel, this.wrapS = t.wrapS, this.wrapT = t.wrapT, this.magFilter = t.magFilter, this.minFilter = t.minFilter, this.anisotropy = t.anisotropy, this.format = t.format, this.internalFormat = t.internalFormat, this.type = t.type, this.offset.copy(t.offset), this.repeat.copy(t.repeat), this.center.copy(t.center), this.rotation = t.rotation, this.matrixAutoUpdate = t.matrixAutoUpdate, this.matrix.copy(t.matrix), this.generateMipmaps = t.generateMipmaps, this.premultiplyAlpha = t.premultiplyAlpha, this.flipY = t.flipY, this.unpackAlignment = t.unpackAlignment, this.colorSpace = t.colorSpace, this.renderTarget = t.renderTarget, this.isRenderTargetTexture = t.isRenderTargetTexture, this.userData = JSON.parse(JSON.stringify(t.userData)), this.needsUpdate = !0, this;\n  }\n  toJSON(t) {\n    const i = t === void 0 || typeof t == \"string\";\n    if (!i && t.textures[this.uuid] !== void 0)\n      return t.textures[this.uuid];\n    const e = {\n      metadata: {\n        version: 4.6,\n        type: \"Texture\",\n        generator: \"Texture.toJSON\"\n      },\n      uuid: this.uuid,\n      name: this.name,\n      image: this.source.toJSON(t).uuid,\n      mapping: this.mapping,\n      channel: this.channel,\n      repeat: [this.repeat.x, this.repeat.y],\n      offset: [this.offset.x, this.offset.y],\n      center: [this.center.x, this.center.y],\n      rotation: this.rotation,\n      wrap: [this.wrapS, this.wrapT],\n      format: this.format,\n      internalFormat: this.internalFormat,\n      type: this.type,\n      colorSpace: this.colorSpace,\n      minFilter: this.minFilter,\n      magFilter: this.magFilter,\n      anisotropy: this.anisotropy,\n      flipY: this.flipY,\n      generateMipmaps: this.generateMipmaps,\n      premultiplyAlpha: this.premultiplyAlpha,\n      unpackAlignment: this.unpackAlignment\n    };\n    return Object.keys(this.userData).length > 0 && (e.userData = this.userData), i || (t.textures[this.uuid] = e), e;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  transformUv(t) {\n    if (this.mapping !== 300) return t;\n    if (t.applyMatrix3(this.matrix), t.x < 0 || t.x > 1)\n      switch (this.wrapS) {\n        case 1e3:\n          t.x = t.x - Math.floor(t.x);\n          break;\n        case 1001:\n          t.x = t.x < 0 ? 0 : 1;\n          break;\n        case 1002:\n          Math.abs(Math.floor(t.x) % 2) === 1 ? t.x = Math.ceil(t.x) - t.x : t.x = t.x - Math.floor(t.x);\n          break;\n      }\n    if (t.y < 0 || t.y > 1)\n      switch (this.wrapT) {\n        case 1e3:\n          t.y = t.y - Math.floor(t.y);\n          break;\n        case 1001:\n          t.y = t.y < 0 ? 0 : 1;\n          break;\n        case 1002:\n          Math.abs(Math.floor(t.y) % 2) === 1 ? t.y = Math.ceil(t.y) - t.y : t.y = t.y - Math.floor(t.y);\n          break;\n      }\n    return this.flipY && (t.y = 1 - t.y), t;\n  }\n  set needsUpdate(t) {\n    t === !0 && (this.version++, this.source.needsUpdate = !0);\n  }\n  set needsPMREMUpdate(t) {\n    t === !0 && this.pmremVersion++;\n  }\n}\nZ.DEFAULT_IMAGE = null;\nZ.DEFAULT_MAPPING = 300;\nZ.DEFAULT_ANISOTROPY = 1;\nclass j {\n  constructor(t = 0, i = 0, e = 0, s = 1) {\n    j.prototype.isVector4 = !0, this.x = t, this.y = i, this.z = e, this.w = s;\n  }\n  get width() {\n    return this.z;\n  }\n  set width(t) {\n    this.z = t;\n  }\n  get height() {\n    return this.w;\n  }\n  set height(t) {\n    this.w = t;\n  }\n  set(t, i, e, s) {\n    return this.x = t, this.y = i, this.z = e, this.w = s, this;\n  }\n  setScalar(t) {\n    return this.x = t, this.y = t, this.z = t, this.w = t, this;\n  }\n  setX(t) {\n    return this.x = t, this;\n  }\n  setY(t) {\n    return this.y = t, this;\n  }\n  setZ(t) {\n    return this.z = t, this;\n  }\n  setW(t) {\n    return this.w = t, this;\n  }\n  setComponent(t, i) {\n    switch (t) {\n      case 0:\n        this.x = i;\n        break;\n      case 1:\n        this.y = i;\n        break;\n      case 2:\n        this.z = i;\n        break;\n      case 3:\n        this.w = i;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + t);\n    }\n    return this;\n  }\n  getComponent(t) {\n    switch (t) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      case 3:\n        return this.w;\n      default:\n        throw new Error(\"index is out of range: \" + t);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z, this.w);\n  }\n  copy(t) {\n    return this.x = t.x, this.y = t.y, this.z = t.z, this.w = t.w !== void 0 ? t.w : 1, this;\n  }\n  add(t) {\n    return this.x += t.x, this.y += t.y, this.z += t.z, this.w += t.w, this;\n  }\n  addScalar(t) {\n    return this.x += t, this.y += t, this.z += t, this.w += t, this;\n  }\n  addVectors(t, i) {\n    return this.x = t.x + i.x, this.y = t.y + i.y, this.z = t.z + i.z, this.w = t.w + i.w, this;\n  }\n  addScaledVector(t, i) {\n    return this.x += t.x * i, this.y += t.y * i, this.z += t.z * i, this.w += t.w * i, this;\n  }\n  sub(t) {\n    return this.x -= t.x, this.y -= t.y, this.z -= t.z, this.w -= t.w, this;\n  }\n  subScalar(t) {\n    return this.x -= t, this.y -= t, this.z -= t, this.w -= t, this;\n  }\n  subVectors(t, i) {\n    return this.x = t.x - i.x, this.y = t.y - i.y, this.z = t.z - i.z, this.w = t.w - i.w, this;\n  }\n  multiply(t) {\n    return this.x *= t.x, this.y *= t.y, this.z *= t.z, this.w *= t.w, this;\n  }\n  multiplyScalar(t) {\n    return this.x *= t, this.y *= t, this.z *= t, this.w *= t, this;\n  }\n  applyMatrix4(t) {\n    const i = this.x, e = this.y, s = this.z, n = this.w, r = t.elements;\n    return this.x = r[0] * i + r[4] * e + r[8] * s + r[12] * n, this.y = r[1] * i + r[5] * e + r[9] * s + r[13] * n, this.z = r[2] * i + r[6] * e + r[10] * s + r[14] * n, this.w = r[3] * i + r[7] * e + r[11] * s + r[15] * n, this;\n  }\n  divide(t) {\n    return this.x /= t.x, this.y /= t.y, this.z /= t.z, this.w /= t.w, this;\n  }\n  divideScalar(t) {\n    return this.multiplyScalar(1 / t);\n  }\n  setAxisAngleFromQuaternion(t) {\n    this.w = 2 * Math.acos(t.w);\n    const i = Math.sqrt(1 - t.w * t.w);\n    return i < 1e-4 ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = t.x / i, this.y = t.y / i, this.z = t.z / i), this;\n  }\n  setAxisAngleFromRotationMatrix(t) {\n    let i, e, s, n;\n    const a = t.elements, o = a[0], l = a[4], c = a[8], u = a[1], d = a[5], m = a[9], y = a[2], x = a[6], g = a[10];\n    if (Math.abs(l - u) < 0.01 && Math.abs(c - y) < 0.01 && Math.abs(m - x) < 0.01) {\n      if (Math.abs(l + u) < 0.1 && Math.abs(c + y) < 0.1 && Math.abs(m + x) < 0.1 && Math.abs(o + d + g - 3) < 0.1)\n        return this.set(1, 0, 0, 0), this;\n      i = Math.PI;\n      const b = (o + 1) / 2, M = (d + 1) / 2, S = (g + 1) / 2, F = (l + u) / 4, _ = (c + y) / 4, A = (m + x) / 4;\n      return b > M && b > S ? b < 0.01 ? (e = 0, s = 0.707106781, n = 0.707106781) : (e = Math.sqrt(b), s = F / e, n = _ / e) : M > S ? M < 0.01 ? (e = 0.707106781, s = 0, n = 0.707106781) : (s = Math.sqrt(M), e = F / s, n = A / s) : S < 0.01 ? (e = 0.707106781, s = 0.707106781, n = 0) : (n = Math.sqrt(S), e = _ / n, s = A / n), this.set(e, s, n, i), this;\n    }\n    let w = Math.sqrt((x - m) * (x - m) + (c - y) * (c - y) + (u - l) * (u - l));\n    return Math.abs(w) < 1e-3 && (w = 1), this.x = (x - m) / w, this.y = (c - y) / w, this.z = (u - l) / w, this.w = Math.acos((o + d + g - 1) / 2), this;\n  }\n  setFromMatrixPosition(t) {\n    const i = t.elements;\n    return this.x = i[12], this.y = i[13], this.z = i[14], this.w = i[15], this;\n  }\n  min(t) {\n    return this.x = Math.min(this.x, t.x), this.y = Math.min(this.y, t.y), this.z = Math.min(this.z, t.z), this.w = Math.min(this.w, t.w), this;\n  }\n  max(t) {\n    return this.x = Math.max(this.x, t.x), this.y = Math.max(this.y, t.y), this.z = Math.max(this.z, t.z), this.w = Math.max(this.w, t.w), this;\n  }\n  clamp(t, i) {\n    return this.x = T(this.x, t.x, i.x), this.y = T(this.y, t.y, i.y), this.z = T(this.z, t.z, i.z), this.w = T(this.w, t.w, i.w), this;\n  }\n  clampScalar(t, i) {\n    return this.x = T(this.x, t, i), this.y = T(this.y, t, i), this.z = T(this.z, t, i), this.w = T(this.w, t, i), this;\n  }\n  clampLength(t, i) {\n    const e = this.length();\n    return this.divideScalar(e || 1).multiplyScalar(T(e, t, i));\n  }\n  floor() {\n    return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this;\n  }\n  ceil() {\n    return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this;\n  }\n  round() {\n    return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this;\n  }\n  roundToZero() {\n    return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this.w = Math.trunc(this.w), this;\n  }\n  negate() {\n    return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this;\n  }\n  dot(t) {\n    return this.x * t.x + this.y * t.y + this.z * t.z + this.w * t.w;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(t) {\n    return this.normalize().multiplyScalar(t);\n  }\n  lerp(t, i) {\n    return this.x += (t.x - this.x) * i, this.y += (t.y - this.y) * i, this.z += (t.z - this.z) * i, this.w += (t.w - this.w) * i, this;\n  }\n  lerpVectors(t, i, e) {\n    return this.x = t.x + (i.x - t.x) * e, this.y = t.y + (i.y - t.y) * e, this.z = t.z + (i.z - t.z) * e, this.w = t.w + (i.w - t.w) * e, this;\n  }\n  equals(t) {\n    return t.x === this.x && t.y === this.y && t.z === this.z && t.w === this.w;\n  }\n  fromArray(t, i = 0) {\n    return this.x = t[i], this.y = t[i + 1], this.z = t[i + 2], this.w = t[i + 3], this;\n  }\n  toArray(t = [], i = 0) {\n    return t[i] = this.x, t[i + 1] = this.y, t[i + 2] = this.z, t[i + 3] = this.w, t;\n  }\n  fromBufferAttribute(t, i) {\n    return this.x = t.getX(i), this.y = t.getY(i), this.z = t.getZ(i), this.w = t.getW(i), this;\n  }\n  random() {\n    return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this.w = Math.random(), this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x, yield this.y, yield this.z, yield this.w;\n  }\n}\nclass ts extends si {\n  constructor(t = 1, i = 1, e = {}) {\n    super(), this.isRenderTarget = !0, this.width = t, this.height = i, this.depth = 1, this.scissor = new j(0, 0, t, i), this.scissorTest = !1, this.viewport = new j(0, 0, t, i);\n    const s = { width: t, height: i, depth: 1 };\n    e = Object.assign({\n      generateMipmaps: !1,\n      internalFormat: null,\n      minFilter: 1006,\n      depthBuffer: !0,\n      stencilBuffer: !1,\n      resolveDepthBuffer: !0,\n      resolveStencilBuffer: !0,\n      depthTexture: null,\n      samples: 0,\n      count: 1\n    }, e);\n    const n = new Z(s, e.mapping, e.wrapS, e.wrapT, e.magFilter, e.minFilter, e.format, e.type, e.anisotropy, e.colorSpace);\n    n.flipY = !1, n.generateMipmaps = e.generateMipmaps, n.internalFormat = e.internalFormat, this.textures = [];\n    const r = e.count;\n    for (let h = 0; h < r; h++)\n      this.textures[h] = n.clone(), this.textures[h].isRenderTargetTexture = !0, this.textures[h].renderTarget = this;\n    this.depthBuffer = e.depthBuffer, this.stencilBuffer = e.stencilBuffer, this.resolveDepthBuffer = e.resolveDepthBuffer, this.resolveStencilBuffer = e.resolveStencilBuffer, this._depthTexture = null, this.depthTexture = e.depthTexture, this.samples = e.samples;\n  }\n  get texture() {\n    return this.textures[0];\n  }\n  set texture(t) {\n    this.textures[0] = t;\n  }\n  set depthTexture(t) {\n    this._depthTexture !== null && (this._depthTexture.renderTarget = null), t !== null && (t.renderTarget = this), this._depthTexture = t;\n  }\n  get depthTexture() {\n    return this._depthTexture;\n  }\n  setSize(t, i, e = 1) {\n    if (this.width !== t || this.height !== i || this.depth !== e) {\n      this.width = t, this.height = i, this.depth = e;\n      for (let s = 0, n = this.textures.length; s < n; s++)\n        this.textures[s].image.width = t, this.textures[s].image.height = i, this.textures[s].image.depth = e;\n      this.dispose();\n    }\n    this.viewport.set(0, 0, t, i), this.scissor.set(0, 0, t, i);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(t) {\n    this.width = t.width, this.height = t.height, this.depth = t.depth, this.scissor.copy(t.scissor), this.scissorTest = t.scissorTest, this.viewport.copy(t.viewport), this.textures.length = 0;\n    for (let e = 0, s = t.textures.length; e < s; e++)\n      this.textures[e] = t.textures[e].clone(), this.textures[e].isRenderTargetTexture = !0, this.textures[e].renderTarget = this;\n    const i = Object.assign({}, t.texture.image);\n    return this.texture.source = new Fe(i), this.depthBuffer = t.depthBuffer, this.stencilBuffer = t.stencilBuffer, this.resolveDepthBuffer = t.resolveDepthBuffer, this.resolveStencilBuffer = t.resolveStencilBuffer, t.depthTexture !== null && (this.depthTexture = t.depthTexture.clone()), this.samples = t.samples, this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nclass is extends ts {\n  constructor(t = 1, i = 1, e = {}) {\n    super(t, i, e), this.isWebGLRenderTarget = !0;\n  }\n}\nclass Ca extends Z {\n  constructor(t = null, i = 1, e = 1, s = 1) {\n    super(null), this.isDataArrayTexture = !0, this.image = { data: t, width: i, height: e, depth: s }, this.magFilter = 1003, this.minFilter = 1003, this.wrapR = 1001, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1, this.layerUpdates = /* @__PURE__ */ new Set();\n  }\n  addLayerUpdate(t) {\n    this.layerUpdates.add(t);\n  }\n  clearLayerUpdates() {\n    this.layerUpdates.clear();\n  }\n}\nclass ni {\n  constructor(t = 0, i = 0, e = 0, s = 1) {\n    this.isQuaternion = !0, this._x = t, this._y = i, this._z = e, this._w = s;\n  }\n  static slerpFlat(t, i, e, s, n, r, h) {\n    let a = e[s + 0], o = e[s + 1], l = e[s + 2], c = e[s + 3];\n    const u = n[r + 0], d = n[r + 1], m = n[r + 2], y = n[r + 3];\n    if (h === 0) {\n      t[i + 0] = a, t[i + 1] = o, t[i + 2] = l, t[i + 3] = c;\n      return;\n    }\n    if (h === 1) {\n      t[i + 0] = u, t[i + 1] = d, t[i + 2] = m, t[i + 3] = y;\n      return;\n    }\n    if (c !== y || a !== u || o !== d || l !== m) {\n      let x = 1 - h;\n      const g = a * u + o * d + l * m + c * y, w = g >= 0 ? 1 : -1, b = 1 - g * g;\n      if (b > Number.EPSILON) {\n        const S = Math.sqrt(b), F = Math.atan2(S, g * w);\n        x = Math.sin(x * F) / S, h = Math.sin(h * F) / S;\n      }\n      const M = h * w;\n      if (a = a * x + u * M, o = o * x + d * M, l = l * x + m * M, c = c * x + y * M, x === 1 - h) {\n        const S = 1 / Math.sqrt(a * a + o * o + l * l + c * c);\n        a *= S, o *= S, l *= S, c *= S;\n      }\n    }\n    t[i] = a, t[i + 1] = o, t[i + 2] = l, t[i + 3] = c;\n  }\n  static multiplyQuaternionsFlat(t, i, e, s, n, r) {\n    const h = e[s], a = e[s + 1], o = e[s + 2], l = e[s + 3], c = n[r], u = n[r + 1], d = n[r + 2], m = n[r + 3];\n    return t[i] = h * m + l * c + a * d - o * u, t[i + 1] = a * m + l * u + o * c - h * d, t[i + 2] = o * m + l * d + h * u - a * c, t[i + 3] = l * m - h * c - a * u - o * d, t;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(t) {\n    this._x = t, this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(t) {\n    this._y = t, this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(t) {\n    this._z = t, this._onChangeCallback();\n  }\n  get w() {\n    return this._w;\n  }\n  set w(t) {\n    this._w = t, this._onChangeCallback();\n  }\n  set(t, i, e, s) {\n    return this._x = t, this._y = i, this._z = e, this._w = s, this._onChangeCallback(), this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._w);\n  }\n  copy(t) {\n    return this._x = t.x, this._y = t.y, this._z = t.z, this._w = t.w, this._onChangeCallback(), this;\n  }\n  setFromEuler(t, i = !0) {\n    const e = t._x, s = t._y, n = t._z, r = t._order, h = Math.cos, a = Math.sin, o = h(e / 2), l = h(s / 2), c = h(n / 2), u = a(e / 2), d = a(s / 2), m = a(n / 2);\n    switch (r) {\n      case \"XYZ\":\n        this._x = u * l * c + o * d * m, this._y = o * d * c - u * l * m, this._z = o * l * m + u * d * c, this._w = o * l * c - u * d * m;\n        break;\n      case \"YXZ\":\n        this._x = u * l * c + o * d * m, this._y = o * d * c - u * l * m, this._z = o * l * m - u * d * c, this._w = o * l * c + u * d * m;\n        break;\n      case \"ZXY\":\n        this._x = u * l * c - o * d * m, this._y = o * d * c + u * l * m, this._z = o * l * m + u * d * c, this._w = o * l * c - u * d * m;\n        break;\n      case \"ZYX\":\n        this._x = u * l * c - o * d * m, this._y = o * d * c + u * l * m, this._z = o * l * m - u * d * c, this._w = o * l * c + u * d * m;\n        break;\n      case \"YZX\":\n        this._x = u * l * c + o * d * m, this._y = o * d * c + u * l * m, this._z = o * l * m - u * d * c, this._w = o * l * c - u * d * m;\n        break;\n      case \"XZY\":\n        this._x = u * l * c - o * d * m, this._y = o * d * c - u * l * m, this._z = o * l * m + u * d * c, this._w = o * l * c + u * d * m;\n        break;\n      default:\n        console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \" + r);\n    }\n    return i === !0 && this._onChangeCallback(), this;\n  }\n  setFromAxisAngle(t, i) {\n    const e = i / 2, s = Math.sin(e);\n    return this._x = t.x * s, this._y = t.y * s, this._z = t.z * s, this._w = Math.cos(e), this._onChangeCallback(), this;\n  }\n  setFromRotationMatrix(t) {\n    const i = t.elements, e = i[0], s = i[4], n = i[8], r = i[1], h = i[5], a = i[9], o = i[2], l = i[6], c = i[10], u = e + h + c;\n    if (u > 0) {\n      const d = 0.5 / Math.sqrt(u + 1);\n      this._w = 0.25 / d, this._x = (l - a) * d, this._y = (n - o) * d, this._z = (r - s) * d;\n    } else if (e > h && e > c) {\n      const d = 2 * Math.sqrt(1 + e - h - c);\n      this._w = (l - a) / d, this._x = 0.25 * d, this._y = (s + r) / d, this._z = (n + o) / d;\n    } else if (h > c) {\n      const d = 2 * Math.sqrt(1 + h - e - c);\n      this._w = (n - o) / d, this._x = (s + r) / d, this._y = 0.25 * d, this._z = (a + l) / d;\n    } else {\n      const d = 2 * Math.sqrt(1 + c - e - h);\n      this._w = (r - s) / d, this._x = (n + o) / d, this._y = (a + l) / d, this._z = 0.25 * d;\n    }\n    return this._onChangeCallback(), this;\n  }\n  setFromUnitVectors(t, i) {\n    let e = t.dot(i) + 1;\n    return e < Number.EPSILON ? (e = 0, Math.abs(t.x) > Math.abs(t.z) ? (this._x = -t.y, this._y = t.x, this._z = 0, this._w = e) : (this._x = 0, this._y = -t.z, this._z = t.y, this._w = e)) : (this._x = t.y * i.z - t.z * i.y, this._y = t.z * i.x - t.x * i.z, this._z = t.x * i.y - t.y * i.x, this._w = e), this.normalize();\n  }\n  angleTo(t) {\n    return 2 * Math.acos(Math.abs(T(this.dot(t), -1, 1)));\n  }\n  rotateTowards(t, i) {\n    const e = this.angleTo(t);\n    if (e === 0) return this;\n    const s = Math.min(1, i / e);\n    return this.slerp(t, s), this;\n  }\n  identity() {\n    return this.set(0, 0, 0, 1);\n  }\n  invert() {\n    return this.conjugate();\n  }\n  conjugate() {\n    return this._x *= -1, this._y *= -1, this._z *= -1, this._onChangeCallback(), this;\n  }\n  dot(t) {\n    return this._x * t._x + this._y * t._y + this._z * t._z + this._w * t._w;\n  }\n  lengthSq() {\n    return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n  }\n  length() {\n    return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n  }\n  normalize() {\n    let t = this.length();\n    return t === 0 ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (t = 1 / t, this._x = this._x * t, this._y = this._y * t, this._z = this._z * t, this._w = this._w * t), this._onChangeCallback(), this;\n  }\n  multiply(t) {\n    return this.multiplyQuaternions(this, t);\n  }\n  premultiply(t) {\n    return this.multiplyQuaternions(t, this);\n  }\n  multiplyQuaternions(t, i) {\n    const e = t._x, s = t._y, n = t._z, r = t._w, h = i._x, a = i._y, o = i._z, l = i._w;\n    return this._x = e * l + r * h + s * o - n * a, this._y = s * l + r * a + n * h - e * o, this._z = n * l + r * o + e * a - s * h, this._w = r * l - e * h - s * a - n * o, this._onChangeCallback(), this;\n  }\n  slerp(t, i) {\n    if (i === 0) return this;\n    if (i === 1) return this.copy(t);\n    const e = this._x, s = this._y, n = this._z, r = this._w;\n    let h = r * t._w + e * t._x + s * t._y + n * t._z;\n    if (h < 0 ? (this._w = -t._w, this._x = -t._x, this._y = -t._y, this._z = -t._z, h = -h) : this.copy(t), h >= 1)\n      return this._w = r, this._x = e, this._y = s, this._z = n, this;\n    const a = 1 - h * h;\n    if (a <= Number.EPSILON) {\n      const d = 1 - i;\n      return this._w = d * r + i * this._w, this._x = d * e + i * this._x, this._y = d * s + i * this._y, this._z = d * n + i * this._z, this.normalize(), this;\n    }\n    const o = Math.sqrt(a), l = Math.atan2(o, h), c = Math.sin((1 - i) * l) / o, u = Math.sin(i * l) / o;\n    return this._w = r * c + this._w * u, this._x = e * c + this._x * u, this._y = s * c + this._y * u, this._z = n * c + this._z * u, this._onChangeCallback(), this;\n  }\n  slerpQuaternions(t, i, e) {\n    return this.copy(t).slerp(i, e);\n  }\n  random() {\n    const t = 2 * Math.PI * Math.random(), i = 2 * Math.PI * Math.random(), e = Math.random(), s = Math.sqrt(1 - e), n = Math.sqrt(e);\n    return this.set(\n      s * Math.sin(t),\n      s * Math.cos(t),\n      n * Math.sin(i),\n      n * Math.cos(i)\n    );\n  }\n  equals(t) {\n    return t._x === this._x && t._y === this._y && t._z === this._z && t._w === this._w;\n  }\n  fromArray(t, i = 0) {\n    return this._x = t[i], this._y = t[i + 1], this._z = t[i + 2], this._w = t[i + 3], this._onChangeCallback(), this;\n  }\n  toArray(t = [], i = 0) {\n    return t[i] = this._x, t[i + 1] = this._y, t[i + 2] = this._z, t[i + 3] = this._w, t;\n  }\n  fromBufferAttribute(t, i) {\n    return this._x = t.getX(i), this._y = t.getY(i), this._z = t.getZ(i), this._w = t.getW(i), this._onChangeCallback(), this;\n  }\n  toJSON() {\n    return this.toArray();\n  }\n  _onChange(t) {\n    return this._onChangeCallback = t, this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x, yield this._y, yield this._z, yield this._w;\n  }\n}\nclass f {\n  constructor(t = 0, i = 0, e = 0) {\n    f.prototype.isVector3 = !0, this.x = t, this.y = i, this.z = e;\n  }\n  set(t, i, e) {\n    return e === void 0 && (e = this.z), this.x = t, this.y = i, this.z = e, this;\n  }\n  setScalar(t) {\n    return this.x = t, this.y = t, this.z = t, this;\n  }\n  setX(t) {\n    return this.x = t, this;\n  }\n  setY(t) {\n    return this.y = t, this;\n  }\n  setZ(t) {\n    return this.z = t, this;\n  }\n  setComponent(t, i) {\n    switch (t) {\n      case 0:\n        this.x = i;\n        break;\n      case 1:\n        this.y = i;\n        break;\n      case 2:\n        this.z = i;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + t);\n    }\n    return this;\n  }\n  getComponent(t) {\n    switch (t) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      default:\n        throw new Error(\"index is out of range: \" + t);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z);\n  }\n  copy(t) {\n    return this.x = t.x, this.y = t.y, this.z = t.z, this;\n  }\n  add(t) {\n    return this.x += t.x, this.y += t.y, this.z += t.z, this;\n  }\n  addScalar(t) {\n    return this.x += t, this.y += t, this.z += t, this;\n  }\n  addVectors(t, i) {\n    return this.x = t.x + i.x, this.y = t.y + i.y, this.z = t.z + i.z, this;\n  }\n  addScaledVector(t, i) {\n    return this.x += t.x * i, this.y += t.y * i, this.z += t.z * i, this;\n  }\n  sub(t) {\n    return this.x -= t.x, this.y -= t.y, this.z -= t.z, this;\n  }\n  subScalar(t) {\n    return this.x -= t, this.y -= t, this.z -= t, this;\n  }\n  subVectors(t, i) {\n    return this.x = t.x - i.x, this.y = t.y - i.y, this.z = t.z - i.z, this;\n  }\n  multiply(t) {\n    return this.x *= t.x, this.y *= t.y, this.z *= t.z, this;\n  }\n  multiplyScalar(t) {\n    return this.x *= t, this.y *= t, this.z *= t, this;\n  }\n  multiplyVectors(t, i) {\n    return this.x = t.x * i.x, this.y = t.y * i.y, this.z = t.z * i.z, this;\n  }\n  applyEuler(t) {\n    return this.applyQuaternion(he.setFromEuler(t));\n  }\n  applyAxisAngle(t, i) {\n    return this.applyQuaternion(he.setFromAxisAngle(t, i));\n  }\n  applyMatrix3(t) {\n    const i = this.x, e = this.y, s = this.z, n = t.elements;\n    return this.x = n[0] * i + n[3] * e + n[6] * s, this.y = n[1] * i + n[4] * e + n[7] * s, this.z = n[2] * i + n[5] * e + n[8] * s, this;\n  }\n  applyNormalMatrix(t) {\n    return this.applyMatrix3(t).normalize();\n  }\n  applyMatrix4(t) {\n    const i = this.x, e = this.y, s = this.z, n = t.elements, r = 1 / (n[3] * i + n[7] * e + n[11] * s + n[15]);\n    return this.x = (n[0] * i + n[4] * e + n[8] * s + n[12]) * r, this.y = (n[1] * i + n[5] * e + n[9] * s + n[13]) * r, this.z = (n[2] * i + n[6] * e + n[10] * s + n[14]) * r, this;\n  }\n  applyQuaternion(t) {\n    const i = this.x, e = this.y, s = this.z, n = t.x, r = t.y, h = t.z, a = t.w, o = 2 * (r * s - h * e), l = 2 * (h * i - n * s), c = 2 * (n * e - r * i);\n    return this.x = i + a * o + r * c - h * l, this.y = e + a * l + h * o - n * c, this.z = s + a * c + n * l - r * o, this;\n  }\n  project(t) {\n    return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix);\n  }\n  unproject(t) {\n    return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld);\n  }\n  transformDirection(t) {\n    const i = this.x, e = this.y, s = this.z, n = t.elements;\n    return this.x = n[0] * i + n[4] * e + n[8] * s, this.y = n[1] * i + n[5] * e + n[9] * s, this.z = n[2] * i + n[6] * e + n[10] * s, this.normalize();\n  }\n  divide(t) {\n    return this.x /= t.x, this.y /= t.y, this.z /= t.z, this;\n  }\n  divideScalar(t) {\n    return this.multiplyScalar(1 / t);\n  }\n  min(t) {\n    return this.x = Math.min(this.x, t.x), this.y = Math.min(this.y, t.y), this.z = Math.min(this.z, t.z), this;\n  }\n  max(t) {\n    return this.x = Math.max(this.x, t.x), this.y = Math.max(this.y, t.y), this.z = Math.max(this.z, t.z), this;\n  }\n  clamp(t, i) {\n    return this.x = T(this.x, t.x, i.x), this.y = T(this.y, t.y, i.y), this.z = T(this.z, t.z, i.z), this;\n  }\n  clampScalar(t, i) {\n    return this.x = T(this.x, t, i), this.y = T(this.y, t, i), this.z = T(this.z, t, i), this;\n  }\n  clampLength(t, i) {\n    const e = this.length();\n    return this.divideScalar(e || 1).multiplyScalar(T(e, t, i));\n  }\n  floor() {\n    return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this;\n  }\n  ceil() {\n    return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this;\n  }\n  round() {\n    return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this;\n  }\n  roundToZero() {\n    return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this;\n  }\n  negate() {\n    return this.x = -this.x, this.y = -this.y, this.z = -this.z, this;\n  }\n  dot(t) {\n    return this.x * t.x + this.y * t.y + this.z * t.z;\n  }\n  // TODO lengthSquared?\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(t) {\n    return this.normalize().multiplyScalar(t);\n  }\n  lerp(t, i) {\n    return this.x += (t.x - this.x) * i, this.y += (t.y - this.y) * i, this.z += (t.z - this.z) * i, this;\n  }\n  lerpVectors(t, i, e) {\n    return this.x = t.x + (i.x - t.x) * e, this.y = t.y + (i.y - t.y) * e, this.z = t.z + (i.z - t.z) * e, this;\n  }\n  cross(t) {\n    return this.crossVectors(this, t);\n  }\n  crossVectors(t, i) {\n    const e = t.x, s = t.y, n = t.z, r = i.x, h = i.y, a = i.z;\n    return this.x = s * a - n * h, this.y = n * r - e * a, this.z = e * h - s * r, this;\n  }\n  projectOnVector(t) {\n    const i = t.lengthSq();\n    if (i === 0) return this.set(0, 0, 0);\n    const e = t.dot(this) / i;\n    return this.copy(t).multiplyScalar(e);\n  }\n  projectOnPlane(t) {\n    return Bi.copy(this).projectOnVector(t), this.sub(Bi);\n  }\n  reflect(t) {\n    return this.sub(Bi.copy(t).multiplyScalar(2 * this.dot(t)));\n  }\n  angleTo(t) {\n    const i = Math.sqrt(this.lengthSq() * t.lengthSq());\n    if (i === 0) return Math.PI / 2;\n    const e = this.dot(t) / i;\n    return Math.acos(T(e, -1, 1));\n  }\n  distanceTo(t) {\n    return Math.sqrt(this.distanceToSquared(t));\n  }\n  distanceToSquared(t) {\n    const i = this.x - t.x, e = this.y - t.y, s = this.z - t.z;\n    return i * i + e * e + s * s;\n  }\n  manhattanDistanceTo(t) {\n    return Math.abs(this.x - t.x) + Math.abs(this.y - t.y) + Math.abs(this.z - t.z);\n  }\n  setFromSpherical(t) {\n    return this.setFromSphericalCoords(t.radius, t.phi, t.theta);\n  }\n  setFromSphericalCoords(t, i, e) {\n    const s = Math.sin(i) * t;\n    return this.x = s * Math.sin(e), this.y = Math.cos(i) * t, this.z = s * Math.cos(e), this;\n  }\n  setFromCylindrical(t) {\n    return this.setFromCylindricalCoords(t.radius, t.theta, t.y);\n  }\n  setFromCylindricalCoords(t, i, e) {\n    return this.x = t * Math.sin(i), this.y = e, this.z = t * Math.cos(i), this;\n  }\n  setFromMatrixPosition(t) {\n    const i = t.elements;\n    return this.x = i[12], this.y = i[13], this.z = i[14], this;\n  }\n  setFromMatrixScale(t) {\n    const i = this.setFromMatrixColumn(t, 0).length(), e = this.setFromMatrixColumn(t, 1).length(), s = this.setFromMatrixColumn(t, 2).length();\n    return this.x = i, this.y = e, this.z = s, this;\n  }\n  setFromMatrixColumn(t, i) {\n    return this.fromArray(t.elements, i * 4);\n  }\n  setFromMatrix3Column(t, i) {\n    return this.fromArray(t.elements, i * 3);\n  }\n  setFromEuler(t) {\n    return this.x = t._x, this.y = t._y, this.z = t._z, this;\n  }\n  setFromColor(t) {\n    return this.x = t.r, this.y = t.g, this.z = t.b, this;\n  }\n  equals(t) {\n    return t.x === this.x && t.y === this.y && t.z === this.z;\n  }\n  fromArray(t, i = 0) {\n    return this.x = t[i], this.y = t[i + 1], this.z = t[i + 2], this;\n  }\n  toArray(t = [], i = 0) {\n    return t[i] = this.x, t[i + 1] = this.y, t[i + 2] = this.z, t;\n  }\n  fromBufferAttribute(t, i) {\n    return this.x = t.getX(i), this.y = t.getY(i), this.z = t.getZ(i), this;\n  }\n  random() {\n    return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this;\n  }\n  randomDirection() {\n    const t = Math.random() * Math.PI * 2, i = Math.random() * 2 - 1, e = Math.sqrt(1 - i * i);\n    return this.x = e * Math.cos(t), this.y = i, this.z = e * Math.sin(t), this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x, yield this.y, yield this.z;\n  }\n}\nconst Bi = /* @__PURE__ */ new f(), he = /* @__PURE__ */ new ni();\nclass ri {\n  constructor(t = new f(1 / 0, 1 / 0, 1 / 0), i = new f(-1 / 0, -1 / 0, -1 / 0)) {\n    this.isBox3 = !0, this.min = t, this.max = i;\n  }\n  set(t, i) {\n    return this.min.copy(t), this.max.copy(i), this;\n  }\n  setFromArray(t) {\n    this.makeEmpty();\n    for (let i = 0, e = t.length; i < e; i += 3)\n      this.expandByPoint(K.fromArray(t, i));\n    return this;\n  }\n  setFromBufferAttribute(t) {\n    this.makeEmpty();\n    for (let i = 0, e = t.count; i < e; i++)\n      this.expandByPoint(K.fromBufferAttribute(t, i));\n    return this;\n  }\n  setFromPoints(t) {\n    this.makeEmpty();\n    for (let i = 0, e = t.length; i < e; i++)\n      this.expandByPoint(t[i]);\n    return this;\n  }\n  setFromCenterAndSize(t, i) {\n    const e = K.copy(i).multiplyScalar(0.5);\n    return this.min.copy(t).sub(e), this.max.copy(t).add(e), this;\n  }\n  setFromObject(t, i = !1) {\n    return this.makeEmpty(), this.expandByObject(t, i);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(t) {\n    return this.min.copy(t.min), this.max.copy(t.max), this;\n  }\n  makeEmpty() {\n    return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this;\n  }\n  isEmpty() {\n    return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n  }\n  getCenter(t) {\n    return this.isEmpty() ? t.set(0, 0, 0) : t.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(t) {\n    return this.isEmpty() ? t.set(0, 0, 0) : t.subVectors(this.max, this.min);\n  }\n  expandByPoint(t) {\n    return this.min.min(t), this.max.max(t), this;\n  }\n  expandByVector(t) {\n    return this.min.sub(t), this.max.add(t), this;\n  }\n  expandByScalar(t) {\n    return this.min.addScalar(-t), this.max.addScalar(t), this;\n  }\n  expandByObject(t, i = !1) {\n    t.updateWorldMatrix(!1, !1);\n    const e = t.geometry;\n    if (e !== void 0) {\n      const n = e.getAttribute(\"position\");\n      if (i === !0 && n !== void 0 && t.isInstancedMesh !== !0)\n        for (let r = 0, h = n.count; r < h; r++)\n          t.isMesh === !0 ? t.getVertexPosition(r, K) : K.fromBufferAttribute(n, r), K.applyMatrix4(t.matrixWorld), this.expandByPoint(K);\n      else\n        t.boundingBox !== void 0 ? (t.boundingBox === null && t.computeBoundingBox(), oi.copy(t.boundingBox)) : (e.boundingBox === null && e.computeBoundingBox(), oi.copy(e.boundingBox)), oi.applyMatrix4(t.matrixWorld), this.union(oi);\n    }\n    const s = t.children;\n    for (let n = 0, r = s.length; n < r; n++)\n      this.expandByObject(s[n], i);\n    return this;\n  }\n  containsPoint(t) {\n    return t.x >= this.min.x && t.x <= this.max.x && t.y >= this.min.y && t.y <= this.max.y && t.z >= this.min.z && t.z <= this.max.z;\n  }\n  containsBox(t) {\n    return this.min.x <= t.min.x && t.max.x <= this.max.x && this.min.y <= t.min.y && t.max.y <= this.max.y && this.min.z <= t.min.z && t.max.z <= this.max.z;\n  }\n  getParameter(t, i) {\n    return i.set(\n      (t.x - this.min.x) / (this.max.x - this.min.x),\n      (t.y - this.min.y) / (this.max.y - this.min.y),\n      (t.z - this.min.z) / (this.max.z - this.min.z)\n    );\n  }\n  intersectsBox(t) {\n    return t.max.x >= this.min.x && t.min.x <= this.max.x && t.max.y >= this.min.y && t.min.y <= this.max.y && t.max.z >= this.min.z && t.min.z <= this.max.z;\n  }\n  intersectsSphere(t) {\n    return this.clampPoint(t.center, K), K.distanceToSquared(t.center) <= t.radius * t.radius;\n  }\n  intersectsPlane(t) {\n    let i, e;\n    return t.normal.x > 0 ? (i = t.normal.x * this.min.x, e = t.normal.x * this.max.x) : (i = t.normal.x * this.max.x, e = t.normal.x * this.min.x), t.normal.y > 0 ? (i += t.normal.y * this.min.y, e += t.normal.y * this.max.y) : (i += t.normal.y * this.max.y, e += t.normal.y * this.min.y), t.normal.z > 0 ? (i += t.normal.z * this.min.z, e += t.normal.z * this.max.z) : (i += t.normal.z * this.max.z, e += t.normal.z * this.min.z), i <= -t.constant && e >= -t.constant;\n  }\n  intersectsTriangle(t) {\n    if (this.isEmpty())\n      return !1;\n    this.getCenter(Zt), li.subVectors(this.max, Zt), Pt.subVectors(t.a, Zt), Lt.subVectors(t.b, Zt), Ot.subVectors(t.c, Zt), Mt.subVectors(Lt, Pt), wt.subVectors(Ot, Lt), Tt.subVectors(Pt, Ot);\n    let i = [\n      0,\n      -Mt.z,\n      Mt.y,\n      0,\n      -wt.z,\n      wt.y,\n      0,\n      -Tt.z,\n      Tt.y,\n      Mt.z,\n      0,\n      -Mt.x,\n      wt.z,\n      0,\n      -wt.x,\n      Tt.z,\n      0,\n      -Tt.x,\n      -Mt.y,\n      Mt.x,\n      0,\n      -wt.y,\n      wt.x,\n      0,\n      -Tt.y,\n      Tt.x,\n      0\n    ];\n    return !vi(i, Pt, Lt, Ot, li) || (i = [1, 0, 0, 0, 1, 0, 0, 0, 1], !vi(i, Pt, Lt, Ot, li)) ? !1 : (ci.crossVectors(Mt, wt), i = [ci.x, ci.y, ci.z], vi(i, Pt, Lt, Ot, li));\n  }\n  clampPoint(t, i) {\n    return i.copy(t).clamp(this.min, this.max);\n  }\n  distanceToPoint(t) {\n    return this.clampPoint(t, K).distanceTo(t);\n  }\n  getBoundingSphere(t) {\n    return this.isEmpty() ? t.makeEmpty() : (this.getCenter(t.center), t.radius = this.getSize(K).length() * 0.5), t;\n  }\n  intersect(t) {\n    return this.min.max(t.min), this.max.min(t.max), this.isEmpty() && this.makeEmpty(), this;\n  }\n  union(t) {\n    return this.min.min(t.min), this.max.max(t.max), this;\n  }\n  applyMatrix4(t) {\n    return this.isEmpty() ? this : (ot[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(t), ot[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(t), ot[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(t), ot[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(t), ot[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(t), ot[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(t), ot[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(t), ot[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(t), this.setFromPoints(ot), this);\n  }\n  translate(t) {\n    return this.min.add(t), this.max.add(t), this;\n  }\n  equals(t) {\n    return t.min.equals(this.min) && t.max.equals(this.max);\n  }\n}\nconst ot = [\n  /* @__PURE__ */ new f(),\n  /* @__PURE__ */ new f(),\n  /* @__PURE__ */ new f(),\n  /* @__PURE__ */ new f(),\n  /* @__PURE__ */ new f(),\n  /* @__PURE__ */ new f(),\n  /* @__PURE__ */ new f(),\n  /* @__PURE__ */ new f()\n], K = /* @__PURE__ */ new f(), oi = /* @__PURE__ */ new ri(), Pt = /* @__PURE__ */ new f(), Lt = /* @__PURE__ */ new f(), Ot = /* @__PURE__ */ new f(), Mt = /* @__PURE__ */ new f(), wt = /* @__PURE__ */ new f(), Tt = /* @__PURE__ */ new f(), Zt = /* @__PURE__ */ new f(), li = /* @__PURE__ */ new f(), ci = /* @__PURE__ */ new f(), Ct = /* @__PURE__ */ new f();\nfunction vi(p, t, i, e, s) {\n  for (let n = 0, r = p.length - 3; n <= r; n += 3) {\n    Ct.fromArray(p, n);\n    const h = s.x * Math.abs(Ct.x) + s.y * Math.abs(Ct.y) + s.z * Math.abs(Ct.z), a = t.dot(Ct), o = i.dot(Ct), l = e.dot(Ct);\n    if (Math.max(-Math.max(a, o, l), Math.min(a, o, l)) > h)\n      return !1;\n  }\n  return !0;\n}\nconst es = /* @__PURE__ */ new ri(), Jt = /* @__PURE__ */ new f(), Ri = /* @__PURE__ */ new f();\nclass $i {\n  constructor(t = new f(), i = -1) {\n    this.isSphere = !0, this.center = t, this.radius = i;\n  }\n  set(t, i) {\n    return this.center.copy(t), this.radius = i, this;\n  }\n  setFromPoints(t, i) {\n    const e = this.center;\n    i !== void 0 ? e.copy(i) : es.setFromPoints(t).getCenter(e);\n    let s = 0;\n    for (let n = 0, r = t.length; n < r; n++)\n      s = Math.max(s, e.distanceToSquared(t[n]));\n    return this.radius = Math.sqrt(s), this;\n  }\n  copy(t) {\n    return this.center.copy(t.center), this.radius = t.radius, this;\n  }\n  isEmpty() {\n    return this.radius < 0;\n  }\n  makeEmpty() {\n    return this.center.set(0, 0, 0), this.radius = -1, this;\n  }\n  containsPoint(t) {\n    return t.distanceToSquared(this.center) <= this.radius * this.radius;\n  }\n  distanceToPoint(t) {\n    return t.distanceTo(this.center) - this.radius;\n  }\n  intersectsSphere(t) {\n    const i = this.radius + t.radius;\n    return t.center.distanceToSquared(this.center) <= i * i;\n  }\n  intersectsBox(t) {\n    return t.intersectsSphere(this);\n  }\n  intersectsPlane(t) {\n    return Math.abs(t.distanceToPoint(this.center)) <= this.radius;\n  }\n  clampPoint(t, i) {\n    const e = this.center.distanceToSquared(t);\n    return i.copy(t), e > this.radius * this.radius && (i.sub(this.center).normalize(), i.multiplyScalar(this.radius).add(this.center)), i;\n  }\n  getBoundingBox(t) {\n    return this.isEmpty() ? (t.makeEmpty(), t) : (t.set(this.center, this.center), t.expandByScalar(this.radius), t);\n  }\n  applyMatrix4(t) {\n    return this.center.applyMatrix4(t), this.radius = this.radius * t.getMaxScaleOnAxis(), this;\n  }\n  translate(t) {\n    return this.center.add(t), this;\n  }\n  expandByPoint(t) {\n    if (this.isEmpty())\n      return this.center.copy(t), this.radius = 0, this;\n    Jt.subVectors(t, this.center);\n    const i = Jt.lengthSq();\n    if (i > this.radius * this.radius) {\n      const e = Math.sqrt(i), s = (e - this.radius) * 0.5;\n      this.center.addScaledVector(Jt, s / e), this.radius += s;\n    }\n    return this;\n  }\n  union(t) {\n    return t.isEmpty() ? this : this.isEmpty() ? (this.copy(t), this) : (this.center.equals(t.center) === !0 ? this.radius = Math.max(this.radius, t.radius) : (Ri.subVectors(t.center, this.center).setLength(t.radius), this.expandByPoint(Jt.copy(t.center).add(Ri)), this.expandByPoint(Jt.copy(t.center).sub(Ri))), this);\n  }\n  equals(t) {\n    return t.center.equals(this.center) && t.radius === this.radius;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst lt = /* @__PURE__ */ new f(), Ei = /* @__PURE__ */ new f(), ui = /* @__PURE__ */ new f(), bt = /* @__PURE__ */ new f(), ki = /* @__PURE__ */ new f(), pi = /* @__PURE__ */ new f(), Ii = /* @__PURE__ */ new f();\nclass ss {\n  constructor(t = new f(), i = new f(0, 0, -1)) {\n    this.origin = t, this.direction = i;\n  }\n  set(t, i) {\n    return this.origin.copy(t), this.direction.copy(i), this;\n  }\n  copy(t) {\n    return this.origin.copy(t.origin), this.direction.copy(t.direction), this;\n  }\n  at(t, i) {\n    return i.copy(this.origin).addScaledVector(this.direction, t);\n  }\n  lookAt(t) {\n    return this.direction.copy(t).sub(this.origin).normalize(), this;\n  }\n  recast(t) {\n    return this.origin.copy(this.at(t, lt)), this;\n  }\n  closestPointToPoint(t, i) {\n    i.subVectors(t, this.origin);\n    const e = i.dot(this.direction);\n    return e < 0 ? i.copy(this.origin) : i.copy(this.origin).addScaledVector(this.direction, e);\n  }\n  distanceToPoint(t) {\n    return Math.sqrt(this.distanceSqToPoint(t));\n  }\n  distanceSqToPoint(t) {\n    const i = lt.subVectors(t, this.origin).dot(this.direction);\n    return i < 0 ? this.origin.distanceToSquared(t) : (lt.copy(this.origin).addScaledVector(this.direction, i), lt.distanceToSquared(t));\n  }\n  distanceSqToSegment(t, i, e, s) {\n    Ei.copy(t).add(i).multiplyScalar(0.5), ui.copy(i).sub(t).normalize(), bt.copy(this.origin).sub(Ei);\n    const n = t.distanceTo(i) * 0.5, r = -this.direction.dot(ui), h = bt.dot(this.direction), a = -bt.dot(ui), o = bt.lengthSq(), l = Math.abs(1 - r * r);\n    let c, u, d, m;\n    if (l > 0)\n      if (c = r * a - h, u = r * h - a, m = n * l, c >= 0)\n        if (u >= -m)\n          if (u <= m) {\n            const y = 1 / l;\n            c *= y, u *= y, d = c * (c + r * u + 2 * h) + u * (r * c + u + 2 * a) + o;\n          } else\n            u = n, c = Math.max(0, -(r * u + h)), d = -c * c + u * (u + 2 * a) + o;\n        else\n          u = -n, c = Math.max(0, -(r * u + h)), d = -c * c + u * (u + 2 * a) + o;\n      else\n        u <= -m ? (c = Math.max(0, -(-r * n + h)), u = c > 0 ? -n : Math.min(Math.max(-n, -a), n), d = -c * c + u * (u + 2 * a) + o) : u <= m ? (c = 0, u = Math.min(Math.max(-n, -a), n), d = u * (u + 2 * a) + o) : (c = Math.max(0, -(r * n + h)), u = c > 0 ? n : Math.min(Math.max(-n, -a), n), d = -c * c + u * (u + 2 * a) + o);\n    else\n      u = r > 0 ? -n : n, c = Math.max(0, -(r * u + h)), d = -c * c + u * (u + 2 * a) + o;\n    return e && e.copy(this.origin).addScaledVector(this.direction, c), s && s.copy(Ei).addScaledVector(ui, u), d;\n  }\n  intersectSphere(t, i) {\n    lt.subVectors(t.center, this.origin);\n    const e = lt.dot(this.direction), s = lt.dot(lt) - e * e, n = t.radius * t.radius;\n    if (s > n) return null;\n    const r = Math.sqrt(n - s), h = e - r, a = e + r;\n    return a < 0 ? null : h < 0 ? this.at(a, i) : this.at(h, i);\n  }\n  intersectsSphere(t) {\n    return this.distanceSqToPoint(t.center) <= t.radius * t.radius;\n  }\n  distanceToPlane(t) {\n    const i = t.normal.dot(this.direction);\n    if (i === 0)\n      return t.distanceToPoint(this.origin) === 0 ? 0 : null;\n    const e = -(this.origin.dot(t.normal) + t.constant) / i;\n    return e >= 0 ? e : null;\n  }\n  intersectPlane(t, i) {\n    const e = this.distanceToPlane(t);\n    return e === null ? null : this.at(e, i);\n  }\n  intersectsPlane(t) {\n    const i = t.distanceToPoint(this.origin);\n    return i === 0 || t.normal.dot(this.direction) * i < 0;\n  }\n  intersectBox(t, i) {\n    let e, s, n, r, h, a;\n    const o = 1 / this.direction.x, l = 1 / this.direction.y, c = 1 / this.direction.z, u = this.origin;\n    return o >= 0 ? (e = (t.min.x - u.x) * o, s = (t.max.x - u.x) * o) : (e = (t.max.x - u.x) * o, s = (t.min.x - u.x) * o), l >= 0 ? (n = (t.min.y - u.y) * l, r = (t.max.y - u.y) * l) : (n = (t.max.y - u.y) * l, r = (t.min.y - u.y) * l), e > r || n > s || ((n > e || isNaN(e)) && (e = n), (r < s || isNaN(s)) && (s = r), c >= 0 ? (h = (t.min.z - u.z) * c, a = (t.max.z - u.z) * c) : (h = (t.max.z - u.z) * c, a = (t.min.z - u.z) * c), e > a || h > s) || ((h > e || e !== e) && (e = h), (a < s || s !== s) && (s = a), s < 0) ? null : this.at(e >= 0 ? e : s, i);\n  }\n  intersectsBox(t) {\n    return this.intersectBox(t, lt) !== null;\n  }\n  intersectTriangle(t, i, e, s, n) {\n    ki.subVectors(i, t), pi.subVectors(e, t), Ii.crossVectors(ki, pi);\n    let r = this.direction.dot(Ii), h;\n    if (r > 0) {\n      if (s) return null;\n      h = 1;\n    } else if (r < 0)\n      h = -1, r = -r;\n    else\n      return null;\n    bt.subVectors(this.origin, t);\n    const a = h * this.direction.dot(pi.crossVectors(bt, pi));\n    if (a < 0)\n      return null;\n    const o = h * this.direction.dot(ki.cross(bt));\n    if (o < 0 || a + o > r)\n      return null;\n    const l = -h * bt.dot(Ii);\n    return l < 0 ? null : this.at(l / r, n);\n  }\n  applyMatrix4(t) {\n    return this.origin.applyMatrix4(t), this.direction.transformDirection(t), this;\n  }\n  equals(t) {\n    return t.origin.equals(this.origin) && t.direction.equals(this.direction);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass O {\n  constructor(t, i, e, s, n, r, h, a, o, l, c, u, d, m, y, x) {\n    O.prototype.isMatrix4 = !0, this.elements = [\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    ], t !== void 0 && this.set(t, i, e, s, n, r, h, a, o, l, c, u, d, m, y, x);\n  }\n  set(t, i, e, s, n, r, h, a, o, l, c, u, d, m, y, x) {\n    const g = this.elements;\n    return g[0] = t, g[4] = i, g[8] = e, g[12] = s, g[1] = n, g[5] = r, g[9] = h, g[13] = a, g[2] = o, g[6] = l, g[10] = c, g[14] = u, g[3] = d, g[7] = m, g[11] = y, g[15] = x, this;\n  }\n  identity() {\n    return this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  clone() {\n    return new O().fromArray(this.elements);\n  }\n  copy(t) {\n    const i = this.elements, e = t.elements;\n    return i[0] = e[0], i[1] = e[1], i[2] = e[2], i[3] = e[3], i[4] = e[4], i[5] = e[5], i[6] = e[6], i[7] = e[7], i[8] = e[8], i[9] = e[9], i[10] = e[10], i[11] = e[11], i[12] = e[12], i[13] = e[13], i[14] = e[14], i[15] = e[15], this;\n  }\n  copyPosition(t) {\n    const i = this.elements, e = t.elements;\n    return i[12] = e[12], i[13] = e[13], i[14] = e[14], this;\n  }\n  setFromMatrix3(t) {\n    const i = t.elements;\n    return this.set(\n      i[0],\n      i[3],\n      i[6],\n      0,\n      i[1],\n      i[4],\n      i[7],\n      0,\n      i[2],\n      i[5],\n      i[8],\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  extractBasis(t, i, e) {\n    return t.setFromMatrixColumn(this, 0), i.setFromMatrixColumn(this, 1), e.setFromMatrixColumn(this, 2), this;\n  }\n  makeBasis(t, i, e) {\n    return this.set(\n      t.x,\n      i.x,\n      e.x,\n      0,\n      t.y,\n      i.y,\n      e.y,\n      0,\n      t.z,\n      i.z,\n      e.z,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  extractRotation(t) {\n    const i = this.elements, e = t.elements, s = 1 / Nt.setFromMatrixColumn(t, 0).length(), n = 1 / Nt.setFromMatrixColumn(t, 1).length(), r = 1 / Nt.setFromMatrixColumn(t, 2).length();\n    return i[0] = e[0] * s, i[1] = e[1] * s, i[2] = e[2] * s, i[3] = 0, i[4] = e[4] * n, i[5] = e[5] * n, i[6] = e[6] * n, i[7] = 0, i[8] = e[8] * r, i[9] = e[9] * r, i[10] = e[10] * r, i[11] = 0, i[12] = 0, i[13] = 0, i[14] = 0, i[15] = 1, this;\n  }\n  makeRotationFromEuler(t) {\n    const i = this.elements, e = t.x, s = t.y, n = t.z, r = Math.cos(e), h = Math.sin(e), a = Math.cos(s), o = Math.sin(s), l = Math.cos(n), c = Math.sin(n);\n    if (t.order === \"XYZ\") {\n      const u = r * l, d = r * c, m = h * l, y = h * c;\n      i[0] = a * l, i[4] = -a * c, i[8] = o, i[1] = d + m * o, i[5] = u - y * o, i[9] = -h * a, i[2] = y - u * o, i[6] = m + d * o, i[10] = r * a;\n    } else if (t.order === \"YXZ\") {\n      const u = a * l, d = a * c, m = o * l, y = o * c;\n      i[0] = u + y * h, i[4] = m * h - d, i[8] = r * o, i[1] = r * c, i[5] = r * l, i[9] = -h, i[2] = d * h - m, i[6] = y + u * h, i[10] = r * a;\n    } else if (t.order === \"ZXY\") {\n      const u = a * l, d = a * c, m = o * l, y = o * c;\n      i[0] = u - y * h, i[4] = -r * c, i[8] = m + d * h, i[1] = d + m * h, i[5] = r * l, i[9] = y - u * h, i[2] = -r * o, i[6] = h, i[10] = r * a;\n    } else if (t.order === \"ZYX\") {\n      const u = r * l, d = r * c, m = h * l, y = h * c;\n      i[0] = a * l, i[4] = m * o - d, i[8] = u * o + y, i[1] = a * c, i[5] = y * o + u, i[9] = d * o - m, i[2] = -o, i[6] = h * a, i[10] = r * a;\n    } else if (t.order === \"YZX\") {\n      const u = r * a, d = r * o, m = h * a, y = h * o;\n      i[0] = a * l, i[4] = y - u * c, i[8] = m * c + d, i[1] = c, i[5] = r * l, i[9] = -h * l, i[2] = -o * l, i[6] = d * c + m, i[10] = u - y * c;\n    } else if (t.order === \"XZY\") {\n      const u = r * a, d = r * o, m = h * a, y = h * o;\n      i[0] = a * l, i[4] = -c, i[8] = o * l, i[1] = u * c + y, i[5] = r * l, i[9] = d * c - m, i[2] = m * c - d, i[6] = h * l, i[10] = y * c + u;\n    }\n    return i[3] = 0, i[7] = 0, i[11] = 0, i[12] = 0, i[13] = 0, i[14] = 0, i[15] = 1, this;\n  }\n  makeRotationFromQuaternion(t) {\n    return this.compose(ns, t, rs);\n  }\n  lookAt(t, i, e) {\n    const s = this.elements;\n    return X.subVectors(t, i), X.lengthSq() === 0 && (X.z = 1), X.normalize(), St.crossVectors(e, X), St.lengthSq() === 0 && (Math.abs(e.z) === 1 ? X.x += 1e-4 : X.z += 1e-4, X.normalize(), St.crossVectors(e, X)), St.normalize(), di.crossVectors(X, St), s[0] = St.x, s[4] = di.x, s[8] = X.x, s[1] = St.y, s[5] = di.y, s[9] = X.y, s[2] = St.z, s[6] = di.z, s[10] = X.z, this;\n  }\n  multiply(t) {\n    return this.multiplyMatrices(this, t);\n  }\n  premultiply(t) {\n    return this.multiplyMatrices(t, this);\n  }\n  multiplyMatrices(t, i) {\n    const e = t.elements, s = i.elements, n = this.elements, r = e[0], h = e[4], a = e[8], o = e[12], l = e[1], c = e[5], u = e[9], d = e[13], m = e[2], y = e[6], x = e[10], g = e[14], w = e[3], b = e[7], M = e[11], S = e[15], F = s[0], _ = s[4], A = s[8], R = s[12], E = s[1], k = s[5], nt = s[9], I = s[13], rt = s[2], at = s[6], kt = s[10], Ft = s[14], gt = s[3], L = s[7], N = s[11], G = s[15];\n    return n[0] = r * F + h * E + a * rt + o * gt, n[4] = r * _ + h * k + a * at + o * L, n[8] = r * A + h * nt + a * kt + o * N, n[12] = r * R + h * I + a * Ft + o * G, n[1] = l * F + c * E + u * rt + d * gt, n[5] = l * _ + c * k + u * at + d * L, n[9] = l * A + c * nt + u * kt + d * N, n[13] = l * R + c * I + u * Ft + d * G, n[2] = m * F + y * E + x * rt + g * gt, n[6] = m * _ + y * k + x * at + g * L, n[10] = m * A + y * nt + x * kt + g * N, n[14] = m * R + y * I + x * Ft + g * G, n[3] = w * F + b * E + M * rt + S * gt, n[7] = w * _ + b * k + M * at + S * L, n[11] = w * A + b * nt + M * kt + S * N, n[15] = w * R + b * I + M * Ft + S * G, this;\n  }\n  multiplyScalar(t) {\n    const i = this.elements;\n    return i[0] *= t, i[4] *= t, i[8] *= t, i[12] *= t, i[1] *= t, i[5] *= t, i[9] *= t, i[13] *= t, i[2] *= t, i[6] *= t, i[10] *= t, i[14] *= t, i[3] *= t, i[7] *= t, i[11] *= t, i[15] *= t, this;\n  }\n  determinant() {\n    const t = this.elements, i = t[0], e = t[4], s = t[8], n = t[12], r = t[1], h = t[5], a = t[9], o = t[13], l = t[2], c = t[6], u = t[10], d = t[14], m = t[3], y = t[7], x = t[11], g = t[15];\n    return m * (+n * a * c - s * o * c - n * h * u + e * o * u + s * h * d - e * a * d) + y * (+i * a * d - i * o * u + n * r * u - s * r * d + s * o * l - n * a * l) + x * (+i * o * c - i * h * d - n * r * c + e * r * d + n * h * l - e * o * l) + g * (-s * h * l - i * a * c + i * h * u + s * r * c - e * r * u + e * a * l);\n  }\n  transpose() {\n    const t = this.elements;\n    let i;\n    return i = t[1], t[1] = t[4], t[4] = i, i = t[2], t[2] = t[8], t[8] = i, i = t[6], t[6] = t[9], t[9] = i, i = t[3], t[3] = t[12], t[12] = i, i = t[7], t[7] = t[13], t[13] = i, i = t[11], t[11] = t[14], t[14] = i, this;\n  }\n  setPosition(t, i, e) {\n    const s = this.elements;\n    return t.isVector3 ? (s[12] = t.x, s[13] = t.y, s[14] = t.z) : (s[12] = t, s[13] = i, s[14] = e), this;\n  }\n  invert() {\n    const t = this.elements, i = t[0], e = t[1], s = t[2], n = t[3], r = t[4], h = t[5], a = t[6], o = t[7], l = t[8], c = t[9], u = t[10], d = t[11], m = t[12], y = t[13], x = t[14], g = t[15], w = c * x * o - y * u * o + y * a * d - h * x * d - c * a * g + h * u * g, b = m * u * o - l * x * o - m * a * d + r * x * d + l * a * g - r * u * g, M = l * y * o - m * c * o + m * h * d - r * y * d - l * h * g + r * c * g, S = m * c * a - l * y * a - m * h * u + r * y * u + l * h * x - r * c * x, F = i * w + e * b + s * M + n * S;\n    if (F === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const _ = 1 / F;\n    return t[0] = w * _, t[1] = (y * u * n - c * x * n - y * s * d + e * x * d + c * s * g - e * u * g) * _, t[2] = (h * x * n - y * a * n + y * s * o - e * x * o - h * s * g + e * a * g) * _, t[3] = (c * a * n - h * u * n - c * s * o + e * u * o + h * s * d - e * a * d) * _, t[4] = b * _, t[5] = (l * x * n - m * u * n + m * s * d - i * x * d - l * s * g + i * u * g) * _, t[6] = (m * a * n - r * x * n - m * s * o + i * x * o + r * s * g - i * a * g) * _, t[7] = (r * u * n - l * a * n + l * s * o - i * u * o - r * s * d + i * a * d) * _, t[8] = M * _, t[9] = (m * c * n - l * y * n - m * e * d + i * y * d + l * e * g - i * c * g) * _, t[10] = (r * y * n - m * h * n + m * e * o - i * y * o - r * e * g + i * h * g) * _, t[11] = (l * h * n - r * c * n - l * e * o + i * c * o + r * e * d - i * h * d) * _, t[12] = S * _, t[13] = (l * y * s - m * c * s + m * e * u - i * y * u - l * e * x + i * c * x) * _, t[14] = (m * h * s - r * y * s - m * e * a + i * y * a + r * e * x - i * h * x) * _, t[15] = (r * c * s - l * h * s + l * e * a - i * c * a - r * e * u + i * h * u) * _, this;\n  }\n  scale(t) {\n    const i = this.elements, e = t.x, s = t.y, n = t.z;\n    return i[0] *= e, i[4] *= s, i[8] *= n, i[1] *= e, i[5] *= s, i[9] *= n, i[2] *= e, i[6] *= s, i[10] *= n, i[3] *= e, i[7] *= s, i[11] *= n, this;\n  }\n  getMaxScaleOnAxis() {\n    const t = this.elements, i = t[0] * t[0] + t[1] * t[1] + t[2] * t[2], e = t[4] * t[4] + t[5] * t[5] + t[6] * t[6], s = t[8] * t[8] + t[9] * t[9] + t[10] * t[10];\n    return Math.sqrt(Math.max(i, e, s));\n  }\n  makeTranslation(t, i, e) {\n    return t.isVector3 ? this.set(\n      1,\n      0,\n      0,\n      t.x,\n      0,\n      1,\n      0,\n      t.y,\n      0,\n      0,\n      1,\n      t.z,\n      0,\n      0,\n      0,\n      1\n    ) : this.set(\n      1,\n      0,\n      0,\n      t,\n      0,\n      1,\n      0,\n      i,\n      0,\n      0,\n      1,\n      e,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeRotationX(t) {\n    const i = Math.cos(t), e = Math.sin(t);\n    return this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      i,\n      -e,\n      0,\n      0,\n      e,\n      i,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeRotationY(t) {\n    const i = Math.cos(t), e = Math.sin(t);\n    return this.set(\n      i,\n      0,\n      e,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -e,\n      0,\n      i,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeRotationZ(t) {\n    const i = Math.cos(t), e = Math.sin(t);\n    return this.set(\n      i,\n      -e,\n      0,\n      0,\n      e,\n      i,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeRotationAxis(t, i) {\n    const e = Math.cos(i), s = Math.sin(i), n = 1 - e, r = t.x, h = t.y, a = t.z, o = n * r, l = n * h;\n    return this.set(\n      o * r + e,\n      o * h - s * a,\n      o * a + s * h,\n      0,\n      o * h + s * a,\n      l * h + e,\n      l * a - s * r,\n      0,\n      o * a - s * h,\n      l * a + s * r,\n      n * a * a + e,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeScale(t, i, e) {\n    return this.set(\n      t,\n      0,\n      0,\n      0,\n      0,\n      i,\n      0,\n      0,\n      0,\n      0,\n      e,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  makeShear(t, i, e, s, n, r) {\n    return this.set(\n      1,\n      e,\n      n,\n      0,\n      t,\n      1,\n      r,\n      0,\n      i,\n      s,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    ), this;\n  }\n  compose(t, i, e) {\n    const s = this.elements, n = i._x, r = i._y, h = i._z, a = i._w, o = n + n, l = r + r, c = h + h, u = n * o, d = n * l, m = n * c, y = r * l, x = r * c, g = h * c, w = a * o, b = a * l, M = a * c, S = e.x, F = e.y, _ = e.z;\n    return s[0] = (1 - (y + g)) * S, s[1] = (d + M) * S, s[2] = (m - b) * S, s[3] = 0, s[4] = (d - M) * F, s[5] = (1 - (u + g)) * F, s[6] = (x + w) * F, s[7] = 0, s[8] = (m + b) * _, s[9] = (x - w) * _, s[10] = (1 - (u + y)) * _, s[11] = 0, s[12] = t.x, s[13] = t.y, s[14] = t.z, s[15] = 1, this;\n  }\n  decompose(t, i, e) {\n    const s = this.elements;\n    let n = Nt.set(s[0], s[1], s[2]).length();\n    const r = Nt.set(s[4], s[5], s[6]).length(), h = Nt.set(s[8], s[9], s[10]).length();\n    this.determinant() < 0 && (n = -n), t.x = s[12], t.y = s[13], t.z = s[14], tt.copy(this);\n    const o = 1 / n, l = 1 / r, c = 1 / h;\n    return tt.elements[0] *= o, tt.elements[1] *= o, tt.elements[2] *= o, tt.elements[4] *= l, tt.elements[5] *= l, tt.elements[6] *= l, tt.elements[8] *= c, tt.elements[9] *= c, tt.elements[10] *= c, i.setFromRotationMatrix(tt), e.x = n, e.y = r, e.z = h, this;\n  }\n  makePerspective(t, i, e, s, n, r, h = 2e3) {\n    const a = this.elements, o = 2 * n / (i - t), l = 2 * n / (e - s), c = (i + t) / (i - t), u = (e + s) / (e - s);\n    let d, m;\n    if (h === 2e3)\n      d = -(r + n) / (r - n), m = -2 * r * n / (r - n);\n    else if (h === 2001)\n      d = -r / (r - n), m = -r * n / (r - n);\n    else\n      throw new Error(\"THREE.Matrix4.makePerspective(): Invalid coordinate system: \" + h);\n    return a[0] = o, a[4] = 0, a[8] = c, a[12] = 0, a[1] = 0, a[5] = l, a[9] = u, a[13] = 0, a[2] = 0, a[6] = 0, a[10] = d, a[14] = m, a[3] = 0, a[7] = 0, a[11] = -1, a[15] = 0, this;\n  }\n  makeOrthographic(t, i, e, s, n, r, h = 2e3) {\n    const a = this.elements, o = 1 / (i - t), l = 1 / (e - s), c = 1 / (r - n), u = (i + t) * o, d = (e + s) * l;\n    let m, y;\n    if (h === 2e3)\n      m = (r + n) * c, y = -2 * c;\n    else if (h === 2001)\n      m = n * c, y = -1 * c;\n    else\n      throw new Error(\"THREE.Matrix4.makeOrthographic(): Invalid coordinate system: \" + h);\n    return a[0] = 2 * o, a[4] = 0, a[8] = 0, a[12] = -u, a[1] = 0, a[5] = 2 * l, a[9] = 0, a[13] = -d, a[2] = 0, a[6] = 0, a[10] = y, a[14] = -m, a[3] = 0, a[7] = 0, a[11] = 0, a[15] = 1, this;\n  }\n  equals(t) {\n    const i = this.elements, e = t.elements;\n    for (let s = 0; s < 16; s++)\n      if (i[s] !== e[s]) return !1;\n    return !0;\n  }\n  fromArray(t, i = 0) {\n    for (let e = 0; e < 16; e++)\n      this.elements[e] = t[e + i];\n    return this;\n  }\n  toArray(t = [], i = 0) {\n    const e = this.elements;\n    return t[i] = e[0], t[i + 1] = e[1], t[i + 2] = e[2], t[i + 3] = e[3], t[i + 4] = e[4], t[i + 5] = e[5], t[i + 6] = e[6], t[i + 7] = e[7], t[i + 8] = e[8], t[i + 9] = e[9], t[i + 10] = e[10], t[i + 11] = e[11], t[i + 12] = e[12], t[i + 13] = e[13], t[i + 14] = e[14], t[i + 15] = e[15], t;\n  }\n}\nconst Nt = /* @__PURE__ */ new f(), tt = /* @__PURE__ */ new O(), ns = /* @__PURE__ */ new f(0, 0, 0), rs = /* @__PURE__ */ new f(1, 1, 1), St = /* @__PURE__ */ new f(), di = /* @__PURE__ */ new f(), X = /* @__PURE__ */ new f(), oe = /* @__PURE__ */ new O(), le = /* @__PURE__ */ new ni();\nclass ht {\n  constructor(t = 0, i = 0, e = 0, s = ht.DEFAULT_ORDER) {\n    this.isEuler = !0, this._x = t, this._y = i, this._z = e, this._order = s;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(t) {\n    this._x = t, this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(t) {\n    this._y = t, this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(t) {\n    this._z = t, this._onChangeCallback();\n  }\n  get order() {\n    return this._order;\n  }\n  set order(t) {\n    this._order = t, this._onChangeCallback();\n  }\n  set(t, i, e, s = this._order) {\n    return this._x = t, this._y = i, this._z = e, this._order = s, this._onChangeCallback(), this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._order);\n  }\n  copy(t) {\n    return this._x = t._x, this._y = t._y, this._z = t._z, this._order = t._order, this._onChangeCallback(), this;\n  }\n  setFromRotationMatrix(t, i = this._order, e = !0) {\n    const s = t.elements, n = s[0], r = s[4], h = s[8], a = s[1], o = s[5], l = s[9], c = s[2], u = s[6], d = s[10];\n    switch (i) {\n      case \"XYZ\":\n        this._y = Math.asin(T(h, -1, 1)), Math.abs(h) < 0.9999999 ? (this._x = Math.atan2(-l, d), this._z = Math.atan2(-r, n)) : (this._x = Math.atan2(u, o), this._z = 0);\n        break;\n      case \"YXZ\":\n        this._x = Math.asin(-T(l, -1, 1)), Math.abs(l) < 0.9999999 ? (this._y = Math.atan2(h, d), this._z = Math.atan2(a, o)) : (this._y = Math.atan2(-c, n), this._z = 0);\n        break;\n      case \"ZXY\":\n        this._x = Math.asin(T(u, -1, 1)), Math.abs(u) < 0.9999999 ? (this._y = Math.atan2(-c, d), this._z = Math.atan2(-r, o)) : (this._y = 0, this._z = Math.atan2(a, n));\n        break;\n      case \"ZYX\":\n        this._y = Math.asin(-T(c, -1, 1)), Math.abs(c) < 0.9999999 ? (this._x = Math.atan2(u, d), this._z = Math.atan2(a, n)) : (this._x = 0, this._z = Math.atan2(-r, o));\n        break;\n      case \"YZX\":\n        this._z = Math.asin(T(a, -1, 1)), Math.abs(a) < 0.9999999 ? (this._x = Math.atan2(-l, o), this._y = Math.atan2(-c, n)) : (this._x = 0, this._y = Math.atan2(h, d));\n        break;\n      case \"XZY\":\n        this._z = Math.asin(-T(r, -1, 1)), Math.abs(r) < 0.9999999 ? (this._x = Math.atan2(u, o), this._y = Math.atan2(h, n)) : (this._x = Math.atan2(-l, d), this._y = 0);\n        break;\n      default:\n        console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \" + i);\n    }\n    return this._order = i, e === !0 && this._onChangeCallback(), this;\n  }\n  setFromQuaternion(t, i, e) {\n    return oe.makeRotationFromQuaternion(t), this.setFromRotationMatrix(oe, i, e);\n  }\n  setFromVector3(t, i = this._order) {\n    return this.set(t.x, t.y, t.z, i);\n  }\n  reorder(t) {\n    return le.setFromEuler(this), this.setFromQuaternion(le, t);\n  }\n  equals(t) {\n    return t._x === this._x && t._y === this._y && t._z === this._z && t._order === this._order;\n  }\n  fromArray(t) {\n    return this._x = t[0], this._y = t[1], this._z = t[2], t[3] !== void 0 && (this._order = t[3]), this._onChangeCallback(), this;\n  }\n  toArray(t = [], i = 0) {\n    return t[i] = this._x, t[i + 1] = this._y, t[i + 2] = this._z, t[i + 3] = this._order, t;\n  }\n  _onChange(t) {\n    return this._onChangeCallback = t, this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x, yield this._y, yield this._z, yield this._order;\n  }\n}\nht.DEFAULT_ORDER = \"XYZ\";\nclass as {\n  constructor() {\n    this.mask = 1;\n  }\n  set(t) {\n    this.mask = (1 << t | 0) >>> 0;\n  }\n  enable(t) {\n    this.mask |= 1 << t | 0;\n  }\n  enableAll() {\n    this.mask = -1;\n  }\n  toggle(t) {\n    this.mask ^= 1 << t | 0;\n  }\n  disable(t) {\n    this.mask &= ~(1 << t | 0);\n  }\n  disableAll() {\n    this.mask = 0;\n  }\n  test(t) {\n    return (this.mask & t.mask) !== 0;\n  }\n  isEnabled(t) {\n    return (this.mask & (1 << t | 0)) !== 0;\n  }\n}\nlet hs = 0;\nconst ce = /* @__PURE__ */ new f(), Vt = /* @__PURE__ */ new ni(), ct = /* @__PURE__ */ new O(), mi = /* @__PURE__ */ new f(), $t = /* @__PURE__ */ new f(), os = /* @__PURE__ */ new f(), ls = /* @__PURE__ */ new ni(), ue = /* @__PURE__ */ new f(1, 0, 0), pe = /* @__PURE__ */ new f(0, 1, 0), de = /* @__PURE__ */ new f(0, 0, 1), me = { type: \"added\" }, cs = { type: \"removed\" }, Wt = { type: \"childadded\", child: null }, Di = { type: \"childremoved\", child: null };\nclass P extends si {\n  constructor() {\n    super(), this.isObject3D = !0, Object.defineProperty(this, \"id\", { value: hs++ }), this.uuid = mt(), this.name = \"\", this.type = \"Object3D\", this.parent = null, this.children = [], this.up = P.DEFAULT_UP.clone();\n    const t = new f(), i = new ht(), e = new ni(), s = new f(1, 1, 1);\n    function n() {\n      e.setFromEuler(i, !1);\n    }\n    function r() {\n      i.setFromQuaternion(e, void 0, !1);\n    }\n    i._onChange(n), e._onChange(r), Object.defineProperties(this, {\n      position: {\n        configurable: !0,\n        enumerable: !0,\n        value: t\n      },\n      rotation: {\n        configurable: !0,\n        enumerable: !0,\n        value: i\n      },\n      quaternion: {\n        configurable: !0,\n        enumerable: !0,\n        value: e\n      },\n      scale: {\n        configurable: !0,\n        enumerable: !0,\n        value: s\n      },\n      modelViewMatrix: {\n        value: new O()\n      },\n      normalMatrix: {\n        value: new xt()\n      }\n    }), this.matrix = new O(), this.matrixWorld = new O(), this.matrixAutoUpdate = P.DEFAULT_MATRIX_AUTO_UPDATE, this.matrixWorldAutoUpdate = P.DEFAULT_MATRIX_WORLD_AUTO_UPDATE, this.matrixWorldNeedsUpdate = !1, this.layers = new as(), this.visible = !0, this.castShadow = !1, this.receiveShadow = !1, this.frustumCulled = !0, this.renderOrder = 0, this.animations = [], this.userData = {};\n  }\n  onBeforeShadow() {\n  }\n  onAfterShadow() {\n  }\n  onBeforeRender() {\n  }\n  onAfterRender() {\n  }\n  applyMatrix4(t) {\n    this.matrixAutoUpdate && this.updateMatrix(), this.matrix.premultiply(t), this.matrix.decompose(this.position, this.quaternion, this.scale);\n  }\n  applyQuaternion(t) {\n    return this.quaternion.premultiply(t), this;\n  }\n  setRotationFromAxisAngle(t, i) {\n    this.quaternion.setFromAxisAngle(t, i);\n  }\n  setRotationFromEuler(t) {\n    this.quaternion.setFromEuler(t, !0);\n  }\n  setRotationFromMatrix(t) {\n    this.quaternion.setFromRotationMatrix(t);\n  }\n  setRotationFromQuaternion(t) {\n    this.quaternion.copy(t);\n  }\n  rotateOnAxis(t, i) {\n    return Vt.setFromAxisAngle(t, i), this.quaternion.multiply(Vt), this;\n  }\n  rotateOnWorldAxis(t, i) {\n    return Vt.setFromAxisAngle(t, i), this.quaternion.premultiply(Vt), this;\n  }\n  rotateX(t) {\n    return this.rotateOnAxis(ue, t);\n  }\n  rotateY(t) {\n    return this.rotateOnAxis(pe, t);\n  }\n  rotateZ(t) {\n    return this.rotateOnAxis(de, t);\n  }\n  translateOnAxis(t, i) {\n    return ce.copy(t).applyQuaternion(this.quaternion), this.position.add(ce.multiplyScalar(i)), this;\n  }\n  translateX(t) {\n    return this.translateOnAxis(ue, t);\n  }\n  translateY(t) {\n    return this.translateOnAxis(pe, t);\n  }\n  translateZ(t) {\n    return this.translateOnAxis(de, t);\n  }\n  localToWorld(t) {\n    return this.updateWorldMatrix(!0, !1), t.applyMatrix4(this.matrixWorld);\n  }\n  worldToLocal(t) {\n    return this.updateWorldMatrix(!0, !1), t.applyMatrix4(ct.copy(this.matrixWorld).invert());\n  }\n  lookAt(t, i, e) {\n    t.isVector3 ? mi.copy(t) : mi.set(t, i, e);\n    const s = this.parent;\n    this.updateWorldMatrix(!0, !1), $t.setFromMatrixPosition(this.matrixWorld), this.isCamera || this.isLight ? ct.lookAt($t, mi, this.up) : ct.lookAt(mi, $t, this.up), this.quaternion.setFromRotationMatrix(ct), s && (ct.extractRotation(s.matrixWorld), Vt.setFromRotationMatrix(ct), this.quaternion.premultiply(Vt.invert()));\n  }\n  add(t) {\n    if (arguments.length > 1) {\n      for (let i = 0; i < arguments.length; i++)\n        this.add(arguments[i]);\n      return this;\n    }\n    return t === this ? (console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", t), this) : (t && t.isObject3D ? (t.removeFromParent(), t.parent = this, this.children.push(t), t.dispatchEvent(me), Wt.child = t, this.dispatchEvent(Wt), Wt.child = null) : console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", t), this);\n  }\n  remove(t) {\n    if (arguments.length > 1) {\n      for (let e = 0; e < arguments.length; e++)\n        this.remove(arguments[e]);\n      return this;\n    }\n    const i = this.children.indexOf(t);\n    return i !== -1 && (t.parent = null, this.children.splice(i, 1), t.dispatchEvent(cs), Di.child = t, this.dispatchEvent(Di), Di.child = null), this;\n  }\n  removeFromParent() {\n    const t = this.parent;\n    return t !== null && t.remove(this), this;\n  }\n  clear() {\n    return this.remove(...this.children);\n  }\n  attach(t) {\n    return this.updateWorldMatrix(!0, !1), ct.copy(this.matrixWorld).invert(), t.parent !== null && (t.parent.updateWorldMatrix(!0, !1), ct.multiply(t.parent.matrixWorld)), t.applyMatrix4(ct), t.removeFromParent(), t.parent = this, this.children.push(t), t.updateWorldMatrix(!1, !0), t.dispatchEvent(me), Wt.child = t, this.dispatchEvent(Wt), Wt.child = null, this;\n  }\n  getObjectById(t) {\n    return this.getObjectByProperty(\"id\", t);\n  }\n  getObjectByName(t) {\n    return this.getObjectByProperty(\"name\", t);\n  }\n  getObjectByProperty(t, i) {\n    if (this[t] === i) return this;\n    for (let e = 0, s = this.children.length; e < s; e++) {\n      const r = this.children[e].getObjectByProperty(t, i);\n      if (r !== void 0)\n        return r;\n    }\n  }\n  getObjectsByProperty(t, i, e = []) {\n    this[t] === i && e.push(this);\n    const s = this.children;\n    for (let n = 0, r = s.length; n < r; n++)\n      s[n].getObjectsByProperty(t, i, e);\n    return e;\n  }\n  getWorldPosition(t) {\n    return this.updateWorldMatrix(!0, !1), t.setFromMatrixPosition(this.matrixWorld);\n  }\n  getWorldQuaternion(t) {\n    return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose($t, t, os), t;\n  }\n  getWorldScale(t) {\n    return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose($t, ls, t), t;\n  }\n  getWorldDirection(t) {\n    this.updateWorldMatrix(!0, !1);\n    const i = this.matrixWorld.elements;\n    return t.set(i[8], i[9], i[10]).normalize();\n  }\n  raycast() {\n  }\n  traverse(t) {\n    t(this);\n    const i = this.children;\n    for (let e = 0, s = i.length; e < s; e++)\n      i[e].traverse(t);\n  }\n  traverseVisible(t) {\n    if (this.visible === !1) return;\n    t(this);\n    const i = this.children;\n    for (let e = 0, s = i.length; e < s; e++)\n      i[e].traverseVisible(t);\n  }\n  traverseAncestors(t) {\n    const i = this.parent;\n    i !== null && (t(i), i.traverseAncestors(t));\n  }\n  updateMatrix() {\n    this.matrix.compose(this.position, this.quaternion, this.scale), this.matrixWorldNeedsUpdate = !0;\n  }\n  updateMatrixWorld(t) {\n    this.matrixAutoUpdate && this.updateMatrix(), (this.matrixWorldNeedsUpdate || t) && (this.matrixWorldAutoUpdate === !0 && (this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix)), this.matrixWorldNeedsUpdate = !1, t = !0);\n    const i = this.children;\n    for (let e = 0, s = i.length; e < s; e++)\n      i[e].updateMatrixWorld(t);\n  }\n  updateWorldMatrix(t, i) {\n    const e = this.parent;\n    if (t === !0 && e !== null && e.updateWorldMatrix(!0, !1), this.matrixAutoUpdate && this.updateMatrix(), this.matrixWorldAutoUpdate === !0 && (this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix)), i === !0) {\n      const s = this.children;\n      for (let n = 0, r = s.length; n < r; n++)\n        s[n].updateWorldMatrix(!1, !0);\n    }\n  }\n  toJSON(t) {\n    const i = t === void 0 || typeof t == \"string\", e = {};\n    i && (t = {\n      geometries: {},\n      materials: {},\n      textures: {},\n      images: {},\n      shapes: {},\n      skeletons: {},\n      animations: {},\n      nodes: {}\n    }, e.metadata = {\n      version: 4.6,\n      type: \"Object\",\n      generator: \"Object3D.toJSON\"\n    });\n    const s = {};\n    s.uuid = this.uuid, s.type = this.type, this.name !== \"\" && (s.name = this.name), this.castShadow === !0 && (s.castShadow = !0), this.receiveShadow === !0 && (s.receiveShadow = !0), this.visible === !1 && (s.visible = !1), this.frustumCulled === !1 && (s.frustumCulled = !1), this.renderOrder !== 0 && (s.renderOrder = this.renderOrder), Object.keys(this.userData).length > 0 && (s.userData = this.userData), s.layers = this.layers.mask, s.matrix = this.matrix.toArray(), s.up = this.up.toArray(), this.matrixAutoUpdate === !1 && (s.matrixAutoUpdate = !1), this.isInstancedMesh && (s.type = \"InstancedMesh\", s.count = this.count, s.instanceMatrix = this.instanceMatrix.toJSON(), this.instanceColor !== null && (s.instanceColor = this.instanceColor.toJSON())), this.isBatchedMesh && (s.type = \"BatchedMesh\", s.perObjectFrustumCulled = this.perObjectFrustumCulled, s.sortObjects = this.sortObjects, s.drawRanges = this._drawRanges, s.reservedRanges = this._reservedRanges, s.visibility = this._visibility, s.active = this._active, s.bounds = this._bounds.map((h) => ({\n      boxInitialized: h.boxInitialized,\n      boxMin: h.box.min.toArray(),\n      boxMax: h.box.max.toArray(),\n      sphereInitialized: h.sphereInitialized,\n      sphereRadius: h.sphere.radius,\n      sphereCenter: h.sphere.center.toArray()\n    })), s.maxInstanceCount = this._maxInstanceCount, s.maxVertexCount = this._maxVertexCount, s.maxIndexCount = this._maxIndexCount, s.geometryInitialized = this._geometryInitialized, s.geometryCount = this._geometryCount, s.matricesTexture = this._matricesTexture.toJSON(t), this._colorsTexture !== null && (s.colorsTexture = this._colorsTexture.toJSON(t)), this.boundingSphere !== null && (s.boundingSphere = {\n      center: s.boundingSphere.center.toArray(),\n      radius: s.boundingSphere.radius\n    }), this.boundingBox !== null && (s.boundingBox = {\n      min: s.boundingBox.min.toArray(),\n      max: s.boundingBox.max.toArray()\n    }));\n    function n(h, a) {\n      return h[a.uuid] === void 0 && (h[a.uuid] = a.toJSON(t)), a.uuid;\n    }\n    if (this.isScene)\n      this.background && (this.background.isColor ? s.background = this.background.toJSON() : this.background.isTexture && (s.background = this.background.toJSON(t).uuid)), this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== !0 && (s.environment = this.environment.toJSON(t).uuid);\n    else if (this.isMesh || this.isLine || this.isPoints) {\n      s.geometry = n(t.geometries, this.geometry);\n      const h = this.geometry.parameters;\n      if (h !== void 0 && h.shapes !== void 0) {\n        const a = h.shapes;\n        if (Array.isArray(a))\n          for (let o = 0, l = a.length; o < l; o++) {\n            const c = a[o];\n            n(t.shapes, c);\n          }\n        else\n          n(t.shapes, a);\n      }\n    }\n    if (this.isSkinnedMesh && (s.bindMode = this.bindMode, s.bindMatrix = this.bindMatrix.toArray(), this.skeleton !== void 0 && (n(t.skeletons, this.skeleton), s.skeleton = this.skeleton.uuid)), this.material !== void 0)\n      if (Array.isArray(this.material)) {\n        const h = [];\n        for (let a = 0, o = this.material.length; a < o; a++)\n          h.push(n(t.materials, this.material[a]));\n        s.material = h;\n      } else\n        s.material = n(t.materials, this.material);\n    if (this.children.length > 0) {\n      s.children = [];\n      for (let h = 0; h < this.children.length; h++)\n        s.children.push(this.children[h].toJSON(t).object);\n    }\n    if (this.animations.length > 0) {\n      s.animations = [];\n      for (let h = 0; h < this.animations.length; h++) {\n        const a = this.animations[h];\n        s.animations.push(n(t.animations, a));\n      }\n    }\n    if (i) {\n      const h = r(t.geometries), a = r(t.materials), o = r(t.textures), l = r(t.images), c = r(t.shapes), u = r(t.skeletons), d = r(t.animations), m = r(t.nodes);\n      h.length > 0 && (e.geometries = h), a.length > 0 && (e.materials = a), o.length > 0 && (e.textures = o), l.length > 0 && (e.images = l), c.length > 0 && (e.shapes = c), u.length > 0 && (e.skeletons = u), d.length > 0 && (e.animations = d), m.length > 0 && (e.nodes = m);\n    }\n    return e.object = s, e;\n    function r(h) {\n      const a = [];\n      for (const o in h) {\n        const l = h[o];\n        delete l.metadata, a.push(l);\n      }\n      return a;\n    }\n  }\n  clone(t) {\n    return new this.constructor().copy(this, t);\n  }\n  copy(t, i = !0) {\n    if (this.name = t.name, this.up.copy(t.up), this.position.copy(t.position), this.rotation.order = t.rotation.order, this.quaternion.copy(t.quaternion), this.scale.copy(t.scale), this.matrix.copy(t.matrix), this.matrixWorld.copy(t.matrixWorld), this.matrixAutoUpdate = t.matrixAutoUpdate, this.matrixWorldAutoUpdate = t.matrixWorldAutoUpdate, this.matrixWorldNeedsUpdate = t.matrixWorldNeedsUpdate, this.layers.mask = t.layers.mask, this.visible = t.visible, this.castShadow = t.castShadow, this.receiveShadow = t.receiveShadow, this.frustumCulled = t.frustumCulled, this.renderOrder = t.renderOrder, this.animations = t.animations.slice(), this.userData = JSON.parse(JSON.stringify(t.userData)), i === !0)\n      for (let e = 0; e < t.children.length; e++) {\n        const s = t.children[e];\n        this.add(s.clone());\n      }\n    return this;\n  }\n}\nP.DEFAULT_UP = /* @__PURE__ */ new f(0, 1, 0);\nP.DEFAULT_MATRIX_AUTO_UPDATE = !0;\nP.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = !0;\nconst it = /* @__PURE__ */ new f(), ut = /* @__PURE__ */ new f(), Pi = /* @__PURE__ */ new f(), pt = /* @__PURE__ */ new f(), Ut = /* @__PURE__ */ new f(), qt = /* @__PURE__ */ new f(), fe = /* @__PURE__ */ new f(), Li = /* @__PURE__ */ new f(), Oi = /* @__PURE__ */ new f(), Ni = /* @__PURE__ */ new f(), Vi = /* @__PURE__ */ new j(), Wi = /* @__PURE__ */ new j(), Ui = /* @__PURE__ */ new j();\nclass st {\n  constructor(t = new f(), i = new f(), e = new f()) {\n    this.a = t, this.b = i, this.c = e;\n  }\n  static getNormal(t, i, e, s) {\n    s.subVectors(e, i), it.subVectors(t, i), s.cross(it);\n    const n = s.lengthSq();\n    return n > 0 ? s.multiplyScalar(1 / Math.sqrt(n)) : s.set(0, 0, 0);\n  }\n  // static/instance method to calculate barycentric coordinates\n  // based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n  static getBarycoord(t, i, e, s, n) {\n    it.subVectors(s, i), ut.subVectors(e, i), Pi.subVectors(t, i);\n    const r = it.dot(it), h = it.dot(ut), a = it.dot(Pi), o = ut.dot(ut), l = ut.dot(Pi), c = r * o - h * h;\n    if (c === 0)\n      return n.set(0, 0, 0), null;\n    const u = 1 / c, d = (o * a - h * l) * u, m = (r * l - h * a) * u;\n    return n.set(1 - d - m, m, d);\n  }\n  static containsPoint(t, i, e, s) {\n    return this.getBarycoord(t, i, e, s, pt) === null ? !1 : pt.x >= 0 && pt.y >= 0 && pt.x + pt.y <= 1;\n  }\n  static getInterpolation(t, i, e, s, n, r, h, a) {\n    return this.getBarycoord(t, i, e, s, pt) === null ? (a.x = 0, a.y = 0, \"z\" in a && (a.z = 0), \"w\" in a && (a.w = 0), null) : (a.setScalar(0), a.addScaledVector(n, pt.x), a.addScaledVector(r, pt.y), a.addScaledVector(h, pt.z), a);\n  }\n  static getInterpolatedAttribute(t, i, e, s, n, r) {\n    return Vi.setScalar(0), Wi.setScalar(0), Ui.setScalar(0), Vi.fromBufferAttribute(t, i), Wi.fromBufferAttribute(t, e), Ui.fromBufferAttribute(t, s), r.setScalar(0), r.addScaledVector(Vi, n.x), r.addScaledVector(Wi, n.y), r.addScaledVector(Ui, n.z), r;\n  }\n  static isFrontFacing(t, i, e, s) {\n    return it.subVectors(e, i), ut.subVectors(t, i), it.cross(ut).dot(s) < 0;\n  }\n  set(t, i, e) {\n    return this.a.copy(t), this.b.copy(i), this.c.copy(e), this;\n  }\n  setFromPointsAndIndices(t, i, e, s) {\n    return this.a.copy(t[i]), this.b.copy(t[e]), this.c.copy(t[s]), this;\n  }\n  setFromAttributeAndIndices(t, i, e, s) {\n    return this.a.fromBufferAttribute(t, i), this.b.fromBufferAttribute(t, e), this.c.fromBufferAttribute(t, s), this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(t) {\n    return this.a.copy(t.a), this.b.copy(t.b), this.c.copy(t.c), this;\n  }\n  getArea() {\n    return it.subVectors(this.c, this.b), ut.subVectors(this.a, this.b), it.cross(ut).length() * 0.5;\n  }\n  getMidpoint(t) {\n    return t.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n  }\n  getNormal(t) {\n    return st.getNormal(this.a, this.b, this.c, t);\n  }\n  getPlane(t) {\n    return t.setFromCoplanarPoints(this.a, this.b, this.c);\n  }\n  getBarycoord(t, i) {\n    return st.getBarycoord(t, this.a, this.b, this.c, i);\n  }\n  getInterpolation(t, i, e, s, n) {\n    return st.getInterpolation(t, this.a, this.b, this.c, i, e, s, n);\n  }\n  containsPoint(t) {\n    return st.containsPoint(t, this.a, this.b, this.c);\n  }\n  isFrontFacing(t) {\n    return st.isFrontFacing(this.a, this.b, this.c, t);\n  }\n  intersectsBox(t) {\n    return t.intersectsTriangle(this);\n  }\n  closestPointToPoint(t, i) {\n    const e = this.a, s = this.b, n = this.c;\n    let r, h;\n    Ut.subVectors(s, e), qt.subVectors(n, e), Li.subVectors(t, e);\n    const a = Ut.dot(Li), o = qt.dot(Li);\n    if (a <= 0 && o <= 0)\n      return i.copy(e);\n    Oi.subVectors(t, s);\n    const l = Ut.dot(Oi), c = qt.dot(Oi);\n    if (l >= 0 && c <= l)\n      return i.copy(s);\n    const u = a * c - l * o;\n    if (u <= 0 && a >= 0 && l <= 0)\n      return r = a / (a - l), i.copy(e).addScaledVector(Ut, r);\n    Ni.subVectors(t, n);\n    const d = Ut.dot(Ni), m = qt.dot(Ni);\n    if (m >= 0 && d <= m)\n      return i.copy(n);\n    const y = d * o - a * m;\n    if (y <= 0 && o >= 0 && m <= 0)\n      return h = o / (o - m), i.copy(e).addScaledVector(qt, h);\n    const x = l * m - d * c;\n    if (x <= 0 && c - l >= 0 && d - m >= 0)\n      return fe.subVectors(n, s), h = (c - l) / (c - l + (d - m)), i.copy(s).addScaledVector(fe, h);\n    const g = 1 / (x + y + u);\n    return r = y * g, h = u * g, i.copy(e).addScaledVector(Ut, r).addScaledVector(qt, h);\n  }\n  equals(t) {\n    return t.a.equals(this.a) && t.b.equals(this.b) && t.c.equals(this.c);\n  }\n}\nconst Te = {\n  aliceblue: 15792383,\n  antiquewhite: 16444375,\n  aqua: 65535,\n  aquamarine: 8388564,\n  azure: 15794175,\n  beige: 16119260,\n  bisque: 16770244,\n  black: 0,\n  blanchedalmond: 16772045,\n  blue: 255,\n  blueviolet: 9055202,\n  brown: 10824234,\n  burlywood: 14596231,\n  cadetblue: 6266528,\n  chartreuse: 8388352,\n  chocolate: 13789470,\n  coral: 16744272,\n  cornflowerblue: 6591981,\n  cornsilk: 16775388,\n  crimson: 14423100,\n  cyan: 65535,\n  darkblue: 139,\n  darkcyan: 35723,\n  darkgoldenrod: 12092939,\n  darkgray: 11119017,\n  darkgreen: 25600,\n  darkgrey: 11119017,\n  darkkhaki: 12433259,\n  darkmagenta: 9109643,\n  darkolivegreen: 5597999,\n  darkorange: 16747520,\n  darkorchid: 10040012,\n  darkred: 9109504,\n  darksalmon: 15308410,\n  darkseagreen: 9419919,\n  darkslateblue: 4734347,\n  darkslategray: 3100495,\n  darkslategrey: 3100495,\n  darkturquoise: 52945,\n  darkviolet: 9699539,\n  deeppink: 16716947,\n  deepskyblue: 49151,\n  dimgray: 6908265,\n  dimgrey: 6908265,\n  dodgerblue: 2003199,\n  firebrick: 11674146,\n  floralwhite: 16775920,\n  forestgreen: 2263842,\n  fuchsia: 16711935,\n  gainsboro: 14474460,\n  ghostwhite: 16316671,\n  gold: 16766720,\n  goldenrod: 14329120,\n  gray: 8421504,\n  green: 32768,\n  greenyellow: 11403055,\n  grey: 8421504,\n  honeydew: 15794160,\n  hotpink: 16738740,\n  indianred: 13458524,\n  indigo: 4915330,\n  ivory: 16777200,\n  khaki: 15787660,\n  lavender: 15132410,\n  lavenderblush: 16773365,\n  lawngreen: 8190976,\n  lemonchiffon: 16775885,\n  lightblue: 11393254,\n  lightcoral: 15761536,\n  lightcyan: 14745599,\n  lightgoldenrodyellow: 16448210,\n  lightgray: 13882323,\n  lightgreen: 9498256,\n  lightgrey: 13882323,\n  lightpink: 16758465,\n  lightsalmon: 16752762,\n  lightseagreen: 2142890,\n  lightskyblue: 8900346,\n  lightslategray: 7833753,\n  lightslategrey: 7833753,\n  lightsteelblue: 11584734,\n  lightyellow: 16777184,\n  lime: 65280,\n  limegreen: 3329330,\n  linen: 16445670,\n  magenta: 16711935,\n  maroon: 8388608,\n  mediumaquamarine: 6737322,\n  mediumblue: 205,\n  mediumorchid: 12211667,\n  mediumpurple: 9662683,\n  mediumseagreen: 3978097,\n  mediumslateblue: 8087790,\n  mediumspringgreen: 64154,\n  mediumturquoise: 4772300,\n  mediumvioletred: 13047173,\n  midnightblue: 1644912,\n  mintcream: 16121850,\n  mistyrose: 16770273,\n  moccasin: 16770229,\n  navajowhite: 16768685,\n  navy: 128,\n  oldlace: 16643558,\n  olive: 8421376,\n  olivedrab: 7048739,\n  orange: 16753920,\n  orangered: 16729344,\n  orchid: 14315734,\n  palegoldenrod: 15657130,\n  palegreen: 10025880,\n  paleturquoise: 11529966,\n  palevioletred: 14381203,\n  papayawhip: 16773077,\n  peachpuff: 16767673,\n  peru: 13468991,\n  pink: 16761035,\n  plum: 14524637,\n  powderblue: 11591910,\n  purple: 8388736,\n  rebeccapurple: 6697881,\n  red: 16711680,\n  rosybrown: 12357519,\n  royalblue: 4286945,\n  saddlebrown: 9127187,\n  salmon: 16416882,\n  sandybrown: 16032864,\n  seagreen: 3050327,\n  seashell: 16774638,\n  sienna: 10506797,\n  silver: 12632256,\n  skyblue: 8900331,\n  slateblue: 6970061,\n  slategray: 7372944,\n  slategrey: 7372944,\n  snow: 16775930,\n  springgreen: 65407,\n  steelblue: 4620980,\n  tan: 13808780,\n  teal: 32896,\n  thistle: 14204888,\n  tomato: 16737095,\n  turquoise: 4251856,\n  violet: 15631086,\n  wheat: 16113331,\n  white: 16777215,\n  whitesmoke: 16119285,\n  yellow: 16776960,\n  yellowgreen: 10145074\n}, _t = { h: 0, s: 0, l: 0 }, fi = { h: 0, s: 0, l: 0 };\nfunction qi(p, t, i) {\n  return i < 0 && (i += 1), i > 1 && (i -= 1), i < 1 / 6 ? p + (t - p) * 6 * i : i < 1 / 2 ? t : i < 2 / 3 ? p + (t - p) * 6 * (2 / 3 - i) : p;\n}\nclass B {\n  constructor(t, i, e) {\n    return this.isColor = !0, this.r = 1, this.g = 1, this.b = 1, this.set(t, i, e);\n  }\n  set(t, i, e) {\n    if (i === void 0 && e === void 0) {\n      const s = t;\n      s && s.isColor ? this.copy(s) : typeof s == \"number\" ? this.setHex(s) : typeof s == \"string\" && this.setStyle(s);\n    } else\n      this.setRGB(t, i, e);\n    return this;\n  }\n  setScalar(t) {\n    return this.r = t, this.g = t, this.b = t, this;\n  }\n  setHex(t, i = et) {\n    return t = Math.floor(t), this.r = (t >> 16 & 255) / 255, this.g = (t >> 8 & 255) / 255, this.b = (t & 255) / 255, Q.toWorkingColorSpace(this, i), this;\n  }\n  setRGB(t, i, e, s = Q.workingColorSpace) {\n    return this.r = t, this.g = i, this.b = e, Q.toWorkingColorSpace(this, s), this;\n  }\n  setHSL(t, i, e, s = Q.workingColorSpace) {\n    if (t = Ji(t, 1), i = T(i, 0, 1), e = T(e, 0, 1), i === 0)\n      this.r = this.g = this.b = e;\n    else {\n      const n = e <= 0.5 ? e * (1 + i) : e + i - e * i, r = 2 * e - n;\n      this.r = qi(r, n, t + 1 / 3), this.g = qi(r, n, t), this.b = qi(r, n, t - 1 / 3);\n    }\n    return Q.toWorkingColorSpace(this, s), this;\n  }\n  setStyle(t, i = et) {\n    function e(n) {\n      n !== void 0 && parseFloat(n) < 1 && console.warn(\"THREE.Color: Alpha component of \" + t + \" will be ignored.\");\n    }\n    let s;\n    if (s = /^(\\w+)\\(([^\\)]*)\\)/.exec(t)) {\n      let n;\n      const r = s[1], h = s[2];\n      switch (r) {\n        case \"rgb\":\n        case \"rgba\":\n          if (n = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(h))\n            return e(n[4]), this.setRGB(\n              Math.min(255, parseInt(n[1], 10)) / 255,\n              Math.min(255, parseInt(n[2], 10)) / 255,\n              Math.min(255, parseInt(n[3], 10)) / 255,\n              i\n            );\n          if (n = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(h))\n            return e(n[4]), this.setRGB(\n              Math.min(100, parseInt(n[1], 10)) / 100,\n              Math.min(100, parseInt(n[2], 10)) / 100,\n              Math.min(100, parseInt(n[3], 10)) / 100,\n              i\n            );\n          break;\n        case \"hsl\":\n        case \"hsla\":\n          if (n = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(h))\n            return e(n[4]), this.setHSL(\n              parseFloat(n[1]) / 360,\n              parseFloat(n[2]) / 100,\n              parseFloat(n[3]) / 100,\n              i\n            );\n          break;\n        default:\n          console.warn(\"THREE.Color: Unknown color model \" + t);\n      }\n    } else if (s = /^\\#([A-Fa-f\\d]+)$/.exec(t)) {\n      const n = s[1], r = n.length;\n      if (r === 3)\n        return this.setRGB(\n          parseInt(n.charAt(0), 16) / 15,\n          parseInt(n.charAt(1), 16) / 15,\n          parseInt(n.charAt(2), 16) / 15,\n          i\n        );\n      if (r === 6)\n        return this.setHex(parseInt(n, 16), i);\n      console.warn(\"THREE.Color: Invalid hex color \" + t);\n    } else if (t && t.length > 0)\n      return this.setColorName(t, i);\n    return this;\n  }\n  setColorName(t, i = et) {\n    const e = Te[t.toLowerCase()];\n    return e !== void 0 ? this.setHex(e, i) : console.warn(\"THREE.Color: Unknown color \" + t), this;\n  }\n  clone() {\n    return new this.constructor(this.r, this.g, this.b);\n  }\n  copy(t) {\n    return this.r = t.r, this.g = t.g, this.b = t.b, this;\n  }\n  copySRGBToLinear(t) {\n    return this.r = ft(t.r), this.g = ft(t.g), this.b = ft(t.b), this;\n  }\n  copyLinearToSRGB(t) {\n    return this.r = Yt(t.r), this.g = Yt(t.g), this.b = Yt(t.b), this;\n  }\n  convertSRGBToLinear() {\n    return this.copySRGBToLinear(this), this;\n  }\n  convertLinearToSRGB() {\n    return this.copyLinearToSRGB(this), this;\n  }\n  getHex(t = et) {\n    return Q.fromWorkingColorSpace(W.copy(this), t), Math.round(T(W.r * 255, 0, 255)) * 65536 + Math.round(T(W.g * 255, 0, 255)) * 256 + Math.round(T(W.b * 255, 0, 255));\n  }\n  getHexString(t = et) {\n    return (\"000000\" + this.getHex(t).toString(16)).slice(-6);\n  }\n  getHSL(t, i = Q.workingColorSpace) {\n    Q.fromWorkingColorSpace(W.copy(this), i);\n    const e = W.r, s = W.g, n = W.b, r = Math.max(e, s, n), h = Math.min(e, s, n);\n    let a, o;\n    const l = (h + r) / 2;\n    if (h === r)\n      a = 0, o = 0;\n    else {\n      const c = r - h;\n      switch (o = l <= 0.5 ? c / (r + h) : c / (2 - r - h), r) {\n        case e:\n          a = (s - n) / c + (s < n ? 6 : 0);\n          break;\n        case s:\n          a = (n - e) / c + 2;\n          break;\n        case n:\n          a = (e - s) / c + 4;\n          break;\n      }\n      a /= 6;\n    }\n    return t.h = a, t.s = o, t.l = l, t;\n  }\n  getRGB(t, i = Q.workingColorSpace) {\n    return Q.fromWorkingColorSpace(W.copy(this), i), t.r = W.r, t.g = W.g, t.b = W.b, t;\n  }\n  getStyle(t = et) {\n    Q.fromWorkingColorSpace(W.copy(this), t);\n    const i = W.r, e = W.g, s = W.b;\n    return t !== et ? `color(${t} ${i.toFixed(3)} ${e.toFixed(3)} ${s.toFixed(3)})` : `rgb(${Math.round(i * 255)},${Math.round(e * 255)},${Math.round(s * 255)})`;\n  }\n  offsetHSL(t, i, e) {\n    return this.getHSL(_t), this.setHSL(_t.h + t, _t.s + i, _t.l + e);\n  }\n  add(t) {\n    return this.r += t.r, this.g += t.g, this.b += t.b, this;\n  }\n  addColors(t, i) {\n    return this.r = t.r + i.r, this.g = t.g + i.g, this.b = t.b + i.b, this;\n  }\n  addScalar(t) {\n    return this.r += t, this.g += t, this.b += t, this;\n  }\n  sub(t) {\n    return this.r = Math.max(0, this.r - t.r), this.g = Math.max(0, this.g - t.g), this.b = Math.max(0, this.b - t.b), this;\n  }\n  multiply(t) {\n    return this.r *= t.r, this.g *= t.g, this.b *= t.b, this;\n  }\n  multiplyScalar(t) {\n    return this.r *= t, this.g *= t, this.b *= t, this;\n  }\n  lerp(t, i) {\n    return this.r += (t.r - this.r) * i, this.g += (t.g - this.g) * i, this.b += (t.b - this.b) * i, this;\n  }\n  lerpColors(t, i, e) {\n    return this.r = t.r + (i.r - t.r) * e, this.g = t.g + (i.g - t.g) * e, this.b = t.b + (i.b - t.b) * e, this;\n  }\n  lerpHSL(t, i) {\n    this.getHSL(_t), t.getHSL(fi);\n    const e = ii(_t.h, fi.h, i), s = ii(_t.s, fi.s, i), n = ii(_t.l, fi.l, i);\n    return this.setHSL(e, s, n), this;\n  }\n  setFromVector3(t) {\n    return this.r = t.x, this.g = t.y, this.b = t.z, this;\n  }\n  applyMatrix3(t) {\n    const i = this.r, e = this.g, s = this.b, n = t.elements;\n    return this.r = n[0] * i + n[3] * e + n[6] * s, this.g = n[1] * i + n[4] * e + n[7] * s, this.b = n[2] * i + n[5] * e + n[8] * s, this;\n  }\n  equals(t) {\n    return t.r === this.r && t.g === this.g && t.b === this.b;\n  }\n  fromArray(t, i = 0) {\n    return this.r = t[i], this.g = t[i + 1], this.b = t[i + 2], this;\n  }\n  toArray(t = [], i = 0) {\n    return t[i] = this.r, t[i + 1] = this.g, t[i + 2] = this.b, t;\n  }\n  fromBufferAttribute(t, i) {\n    return this.r = t.getX(i), this.g = t.getY(i), this.b = t.getZ(i), this;\n  }\n  toJSON() {\n    return this.getHex();\n  }\n  *[Symbol.iterator]() {\n    yield this.r, yield this.g, yield this.b;\n  }\n}\nconst W = /* @__PURE__ */ new B();\nB.NAMES = Te;\nlet us = 0;\nclass $ extends si {\n  constructor() {\n    super(), this.isMaterial = !0, Object.defineProperty(this, \"id\", { value: us++ }), this.uuid = mt(), this.name = \"\", this.type = \"Material\", this.blending = 1, this.side = 0, this.vertexColors = !1, this.opacity = 1, this.transparent = !1, this.alphaHash = !1, this.blendSrc = 204, this.blendDst = 205, this.blendEquation = 100, this.blendSrcAlpha = null, this.blendDstAlpha = null, this.blendEquationAlpha = null, this.blendColor = new B(0, 0, 0), this.blendAlpha = 0, this.depthFunc = 3, this.depthTest = !0, this.depthWrite = !0, this.stencilWriteMask = 255, this.stencilFunc = 519, this.stencilRef = 0, this.stencilFuncMask = 255, this.stencilFail = 7680, this.stencilZFail = 7680, this.stencilZPass = 7680, this.stencilWrite = !1, this.clippingPlanes = null, this.clipIntersection = !1, this.clipShadows = !1, this.shadowSide = null, this.colorWrite = !0, this.precision = null, this.polygonOffset = !1, this.polygonOffsetFactor = 0, this.polygonOffsetUnits = 0, this.dithering = !1, this.alphaToCoverage = !1, this.premultipliedAlpha = !1, this.forceSinglePass = !1, this.visible = !0, this.toneMapped = !0, this.userData = {}, this.version = 0, this._alphaTest = 0;\n  }\n  get alphaTest() {\n    return this._alphaTest;\n  }\n  set alphaTest(t) {\n    this._alphaTest > 0 != t > 0 && this.version++, this._alphaTest = t;\n  }\n  // onBeforeRender and onBeforeCompile only supported in WebGLRenderer\n  onBeforeRender() {\n  }\n  onBeforeCompile() {\n  }\n  customProgramCacheKey() {\n    return this.onBeforeCompile.toString();\n  }\n  setValues(t) {\n    if (t !== void 0)\n      for (const i in t) {\n        const e = t[i];\n        if (e === void 0) {\n          console.warn(`THREE.Material: parameter '${i}' has value of undefined.`);\n          continue;\n        }\n        const s = this[i];\n        if (s === void 0) {\n          console.warn(`THREE.Material: '${i}' is not a property of THREE.${this.type}.`);\n          continue;\n        }\n        s && s.isColor ? s.set(e) : s && s.isVector3 && e && e.isVector3 ? s.copy(e) : this[i] = e;\n      }\n  }\n  toJSON(t) {\n    const i = t === void 0 || typeof t == \"string\";\n    i && (t = {\n      textures: {},\n      images: {}\n    });\n    const e = {\n      metadata: {\n        version: 4.6,\n        type: \"Material\",\n        generator: \"Material.toJSON\"\n      }\n    };\n    e.uuid = this.uuid, e.type = this.type, this.name !== \"\" && (e.name = this.name), this.color && this.color.isColor && (e.color = this.color.getHex()), this.roughness !== void 0 && (e.roughness = this.roughness), this.metalness !== void 0 && (e.metalness = this.metalness), this.sheen !== void 0 && (e.sheen = this.sheen), this.sheenColor && this.sheenColor.isColor && (e.sheenColor = this.sheenColor.getHex()), this.sheenRoughness !== void 0 && (e.sheenRoughness = this.sheenRoughness), this.emissive && this.emissive.isColor && (e.emissive = this.emissive.getHex()), this.emissiveIntensity !== void 0 && this.emissiveIntensity !== 1 && (e.emissiveIntensity = this.emissiveIntensity), this.specular && this.specular.isColor && (e.specular = this.specular.getHex()), this.specularIntensity !== void 0 && (e.specularIntensity = this.specularIntensity), this.specularColor && this.specularColor.isColor && (e.specularColor = this.specularColor.getHex()), this.shininess !== void 0 && (e.shininess = this.shininess), this.clearcoat !== void 0 && (e.clearcoat = this.clearcoat), this.clearcoatRoughness !== void 0 && (e.clearcoatRoughness = this.clearcoatRoughness), this.clearcoatMap && this.clearcoatMap.isTexture && (e.clearcoatMap = this.clearcoatMap.toJSON(t).uuid), this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture && (e.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(t).uuid), this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (e.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(t).uuid, e.clearcoatNormalScale = this.clearcoatNormalScale.toArray()), this.dispersion !== void 0 && (e.dispersion = this.dispersion), this.iridescence !== void 0 && (e.iridescence = this.iridescence), this.iridescenceIOR !== void 0 && (e.iridescenceIOR = this.iridescenceIOR), this.iridescenceThicknessRange !== void 0 && (e.iridescenceThicknessRange = this.iridescenceThicknessRange), this.iridescenceMap && this.iridescenceMap.isTexture && (e.iridescenceMap = this.iridescenceMap.toJSON(t).uuid), this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture && (e.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(t).uuid), this.anisotropy !== void 0 && (e.anisotropy = this.anisotropy), this.anisotropyRotation !== void 0 && (e.anisotropyRotation = this.anisotropyRotation), this.anisotropyMap && this.anisotropyMap.isTexture && (e.anisotropyMap = this.anisotropyMap.toJSON(t).uuid), this.map && this.map.isTexture && (e.map = this.map.toJSON(t).uuid), this.matcap && this.matcap.isTexture && (e.matcap = this.matcap.toJSON(t).uuid), this.alphaMap && this.alphaMap.isTexture && (e.alphaMap = this.alphaMap.toJSON(t).uuid), this.lightMap && this.lightMap.isTexture && (e.lightMap = this.lightMap.toJSON(t).uuid, e.lightMapIntensity = this.lightMapIntensity), this.aoMap && this.aoMap.isTexture && (e.aoMap = this.aoMap.toJSON(t).uuid, e.aoMapIntensity = this.aoMapIntensity), this.bumpMap && this.bumpMap.isTexture && (e.bumpMap = this.bumpMap.toJSON(t).uuid, e.bumpScale = this.bumpScale), this.normalMap && this.normalMap.isTexture && (e.normalMap = this.normalMap.toJSON(t).uuid, e.normalMapType = this.normalMapType, e.normalScale = this.normalScale.toArray()), this.displacementMap && this.displacementMap.isTexture && (e.displacementMap = this.displacementMap.toJSON(t).uuid, e.displacementScale = this.displacementScale, e.displacementBias = this.displacementBias), this.roughnessMap && this.roughnessMap.isTexture && (e.roughnessMap = this.roughnessMap.toJSON(t).uuid), this.metalnessMap && this.metalnessMap.isTexture && (e.metalnessMap = this.metalnessMap.toJSON(t).uuid), this.emissiveMap && this.emissiveMap.isTexture && (e.emissiveMap = this.emissiveMap.toJSON(t).uuid), this.specularMap && this.specularMap.isTexture && (e.specularMap = this.specularMap.toJSON(t).uuid), this.specularIntensityMap && this.specularIntensityMap.isTexture && (e.specularIntensityMap = this.specularIntensityMap.toJSON(t).uuid), this.specularColorMap && this.specularColorMap.isTexture && (e.specularColorMap = this.specularColorMap.toJSON(t).uuid), this.envMap && this.envMap.isTexture && (e.envMap = this.envMap.toJSON(t).uuid, this.combine !== void 0 && (e.combine = this.combine)), this.envMapRotation !== void 0 && (e.envMapRotation = this.envMapRotation.toArray()), this.envMapIntensity !== void 0 && (e.envMapIntensity = this.envMapIntensity), this.reflectivity !== void 0 && (e.reflectivity = this.reflectivity), this.refractionRatio !== void 0 && (e.refractionRatio = this.refractionRatio), this.gradientMap && this.gradientMap.isTexture && (e.gradientMap = this.gradientMap.toJSON(t).uuid), this.transmission !== void 0 && (e.transmission = this.transmission), this.transmissionMap && this.transmissionMap.isTexture && (e.transmissionMap = this.transmissionMap.toJSON(t).uuid), this.thickness !== void 0 && (e.thickness = this.thickness), this.thicknessMap && this.thicknessMap.isTexture && (e.thicknessMap = this.thicknessMap.toJSON(t).uuid), this.attenuationDistance !== void 0 && this.attenuationDistance !== 1 / 0 && (e.attenuationDistance = this.attenuationDistance), this.attenuationColor !== void 0 && (e.attenuationColor = this.attenuationColor.getHex()), this.size !== void 0 && (e.size = this.size), this.shadowSide !== null && (e.shadowSide = this.shadowSide), this.sizeAttenuation !== void 0 && (e.sizeAttenuation = this.sizeAttenuation), this.blending !== 1 && (e.blending = this.blending), this.side !== 0 && (e.side = this.side), this.vertexColors === !0 && (e.vertexColors = !0), this.opacity < 1 && (e.opacity = this.opacity), this.transparent === !0 && (e.transparent = !0), this.blendSrc !== 204 && (e.blendSrc = this.blendSrc), this.blendDst !== 205 && (e.blendDst = this.blendDst), this.blendEquation !== 100 && (e.blendEquation = this.blendEquation), this.blendSrcAlpha !== null && (e.blendSrcAlpha = this.blendSrcAlpha), this.blendDstAlpha !== null && (e.blendDstAlpha = this.blendDstAlpha), this.blendEquationAlpha !== null && (e.blendEquationAlpha = this.blendEquationAlpha), this.blendColor && this.blendColor.isColor && (e.blendColor = this.blendColor.getHex()), this.blendAlpha !== 0 && (e.blendAlpha = this.blendAlpha), this.depthFunc !== 3 && (e.depthFunc = this.depthFunc), this.depthTest === !1 && (e.depthTest = this.depthTest), this.depthWrite === !1 && (e.depthWrite = this.depthWrite), this.colorWrite === !1 && (e.colorWrite = this.colorWrite), this.stencilWriteMask !== 255 && (e.stencilWriteMask = this.stencilWriteMask), this.stencilFunc !== 519 && (e.stencilFunc = this.stencilFunc), this.stencilRef !== 0 && (e.stencilRef = this.stencilRef), this.stencilFuncMask !== 255 && (e.stencilFuncMask = this.stencilFuncMask), this.stencilFail !== 7680 && (e.stencilFail = this.stencilFail), this.stencilZFail !== 7680 && (e.stencilZFail = this.stencilZFail), this.stencilZPass !== 7680 && (e.stencilZPass = this.stencilZPass), this.stencilWrite === !0 && (e.stencilWrite = this.stencilWrite), this.rotation !== void 0 && this.rotation !== 0 && (e.rotation = this.rotation), this.polygonOffset === !0 && (e.polygonOffset = !0), this.polygonOffsetFactor !== 0 && (e.polygonOffsetFactor = this.polygonOffsetFactor), this.polygonOffsetUnits !== 0 && (e.polygonOffsetUnits = this.polygonOffsetUnits), this.linewidth !== void 0 && this.linewidth !== 1 && (e.linewidth = this.linewidth), this.dashSize !== void 0 && (e.dashSize = this.dashSize), this.gapSize !== void 0 && (e.gapSize = this.gapSize), this.scale !== void 0 && (e.scale = this.scale), this.dithering === !0 && (e.dithering = !0), this.alphaTest > 0 && (e.alphaTest = this.alphaTest), this.alphaHash === !0 && (e.alphaHash = !0), this.alphaToCoverage === !0 && (e.alphaToCoverage = !0), this.premultipliedAlpha === !0 && (e.premultipliedAlpha = !0), this.forceSinglePass === !0 && (e.forceSinglePass = !0), this.wireframe === !0 && (e.wireframe = !0), this.wireframeLinewidth > 1 && (e.wireframeLinewidth = this.wireframeLinewidth), this.wireframeLinecap !== \"round\" && (e.wireframeLinecap = this.wireframeLinecap), this.wireframeLinejoin !== \"round\" && (e.wireframeLinejoin = this.wireframeLinejoin), this.flatShading === !0 && (e.flatShading = !0), this.visible === !1 && (e.visible = !1), this.toneMapped === !1 && (e.toneMapped = !1), this.fog === !1 && (e.fog = !1), Object.keys(this.userData).length > 0 && (e.userData = this.userData);\n    function s(n) {\n      const r = [];\n      for (const h in n) {\n        const a = n[h];\n        delete a.metadata, r.push(a);\n      }\n      return r;\n    }\n    if (i) {\n      const n = s(t.textures), r = s(t.images);\n      n.length > 0 && (e.textures = n), r.length > 0 && (e.images = r);\n    }\n    return e;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(t) {\n    this.name = t.name, this.blending = t.blending, this.side = t.side, this.vertexColors = t.vertexColors, this.opacity = t.opacity, this.transparent = t.transparent, this.blendSrc = t.blendSrc, this.blendDst = t.blendDst, this.blendEquation = t.blendEquation, this.blendSrcAlpha = t.blendSrcAlpha, this.blendDstAlpha = t.blendDstAlpha, this.blendEquationAlpha = t.blendEquationAlpha, this.blendColor.copy(t.blendColor), this.blendAlpha = t.blendAlpha, this.depthFunc = t.depthFunc, this.depthTest = t.depthTest, this.depthWrite = t.depthWrite, this.stencilWriteMask = t.stencilWriteMask, this.stencilFunc = t.stencilFunc, this.stencilRef = t.stencilRef, this.stencilFuncMask = t.stencilFuncMask, this.stencilFail = t.stencilFail, this.stencilZFail = t.stencilZFail, this.stencilZPass = t.stencilZPass, this.stencilWrite = t.stencilWrite;\n    const i = t.clippingPlanes;\n    let e = null;\n    if (i !== null) {\n      const s = i.length;\n      e = new Array(s);\n      for (let n = 0; n !== s; ++n)\n        e[n] = i[n].clone();\n    }\n    return this.clippingPlanes = e, this.clipIntersection = t.clipIntersection, this.clipShadows = t.clipShadows, this.shadowSide = t.shadowSide, this.colorWrite = t.colorWrite, this.precision = t.precision, this.polygonOffset = t.polygonOffset, this.polygonOffsetFactor = t.polygonOffsetFactor, this.polygonOffsetUnits = t.polygonOffsetUnits, this.dithering = t.dithering, this.alphaTest = t.alphaTest, this.alphaHash = t.alphaHash, this.alphaToCoverage = t.alphaToCoverage, this.premultipliedAlpha = t.premultipliedAlpha, this.forceSinglePass = t.forceSinglePass, this.visible = t.visible, this.toneMapped = t.toneMapped, this.userData = JSON.parse(JSON.stringify(t.userData)), this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  set needsUpdate(t) {\n    t === !0 && this.version++;\n  }\n  onBuild() {\n    console.warn(\"Material: onBuild() has been removed.\");\n  }\n}\nclass ps extends $ {\n  constructor(t) {\n    super(), this.isMeshBasicMaterial = !0, this.type = \"MeshBasicMaterial\", this.color = new B(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.envMapRotation = new ht(), this.combine = 0, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = \"round\", this.wireframeLinejoin = \"round\", this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.map = t.map, this.lightMap = t.lightMap, this.lightMapIntensity = t.lightMapIntensity, this.aoMap = t.aoMap, this.aoMapIntensity = t.aoMapIntensity, this.specularMap = t.specularMap, this.alphaMap = t.alphaMap, this.envMap = t.envMap, this.envMapRotation.copy(t.envMapRotation), this.combine = t.combine, this.reflectivity = t.reflectivity, this.refractionRatio = t.refractionRatio, this.wireframe = t.wireframe, this.wireframeLinewidth = t.wireframeLinewidth, this.wireframeLinecap = t.wireframeLinecap, this.wireframeLinejoin = t.wireframeLinejoin, this.fog = t.fog, this;\n  }\n}\nconst dt = /* @__PURE__ */ ds();\nfunction ds() {\n  const p = new ArrayBuffer(4), t = new Float32Array(p), i = new Uint32Array(p), e = new Uint32Array(512), s = new Uint32Array(512);\n  for (let a = 0; a < 256; ++a) {\n    const o = a - 127;\n    o < -27 ? (e[a] = 0, e[a | 256] = 32768, s[a] = 24, s[a | 256] = 24) : o < -14 ? (e[a] = 1024 >> -o - 14, e[a | 256] = 1024 >> -o - 14 | 32768, s[a] = -o - 1, s[a | 256] = -o - 1) : o <= 15 ? (e[a] = o + 15 << 10, e[a | 256] = o + 15 << 10 | 32768, s[a] = 13, s[a | 256] = 13) : o < 128 ? (e[a] = 31744, e[a | 256] = 64512, s[a] = 24, s[a | 256] = 24) : (e[a] = 31744, e[a | 256] = 64512, s[a] = 13, s[a | 256] = 13);\n  }\n  const n = new Uint32Array(2048), r = new Uint32Array(64), h = new Uint32Array(64);\n  for (let a = 1; a < 1024; ++a) {\n    let o = a << 13, l = 0;\n    for (; !(o & 8388608); )\n      o <<= 1, l -= 8388608;\n    o &= -8388609, l += 947912704, n[a] = o | l;\n  }\n  for (let a = 1024; a < 2048; ++a)\n    n[a] = 939524096 + (a - 1024 << 13);\n  for (let a = 1; a < 31; ++a)\n    r[a] = a << 23;\n  r[31] = 1199570944, r[32] = 2147483648;\n  for (let a = 33; a < 63; ++a)\n    r[a] = 2147483648 + (a - 32 << 23);\n  r[63] = 3347054592;\n  for (let a = 1; a < 64; ++a)\n    a !== 32 && (h[a] = 1024);\n  return {\n    floatView: t,\n    uint32View: i,\n    baseTable: e,\n    shiftTable: s,\n    mantissaTable: n,\n    exponentTable: r,\n    offsetTable: h\n  };\n}\nfunction H(p) {\n  Math.abs(p) > 65504 && console.warn(\"THREE.DataUtils.toHalfFloat(): Value out of range.\"), p = T(p, -65504, 65504), dt.floatView[0] = p;\n  const t = dt.uint32View[0], i = t >> 23 & 511;\n  return dt.baseTable[i] + ((t & 8388607) >> dt.shiftTable[i]);\n}\nfunction yi(p) {\n  const t = p >> 10;\n  return dt.uint32View[0] = dt.mantissaTable[dt.offsetTable[t] + (p & 1023)] + dt.exponentTable[t], dt.floatView[0];\n}\nconst v = /* @__PURE__ */ new f(), xi = /* @__PURE__ */ new C();\nclass yt {\n  constructor(t, i, e = !1) {\n    if (Array.isArray(t))\n      throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");\n    this.isBufferAttribute = !0, this.name = \"\", this.array = t, this.itemSize = i, this.count = t !== void 0 ? t.length / i : 0, this.normalized = e, this.usage = 35044, this.updateRanges = [], this.gpuType = 1015, this.version = 0;\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(t) {\n    t === !0 && this.version++;\n  }\n  setUsage(t) {\n    return this.usage = t, this;\n  }\n  addUpdateRange(t, i) {\n    this.updateRanges.push({ start: t, count: i });\n  }\n  clearUpdateRanges() {\n    this.updateRanges.length = 0;\n  }\n  copy(t) {\n    return this.name = t.name, this.array = new t.array.constructor(t.array), this.itemSize = t.itemSize, this.count = t.count, this.normalized = t.normalized, this.usage = t.usage, this.gpuType = t.gpuType, this;\n  }\n  copyAt(t, i, e) {\n    t *= this.itemSize, e *= i.itemSize;\n    for (let s = 0, n = this.itemSize; s < n; s++)\n      this.array[t + s] = i.array[e + s];\n    return this;\n  }\n  copyArray(t) {\n    return this.array.set(t), this;\n  }\n  applyMatrix3(t) {\n    if (this.itemSize === 2)\n      for (let i = 0, e = this.count; i < e; i++)\n        xi.fromBufferAttribute(this, i), xi.applyMatrix3(t), this.setXY(i, xi.x, xi.y);\n    else if (this.itemSize === 3)\n      for (let i = 0, e = this.count; i < e; i++)\n        v.fromBufferAttribute(this, i), v.applyMatrix3(t), this.setXYZ(i, v.x, v.y, v.z);\n    return this;\n  }\n  applyMatrix4(t) {\n    for (let i = 0, e = this.count; i < e; i++)\n      v.fromBufferAttribute(this, i), v.applyMatrix4(t), this.setXYZ(i, v.x, v.y, v.z);\n    return this;\n  }\n  applyNormalMatrix(t) {\n    for (let i = 0, e = this.count; i < e; i++)\n      v.fromBufferAttribute(this, i), v.applyNormalMatrix(t), this.setXYZ(i, v.x, v.y, v.z);\n    return this;\n  }\n  transformDirection(t) {\n    for (let i = 0, e = this.count; i < e; i++)\n      v.fromBufferAttribute(this, i), v.transformDirection(t), this.setXYZ(i, v.x, v.y, v.z);\n    return this;\n  }\n  set(t, i = 0) {\n    return this.array.set(t, i), this;\n  }\n  getComponent(t, i) {\n    let e = this.array[t * this.itemSize + i];\n    return this.normalized && (e = q(e, this.array)), e;\n  }\n  setComponent(t, i, e) {\n    return this.normalized && (e = z(e, this.array)), this.array[t * this.itemSize + i] = e, this;\n  }\n  getX(t) {\n    let i = this.array[t * this.itemSize];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setX(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize] = i, this;\n  }\n  getY(t) {\n    let i = this.array[t * this.itemSize + 1];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setY(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize + 1] = i, this;\n  }\n  getZ(t) {\n    let i = this.array[t * this.itemSize + 2];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setZ(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize + 2] = i, this;\n  }\n  getW(t) {\n    let i = this.array[t * this.itemSize + 3];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setW(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize + 3] = i, this;\n  }\n  setXY(t, i, e) {\n    return t *= this.itemSize, this.normalized && (i = z(i, this.array), e = z(e, this.array)), this.array[t + 0] = i, this.array[t + 1] = e, this;\n  }\n  setXYZ(t, i, e, s) {\n    return t *= this.itemSize, this.normalized && (i = z(i, this.array), e = z(e, this.array), s = z(s, this.array)), this.array[t + 0] = i, this.array[t + 1] = e, this.array[t + 2] = s, this;\n  }\n  setXYZW(t, i, e, s, n) {\n    return t *= this.itemSize, this.normalized && (i = z(i, this.array), e = z(e, this.array), s = z(s, this.array), n = z(n, this.array)), this.array[t + 0] = i, this.array[t + 1] = e, this.array[t + 2] = s, this.array[t + 3] = n, this;\n  }\n  onUpload(t) {\n    return this.onUploadCallback = t, this;\n  }\n  clone() {\n    return new this.constructor(this.array, this.itemSize).copy(this);\n  }\n  toJSON() {\n    const t = {\n      itemSize: this.itemSize,\n      type: this.array.constructor.name,\n      array: Array.from(this.array),\n      normalized: this.normalized\n    };\n    return this.name !== \"\" && (t.name = this.name), this.usage !== 35044 && (t.usage = this.usage), t;\n  }\n}\nclass ms extends yt {\n  constructor(t, i, e) {\n    super(new Uint16Array(t), i, e);\n  }\n}\nclass fs extends yt {\n  constructor(t, i, e) {\n    super(new Uint32Array(t), i, e);\n  }\n}\nclass Ba extends yt {\n  constructor(t, i, e) {\n    super(new Uint16Array(t), i, e), this.isFloat16BufferAttribute = !0;\n  }\n  getX(t) {\n    let i = yi(this.array[t * this.itemSize]);\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setX(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize] = H(i), this;\n  }\n  getY(t) {\n    let i = yi(this.array[t * this.itemSize + 1]);\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setY(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize + 1] = H(i), this;\n  }\n  getZ(t) {\n    let i = yi(this.array[t * this.itemSize + 2]);\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setZ(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize + 2] = H(i), this;\n  }\n  getW(t) {\n    let i = yi(this.array[t * this.itemSize + 3]);\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setW(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.array[t * this.itemSize + 3] = H(i), this;\n  }\n  setXY(t, i, e) {\n    return t *= this.itemSize, this.normalized && (i = z(i, this.array), e = z(e, this.array)), this.array[t + 0] = H(i), this.array[t + 1] = H(e), this;\n  }\n  setXYZ(t, i, e, s) {\n    return t *= this.itemSize, this.normalized && (i = z(i, this.array), e = z(e, this.array), s = z(s, this.array)), this.array[t + 0] = H(i), this.array[t + 1] = H(e), this.array[t + 2] = H(s), this;\n  }\n  setXYZW(t, i, e, s, n) {\n    return t *= this.itemSize, this.normalized && (i = z(i, this.array), e = z(e, this.array), s = z(s, this.array), n = z(n, this.array)), this.array[t + 0] = H(i), this.array[t + 1] = H(e), this.array[t + 2] = H(s), this.array[t + 3] = H(n), this;\n  }\n}\nclass Rt extends yt {\n  constructor(t, i, e) {\n    super(new Float32Array(t), i, e);\n  }\n}\nlet ys = 0;\nconst J = /* @__PURE__ */ new O(), ji = /* @__PURE__ */ new P(), jt = /* @__PURE__ */ new f(), Y = /* @__PURE__ */ new ri(), Qt = /* @__PURE__ */ new ri(), D = /* @__PURE__ */ new f();\nclass ai extends si {\n  constructor() {\n    super(), this.isBufferGeometry = !0, Object.defineProperty(this, \"id\", { value: ys++ }), this.uuid = mt(), this.name = \"\", this.type = \"BufferGeometry\", this.index = null, this.indirect = null, this.attributes = {}, this.morphAttributes = {}, this.morphTargetsRelative = !1, this.groups = [], this.boundingBox = null, this.boundingSphere = null, this.drawRange = { start: 0, count: 1 / 0 }, this.userData = {};\n  }\n  getIndex() {\n    return this.index;\n  }\n  setIndex(t) {\n    return Array.isArray(t) ? this.index = new (Ze(t) ? fs : ms)(t, 1) : this.index = t, this;\n  }\n  setIndirect(t) {\n    return this.indirect = t, this;\n  }\n  getIndirect() {\n    return this.indirect;\n  }\n  getAttribute(t) {\n    return this.attributes[t];\n  }\n  setAttribute(t, i) {\n    return this.attributes[t] = i, this;\n  }\n  deleteAttribute(t) {\n    return delete this.attributes[t], this;\n  }\n  hasAttribute(t) {\n    return this.attributes[t] !== void 0;\n  }\n  addGroup(t, i, e = 0) {\n    this.groups.push({\n      start: t,\n      count: i,\n      materialIndex: e\n    });\n  }\n  clearGroups() {\n    this.groups = [];\n  }\n  setDrawRange(t, i) {\n    this.drawRange.start = t, this.drawRange.count = i;\n  }\n  applyMatrix4(t) {\n    const i = this.attributes.position;\n    i !== void 0 && (i.applyMatrix4(t), i.needsUpdate = !0);\n    const e = this.attributes.normal;\n    if (e !== void 0) {\n      const n = new xt().getNormalMatrix(t);\n      e.applyNormalMatrix(n), e.needsUpdate = !0;\n    }\n    const s = this.attributes.tangent;\n    return s !== void 0 && (s.transformDirection(t), s.needsUpdate = !0), this.boundingBox !== null && this.computeBoundingBox(), this.boundingSphere !== null && this.computeBoundingSphere(), this;\n  }\n  applyQuaternion(t) {\n    return J.makeRotationFromQuaternion(t), this.applyMatrix4(J), this;\n  }\n  rotateX(t) {\n    return J.makeRotationX(t), this.applyMatrix4(J), this;\n  }\n  rotateY(t) {\n    return J.makeRotationY(t), this.applyMatrix4(J), this;\n  }\n  rotateZ(t) {\n    return J.makeRotationZ(t), this.applyMatrix4(J), this;\n  }\n  translate(t, i, e) {\n    return J.makeTranslation(t, i, e), this.applyMatrix4(J), this;\n  }\n  scale(t, i, e) {\n    return J.makeScale(t, i, e), this.applyMatrix4(J), this;\n  }\n  lookAt(t) {\n    return ji.lookAt(t), ji.updateMatrix(), this.applyMatrix4(ji.matrix), this;\n  }\n  center() {\n    return this.computeBoundingBox(), this.boundingBox.getCenter(jt).negate(), this.translate(jt.x, jt.y, jt.z), this;\n  }\n  setFromPoints(t) {\n    const i = this.getAttribute(\"position\");\n    if (i === void 0) {\n      const e = [];\n      for (let s = 0, n = t.length; s < n; s++) {\n        const r = t[s];\n        e.push(r.x, r.y, r.z || 0);\n      }\n      this.setAttribute(\"position\", new Rt(e, 3));\n    } else {\n      const e = Math.min(t.length, i.count);\n      for (let s = 0; s < e; s++) {\n        const n = t[s];\n        i.setXYZ(s, n.x, n.y, n.z || 0);\n      }\n      t.length > i.count && console.warn(\"THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.\"), i.needsUpdate = !0;\n    }\n    return this;\n  }\n  computeBoundingBox() {\n    this.boundingBox === null && (this.boundingBox = new ri());\n    const t = this.attributes.position, i = this.morphAttributes.position;\n    if (t && t.isGLBufferAttribute) {\n      console.error(\"THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.\", this), this.boundingBox.set(\n        new f(-1 / 0, -1 / 0, -1 / 0),\n        new f(1 / 0, 1 / 0, 1 / 0)\n      );\n      return;\n    }\n    if (t !== void 0) {\n      if (this.boundingBox.setFromBufferAttribute(t), i)\n        for (let e = 0, s = i.length; e < s; e++) {\n          const n = i[e];\n          Y.setFromBufferAttribute(n), this.morphTargetsRelative ? (D.addVectors(this.boundingBox.min, Y.min), this.boundingBox.expandByPoint(D), D.addVectors(this.boundingBox.max, Y.max), this.boundingBox.expandByPoint(D)) : (this.boundingBox.expandByPoint(Y.min), this.boundingBox.expandByPoint(Y.max));\n        }\n    } else\n      this.boundingBox.makeEmpty();\n    (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n  }\n  computeBoundingSphere() {\n    this.boundingSphere === null && (this.boundingSphere = new $i());\n    const t = this.attributes.position, i = this.morphAttributes.position;\n    if (t && t.isGLBufferAttribute) {\n      console.error(\"THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.\", this), this.boundingSphere.set(new f(), 1 / 0);\n      return;\n    }\n    if (t) {\n      const e = this.boundingSphere.center;\n      if (Y.setFromBufferAttribute(t), i)\n        for (let n = 0, r = i.length; n < r; n++) {\n          const h = i[n];\n          Qt.setFromBufferAttribute(h), this.morphTargetsRelative ? (D.addVectors(Y.min, Qt.min), Y.expandByPoint(D), D.addVectors(Y.max, Qt.max), Y.expandByPoint(D)) : (Y.expandByPoint(Qt.min), Y.expandByPoint(Qt.max));\n        }\n      Y.getCenter(e);\n      let s = 0;\n      for (let n = 0, r = t.count; n < r; n++)\n        D.fromBufferAttribute(t, n), s = Math.max(s, e.distanceToSquared(D));\n      if (i)\n        for (let n = 0, r = i.length; n < r; n++) {\n          const h = i[n], a = this.morphTargetsRelative;\n          for (let o = 0, l = h.count; o < l; o++)\n            D.fromBufferAttribute(h, o), a && (jt.fromBufferAttribute(t, o), D.add(jt)), s = Math.max(s, e.distanceToSquared(D));\n        }\n      this.boundingSphere.radius = Math.sqrt(s), isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n    }\n  }\n  computeTangents() {\n    const t = this.index, i = this.attributes;\n    if (t === null || i.position === void 0 || i.normal === void 0 || i.uv === void 0) {\n      console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");\n      return;\n    }\n    const e = i.position, s = i.normal, n = i.uv;\n    this.hasAttribute(\"tangent\") === !1 && this.setAttribute(\"tangent\", new yt(new Float32Array(4 * e.count), 4));\n    const r = this.getAttribute(\"tangent\"), h = [], a = [];\n    for (let A = 0; A < e.count; A++)\n      h[A] = new f(), a[A] = new f();\n    const o = new f(), l = new f(), c = new f(), u = new C(), d = new C(), m = new C(), y = new f(), x = new f();\n    function g(A, R, E) {\n      o.fromBufferAttribute(e, A), l.fromBufferAttribute(e, R), c.fromBufferAttribute(e, E), u.fromBufferAttribute(n, A), d.fromBufferAttribute(n, R), m.fromBufferAttribute(n, E), l.sub(o), c.sub(o), d.sub(u), m.sub(u);\n      const k = 1 / (d.x * m.y - m.x * d.y);\n      isFinite(k) && (y.copy(l).multiplyScalar(m.y).addScaledVector(c, -d.y).multiplyScalar(k), x.copy(c).multiplyScalar(d.x).addScaledVector(l, -m.x).multiplyScalar(k), h[A].add(y), h[R].add(y), h[E].add(y), a[A].add(x), a[R].add(x), a[E].add(x));\n    }\n    let w = this.groups;\n    w.length === 0 && (w = [{\n      start: 0,\n      count: t.count\n    }]);\n    for (let A = 0, R = w.length; A < R; ++A) {\n      const E = w[A], k = E.start, nt = E.count;\n      for (let I = k, rt = k + nt; I < rt; I += 3)\n        g(\n          t.getX(I + 0),\n          t.getX(I + 1),\n          t.getX(I + 2)\n        );\n    }\n    const b = new f(), M = new f(), S = new f(), F = new f();\n    function _(A) {\n      S.fromBufferAttribute(s, A), F.copy(S);\n      const R = h[A];\n      b.copy(R), b.sub(S.multiplyScalar(S.dot(R))).normalize(), M.crossVectors(F, R);\n      const k = M.dot(a[A]) < 0 ? -1 : 1;\n      r.setXYZW(A, b.x, b.y, b.z, k);\n    }\n    for (let A = 0, R = w.length; A < R; ++A) {\n      const E = w[A], k = E.start, nt = E.count;\n      for (let I = k, rt = k + nt; I < rt; I += 3)\n        _(t.getX(I + 0)), _(t.getX(I + 1)), _(t.getX(I + 2));\n    }\n  }\n  computeVertexNormals() {\n    const t = this.index, i = this.getAttribute(\"position\");\n    if (i !== void 0) {\n      let e = this.getAttribute(\"normal\");\n      if (e === void 0)\n        e = new yt(new Float32Array(i.count * 3), 3), this.setAttribute(\"normal\", e);\n      else\n        for (let u = 0, d = e.count; u < d; u++)\n          e.setXYZ(u, 0, 0, 0);\n      const s = new f(), n = new f(), r = new f(), h = new f(), a = new f(), o = new f(), l = new f(), c = new f();\n      if (t)\n        for (let u = 0, d = t.count; u < d; u += 3) {\n          const m = t.getX(u + 0), y = t.getX(u + 1), x = t.getX(u + 2);\n          s.fromBufferAttribute(i, m), n.fromBufferAttribute(i, y), r.fromBufferAttribute(i, x), l.subVectors(r, n), c.subVectors(s, n), l.cross(c), h.fromBufferAttribute(e, m), a.fromBufferAttribute(e, y), o.fromBufferAttribute(e, x), h.add(l), a.add(l), o.add(l), e.setXYZ(m, h.x, h.y, h.z), e.setXYZ(y, a.x, a.y, a.z), e.setXYZ(x, o.x, o.y, o.z);\n        }\n      else\n        for (let u = 0, d = i.count; u < d; u += 3)\n          s.fromBufferAttribute(i, u + 0), n.fromBufferAttribute(i, u + 1), r.fromBufferAttribute(i, u + 2), l.subVectors(r, n), c.subVectors(s, n), l.cross(c), e.setXYZ(u + 0, l.x, l.y, l.z), e.setXYZ(u + 1, l.x, l.y, l.z), e.setXYZ(u + 2, l.x, l.y, l.z);\n      this.normalizeNormals(), e.needsUpdate = !0;\n    }\n  }\n  normalizeNormals() {\n    const t = this.attributes.normal;\n    for (let i = 0, e = t.count; i < e; i++)\n      D.fromBufferAttribute(t, i), D.normalize(), t.setXYZ(i, D.x, D.y, D.z);\n  }\n  toNonIndexed() {\n    function t(h, a) {\n      const o = h.array, l = h.itemSize, c = h.normalized, u = new o.constructor(a.length * l);\n      let d = 0, m = 0;\n      for (let y = 0, x = a.length; y < x; y++) {\n        h.isInterleavedBufferAttribute ? d = a[y] * h.data.stride + h.offset : d = a[y] * l;\n        for (let g = 0; g < l; g++)\n          u[m++] = o[d++];\n      }\n      return new yt(u, l, c);\n    }\n    if (this.index === null)\n      return console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\"), this;\n    const i = new ai(), e = this.index.array, s = this.attributes;\n    for (const h in s) {\n      const a = s[h], o = t(a, e);\n      i.setAttribute(h, o);\n    }\n    const n = this.morphAttributes;\n    for (const h in n) {\n      const a = [], o = n[h];\n      for (let l = 0, c = o.length; l < c; l++) {\n        const u = o[l], d = t(u, e);\n        a.push(d);\n      }\n      i.morphAttributes[h] = a;\n    }\n    i.morphTargetsRelative = this.morphTargetsRelative;\n    const r = this.groups;\n    for (let h = 0, a = r.length; h < a; h++) {\n      const o = r[h];\n      i.addGroup(o.start, o.count, o.materialIndex);\n    }\n    return i;\n  }\n  toJSON() {\n    const t = {\n      metadata: {\n        version: 4.6,\n        type: \"BufferGeometry\",\n        generator: \"BufferGeometry.toJSON\"\n      }\n    };\n    if (t.uuid = this.uuid, t.type = this.type, this.name !== \"\" && (t.name = this.name), Object.keys(this.userData).length > 0 && (t.userData = this.userData), this.parameters !== void 0) {\n      const a = this.parameters;\n      for (const o in a)\n        a[o] !== void 0 && (t[o] = a[o]);\n      return t;\n    }\n    t.data = { attributes: {} };\n    const i = this.index;\n    i !== null && (t.data.index = {\n      type: i.array.constructor.name,\n      array: Array.prototype.slice.call(i.array)\n    });\n    const e = this.attributes;\n    for (const a in e) {\n      const o = e[a];\n      t.data.attributes[a] = o.toJSON(t.data);\n    }\n    const s = {};\n    let n = !1;\n    for (const a in this.morphAttributes) {\n      const o = this.morphAttributes[a], l = [];\n      for (let c = 0, u = o.length; c < u; c++) {\n        const d = o[c];\n        l.push(d.toJSON(t.data));\n      }\n      l.length > 0 && (s[a] = l, n = !0);\n    }\n    n && (t.data.morphAttributes = s, t.data.morphTargetsRelative = this.morphTargetsRelative);\n    const r = this.groups;\n    r.length > 0 && (t.data.groups = JSON.parse(JSON.stringify(r)));\n    const h = this.boundingSphere;\n    return h !== null && (t.data.boundingSphere = {\n      center: h.center.toArray(),\n      radius: h.radius\n    }), t;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(t) {\n    this.index = null, this.attributes = {}, this.morphAttributes = {}, this.groups = [], this.boundingBox = null, this.boundingSphere = null;\n    const i = {};\n    this.name = t.name;\n    const e = t.index;\n    e !== null && this.setIndex(e.clone(i));\n    const s = t.attributes;\n    for (const o in s) {\n      const l = s[o];\n      this.setAttribute(o, l.clone(i));\n    }\n    const n = t.morphAttributes;\n    for (const o in n) {\n      const l = [], c = n[o];\n      for (let u = 0, d = c.length; u < d; u++)\n        l.push(c[u].clone(i));\n      this.morphAttributes[o] = l;\n    }\n    this.morphTargetsRelative = t.morphTargetsRelative;\n    const r = t.groups;\n    for (let o = 0, l = r.length; o < l; o++) {\n      const c = r[o];\n      this.addGroup(c.start, c.count, c.materialIndex);\n    }\n    const h = t.boundingBox;\n    h !== null && (this.boundingBox = h.clone());\n    const a = t.boundingSphere;\n    return a !== null && (this.boundingSphere = a.clone()), this.drawRange.start = t.drawRange.start, this.drawRange.count = t.drawRange.count, this.userData = t.userData, this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nconst ye = /* @__PURE__ */ new O(), Bt = /* @__PURE__ */ new ss(), gi = /* @__PURE__ */ new $i(), xe = /* @__PURE__ */ new f(), Mi = /* @__PURE__ */ new f(), wi = /* @__PURE__ */ new f(), bi = /* @__PURE__ */ new f(), Gi = /* @__PURE__ */ new f(), Si = /* @__PURE__ */ new f(), ge = /* @__PURE__ */ new f(), _i = /* @__PURE__ */ new f();\nclass xs extends P {\n  constructor(t = new ai(), i = new ps()) {\n    super(), this.isMesh = !0, this.type = \"Mesh\", this.geometry = t, this.material = i, this.updateMorphTargets();\n  }\n  copy(t, i) {\n    return super.copy(t, i), t.morphTargetInfluences !== void 0 && (this.morphTargetInfluences = t.morphTargetInfluences.slice()), t.morphTargetDictionary !== void 0 && (this.morphTargetDictionary = Object.assign({}, t.morphTargetDictionary)), this.material = Array.isArray(t.material) ? t.material.slice() : t.material, this.geometry = t.geometry, this;\n  }\n  updateMorphTargets() {\n    const i = this.geometry.morphAttributes, e = Object.keys(i);\n    if (e.length > 0) {\n      const s = i[e[0]];\n      if (s !== void 0) {\n        this.morphTargetInfluences = [], this.morphTargetDictionary = {};\n        for (let n = 0, r = s.length; n < r; n++) {\n          const h = s[n].name || String(n);\n          this.morphTargetInfluences.push(0), this.morphTargetDictionary[h] = n;\n        }\n      }\n    }\n  }\n  getVertexPosition(t, i) {\n    const e = this.geometry, s = e.attributes.position, n = e.morphAttributes.position, r = e.morphTargetsRelative;\n    i.fromBufferAttribute(s, t);\n    const h = this.morphTargetInfluences;\n    if (n && h) {\n      Si.set(0, 0, 0);\n      for (let a = 0, o = n.length; a < o; a++) {\n        const l = h[a], c = n[a];\n        l !== 0 && (Gi.fromBufferAttribute(c, t), r ? Si.addScaledVector(Gi, l) : Si.addScaledVector(Gi.sub(i), l));\n      }\n      i.add(Si);\n    }\n    return i;\n  }\n  raycast(t, i) {\n    const e = this.geometry, s = this.material, n = this.matrixWorld;\n    s !== void 0 && (e.boundingSphere === null && e.computeBoundingSphere(), gi.copy(e.boundingSphere), gi.applyMatrix4(n), Bt.copy(t.ray).recast(t.near), !(gi.containsPoint(Bt.origin) === !1 && (Bt.intersectSphere(gi, xe) === null || Bt.origin.distanceToSquared(xe) > (t.far - t.near) ** 2)) && (ye.copy(n).invert(), Bt.copy(t.ray).applyMatrix4(ye), !(e.boundingBox !== null && Bt.intersectsBox(e.boundingBox) === !1) && this._computeIntersections(t, i, Bt)));\n  }\n  _computeIntersections(t, i, e) {\n    let s;\n    const n = this.geometry, r = this.material, h = n.index, a = n.attributes.position, o = n.attributes.uv, l = n.attributes.uv1, c = n.attributes.normal, u = n.groups, d = n.drawRange;\n    if (h !== null)\n      if (Array.isArray(r))\n        for (let m = 0, y = u.length; m < y; m++) {\n          const x = u[m], g = r[x.materialIndex], w = Math.max(x.start, d.start), b = Math.min(h.count, Math.min(x.start + x.count, d.start + d.count));\n          for (let M = w, S = b; M < S; M += 3) {\n            const F = h.getX(M), _ = h.getX(M + 1), A = h.getX(M + 2);\n            s = zi(this, g, t, e, o, l, c, F, _, A), s && (s.faceIndex = Math.floor(M / 3), s.face.materialIndex = x.materialIndex, i.push(s));\n          }\n        }\n      else {\n        const m = Math.max(0, d.start), y = Math.min(h.count, d.start + d.count);\n        for (let x = m, g = y; x < g; x += 3) {\n          const w = h.getX(x), b = h.getX(x + 1), M = h.getX(x + 2);\n          s = zi(this, r, t, e, o, l, c, w, b, M), s && (s.faceIndex = Math.floor(x / 3), i.push(s));\n        }\n      }\n    else if (a !== void 0)\n      if (Array.isArray(r))\n        for (let m = 0, y = u.length; m < y; m++) {\n          const x = u[m], g = r[x.materialIndex], w = Math.max(x.start, d.start), b = Math.min(a.count, Math.min(x.start + x.count, d.start + d.count));\n          for (let M = w, S = b; M < S; M += 3) {\n            const F = M, _ = M + 1, A = M + 2;\n            s = zi(this, g, t, e, o, l, c, F, _, A), s && (s.faceIndex = Math.floor(M / 3), s.face.materialIndex = x.materialIndex, i.push(s));\n          }\n        }\n      else {\n        const m = Math.max(0, d.start), y = Math.min(a.count, d.start + d.count);\n        for (let x = m, g = y; x < g; x += 3) {\n          const w = x, b = x + 1, M = x + 2;\n          s = zi(this, r, t, e, o, l, c, w, b, M), s && (s.faceIndex = Math.floor(x / 3), i.push(s));\n        }\n      }\n  }\n}\nfunction gs(p, t, i, e, s, n, r, h) {\n  let a;\n  if (t.side === 1 ? a = e.intersectTriangle(r, n, s, !0, h) : a = e.intersectTriangle(s, n, r, t.side === 0, h), a === null) return null;\n  _i.copy(h), _i.applyMatrix4(p.matrixWorld);\n  const o = i.ray.origin.distanceTo(_i);\n  return o < i.near || o > i.far ? null : {\n    distance: o,\n    point: _i.clone(),\n    object: p\n  };\n}\nfunction zi(p, t, i, e, s, n, r, h, a, o) {\n  p.getVertexPosition(h, Mi), p.getVertexPosition(a, wi), p.getVertexPosition(o, bi);\n  const l = gs(p, t, i, e, Mi, wi, bi, ge);\n  if (l) {\n    const c = new f();\n    st.getBarycoord(ge, Mi, wi, bi, c), s && (l.uv = st.getInterpolatedAttribute(s, h, a, o, c, new C())), n && (l.uv1 = st.getInterpolatedAttribute(n, h, a, o, c, new C())), r && (l.normal = st.getInterpolatedAttribute(r, h, a, o, c, new f()), l.normal.dot(e.direction) > 0 && l.normal.multiplyScalar(-1));\n    const u = {\n      a: h,\n      b: a,\n      c: o,\n      normal: new f(),\n      materialIndex: 0\n    };\n    st.getNormal(Mi, wi, bi, u.normal), l.face = u, l.barycoord = c;\n  }\n  return l;\n}\nclass Qi extends ai {\n  constructor(t = 1, i = 1, e = 1, s = 1, n = 1, r = 1) {\n    super(), this.type = \"BoxGeometry\", this.parameters = {\n      width: t,\n      height: i,\n      depth: e,\n      widthSegments: s,\n      heightSegments: n,\n      depthSegments: r\n    };\n    const h = this;\n    s = Math.floor(s), n = Math.floor(n), r = Math.floor(r);\n    const a = [], o = [], l = [], c = [];\n    let u = 0, d = 0;\n    m(\"z\", \"y\", \"x\", -1, -1, e, i, t, r, n, 0), m(\"z\", \"y\", \"x\", 1, -1, e, i, -t, r, n, 1), m(\"x\", \"z\", \"y\", 1, 1, t, e, i, s, r, 2), m(\"x\", \"z\", \"y\", 1, -1, t, e, -i, s, r, 3), m(\"x\", \"y\", \"z\", 1, -1, t, i, e, s, n, 4), m(\"x\", \"y\", \"z\", -1, -1, t, i, -e, s, n, 5), this.setIndex(a), this.setAttribute(\"position\", new Rt(o, 3)), this.setAttribute(\"normal\", new Rt(l, 3)), this.setAttribute(\"uv\", new Rt(c, 2));\n    function m(y, x, g, w, b, M, S, F, _, A, R) {\n      const E = M / _, k = S / A, nt = M / 2, I = S / 2, rt = F / 2, at = _ + 1, kt = A + 1;\n      let Ft = 0, gt = 0;\n      const L = new f();\n      for (let N = 0; N < kt; N++) {\n        const G = N * k - I;\n        for (let It = 0; It < at; It++) {\n          const hi = It * E - nt;\n          L[y] = hi * w, L[x] = G * b, L[g] = rt, o.push(L.x, L.y, L.z), L[y] = 0, L[x] = 0, L[g] = F > 0 ? 1 : -1, l.push(L.x, L.y, L.z), c.push(It / _), c.push(1 - N / A), Ft += 1;\n        }\n      }\n      for (let N = 0; N < A; N++)\n        for (let G = 0; G < _; G++) {\n          const It = u + G + at * N, hi = u + G + at * (N + 1), Ee = u + (G + 1) + at * (N + 1), te = u + (G + 1) + at * N;\n          a.push(It, hi, te), a.push(hi, Ee, te), gt += 6;\n        }\n      h.addGroup(d, gt, R), d += gt, u += Ft;\n    }\n  }\n  copy(t) {\n    return super.copy(t), this.parameters = Object.assign({}, t.parameters), this;\n  }\n  static fromJSON(t) {\n    return new Qi(t.width, t.height, t.depth, t.widthSegments, t.heightSegments, t.depthSegments);\n  }\n}\nfunction Ce(p) {\n  const t = {};\n  for (const i in p) {\n    t[i] = {};\n    for (const e in p[i]) {\n      const s = p[i][e];\n      s && (s.isColor || s.isMatrix3 || s.isMatrix4 || s.isVector2 || s.isVector3 || s.isVector4 || s.isTexture || s.isQuaternion) ? s.isRenderTargetTexture ? (console.warn(\"UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().\"), t[i][e] = null) : t[i][e] = s.clone() : Array.isArray(s) ? t[i][e] = s.slice() : t[i][e] = s;\n    }\n  }\n  return t;\n}\nfunction Ms(p) {\n  const t = [];\n  for (let i = 0; i < p.length; i++)\n    t.push(p[i].clone());\n  return t;\n}\nvar ws = `void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}`, bs = `void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}`;\nclass Ss extends $ {\n  constructor(t) {\n    super(), this.isShaderMaterial = !0, this.type = \"ShaderMaterial\", this.defines = {}, this.uniforms = {}, this.uniformsGroups = [], this.vertexShader = ws, this.fragmentShader = bs, this.linewidth = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.lights = !1, this.clipping = !1, this.forceSinglePass = !0, this.extensions = {\n      clipCullDistance: !1,\n      // set to use vertex shader clipping\n      multiDraw: !1\n      // set to use vertex shader multi_draw / enable gl_DrawID\n    }, this.defaultAttributeValues = {\n      color: [1, 1, 1],\n      uv: [0, 0],\n      uv1: [0, 0]\n    }, this.index0AttributeName = void 0, this.uniformsNeedUpdate = !1, this.glslVersion = null, t !== void 0 && this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.fragmentShader = t.fragmentShader, this.vertexShader = t.vertexShader, this.uniforms = Ce(t.uniforms), this.uniformsGroups = Ms(t.uniformsGroups), this.defines = Object.assign({}, t.defines), this.wireframe = t.wireframe, this.wireframeLinewidth = t.wireframeLinewidth, this.fog = t.fog, this.lights = t.lights, this.clipping = t.clipping, this.extensions = Object.assign({}, t.extensions), this.glslVersion = t.glslVersion, this;\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    i.glslVersion = this.glslVersion, i.uniforms = {};\n    for (const s in this.uniforms) {\n      const r = this.uniforms[s].value;\n      r && r.isTexture ? i.uniforms[s] = {\n        type: \"t\",\n        value: r.toJSON(t).uuid\n      } : r && r.isColor ? i.uniforms[s] = {\n        type: \"c\",\n        value: r.getHex()\n      } : r && r.isVector2 ? i.uniforms[s] = {\n        type: \"v2\",\n        value: r.toArray()\n      } : r && r.isVector3 ? i.uniforms[s] = {\n        type: \"v3\",\n        value: r.toArray()\n      } : r && r.isVector4 ? i.uniforms[s] = {\n        type: \"v4\",\n        value: r.toArray()\n      } : r && r.isMatrix3 ? i.uniforms[s] = {\n        type: \"m3\",\n        value: r.toArray()\n      } : r && r.isMatrix4 ? i.uniforms[s] = {\n        type: \"m4\",\n        value: r.toArray()\n      } : i.uniforms[s] = {\n        value: r\n      };\n    }\n    Object.keys(this.defines).length > 0 && (i.defines = this.defines), i.vertexShader = this.vertexShader, i.fragmentShader = this.fragmentShader, i.lights = this.lights, i.clipping = this.clipping;\n    const e = {};\n    for (const s in this.extensions)\n      this.extensions[s] === !0 && (e[s] = !0);\n    return Object.keys(e).length > 0 && (i.extensions = e), i;\n  }\n}\nclass Be extends P {\n  constructor() {\n    super(), this.isCamera = !0, this.type = \"Camera\", this.matrixWorldInverse = new O(), this.projectionMatrix = new O(), this.projectionMatrixInverse = new O(), this.coordinateSystem = 2e3;\n  }\n  copy(t, i) {\n    return super.copy(t, i), this.matrixWorldInverse.copy(t.matrixWorldInverse), this.projectionMatrix.copy(t.projectionMatrix), this.projectionMatrixInverse.copy(t.projectionMatrixInverse), this.coordinateSystem = t.coordinateSystem, this;\n  }\n  getWorldDirection(t) {\n    return super.getWorldDirection(t).negate();\n  }\n  updateMatrixWorld(t) {\n    super.updateMatrixWorld(t), this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  updateWorldMatrix(t, i) {\n    super.updateWorldMatrix(t, i), this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst zt = /* @__PURE__ */ new f(), Me = /* @__PURE__ */ new C(), we = /* @__PURE__ */ new C();\nclass At extends Be {\n  constructor(t = 50, i = 1, e = 0.1, s = 2e3) {\n    super(), this.isPerspectiveCamera = !0, this.type = \"PerspectiveCamera\", this.fov = t, this.zoom = 1, this.near = e, this.far = s, this.focus = 10, this.aspect = i, this.view = null, this.filmGauge = 35, this.filmOffset = 0, this.updateProjectionMatrix();\n  }\n  copy(t, i) {\n    return super.copy(t, i), this.fov = t.fov, this.zoom = t.zoom, this.near = t.near, this.far = t.far, this.focus = t.focus, this.aspect = t.aspect, this.view = t.view === null ? null : Object.assign({}, t.view), this.filmGauge = t.filmGauge, this.filmOffset = t.filmOffset, this;\n  }\n  /**\n   * Sets the FOV by focal length in respect to the current .filmGauge.\n   *\n   * The default film gauge is 35, so that the focal length can be specified for\n   * a 35mm (full frame) camera.\n   *\n   * @param {number} focalLength - Values for focal length and film gauge must have the same unit.\n   */\n  setFocalLength(t) {\n    const i = 0.5 * this.getFilmHeight() / t;\n    this.fov = ei * 2 * Math.atan(i), this.updateProjectionMatrix();\n  }\n  /**\n   * Calculates the focal length from the current .fov and .filmGauge.\n   *\n   * @returns {number}\n   */\n  getFocalLength() {\n    const t = Math.tan(ti * 0.5 * this.fov);\n    return 0.5 * this.getFilmHeight() / t;\n  }\n  getEffectiveFOV() {\n    return ei * 2 * Math.atan(\n      Math.tan(ti * 0.5 * this.fov) / this.zoom\n    );\n  }\n  getFilmWidth() {\n    return this.filmGauge * Math.min(this.aspect, 1);\n  }\n  getFilmHeight() {\n    return this.filmGauge / Math.max(this.aspect, 1);\n  }\n  /**\n   * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n   * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n   *\n   * @param {number} distance\n   * @param {Vector2} minTarget\n   * @param {Vector2} maxTarget\n   */\n  getViewBounds(t, i, e) {\n    zt.set(-1, -1, 0.5).applyMatrix4(this.projectionMatrixInverse), i.set(zt.x, zt.y).multiplyScalar(-t / zt.z), zt.set(1, 1, 0.5).applyMatrix4(this.projectionMatrixInverse), e.set(zt.x, zt.y).multiplyScalar(-t / zt.z);\n  }\n  /**\n   * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n   *\n   * @param {number} distance\n   * @param {Vector2} target - Vector2 target used to store result where x is width and y is height.\n   * @returns {Vector2}\n   */\n  getViewSize(t, i) {\n    return this.getViewBounds(t, Me, we), i.subVectors(we, Me);\n  }\n  /**\n   * Sets an offset in a larger frustum. This is useful for multi-window or\n   * multi-monitor/multi-machine setups.\n   *\n   * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n   * the monitors are in grid like this\n   *\n   *   +---+---+---+\n   *   | A | B | C |\n   *   +---+---+---+\n   *   | D | E | F |\n   *   +---+---+---+\n   *\n   * then for each monitor you would call it like this\n   *\n   *   const w = 1920;\n   *   const h = 1080;\n   *   const fullWidth = w * 3;\n   *   const fullHeight = h * 2;\n   *\n   *   --A--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n   *   --B--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n   *   --C--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n   *   --D--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n   *   --E--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n   *   --F--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n   *\n   *   Note there is no reason monitors have to be the same size or in a grid.\n   *\n   * @param {number} fullWidth\n   * @param {number} fullHeight\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   */\n  setViewOffset(t, i, e, s, n, r) {\n    this.aspect = t / i, this.view === null && (this.view = {\n      enabled: !0,\n      fullWidth: 1,\n      fullHeight: 1,\n      offsetX: 0,\n      offsetY: 0,\n      width: 1,\n      height: 1\n    }), this.view.enabled = !0, this.view.fullWidth = t, this.view.fullHeight = i, this.view.offsetX = e, this.view.offsetY = s, this.view.width = n, this.view.height = r, this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const t = this.near;\n    let i = t * Math.tan(ti * 0.5 * this.fov) / this.zoom, e = 2 * i, s = this.aspect * e, n = -0.5 * s;\n    const r = this.view;\n    if (this.view !== null && this.view.enabled) {\n      const a = r.fullWidth, o = r.fullHeight;\n      n += r.offsetX * s / a, i -= r.offsetY * e / o, s *= r.width / a, e *= r.height / o;\n    }\n    const h = this.filmOffset;\n    h !== 0 && (n += t * h / this.getFilmWidth()), this.projectionMatrix.makePerspective(n, n + s, i, i - e, t, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return i.object.fov = this.fov, i.object.zoom = this.zoom, i.object.near = this.near, i.object.far = this.far, i.object.focus = this.focus, i.object.aspect = this.aspect, this.view !== null && (i.object.view = Object.assign({}, this.view)), i.object.filmGauge = this.filmGauge, i.object.filmOffset = this.filmOffset, i;\n  }\n}\nconst Gt = -90, Xt = 1;\nclass _s extends P {\n  constructor(t, i, e) {\n    super(), this.type = \"CubeCamera\", this.renderTarget = e, this.coordinateSystem = null, this.activeMipmapLevel = 0;\n    const s = new At(Gt, Xt, t, i);\n    s.layers = this.layers, this.add(s);\n    const n = new At(Gt, Xt, t, i);\n    n.layers = this.layers, this.add(n);\n    const r = new At(Gt, Xt, t, i);\n    r.layers = this.layers, this.add(r);\n    const h = new At(Gt, Xt, t, i);\n    h.layers = this.layers, this.add(h);\n    const a = new At(Gt, Xt, t, i);\n    a.layers = this.layers, this.add(a);\n    const o = new At(Gt, Xt, t, i);\n    o.layers = this.layers, this.add(o);\n  }\n  updateCoordinateSystem() {\n    const t = this.coordinateSystem, i = this.children.concat(), [e, s, n, r, h, a] = i;\n    for (const o of i) this.remove(o);\n    if (t === 2e3)\n      e.up.set(0, 1, 0), e.lookAt(1, 0, 0), s.up.set(0, 1, 0), s.lookAt(-1, 0, 0), n.up.set(0, 0, -1), n.lookAt(0, 1, 0), r.up.set(0, 0, 1), r.lookAt(0, -1, 0), h.up.set(0, 1, 0), h.lookAt(0, 0, 1), a.up.set(0, 1, 0), a.lookAt(0, 0, -1);\n    else if (t === 2001)\n      e.up.set(0, -1, 0), e.lookAt(-1, 0, 0), s.up.set(0, -1, 0), s.lookAt(1, 0, 0), n.up.set(0, 0, 1), n.lookAt(0, 1, 0), r.up.set(0, 0, -1), r.lookAt(0, -1, 0), h.up.set(0, -1, 0), h.lookAt(0, 0, 1), a.up.set(0, -1, 0), a.lookAt(0, 0, -1);\n    else\n      throw new Error(\"THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: \" + t);\n    for (const o of i)\n      this.add(o), o.updateMatrixWorld();\n  }\n  update(t, i) {\n    this.parent === null && this.updateMatrixWorld();\n    const { renderTarget: e, activeMipmapLevel: s } = this;\n    this.coordinateSystem !== t.coordinateSystem && (this.coordinateSystem = t.coordinateSystem, this.updateCoordinateSystem());\n    const [n, r, h, a, o, l] = this.children, c = t.getRenderTarget(), u = t.getActiveCubeFace(), d = t.getActiveMipmapLevel(), m = t.xr.enabled;\n    t.xr.enabled = !1;\n    const y = e.texture.generateMipmaps;\n    e.texture.generateMipmaps = !1, t.setRenderTarget(e, 0, s), t.render(i, n), t.setRenderTarget(e, 1, s), t.render(i, r), t.setRenderTarget(e, 2, s), t.render(i, h), t.setRenderTarget(e, 3, s), t.render(i, a), t.setRenderTarget(e, 4, s), t.render(i, o), e.texture.generateMipmaps = y, t.setRenderTarget(e, 5, s), t.render(i, l), t.setRenderTarget(c, u, d), t.xr.enabled = m, e.texture.needsPMREMUpdate = !0;\n  }\n}\nclass zs extends Z {\n  constructor(t, i, e, s, n, r, h, a, o, l) {\n    t = t !== void 0 ? t : [], i = i !== void 0 ? i : 301, super(t, i, e, s, n, r, h, a, o, l), this.isCubeTexture = !0, this.flipY = !1;\n  }\n  get images() {\n    return this.image;\n  }\n  set images(t) {\n    this.image = t;\n  }\n}\nclass va extends is {\n  constructor(t = 1, i = {}) {\n    super(t, t, i), this.isWebGLCubeRenderTarget = !0;\n    const e = { width: t, height: t, depth: 1 }, s = [e, e, e, e, e, e];\n    this.texture = new zs(s, i.mapping, i.wrapS, i.wrapT, i.magFilter, i.minFilter, i.format, i.type, i.anisotropy, i.colorSpace), this.texture.isRenderTargetTexture = !0, this.texture.generateMipmaps = i.generateMipmaps !== void 0 ? i.generateMipmaps : !1, this.texture.minFilter = i.minFilter !== void 0 ? i.minFilter : 1006;\n  }\n  fromEquirectangularTexture(t, i) {\n    this.texture.type = i.type, this.texture.colorSpace = i.colorSpace, this.texture.generateMipmaps = i.generateMipmaps, this.texture.minFilter = i.minFilter, this.texture.magFilter = i.magFilter;\n    const e = {\n      uniforms: {\n        tEquirect: { value: null }\n      },\n      vertexShader: (\n        /* glsl */\n        `\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t`\n      ),\n      fragmentShader: (\n        /* glsl */\n        `\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n      )\n    }, s = new Qi(5, 5, 5), n = new Ss({\n      name: \"CubemapFromEquirect\",\n      uniforms: Ce(e.uniforms),\n      vertexShader: e.vertexShader,\n      fragmentShader: e.fragmentShader,\n      side: 1,\n      blending: 0\n    });\n    n.uniforms.tEquirect.value = i;\n    const r = new xs(s, n), h = i.minFilter;\n    return i.minFilter === 1008 && (i.minFilter = 1006), new _s(1, 10, this).update(t, r), i.minFilter = h, r.geometry.dispose(), r.material.dispose(), this;\n  }\n  clear(t, i, e, s) {\n    const n = t.getRenderTarget();\n    for (let r = 0; r < 6; r++)\n      t.setRenderTarget(this, r), t.clear(i, e, s);\n    t.setRenderTarget(n);\n  }\n}\nclass Ra extends P {\n  constructor() {\n    super(), this.isScene = !0, this.type = \"Scene\", this.background = null, this.environment = null, this.fog = null, this.backgroundBlurriness = 0, this.backgroundIntensity = 1, this.backgroundRotation = new ht(), this.environmentIntensity = 1, this.environmentRotation = new ht(), this.overrideMaterial = null, typeof __THREE_DEVTOOLS__ < \"u\" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n  }\n  copy(t, i) {\n    return super.copy(t, i), t.background !== null && (this.background = t.background.clone()), t.environment !== null && (this.environment = t.environment.clone()), t.fog !== null && (this.fog = t.fog.clone()), this.backgroundBlurriness = t.backgroundBlurriness, this.backgroundIntensity = t.backgroundIntensity, this.backgroundRotation.copy(t.backgroundRotation), this.environmentIntensity = t.environmentIntensity, this.environmentRotation.copy(t.environmentRotation), t.overrideMaterial !== null && (this.overrideMaterial = t.overrideMaterial.clone()), this.matrixAutoUpdate = t.matrixAutoUpdate, this;\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return this.fog !== null && (i.object.fog = this.fog.toJSON()), this.backgroundBlurriness > 0 && (i.object.backgroundBlurriness = this.backgroundBlurriness), this.backgroundIntensity !== 1 && (i.object.backgroundIntensity = this.backgroundIntensity), i.object.backgroundRotation = this.backgroundRotation.toArray(), this.environmentIntensity !== 1 && (i.object.environmentIntensity = this.environmentIntensity), i.object.environmentRotation = this.environmentRotation.toArray(), i;\n  }\n}\nclass As {\n  constructor(t, i) {\n    this.isInterleavedBuffer = !0, this.array = t, this.stride = i, this.count = t !== void 0 ? t.length / i : 0, this.usage = 35044, this.updateRanges = [], this.version = 0, this.uuid = mt();\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(t) {\n    t === !0 && this.version++;\n  }\n  setUsage(t) {\n    return this.usage = t, this;\n  }\n  addUpdateRange(t, i) {\n    this.updateRanges.push({ start: t, count: i });\n  }\n  clearUpdateRanges() {\n    this.updateRanges.length = 0;\n  }\n  copy(t) {\n    return this.array = new t.array.constructor(t.array), this.count = t.count, this.stride = t.stride, this.usage = t.usage, this;\n  }\n  copyAt(t, i, e) {\n    t *= this.stride, e *= i.stride;\n    for (let s = 0, n = this.stride; s < n; s++)\n      this.array[t + s] = i.array[e + s];\n    return this;\n  }\n  set(t, i = 0) {\n    return this.array.set(t, i), this;\n  }\n  clone(t) {\n    t.arrayBuffers === void 0 && (t.arrayBuffers = {}), this.array.buffer._uuid === void 0 && (this.array.buffer._uuid = mt()), t.arrayBuffers[this.array.buffer._uuid] === void 0 && (t.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer);\n    const i = new this.array.constructor(t.arrayBuffers[this.array.buffer._uuid]), e = new this.constructor(i, this.stride);\n    return e.setUsage(this.usage), e;\n  }\n  onUpload(t) {\n    return this.onUploadCallback = t, this;\n  }\n  toJSON(t) {\n    return t.arrayBuffers === void 0 && (t.arrayBuffers = {}), this.array.buffer._uuid === void 0 && (this.array.buffer._uuid = mt()), t.arrayBuffers[this.array.buffer._uuid] === void 0 && (t.arrayBuffers[this.array.buffer._uuid] = Array.from(new Uint32Array(this.array.buffer))), {\n      uuid: this.uuid,\n      buffer: this.array.buffer._uuid,\n      type: this.array.constructor.name,\n      stride: this.stride\n    };\n  }\n}\nconst U = /* @__PURE__ */ new f();\nclass ve {\n  constructor(t, i, e, s = !1) {\n    this.isInterleavedBufferAttribute = !0, this.name = \"\", this.data = t, this.itemSize = i, this.offset = e, this.normalized = s;\n  }\n  get count() {\n    return this.data.count;\n  }\n  get array() {\n    return this.data.array;\n  }\n  set needsUpdate(t) {\n    this.data.needsUpdate = t;\n  }\n  applyMatrix4(t) {\n    for (let i = 0, e = this.data.count; i < e; i++)\n      U.fromBufferAttribute(this, i), U.applyMatrix4(t), this.setXYZ(i, U.x, U.y, U.z);\n    return this;\n  }\n  applyNormalMatrix(t) {\n    for (let i = 0, e = this.count; i < e; i++)\n      U.fromBufferAttribute(this, i), U.applyNormalMatrix(t), this.setXYZ(i, U.x, U.y, U.z);\n    return this;\n  }\n  transformDirection(t) {\n    for (let i = 0, e = this.count; i < e; i++)\n      U.fromBufferAttribute(this, i), U.transformDirection(t), this.setXYZ(i, U.x, U.y, U.z);\n    return this;\n  }\n  getComponent(t, i) {\n    let e = this.array[t * this.data.stride + this.offset + i];\n    return this.normalized && (e = q(e, this.array)), e;\n  }\n  setComponent(t, i, e) {\n    return this.normalized && (e = z(e, this.array)), this.data.array[t * this.data.stride + this.offset + i] = e, this;\n  }\n  setX(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.data.array[t * this.data.stride + this.offset] = i, this;\n  }\n  setY(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.data.array[t * this.data.stride + this.offset + 1] = i, this;\n  }\n  setZ(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.data.array[t * this.data.stride + this.offset + 2] = i, this;\n  }\n  setW(t, i) {\n    return this.normalized && (i = z(i, this.array)), this.data.array[t * this.data.stride + this.offset + 3] = i, this;\n  }\n  getX(t) {\n    let i = this.data.array[t * this.data.stride + this.offset];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  getY(t) {\n    let i = this.data.array[t * this.data.stride + this.offset + 1];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  getZ(t) {\n    let i = this.data.array[t * this.data.stride + this.offset + 2];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  getW(t) {\n    let i = this.data.array[t * this.data.stride + this.offset + 3];\n    return this.normalized && (i = q(i, this.array)), i;\n  }\n  setXY(t, i, e) {\n    return t = t * this.data.stride + this.offset, this.normalized && (i = z(i, this.array), e = z(e, this.array)), this.data.array[t + 0] = i, this.data.array[t + 1] = e, this;\n  }\n  setXYZ(t, i, e, s) {\n    return t = t * this.data.stride + this.offset, this.normalized && (i = z(i, this.array), e = z(e, this.array), s = z(s, this.array)), this.data.array[t + 0] = i, this.data.array[t + 1] = e, this.data.array[t + 2] = s, this;\n  }\n  setXYZW(t, i, e, s, n) {\n    return t = t * this.data.stride + this.offset, this.normalized && (i = z(i, this.array), e = z(e, this.array), s = z(s, this.array), n = z(n, this.array)), this.data.array[t + 0] = i, this.data.array[t + 1] = e, this.data.array[t + 2] = s, this.data.array[t + 3] = n, this;\n  }\n  clone(t) {\n    if (t === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.\");\n      const i = [];\n      for (let e = 0; e < this.count; e++) {\n        const s = e * this.data.stride + this.offset;\n        for (let n = 0; n < this.itemSize; n++)\n          i.push(this.data.array[s + n]);\n      }\n      return new yt(new this.array.constructor(i), this.itemSize, this.normalized);\n    } else\n      return t.interleavedBuffers === void 0 && (t.interleavedBuffers = {}), t.interleavedBuffers[this.data.uuid] === void 0 && (t.interleavedBuffers[this.data.uuid] = this.data.clone(t)), new ve(t.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n  }\n  toJSON(t) {\n    if (t === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.\");\n      const i = [];\n      for (let e = 0; e < this.count; e++) {\n        const s = e * this.data.stride + this.offset;\n        for (let n = 0; n < this.itemSize; n++)\n          i.push(this.data.array[s + n]);\n      }\n      return {\n        itemSize: this.itemSize,\n        type: this.array.constructor.name,\n        array: i,\n        normalized: this.normalized\n      };\n    } else\n      return t.interleavedBuffers === void 0 && (t.interleavedBuffers = {}), t.interleavedBuffers[this.data.uuid] === void 0 && (t.interleavedBuffers[this.data.uuid] = this.data.toJSON(t)), {\n        isInterleavedBufferAttribute: !0,\n        itemSize: this.itemSize,\n        data: this.data.uuid,\n        offset: this.offset,\n        normalized: this.normalized\n      };\n  }\n}\nclass Ea extends $ {\n  constructor(t) {\n    super(), this.isSpriteMaterial = !0, this.type = \"SpriteMaterial\", this.color = new B(16777215), this.map = null, this.alphaMap = null, this.rotation = 0, this.sizeAttenuation = !0, this.transparent = !0, this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.map = t.map, this.alphaMap = t.alphaMap, this.rotation = t.rotation, this.sizeAttenuation = t.sizeAttenuation, this.fog = t.fog, this;\n  }\n}\nclass ka extends Z {\n  constructor(t = null, i = 1, e = 1, s, n, r, h, a, o = 1003, l = 1003, c, u) {\n    super(null, r, h, a, o, l, s, n, c, u), this.isDataTexture = !0, this.image = { data: t, width: i, height: e }, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1;\n  }\n}\nclass Ia extends yt {\n  constructor(t, i, e, s = 1) {\n    super(t, i, e), this.isInstancedBufferAttribute = !0, this.meshPerAttribute = s;\n  }\n  copy(t) {\n    return super.copy(t), this.meshPerAttribute = t.meshPerAttribute, this;\n  }\n  toJSON() {\n    const t = super.toJSON();\n    return t.meshPerAttribute = this.meshPerAttribute, t.isInstancedBufferAttribute = !0, t;\n  }\n}\nconst Xi = /* @__PURE__ */ new f(), Fs = /* @__PURE__ */ new f(), Ts = /* @__PURE__ */ new xt();\nclass Ht {\n  constructor(t = new f(1, 0, 0), i = 0) {\n    this.isPlane = !0, this.normal = t, this.constant = i;\n  }\n  set(t, i) {\n    return this.normal.copy(t), this.constant = i, this;\n  }\n  setComponents(t, i, e, s) {\n    return this.normal.set(t, i, e), this.constant = s, this;\n  }\n  setFromNormalAndCoplanarPoint(t, i) {\n    return this.normal.copy(t), this.constant = -i.dot(this.normal), this;\n  }\n  setFromCoplanarPoints(t, i, e) {\n    const s = Xi.subVectors(e, i).cross(Fs.subVectors(t, i)).normalize();\n    return this.setFromNormalAndCoplanarPoint(s, t), this;\n  }\n  copy(t) {\n    return this.normal.copy(t.normal), this.constant = t.constant, this;\n  }\n  normalize() {\n    const t = 1 / this.normal.length();\n    return this.normal.multiplyScalar(t), this.constant *= t, this;\n  }\n  negate() {\n    return this.constant *= -1, this.normal.negate(), this;\n  }\n  distanceToPoint(t) {\n    return this.normal.dot(t) + this.constant;\n  }\n  distanceToSphere(t) {\n    return this.distanceToPoint(t.center) - t.radius;\n  }\n  projectPoint(t, i) {\n    return i.copy(t).addScaledVector(this.normal, -this.distanceToPoint(t));\n  }\n  intersectLine(t, i) {\n    const e = t.delta(Xi), s = this.normal.dot(e);\n    if (s === 0)\n      return this.distanceToPoint(t.start) === 0 ? i.copy(t.start) : null;\n    const n = -(t.start.dot(this.normal) + this.constant) / s;\n    return n < 0 || n > 1 ? null : i.copy(t.start).addScaledVector(e, n);\n  }\n  intersectsLine(t) {\n    const i = this.distanceToPoint(t.start), e = this.distanceToPoint(t.end);\n    return i < 0 && e > 0 || e < 0 && i > 0;\n  }\n  intersectsBox(t) {\n    return t.intersectsPlane(this);\n  }\n  intersectsSphere(t) {\n    return t.intersectsPlane(this);\n  }\n  coplanarPoint(t) {\n    return t.copy(this.normal).multiplyScalar(-this.constant);\n  }\n  applyMatrix4(t, i) {\n    const e = i || Ts.getNormalMatrix(t), s = this.coplanarPoint(Xi).applyMatrix4(t), n = this.normal.applyMatrix3(e).normalize();\n    return this.constant = -s.dot(n), this;\n  }\n  translate(t) {\n    return this.constant -= t.dot(this.normal), this;\n  }\n  equals(t) {\n    return t.normal.equals(this.normal) && t.constant === this.constant;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst vt = /* @__PURE__ */ new $i(), Ai = /* @__PURE__ */ new f();\nclass Cs {\n  constructor(t = new Ht(), i = new Ht(), e = new Ht(), s = new Ht(), n = new Ht(), r = new Ht()) {\n    this.planes = [t, i, e, s, n, r];\n  }\n  set(t, i, e, s, n, r) {\n    const h = this.planes;\n    return h[0].copy(t), h[1].copy(i), h[2].copy(e), h[3].copy(s), h[4].copy(n), h[5].copy(r), this;\n  }\n  copy(t) {\n    const i = this.planes;\n    for (let e = 0; e < 6; e++)\n      i[e].copy(t.planes[e]);\n    return this;\n  }\n  setFromProjectionMatrix(t, i = 2e3) {\n    const e = this.planes, s = t.elements, n = s[0], r = s[1], h = s[2], a = s[3], o = s[4], l = s[5], c = s[6], u = s[7], d = s[8], m = s[9], y = s[10], x = s[11], g = s[12], w = s[13], b = s[14], M = s[15];\n    if (e[0].setComponents(a - n, u - o, x - d, M - g).normalize(), e[1].setComponents(a + n, u + o, x + d, M + g).normalize(), e[2].setComponents(a + r, u + l, x + m, M + w).normalize(), e[3].setComponents(a - r, u - l, x - m, M - w).normalize(), e[4].setComponents(a - h, u - c, x - y, M - b).normalize(), i === 2e3)\n      e[5].setComponents(a + h, u + c, x + y, M + b).normalize();\n    else if (i === 2001)\n      e[5].setComponents(h, c, y, b).normalize();\n    else\n      throw new Error(\"THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: \" + i);\n    return this;\n  }\n  intersectsObject(t) {\n    if (t.boundingSphere !== void 0)\n      t.boundingSphere === null && t.computeBoundingSphere(), vt.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);\n    else {\n      const i = t.geometry;\n      i.boundingSphere === null && i.computeBoundingSphere(), vt.copy(i.boundingSphere).applyMatrix4(t.matrixWorld);\n    }\n    return this.intersectsSphere(vt);\n  }\n  intersectsSprite(t) {\n    return vt.center.set(0, 0, 0), vt.radius = 0.7071067811865476, vt.applyMatrix4(t.matrixWorld), this.intersectsSphere(vt);\n  }\n  intersectsSphere(t) {\n    const i = this.planes, e = t.center, s = -t.radius;\n    for (let n = 0; n < 6; n++)\n      if (i[n].distanceToPoint(e) < s)\n        return !1;\n    return !0;\n  }\n  intersectsBox(t) {\n    const i = this.planes;\n    for (let e = 0; e < 6; e++) {\n      const s = i[e];\n      if (Ai.x = s.normal.x > 0 ? t.max.x : t.min.x, Ai.y = s.normal.y > 0 ? t.max.y : t.min.y, Ai.z = s.normal.z > 0 ? t.max.z : t.min.z, s.distanceToPoint(Ai) < 0)\n        return !1;\n    }\n    return !0;\n  }\n  containsPoint(t) {\n    const i = this.planes;\n    for (let e = 0; e < 6; e++)\n      if (i[e].distanceToPoint(t) < 0)\n        return !1;\n    return !0;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass Bs extends $ {\n  constructor(t) {\n    super(), this.isLineBasicMaterial = !0, this.type = \"LineBasicMaterial\", this.color = new B(16777215), this.map = null, this.linewidth = 1, this.linecap = \"round\", this.linejoin = \"round\", this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.map = t.map, this.linewidth = t.linewidth, this.linecap = t.linecap, this.linejoin = t.linejoin, this.fog = t.fog, this;\n  }\n}\nclass Da extends $ {\n  constructor(t) {\n    super(), this.isPointsMaterial = !0, this.type = \"PointsMaterial\", this.color = new B(16777215), this.map = null, this.alphaMap = null, this.size = 1, this.sizeAttenuation = !0, this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.map = t.map, this.alphaMap = t.alphaMap, this.size = t.size, this.sizeAttenuation = t.sizeAttenuation, this.fog = t.fog, this;\n  }\n}\nclass Pa extends Z {\n  constructor(t, i) {\n    super({ width: t, height: i }), this.isFramebufferTexture = !0, this.magFilter = 1003, this.minFilter = 1003, this.generateMipmaps = !1, this.needsUpdate = !0;\n  }\n}\nclass La extends Z {\n  constructor(t, i, e, s, n, r, h, a, o, l = 1026) {\n    if (l !== 1026 && l !== 1027)\n      throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");\n    e === void 0 && l === 1026 && (e = 1014), e === void 0 && l === 1027 && (e = 1020), super(null, s, n, r, h, a, l, e, o), this.isDepthTexture = !0, this.image = { width: t, height: i }, this.magFilter = h !== void 0 ? h : 1003, this.minFilter = a !== void 0 ? a : 1003, this.flipY = !1, this.generateMipmaps = !1, this.compareFunction = null;\n  }\n  copy(t) {\n    return super.copy(t), this.compareFunction = t.compareFunction, this;\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return this.compareFunction !== null && (i.compareFunction = this.compareFunction), i;\n  }\n}\nclass Re extends ai {\n  constructor(t = 1, i = 32, e = 16, s = 0, n = Math.PI * 2, r = 0, h = Math.PI) {\n    super(), this.type = \"SphereGeometry\", this.parameters = {\n      radius: t,\n      widthSegments: i,\n      heightSegments: e,\n      phiStart: s,\n      phiLength: n,\n      thetaStart: r,\n      thetaLength: h\n    }, i = Math.max(3, Math.floor(i)), e = Math.max(2, Math.floor(e));\n    const a = Math.min(r + h, Math.PI);\n    let o = 0;\n    const l = [], c = new f(), u = new f(), d = [], m = [], y = [], x = [];\n    for (let g = 0; g <= e; g++) {\n      const w = [], b = g / e;\n      let M = 0;\n      g === 0 && r === 0 ? M = 0.5 / i : g === e && a === Math.PI && (M = -0.5 / i);\n      for (let S = 0; S <= i; S++) {\n        const F = S / i;\n        c.x = -t * Math.cos(s + F * n) * Math.sin(r + b * h), c.y = t * Math.cos(r + b * h), c.z = t * Math.sin(s + F * n) * Math.sin(r + b * h), m.push(c.x, c.y, c.z), u.copy(c).normalize(), y.push(u.x, u.y, u.z), x.push(F + M, 1 - b), w.push(o++);\n      }\n      l.push(w);\n    }\n    for (let g = 0; g < e; g++)\n      for (let w = 0; w < i; w++) {\n        const b = l[g][w + 1], M = l[g][w], S = l[g + 1][w], F = l[g + 1][w + 1];\n        (g !== 0 || r > 0) && d.push(b, M, F), (g !== e - 1 || a < Math.PI) && d.push(M, S, F);\n      }\n    this.setIndex(d), this.setAttribute(\"position\", new Rt(m, 3)), this.setAttribute(\"normal\", new Rt(y, 3)), this.setAttribute(\"uv\", new Rt(x, 2));\n  }\n  copy(t) {\n    return super.copy(t), this.parameters = Object.assign({}, t.parameters), this;\n  }\n  static fromJSON(t) {\n    return new Re(t.radius, t.widthSegments, t.heightSegments, t.phiStart, t.phiLength, t.thetaStart, t.thetaLength);\n  }\n}\nclass Oa extends $ {\n  constructor(t) {\n    super(), this.isShadowMaterial = !0, this.type = \"ShadowMaterial\", this.color = new B(0), this.transparent = !0, this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.fog = t.fog, this;\n  }\n}\nclass vs extends $ {\n  constructor(t) {\n    super(), this.isMeshStandardMaterial = !0, this.type = \"MeshStandardMaterial\", this.defines = { STANDARD: \"\" }, this.color = new B(16777215), this.roughness = 1, this.metalness = 0, this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new B(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = 0, this.normalScale = new C(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.roughnessMap = null, this.metalnessMap = null, this.alphaMap = null, this.envMap = null, this.envMapRotation = new ht(), this.envMapIntensity = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = \"round\", this.wireframeLinejoin = \"round\", this.flatShading = !1, this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.defines = { STANDARD: \"\" }, this.color.copy(t.color), this.roughness = t.roughness, this.metalness = t.metalness, this.map = t.map, this.lightMap = t.lightMap, this.lightMapIntensity = t.lightMapIntensity, this.aoMap = t.aoMap, this.aoMapIntensity = t.aoMapIntensity, this.emissive.copy(t.emissive), this.emissiveMap = t.emissiveMap, this.emissiveIntensity = t.emissiveIntensity, this.bumpMap = t.bumpMap, this.bumpScale = t.bumpScale, this.normalMap = t.normalMap, this.normalMapType = t.normalMapType, this.normalScale.copy(t.normalScale), this.displacementMap = t.displacementMap, this.displacementScale = t.displacementScale, this.displacementBias = t.displacementBias, this.roughnessMap = t.roughnessMap, this.metalnessMap = t.metalnessMap, this.alphaMap = t.alphaMap, this.envMap = t.envMap, this.envMapRotation.copy(t.envMapRotation), this.envMapIntensity = t.envMapIntensity, this.wireframe = t.wireframe, this.wireframeLinewidth = t.wireframeLinewidth, this.wireframeLinecap = t.wireframeLinecap, this.wireframeLinejoin = t.wireframeLinejoin, this.flatShading = t.flatShading, this.fog = t.fog, this;\n  }\n}\nclass Na extends vs {\n  constructor(t) {\n    super(), this.isMeshPhysicalMaterial = !0, this.defines = {\n      STANDARD: \"\",\n      PHYSICAL: \"\"\n    }, this.type = \"MeshPhysicalMaterial\", this.anisotropyRotation = 0, this.anisotropyMap = null, this.clearcoatMap = null, this.clearcoatRoughness = 0, this.clearcoatRoughnessMap = null, this.clearcoatNormalScale = new C(1, 1), this.clearcoatNormalMap = null, this.ior = 1.5, Object.defineProperty(this, \"reflectivity\", {\n      get: function() {\n        return T(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n      },\n      set: function(i) {\n        this.ior = (1 + 0.4 * i) / (1 - 0.4 * i);\n      }\n    }), this.iridescenceMap = null, this.iridescenceIOR = 1.3, this.iridescenceThicknessRange = [100, 400], this.iridescenceThicknessMap = null, this.sheenColor = new B(0), this.sheenColorMap = null, this.sheenRoughness = 1, this.sheenRoughnessMap = null, this.transmissionMap = null, this.thickness = 0, this.thicknessMap = null, this.attenuationDistance = 1 / 0, this.attenuationColor = new B(1, 1, 1), this.specularIntensity = 1, this.specularIntensityMap = null, this.specularColor = new B(1, 1, 1), this.specularColorMap = null, this._anisotropy = 0, this._clearcoat = 0, this._dispersion = 0, this._iridescence = 0, this._sheen = 0, this._transmission = 0, this.setValues(t);\n  }\n  get anisotropy() {\n    return this._anisotropy;\n  }\n  set anisotropy(t) {\n    this._anisotropy > 0 != t > 0 && this.version++, this._anisotropy = t;\n  }\n  get clearcoat() {\n    return this._clearcoat;\n  }\n  set clearcoat(t) {\n    this._clearcoat > 0 != t > 0 && this.version++, this._clearcoat = t;\n  }\n  get iridescence() {\n    return this._iridescence;\n  }\n  set iridescence(t) {\n    this._iridescence > 0 != t > 0 && this.version++, this._iridescence = t;\n  }\n  get dispersion() {\n    return this._dispersion;\n  }\n  set dispersion(t) {\n    this._dispersion > 0 != t > 0 && this.version++, this._dispersion = t;\n  }\n  get sheen() {\n    return this._sheen;\n  }\n  set sheen(t) {\n    this._sheen > 0 != t > 0 && this.version++, this._sheen = t;\n  }\n  get transmission() {\n    return this._transmission;\n  }\n  set transmission(t) {\n    this._transmission > 0 != t > 0 && this.version++, this._transmission = t;\n  }\n  copy(t) {\n    return super.copy(t), this.defines = {\n      STANDARD: \"\",\n      PHYSICAL: \"\"\n    }, this.anisotropy = t.anisotropy, this.anisotropyRotation = t.anisotropyRotation, this.anisotropyMap = t.anisotropyMap, this.clearcoat = t.clearcoat, this.clearcoatMap = t.clearcoatMap, this.clearcoatRoughness = t.clearcoatRoughness, this.clearcoatRoughnessMap = t.clearcoatRoughnessMap, this.clearcoatNormalMap = t.clearcoatNormalMap, this.clearcoatNormalScale.copy(t.clearcoatNormalScale), this.dispersion = t.dispersion, this.ior = t.ior, this.iridescence = t.iridescence, this.iridescenceMap = t.iridescenceMap, this.iridescenceIOR = t.iridescenceIOR, this.iridescenceThicknessRange = [...t.iridescenceThicknessRange], this.iridescenceThicknessMap = t.iridescenceThicknessMap, this.sheen = t.sheen, this.sheenColor.copy(t.sheenColor), this.sheenColorMap = t.sheenColorMap, this.sheenRoughness = t.sheenRoughness, this.sheenRoughnessMap = t.sheenRoughnessMap, this.transmission = t.transmission, this.transmissionMap = t.transmissionMap, this.thickness = t.thickness, this.thicknessMap = t.thicknessMap, this.attenuationDistance = t.attenuationDistance, this.attenuationColor.copy(t.attenuationColor), this.specularIntensity = t.specularIntensity, this.specularIntensityMap = t.specularIntensityMap, this.specularColor.copy(t.specularColor), this.specularColorMap = t.specularColorMap, this;\n  }\n}\nclass Va extends $ {\n  constructor(t) {\n    super(), this.isMeshPhongMaterial = !0, this.type = \"MeshPhongMaterial\", this.color = new B(16777215), this.specular = new B(1118481), this.shininess = 30, this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new B(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = 0, this.normalScale = new C(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.envMapRotation = new ht(), this.combine = 0, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = \"round\", this.wireframeLinejoin = \"round\", this.flatShading = !1, this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.specular.copy(t.specular), this.shininess = t.shininess, this.map = t.map, this.lightMap = t.lightMap, this.lightMapIntensity = t.lightMapIntensity, this.aoMap = t.aoMap, this.aoMapIntensity = t.aoMapIntensity, this.emissive.copy(t.emissive), this.emissiveMap = t.emissiveMap, this.emissiveIntensity = t.emissiveIntensity, this.bumpMap = t.bumpMap, this.bumpScale = t.bumpScale, this.normalMap = t.normalMap, this.normalMapType = t.normalMapType, this.normalScale.copy(t.normalScale), this.displacementMap = t.displacementMap, this.displacementScale = t.displacementScale, this.displacementBias = t.displacementBias, this.specularMap = t.specularMap, this.alphaMap = t.alphaMap, this.envMap = t.envMap, this.envMapRotation.copy(t.envMapRotation), this.combine = t.combine, this.reflectivity = t.reflectivity, this.refractionRatio = t.refractionRatio, this.wireframe = t.wireframe, this.wireframeLinewidth = t.wireframeLinewidth, this.wireframeLinecap = t.wireframeLinecap, this.wireframeLinejoin = t.wireframeLinejoin, this.flatShading = t.flatShading, this.fog = t.fog, this;\n  }\n}\nclass Wa extends $ {\n  constructor(t) {\n    super(), this.isMeshToonMaterial = !0, this.defines = { TOON: \"\" }, this.type = \"MeshToonMaterial\", this.color = new B(16777215), this.map = null, this.gradientMap = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new B(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = 0, this.normalScale = new C(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.alphaMap = null, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = \"round\", this.wireframeLinejoin = \"round\", this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.map = t.map, this.gradientMap = t.gradientMap, this.lightMap = t.lightMap, this.lightMapIntensity = t.lightMapIntensity, this.aoMap = t.aoMap, this.aoMapIntensity = t.aoMapIntensity, this.emissive.copy(t.emissive), this.emissiveMap = t.emissiveMap, this.emissiveIntensity = t.emissiveIntensity, this.bumpMap = t.bumpMap, this.bumpScale = t.bumpScale, this.normalMap = t.normalMap, this.normalMapType = t.normalMapType, this.normalScale.copy(t.normalScale), this.displacementMap = t.displacementMap, this.displacementScale = t.displacementScale, this.displacementBias = t.displacementBias, this.alphaMap = t.alphaMap, this.wireframe = t.wireframe, this.wireframeLinewidth = t.wireframeLinewidth, this.wireframeLinecap = t.wireframeLinecap, this.wireframeLinejoin = t.wireframeLinejoin, this.fog = t.fog, this;\n  }\n}\nclass Ua extends $ {\n  constructor(t) {\n    super(), this.isMeshNormalMaterial = !0, this.type = \"MeshNormalMaterial\", this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = 0, this.normalScale = new C(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.wireframe = !1, this.wireframeLinewidth = 1, this.flatShading = !1, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.bumpMap = t.bumpMap, this.bumpScale = t.bumpScale, this.normalMap = t.normalMap, this.normalMapType = t.normalMapType, this.normalScale.copy(t.normalScale), this.displacementMap = t.displacementMap, this.displacementScale = t.displacementScale, this.displacementBias = t.displacementBias, this.wireframe = t.wireframe, this.wireframeLinewidth = t.wireframeLinewidth, this.flatShading = t.flatShading, this;\n  }\n}\nclass qa extends $ {\n  constructor(t) {\n    super(), this.isMeshLambertMaterial = !0, this.type = \"MeshLambertMaterial\", this.color = new B(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new B(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = 0, this.normalScale = new C(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.envMapRotation = new ht(), this.combine = 0, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = \"round\", this.wireframeLinejoin = \"round\", this.flatShading = !1, this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.color.copy(t.color), this.map = t.map, this.lightMap = t.lightMap, this.lightMapIntensity = t.lightMapIntensity, this.aoMap = t.aoMap, this.aoMapIntensity = t.aoMapIntensity, this.emissive.copy(t.emissive), this.emissiveMap = t.emissiveMap, this.emissiveIntensity = t.emissiveIntensity, this.bumpMap = t.bumpMap, this.bumpScale = t.bumpScale, this.normalMap = t.normalMap, this.normalMapType = t.normalMapType, this.normalScale.copy(t.normalScale), this.displacementMap = t.displacementMap, this.displacementScale = t.displacementScale, this.displacementBias = t.displacementBias, this.specularMap = t.specularMap, this.alphaMap = t.alphaMap, this.envMap = t.envMap, this.envMapRotation.copy(t.envMapRotation), this.combine = t.combine, this.reflectivity = t.reflectivity, this.refractionRatio = t.refractionRatio, this.wireframe = t.wireframe, this.wireframeLinewidth = t.wireframeLinewidth, this.wireframeLinecap = t.wireframeLinecap, this.wireframeLinejoin = t.wireframeLinejoin, this.flatShading = t.flatShading, this.fog = t.fog, this;\n  }\n}\nclass ja extends $ {\n  constructor(t) {\n    super(), this.isMeshMatcapMaterial = !0, this.defines = { MATCAP: \"\" }, this.type = \"MeshMatcapMaterial\", this.color = new B(16777215), this.matcap = null, this.map = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = 0, this.normalScale = new C(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.alphaMap = null, this.flatShading = !1, this.fog = !0, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.defines = { MATCAP: \"\" }, this.color.copy(t.color), this.matcap = t.matcap, this.map = t.map, this.bumpMap = t.bumpMap, this.bumpScale = t.bumpScale, this.normalMap = t.normalMap, this.normalMapType = t.normalMapType, this.normalScale.copy(t.normalScale), this.displacementMap = t.displacementMap, this.displacementScale = t.displacementScale, this.displacementBias = t.displacementBias, this.alphaMap = t.alphaMap, this.flatShading = t.flatShading, this.fog = t.fog, this;\n  }\n}\nclass Ga extends Bs {\n  constructor(t) {\n    super(), this.isLineDashedMaterial = !0, this.type = \"LineDashedMaterial\", this.scale = 1, this.dashSize = 3, this.gapSize = 1, this.setValues(t);\n  }\n  copy(t) {\n    return super.copy(t), this.scale = t.scale, this.dashSize = t.dashSize, this.gapSize = t.gapSize, this;\n  }\n}\nclass Et extends P {\n  constructor(t, i = 1) {\n    super(), this.isLight = !0, this.type = \"Light\", this.color = new B(t), this.intensity = i;\n  }\n  dispose() {\n  }\n  copy(t, i) {\n    return super.copy(t, i), this.color.copy(t.color), this.intensity = t.intensity, this;\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return i.object.color = this.color.getHex(), i.object.intensity = this.intensity, this.groundColor !== void 0 && (i.object.groundColor = this.groundColor.getHex()), this.distance !== void 0 && (i.object.distance = this.distance), this.angle !== void 0 && (i.object.angle = this.angle), this.decay !== void 0 && (i.object.decay = this.decay), this.penumbra !== void 0 && (i.object.penumbra = this.penumbra), this.shadow !== void 0 && (i.object.shadow = this.shadow.toJSON()), this.target !== void 0 && (i.object.target = this.target.uuid), i;\n  }\n}\nclass Xa extends Et {\n  constructor(t, i, e) {\n    super(t, e), this.isHemisphereLight = !0, this.type = \"HemisphereLight\", this.position.copy(P.DEFAULT_UP), this.updateMatrix(), this.groundColor = new B(i);\n  }\n  copy(t, i) {\n    return super.copy(t, i), this.groundColor.copy(t.groundColor), this;\n  }\n}\nconst Hi = /* @__PURE__ */ new O(), be = /* @__PURE__ */ new f(), Se = /* @__PURE__ */ new f();\nclass Ki {\n  constructor(t) {\n    this.camera = t, this.intensity = 1, this.bias = 0, this.normalBias = 0, this.radius = 1, this.blurSamples = 8, this.mapSize = new C(512, 512), this.map = null, this.mapPass = null, this.matrix = new O(), this.autoUpdate = !0, this.needsUpdate = !1, this._frustum = new Cs(), this._frameExtents = new C(1, 1), this._viewportCount = 1, this._viewports = [\n      new j(0, 0, 1, 1)\n    ];\n  }\n  getViewportCount() {\n    return this._viewportCount;\n  }\n  getFrustum() {\n    return this._frustum;\n  }\n  updateMatrices(t) {\n    const i = this.camera, e = this.matrix;\n    be.setFromMatrixPosition(t.matrixWorld), i.position.copy(be), Se.setFromMatrixPosition(t.target.matrixWorld), i.lookAt(Se), i.updateMatrixWorld(), Hi.multiplyMatrices(i.projectionMatrix, i.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Hi), e.set(\n      0.5,\n      0,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0,\n      0.5,\n      0.5,\n      0,\n      0,\n      0,\n      1\n    ), e.multiply(Hi);\n  }\n  getViewport(t) {\n    return this._viewports[t];\n  }\n  getFrameExtents() {\n    return this._frameExtents;\n  }\n  dispose() {\n    this.map && this.map.dispose(), this.mapPass && this.mapPass.dispose();\n  }\n  copy(t) {\n    return this.camera = t.camera.clone(), this.intensity = t.intensity, this.bias = t.bias, this.radius = t.radius, this.mapSize.copy(t.mapSize), this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  toJSON() {\n    const t = {};\n    return this.intensity !== 1 && (t.intensity = this.intensity), this.bias !== 0 && (t.bias = this.bias), this.normalBias !== 0 && (t.normalBias = this.normalBias), this.radius !== 1 && (t.radius = this.radius), (this.mapSize.x !== 512 || this.mapSize.y !== 512) && (t.mapSize = this.mapSize.toArray()), t.camera = this.camera.toJSON(!1).object, delete t.camera.matrix, t;\n  }\n}\nclass Rs extends Ki {\n  constructor() {\n    super(new At(50, 1, 0.5, 500)), this.isSpotLightShadow = !0, this.focus = 1;\n  }\n  updateMatrices(t) {\n    const i = this.camera, e = ei * 2 * t.angle * this.focus, s = this.mapSize.width / this.mapSize.height, n = t.distance || i.far;\n    (e !== i.fov || s !== i.aspect || n !== i.far) && (i.fov = e, i.aspect = s, i.far = n, i.updateProjectionMatrix()), super.updateMatrices(t);\n  }\n  copy(t) {\n    return super.copy(t), this.focus = t.focus, this;\n  }\n}\nclass Ha extends Et {\n  constructor(t, i, e = 0, s = Math.PI / 3, n = 0, r = 2) {\n    super(t, i), this.isSpotLight = !0, this.type = \"SpotLight\", this.position.copy(P.DEFAULT_UP), this.updateMatrix(), this.target = new P(), this.distance = e, this.angle = s, this.penumbra = n, this.decay = r, this.map = null, this.shadow = new Rs();\n  }\n  get power() {\n    return this.intensity * Math.PI;\n  }\n  set power(t) {\n    this.intensity = t / Math.PI;\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(t, i) {\n    return super.copy(t, i), this.distance = t.distance, this.angle = t.angle, this.penumbra = t.penumbra, this.decay = t.decay, this.target = t.target.clone(), this.shadow = t.shadow.clone(), this;\n  }\n}\nconst _e = /* @__PURE__ */ new O(), Kt = /* @__PURE__ */ new f(), Yi = /* @__PURE__ */ new f();\nclass Es extends Ki {\n  constructor() {\n    super(new At(90, 1, 0.5, 500)), this.isPointLightShadow = !0, this._frameExtents = new C(4, 2), this._viewportCount = 6, this._viewports = [\n      // These viewports map a cube-map onto a 2D texture with the\n      // following orientation:\n      //\n      //  xzXZ\n      //   y Y\n      //\n      // X - Positive x direction\n      // x - Negative x direction\n      // Y - Positive y direction\n      // y - Negative y direction\n      // Z - Positive z direction\n      // z - Negative z direction\n      // positive X\n      new j(2, 1, 1, 1),\n      // negative X\n      new j(0, 1, 1, 1),\n      // positive Z\n      new j(3, 1, 1, 1),\n      // negative Z\n      new j(1, 1, 1, 1),\n      // positive Y\n      new j(3, 0, 1, 1),\n      // negative Y\n      new j(1, 0, 1, 1)\n    ], this._cubeDirections = [\n      new f(1, 0, 0),\n      new f(-1, 0, 0),\n      new f(0, 0, 1),\n      new f(0, 0, -1),\n      new f(0, 1, 0),\n      new f(0, -1, 0)\n    ], this._cubeUps = [\n      new f(0, 1, 0),\n      new f(0, 1, 0),\n      new f(0, 1, 0),\n      new f(0, 1, 0),\n      new f(0, 0, 1),\n      new f(0, 0, -1)\n    ];\n  }\n  updateMatrices(t, i = 0) {\n    const e = this.camera, s = this.matrix, n = t.distance || e.far;\n    n !== e.far && (e.far = n, e.updateProjectionMatrix()), Kt.setFromMatrixPosition(t.matrixWorld), e.position.copy(Kt), Yi.copy(e.position), Yi.add(this._cubeDirections[i]), e.up.copy(this._cubeUps[i]), e.lookAt(Yi), e.updateMatrixWorld(), s.makeTranslation(-Kt.x, -Kt.y, -Kt.z), _e.multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse), this._frustum.setFromProjectionMatrix(_e);\n  }\n}\nclass Ya extends Et {\n  constructor(t, i, e = 0, s = 2) {\n    super(t, i), this.isPointLight = !0, this.type = \"PointLight\", this.distance = e, this.decay = s, this.shadow = new Es();\n  }\n  get power() {\n    return this.intensity * 4 * Math.PI;\n  }\n  set power(t) {\n    this.intensity = t / (4 * Math.PI);\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(t, i) {\n    return super.copy(t, i), this.distance = t.distance, this.decay = t.decay, this.shadow = t.shadow.clone(), this;\n  }\n}\nclass ks extends Be {\n  constructor(t = -1, i = 1, e = 1, s = -1, n = 0.1, r = 2e3) {\n    super(), this.isOrthographicCamera = !0, this.type = \"OrthographicCamera\", this.zoom = 1, this.view = null, this.left = t, this.right = i, this.top = e, this.bottom = s, this.near = n, this.far = r, this.updateProjectionMatrix();\n  }\n  copy(t, i) {\n    return super.copy(t, i), this.left = t.left, this.right = t.right, this.top = t.top, this.bottom = t.bottom, this.near = t.near, this.far = t.far, this.zoom = t.zoom, this.view = t.view === null ? null : Object.assign({}, t.view), this;\n  }\n  setViewOffset(t, i, e, s, n, r) {\n    this.view === null && (this.view = {\n      enabled: !0,\n      fullWidth: 1,\n      fullHeight: 1,\n      offsetX: 0,\n      offsetY: 0,\n      width: 1,\n      height: 1\n    }), this.view.enabled = !0, this.view.fullWidth = t, this.view.fullHeight = i, this.view.offsetX = e, this.view.offsetY = s, this.view.width = n, this.view.height = r, this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const t = (this.right - this.left) / (2 * this.zoom), i = (this.top - this.bottom) / (2 * this.zoom), e = (this.right + this.left) / 2, s = (this.top + this.bottom) / 2;\n    let n = e - t, r = e + t, h = s + i, a = s - i;\n    if (this.view !== null && this.view.enabled) {\n      const o = (this.right - this.left) / this.view.fullWidth / this.zoom, l = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n      n += o * this.view.offsetX, r = n + o * this.view.width, h -= l * this.view.offsetY, a = h - l * this.view.height;\n    }\n    this.projectionMatrix.makeOrthographic(n, r, h, a, this.near, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return i.object.zoom = this.zoom, i.object.left = this.left, i.object.right = this.right, i.object.top = this.top, i.object.bottom = this.bottom, i.object.near = this.near, i.object.far = this.far, this.view !== null && (i.object.view = Object.assign({}, this.view)), i;\n  }\n}\nclass Is extends Ki {\n  constructor() {\n    super(new ks(-5, 5, 5, -5, 0.5, 500)), this.isDirectionalLightShadow = !0;\n  }\n}\nclass Za extends Et {\n  constructor(t, i) {\n    super(t, i), this.isDirectionalLight = !0, this.type = \"DirectionalLight\", this.position.copy(P.DEFAULT_UP), this.updateMatrix(), this.target = new P(), this.shadow = new Is();\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(t) {\n    return super.copy(t), this.target = t.target.clone(), this.shadow = t.shadow.clone(), this;\n  }\n}\nclass Ja extends Et {\n  constructor(t, i) {\n    super(t, i), this.isAmbientLight = !0, this.type = \"AmbientLight\";\n  }\n}\nclass $a extends Et {\n  constructor(t, i, e = 10, s = 10) {\n    super(t, i), this.isRectAreaLight = !0, this.type = \"RectAreaLight\", this.width = e, this.height = s;\n  }\n  get power() {\n    return this.intensity * this.width * this.height * Math.PI;\n  }\n  set power(t) {\n    this.intensity = t / (this.width * this.height * Math.PI);\n  }\n  copy(t) {\n    return super.copy(t), this.width = t.width, this.height = t.height, this;\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return i.object.width = this.width, i.object.height = this.height, i;\n  }\n}\nclass Ds {\n  constructor() {\n    this.isSphericalHarmonics3 = !0, this.coefficients = [];\n    for (let t = 0; t < 9; t++)\n      this.coefficients.push(new f());\n  }\n  set(t) {\n    for (let i = 0; i < 9; i++)\n      this.coefficients[i].copy(t[i]);\n    return this;\n  }\n  zero() {\n    for (let t = 0; t < 9; t++)\n      this.coefficients[t].set(0, 0, 0);\n    return this;\n  }\n  // get the radiance in the direction of the normal\n  // target is a Vector3\n  getAt(t, i) {\n    const e = t.x, s = t.y, n = t.z, r = this.coefficients;\n    return i.copy(r[0]).multiplyScalar(0.282095), i.addScaledVector(r[1], 0.488603 * s), i.addScaledVector(r[2], 0.488603 * n), i.addScaledVector(r[3], 0.488603 * e), i.addScaledVector(r[4], 1.092548 * (e * s)), i.addScaledVector(r[5], 1.092548 * (s * n)), i.addScaledVector(r[6], 0.315392 * (3 * n * n - 1)), i.addScaledVector(r[7], 1.092548 * (e * n)), i.addScaledVector(r[8], 0.546274 * (e * e - s * s)), i;\n  }\n  // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n  // target is a Vector3\n  // https://graphics.stanford.edu/papers/envmap/envmap.pdf\n  getIrradianceAt(t, i) {\n    const e = t.x, s = t.y, n = t.z, r = this.coefficients;\n    return i.copy(r[0]).multiplyScalar(0.886227), i.addScaledVector(r[1], 2 * 0.511664 * s), i.addScaledVector(r[2], 2 * 0.511664 * n), i.addScaledVector(r[3], 2 * 0.511664 * e), i.addScaledVector(r[4], 2 * 0.429043 * e * s), i.addScaledVector(r[5], 2 * 0.429043 * s * n), i.addScaledVector(r[6], 0.743125 * n * n - 0.247708), i.addScaledVector(r[7], 2 * 0.429043 * e * n), i.addScaledVector(r[8], 0.429043 * (e * e - s * s)), i;\n  }\n  add(t) {\n    for (let i = 0; i < 9; i++)\n      this.coefficients[i].add(t.coefficients[i]);\n    return this;\n  }\n  addScaledSH(t, i) {\n    for (let e = 0; e < 9; e++)\n      this.coefficients[e].addScaledVector(t.coefficients[e], i);\n    return this;\n  }\n  scale(t) {\n    for (let i = 0; i < 9; i++)\n      this.coefficients[i].multiplyScalar(t);\n    return this;\n  }\n  lerp(t, i) {\n    for (let e = 0; e < 9; e++)\n      this.coefficients[e].lerp(t.coefficients[e], i);\n    return this;\n  }\n  equals(t) {\n    for (let i = 0; i < 9; i++)\n      if (!this.coefficients[i].equals(t.coefficients[i]))\n        return !1;\n    return !0;\n  }\n  copy(t) {\n    return this.set(t.coefficients);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  fromArray(t, i = 0) {\n    const e = this.coefficients;\n    for (let s = 0; s < 9; s++)\n      e[s].fromArray(t, i + s * 3);\n    return this;\n  }\n  toArray(t = [], i = 0) {\n    const e = this.coefficients;\n    for (let s = 0; s < 9; s++)\n      e[s].toArray(t, i + s * 3);\n    return t;\n  }\n  // evaluate the basis functions\n  // shBasis is an Array[ 9 ]\n  static getBasisAt(t, i) {\n    const e = t.x, s = t.y, n = t.z;\n    i[0] = 0.282095, i[1] = 0.488603 * s, i[2] = 0.488603 * n, i[3] = 0.488603 * e, i[4] = 1.092548 * e * s, i[5] = 1.092548 * s * n, i[6] = 0.315392 * (3 * n * n - 1), i[7] = 1.092548 * e * n, i[8] = 0.546274 * (e * e - s * s);\n  }\n}\nclass Qa extends Et {\n  constructor(t = new Ds(), i = 1) {\n    super(void 0, i), this.isLightProbe = !0, this.sh = t;\n  }\n  copy(t) {\n    return super.copy(t), this.sh.copy(t.sh), this;\n  }\n  fromJSON(t) {\n    return this.intensity = t.intensity, this.sh.fromArray(t.sh), this;\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return i.object.sh = this.sh.toArray(), i;\n  }\n}\nclass Ka extends As {\n  constructor(t, i, e = 1) {\n    super(t, i), this.isInstancedInterleavedBuffer = !0, this.meshPerAttribute = e;\n  }\n  copy(t) {\n    return super.copy(t), this.meshPerAttribute = t.meshPerAttribute, this;\n  }\n  clone(t) {\n    const i = super.clone(t);\n    return i.meshPerAttribute = this.meshPerAttribute, i;\n  }\n  toJSON(t) {\n    const i = super.toJSON(t);\n    return i.isInstancedInterleavedBuffer = !0, i.meshPerAttribute = this.meshPerAttribute, i;\n  }\n}\ntypeof __THREE_DEVTOOLS__ < \"u\" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", { detail: {\n  revision: ze\n} }));\ntypeof window < \"u\" && (window.__THREE__ ? console.warn(\"WARNING: Multiple instances of Three.js being imported.\") : window.__THREE__ = ze);\nexport {\n  Bn as ACESFilmicToneMapping,\n  $s as AddEquation,\n  zn as AddOperation,\n  Hs as AdditiveBlending,\n  vn as AgXToneMapping,\n  ar as AlphaFormat,\n  wa as AlwaysCompare,\n  fn as AlwaysDepth,\n  pa as AlwaysStencilFunc,\n  Ja as AmbientLight,\n  qs as BackSide,\n  Ns as BasicShadowMap,\n  ri as Box3,\n  Qi as BoxGeometry,\n  yt as BufferAttribute,\n  ai as BufferGeometry,\n  Zn as ByteType,\n  Be as Camera,\n  Cn as CineonToneMapping,\n  Nn as ClampToEdgeWrapping,\n  B as Color,\n  Q as ColorManagement,\n  _s as CubeCamera,\n  kn as CubeReflectionMapping,\n  In as CubeRefractionMapping,\n  zs as CubeTexture,\n  Ln as CubeUVReflectionMapping,\n  Ls as CullFaceBack,\n  Os as CullFaceFront,\n  Ps as CullFaceNone,\n  Js as CustomBlending,\n  Ca as DataArrayTexture,\n  ka as DataTexture,\n  ia as DecrementStencilOp,\n  sa as DecrementWrapStencilOp,\n  ur as DepthFormat,\n  pr as DepthStencilFormat,\n  La as DepthTexture,\n  Za as DirectionalLight,\n  js as DoubleSide,\n  ln as DstAlphaFactor,\n  un as DstColorFactor,\n  Sa as DynamicDrawUsage,\n  fa as EqualCompare,\n  gn as EqualDepth,\n  ha as EqualStencilFunc,\n  Dn as EquirectangularReflectionMapping,\n  Pn as EquirectangularRefractionMapping,\n  ht as Euler,\n  si as EventDispatcher,\n  Ba as Float16BufferAttribute,\n  Rt as Float32BufferAttribute,\n  tr as FloatType,\n  Pa as FramebufferTexture,\n  Us as FrontSide,\n  Cs as Frustum,\n  xa as GreaterCompare,\n  wn as GreaterDepth,\n  Ma as GreaterEqualCompare,\n  Mn as GreaterEqualDepth,\n  ua as GreaterEqualStencilFunc,\n  la as GreaterStencilFunc,\n  ir as HalfFloatType,\n  Xa as HemisphereLight,\n  $e as ImageUtils,\n  ta as IncrementStencilOp,\n  ea as IncrementWrapStencilOp,\n  Ia as InstancedBufferAttribute,\n  Ka as InstancedInterleavedBuffer,\n  Qn as IntType,\n  As as InterleavedBuffer,\n  ve as InterleavedBufferAttribute,\n  na as InvertStencilOp,\n  Qr as KeepStencilOp,\n  as as Layers,\n  ma as LessCompare,\n  yn as LessDepth,\n  ya as LessEqualCompare,\n  xn as LessEqualDepth,\n  oa as LessEqualStencilFunc,\n  aa as LessStencilFunc,\n  Et as Light,\n  Qa as LightProbe,\n  Bs as LineBasicMaterial,\n  Ga as LineDashedMaterial,\n  jn as LinearFilter,\n  Hn as LinearMipMapLinearFilter,\n  Xn as LinearMipmapLinearFilter,\n  Gn as LinearMipmapNearestFilter,\n  ie as LinearSRGBColorSpace,\n  Fn as LinearToneMapping,\n  ee as LinearTransfer,\n  cr as LuminanceAlphaFormat,\n  lr as LuminanceFormat,\n  $ as Material,\n  Aa as MathUtils,\n  xt as Matrix3,\n  O as Matrix4,\n  en as MaxEquation,\n  xs as Mesh,\n  ps as MeshBasicMaterial,\n  qa as MeshLambertMaterial,\n  ja as MeshMatcapMaterial,\n  Ua as MeshNormalMaterial,\n  Va as MeshPhongMaterial,\n  Na as MeshPhysicalMaterial,\n  vs as MeshStandardMaterial,\n  Wa as MeshToonMaterial,\n  tn as MinEquation,\n  Vn as MirroredRepeatWrapping,\n  _n as MixOperation,\n  Zs as MultiplyBlending,\n  Sn as MultiplyOperation,\n  Wn as NearestFilter,\n  qn as NearestMipmapLinearFilter,\n  Un as NearestMipmapNearestFilter,\n  Rn as NeutralToneMapping,\n  da as NeverCompare,\n  mn as NeverDepth,\n  ra as NeverStencilFunc,\n  Gs as NoBlending,\n  Ae as NoColorSpace,\n  An as NoToneMapping,\n  Xs as NormalBlending,\n  ga as NotEqualCompare,\n  bn as NotEqualDepth,\n  ca as NotEqualStencilFunc,\n  P as Object3D,\n  Jr as ObjectSpaceNormalMap,\n  nn as OneFactor,\n  cn as OneMinusDstAlphaFactor,\n  pn as OneMinusDstColorFactor,\n  on as OneMinusSrcAlphaFactor,\n  an as OneMinusSrcColorFactor,\n  ks as OrthographicCamera,\n  Vs as PCFShadowMap,\n  At as PerspectiveCamera,\n  Ht as Plane,\n  Ya as PointLight,\n  Da as PointsMaterial,\n  ni as Quaternion,\n  ei as RAD2DEG,\n  Hr as RED_GREEN_RGTC2_Format,\n  Gr as RED_RGTC1_Format,\n  ze as REVISION,\n  or as RGBAFormat,\n  gr as RGBAIntegerFormat,\n  Wr as RGBA_ASTC_10x10_Format,\n  Or as RGBA_ASTC_10x5_Format,\n  Nr as RGBA_ASTC_10x6_Format,\n  Vr as RGBA_ASTC_10x8_Format,\n  Ur as RGBA_ASTC_12x10_Format,\n  qr as RGBA_ASTC_12x12_Format,\n  vr as RGBA_ASTC_4x4_Format,\n  Rr as RGBA_ASTC_5x4_Format,\n  Er as RGBA_ASTC_5x5_Format,\n  kr as RGBA_ASTC_6x5_Format,\n  Ir as RGBA_ASTC_6x6_Format,\n  Dr as RGBA_ASTC_8x5_Format,\n  Pr as RGBA_ASTC_8x6_Format,\n  Lr as RGBA_ASTC_8x8_Format,\n  jr as RGBA_BPTC_Format,\n  Br as RGBA_ETC2_EAC_Format,\n  Fr as RGBA_PVRTC_2BPPV1_Format,\n  Ar as RGBA_PVRTC_4BPPV1_Format,\n  wr as RGBA_S3TC_DXT1_Format,\n  br as RGBA_S3TC_DXT3_Format,\n  Sr as RGBA_S3TC_DXT5_Format,\n  hr as RGBFormat,\n  xr as RGBIntegerFormat,\n  Tr as RGB_ETC1_Format,\n  Cr as RGB_ETC2_Format,\n  zr as RGB_PVRTC_2BPPV1_Format,\n  _r as RGB_PVRTC_4BPPV1_Format,\n  Mr as RGB_S3TC_DXT1_Format,\n  fr as RGFormat,\n  yr as RGIntegerFormat,\n  ss as Ray,\n  $a as RectAreaLight,\n  dr as RedFormat,\n  mr as RedIntegerFormat,\n  Tn as ReinhardToneMapping,\n  ts as RenderTarget,\n  On as RepeatWrapping,\n  Kr as ReplaceStencilOp,\n  Ks as ReverseSubtractEquation,\n  Yr as SIGNED_RED_GREEN_RGTC2_Format,\n  Xr as SIGNED_RED_RGTC1_Format,\n  et as SRGBColorSpace,\n  Fi as SRGBTransfer,\n  Ra as Scene,\n  Ss as ShaderMaterial,\n  Oa as ShadowMaterial,\n  Jn as ShortType,\n  Fe as Source,\n  $i as Sphere,\n  Re as SphereGeometry,\n  Ds as SphericalHarmonics3,\n  Ha as SpotLight,\n  Ea as SpriteMaterial,\n  hn as SrcAlphaFactor,\n  dn as SrcAlphaSaturateFactor,\n  rn as SrcColorFactor,\n  ba as StaticDrawUsage,\n  Qs as SubtractEquation,\n  Ys as SubtractiveBlending,\n  Zr as TangentSpaceNormalMap,\n  Z as Texture,\n  st as Triangle,\n  En as UVMapping,\n  ms as Uint16BufferAttribute,\n  fs as Uint32BufferAttribute,\n  Yn as UnsignedByteType,\n  nr as UnsignedInt248Type,\n  rr as UnsignedInt5999Type,\n  Kn as UnsignedIntType,\n  er as UnsignedShort4444Type,\n  sr as UnsignedShort5551Type,\n  $n as UnsignedShortType,\n  Ws as VSMShadowMap,\n  C as Vector2,\n  f as Vector3,\n  j as Vector4,\n  _a as WebGLCoordinateSystem,\n  va as WebGLCubeRenderTarget,\n  is as WebGLRenderTarget,\n  za as WebGPUCoordinateSystem,\n  sn as ZeroFactor,\n  $r as ZeroStencilOp,\n  Ze as arrayNeedsUint32,\n  Ce as cloneUniforms,\n  Fa as createCanvasElement,\n  Zi as createElementNS,\n  Ta as warnOnce\n};\n","import { RenderTarget as ms, DepthTexture as ys, WebGLCoordinateSystem as En, WebGPUCoordinateSystem as sn, Vector3 as Y, Vector2 as He, Vector4 as Ce, Material as bu, NormalBlending as zs, AddOperation as rg, MixOperation as ig, MultiplyOperation as og, MeshBasicMaterial as Gc, Plane as Oc, UVMapping as ag, SRGBColorSpace as q, NoToneMapping as $s, PCFShadowMap as ug, HalfFloatType as at, RGBAFormat as Xs, LinearSRGBColorSpace as cs, LinearFilter as Lt, BackSide as Tt, FrontSide as ho, DoubleSide as Ws, warnOnce as cg, PointLight as lg, DirectionalLight as dg, RectAreaLight as hg, SpotLight as kc, AmbientLight as pg, HemisphereLight as fg, LightProbe as gg, LinearToneMapping as mg, ReinhardToneMapping as yg, CineonToneMapping as xg, ACESFilmicToneMapping as Tg, AgXToneMapping as _g, NeutralToneMapping as Ng, EventDispatcher as zc, MathUtils as $c, DynamicDrawUsage as Is, Matrix3 as $n, Matrix4 as Ue, DepthStencilFormat as Zr, DepthFormat as Jr, UnsignedInt248Type as ei, UnsignedIntType as Pe, UnsignedByteType as ls, EquirectangularReflectionMapping as Wn, EquirectangularRefractionMapping as Hn, CubeReflectionMapping as Ks, CubeRefractionMapping as Ys, Color as Ct, Mesh as js, Euler as bg, ColorManagement as ht, SphereGeometry as Sg, CubeUVReflectionMapping as po, Scene as Wc, Frustum as vg, NoColorSpace as wn, DataTexture as Ag, FloatType as st, IntType as Ve, createCanvasElement as Rg, REVISION as Hc, AddEquation as Us, SubtractEquation as qc, ReverseSubtractEquation as Xc, ZeroFactor as Kc, OneFactor as Yc, SrcColorFactor as jc, SrcAlphaFactor as Qc, SrcAlphaSaturateFactor as Zc, DstColorFactor as Jc, DstAlphaFactor as el, OneMinusSrcColorFactor as tl, OneMinusSrcAlphaFactor as sl, OneMinusDstColorFactor as nl, OneMinusDstAlphaFactor as rl, CullFaceNone as Cg, CullFaceBack as Eg, CullFaceFront as wg, NoBlending as Mn, CustomBlending as il, MultiplyBlending as Dr, SubtractiveBlending as Ir, AdditiveBlending as Lr, NotEqualDepth as ol, GreaterDepth as al, GreaterEqualDepth as ul, EqualDepth as cl, LessEqualDepth as ll, LessDepth as dl, AlwaysDepth as hl, NeverDepth as pl, UnsignedShort4444Type as Mg, UnsignedShort5551Type as Bg, UnsignedInt5999Type as fl, ByteType as Tn, ShortType as _n, UnsignedShortType as Ls, AlphaFormat as Fg, RGBFormat as Jo, LuminanceFormat as Ug, LuminanceAlphaFormat as Pg, RedFormat as ea, RedIntegerFormat as ta, RGFormat as Bn, RGIntegerFormat as sa, RGBAIntegerFormat as na, RGB_S3TC_DXT1_Format as Ei, RGBA_S3TC_DXT1_Format as vr, RGBA_S3TC_DXT3_Format as Ar, RGBA_S3TC_DXT5_Format as Rr, RGB_PVRTC_4BPPV1_Format as Su, RGB_PVRTC_2BPPV1_Format as vu, RGBA_PVRTC_4BPPV1_Format as Au, RGBA_PVRTC_2BPPV1_Format as Ru, RGB_ETC1_Format as Cu, RGB_ETC2_Format as fo, RGBA_ETC2_EAC_Format as go, RGBA_ASTC_4x4_Format as mo, RGBA_ASTC_5x4_Format as yo, RGBA_ASTC_5x5_Format as xo, RGBA_ASTC_6x5_Format as To, RGBA_ASTC_6x6_Format as _o, RGBA_ASTC_8x5_Format as No, RGBA_ASTC_8x6_Format as bo, RGBA_ASTC_8x8_Format as So, RGBA_ASTC_10x5_Format as vo, RGBA_ASTC_10x6_Format as Ao, RGBA_ASTC_10x8_Format as Ro, RGBA_ASTC_10x10_Format as Co, RGBA_ASTC_12x10_Format as Eo, RGBA_ASTC_12x12_Format as wo, RGBA_BPTC_Format as wi, RED_RGTC1_Format as Dg, SIGNED_RED_RGTC1_Format as Eu, RED_GREEN_RGTC2_Format as wu, SIGNED_RED_GREEN_RGTC2_Format as Mu, RepeatWrapping as ti, ClampToEdgeWrapping as ra, MirroredRepeatWrapping as si, NearestFilter as pt, NearestMipmapNearestFilter as Mo, NearestMipmapLinearFilter as Hs, LinearMipmapNearestFilter as Bo, LinearMipmapLinearFilter as ds, NeverCompare as gl, AlwaysCompare as ml, LessCompare as ia, LessEqualCompare as yl, EqualCompare as xl, GreaterEqualCompare as Tl, GreaterCompare as _l, NotEqualCompare as Nl, SRGBTransfer as Bu, StaticDrawUsage as Ig, InterleavedBuffer as Lg, TangentSpaceNormalMap as Fu, ObjectSpaceNormalMap as Vg, InstancedInterleavedBuffer as Gg, InstancedBufferAttribute as oa, FramebufferTexture as bl, LineBasicMaterial as Og, LineDashedMaterial as kg, MeshNormalMaterial as zg, CubeTexture as Sl, MeshLambertMaterial as $g, MeshPhongMaterial as Wg, Texture as vl, MeshStandardMaterial as Hg, MeshPhysicalMaterial as qg, MeshToonMaterial as Xg, MeshMatcapMaterial as Kg, PointsMaterial as Yg, SpriteMaterial as jg, ShadowMaterial as Qg, Uint32BufferAttribute as Zg, Uint16BufferAttribute as Jg, Object3D as em, LinearMipMapLinearFilter as tm, OrthographicCamera as Al, BufferAttribute as Cr, VSMShadowMap as or, Float16BufferAttribute as Rl, RGBIntegerFormat as sm, NotEqualStencilFunc as nm, GreaterStencilFunc as rm, GreaterEqualStencilFunc as im, EqualStencilFunc as om, LessEqualStencilFunc as am, LessStencilFunc as um, AlwaysStencilFunc as cm, NeverStencilFunc as lm, DecrementWrapStencilOp as dm, IncrementWrapStencilOp as hm, DecrementStencilOp as pm, IncrementStencilOp as fm, InvertStencilOp as gm, ReplaceStencilOp as mm, ZeroStencilOp as ym, KeepStencilOp as xm, MaxEquation as Tm, MinEquation as _m, InterleavedBufferAttribute as Nm, DataArrayTexture as bm, WebGLCubeRenderTarget as Sm, BoxGeometry as Cl, CubeCamera as vm, BufferGeometry as El, Float32BufferAttribute as Uu, BasicShadowMap as Am, PerspectiveCamera as Rm } from \"./three.core.js\";\nimport { Box3 as tR, Camera as sR, ImageUtils as nR, Layers as rR, Light as iR, LinearTransfer as oR, Quaternion as aR, Ray as uR, ShaderMaterial as cR, Source as lR, Sphere as dR, SphericalHarmonics3 as hR, Triangle as pR, WebGLRenderTarget as fR } from \"./three.core.js\";\n/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst Cm = [\n  \"alphaMap\",\n  \"alphaTest\",\n  \"anisotropy\",\n  \"anisotropyMap\",\n  \"anisotropyRotation\",\n  \"aoMap\",\n  \"attenuationColor\",\n  \"attenuationDistance\",\n  \"bumpMap\",\n  \"clearcoat\",\n  \"clearcoatMap\",\n  \"clearcoatNormalMap\",\n  \"clearcoatNormalScale\",\n  \"clearcoatRoughness\",\n  \"color\",\n  \"dispersion\",\n  \"displacementMap\",\n  \"emissive\",\n  \"emissiveMap\",\n  \"envMap\",\n  \"gradientMap\",\n  \"ior\",\n  \"iridescence\",\n  \"iridescenceIOR\",\n  \"iridescenceMap\",\n  \"iridescenceThicknessMap\",\n  \"lightMap\",\n  \"map\",\n  \"matcap\",\n  \"metalness\",\n  \"metalnessMap\",\n  \"normalMap\",\n  \"normalScale\",\n  \"opacity\",\n  \"roughness\",\n  \"roughnessMap\",\n  \"sheen\",\n  \"sheenColor\",\n  \"sheenColorMap\",\n  \"sheenRoughnessMap\",\n  \"shininess\",\n  \"specular\",\n  \"specularColor\",\n  \"specularColorMap\",\n  \"specularIntensity\",\n  \"specularIntensityMap\",\n  \"specularMap\",\n  \"thickness\",\n  \"transmission\",\n  \"transmissionMap\"\n];\nclass Em {\n  /**\n   * Constructs a new node material observer.\n   *\n   * @param {NodeBuilder} builder - The node builder.\n   */\n  constructor(e) {\n    this.renderObjects = /* @__PURE__ */ new WeakMap(), this.hasNode = this.containsNode(e), this.hasAnimation = e.object.isSkinnedMesh === !0, this.refreshUniforms = Cm, this.renderId = 0;\n  }\n  /**\n   * Returns `true` if the given render object is verified for the first time of this observer.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether the given render object is verified for the first time of this observer.\n   */\n  firstInitialization(e) {\n    return this.renderObjects.has(e) === !1 ? (this.getRenderObjectData(e), !0) : !1;\n  }\n  /**\n   * Returns monitoring data for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Object} The monitoring data.\n   */\n  getRenderObjectData(e) {\n    let t = this.renderObjects.get(e);\n    if (t === void 0) {\n      const { geometry: s, material: n, object: r } = e;\n      if (t = {\n        material: this.getMaterialData(n),\n        geometry: {\n          attributes: this.getAttributesData(s.attributes),\n          indexVersion: s.index ? s.index.version : null,\n          drawRange: { start: s.drawRange.start, count: s.drawRange.count }\n        },\n        worldMatrix: r.matrixWorld.clone()\n      }, r.center && (t.center = r.center.clone()), r.morphTargetInfluences && (t.morphTargetInfluences = r.morphTargetInfluences.slice()), e.bundle !== null && (t.version = e.bundle.version), t.material.transmission > 0) {\n        const { width: i, height: a } = e.context;\n        t.bufferWidth = i, t.bufferHeight = a;\n      }\n      this.renderObjects.set(e, t);\n    }\n    return t;\n  }\n  /**\n   * Returns an attribute data structure holding the attributes versions for\n   * monitoring.\n   *\n   * @param {Object} attributes - The geometry attributes.\n   * @return {Object} An object for monitoring the versions of attributes.\n   */\n  getAttributesData(e) {\n    const t = {};\n    for (const s in e) {\n      const n = e[s];\n      t[s] = {\n        version: n.version\n      };\n    }\n    return t;\n  }\n  /**\n   * Returns `true` if the node builder's material uses\n   * node properties.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Boolean} Whether the node builder's material uses node properties or not.\n   */\n  containsNode(e) {\n    const t = e.material;\n    for (const s in t)\n      if (t[s] && t[s].isNode)\n        return !0;\n    return e.renderer.nodes.modelViewMatrix !== null || e.renderer.nodes.modelNormalViewMatrix !== null;\n  }\n  /**\n   * Returns a material data structure holding the material property values for\n   * monitoring.\n   *\n   * @param {Material} material - The material.\n   * @return {Object} An object for monitoring material properties.\n   */\n  getMaterialData(e) {\n    const t = {};\n    for (const s of this.refreshUniforms) {\n      const n = e[s];\n      n != null && (typeof n == \"object\" && n.clone !== void 0 ? n.isTexture === !0 ? t[s] = { id: n.id, version: n.version } : t[s] = n.clone() : t[s] = n);\n    }\n    return t;\n  }\n  /**\n   * Returns `true` if the given render object has not changed its state.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether the given render object has changed its state or not.\n   */\n  equals(e) {\n    const { object: t, material: s, geometry: n } = e, r = this.getRenderObjectData(e);\n    if (r.worldMatrix.equals(t.matrixWorld) !== !0)\n      return r.worldMatrix.copy(t.matrixWorld), !1;\n    const i = r.material;\n    for (const m in i) {\n      const _ = i[m], S = s[m];\n      if (_.equals !== void 0) {\n        if (_.equals(S) === !1)\n          return _.copy(S), !1;\n      } else if (S.isTexture === !0) {\n        if (_.id !== S.id || _.version !== S.version)\n          return _.id = S.id, _.version = S.version, !1;\n      } else if (_ !== S)\n        return i[m] = S, !1;\n    }\n    if (i.transmission > 0) {\n      const { width: m, height: _ } = e.context;\n      if (r.bufferWidth !== m || r.bufferHeight !== _)\n        return r.bufferWidth = m, r.bufferHeight = _, !1;\n    }\n    const a = r.geometry, u = n.attributes, c = a.attributes, l = Object.keys(c), d = Object.keys(u);\n    if (l.length !== d.length)\n      return r.geometry.attributes = this.getAttributesData(u), !1;\n    for (const m of l) {\n      const _ = c[m], S = u[m];\n      if (S === void 0)\n        return delete c[m], !1;\n      if (_.version !== S.version)\n        return _.version = S.version, !1;\n    }\n    const h = n.index, p = a.indexVersion, f = h ? h.version : null;\n    if (p !== f)\n      return a.indexVersion = f, !1;\n    if (a.drawRange.start !== n.drawRange.start || a.drawRange.count !== n.drawRange.count)\n      return a.drawRange.start = n.drawRange.start, a.drawRange.count = n.drawRange.count, !1;\n    if (r.morphTargetInfluences) {\n      let m = !1;\n      for (let _ = 0; _ < r.morphTargetInfluences.length; _++)\n        r.morphTargetInfluences[_] !== t.morphTargetInfluences[_] && (m = !0);\n      if (m) return !0;\n    }\n    return r.center && r.center.equals(t.center) === !1 ? (r.center.copy(t.center), !0) : (e.bundle !== null && (r.version = e.bundle.version), !0);\n  }\n  /**\n   * Checks if the given render object requires a refresh.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @param {NodeFrame} nodeFrame - The current node frame.\n   * @return {Boolean} Whether the given render object requires a refresh or not.\n   */\n  needsRefresh(e, t) {\n    if (this.hasNode || this.hasAnimation || this.firstInitialization(e))\n      return !0;\n    const { renderId: s } = t;\n    if (this.renderId !== s)\n      return this.renderId = s, !0;\n    const n = e.object.static === !0, r = e.bundle !== null && e.bundle.static === !0 && this.getRenderObjectData(e).version === e.bundle.version;\n    return n || r ? !1 : this.equals(e) !== !0;\n  }\n}\nfunction Fn(o, e = 0) {\n  let t = 3735928559 ^ e, s = 1103547991 ^ e;\n  if (o instanceof Array)\n    for (let n = 0, r; n < o.length; n++)\n      r = o[n], t = Math.imul(t ^ r, 2654435761), s = Math.imul(s ^ r, 1597334677);\n  else\n    for (let n = 0, r; n < o.length; n++)\n      r = o.charCodeAt(n), t = Math.imul(t ^ r, 2654435761), s = Math.imul(s ^ r, 1597334677);\n  return t = Math.imul(t ^ t >>> 16, 2246822507), t ^= Math.imul(s ^ s >>> 13, 3266489909), s = Math.imul(s ^ s >>> 16, 2246822507), s ^= Math.imul(t ^ t >>> 13, 3266489909), 4294967296 * (2097151 & s) + (t >>> 0);\n}\nconst wl = (o) => Fn(o), ni = (o) => Fn(o), aa = (...o) => Fn(o);\nfunction Ml(o, e = !1) {\n  const t = [];\n  o.isNode === !0 && (t.push(o.id), o = o.getSelf());\n  for (const { property: s, childNode: n } of Vr(o))\n    t.push(t, Fn(s.slice(0, -4)), n.getCacheKey(e));\n  return Fn(t);\n}\nfunction* Vr(o, e = !1) {\n  for (const t in o) {\n    if (t.startsWith(\"_\") === !0) continue;\n    const s = o[t];\n    if (Array.isArray(s) === !0)\n      for (let n = 0; n < s.length; n++) {\n        const r = s[n];\n        r && (r.isNode === !0 || e && typeof r.toJSON == \"function\") && (yield { property: t, index: n, childNode: r });\n      }\n    else if (s && s.isNode === !0)\n      yield { property: t, childNode: s };\n    else if (typeof s == \"object\")\n      for (const n in s) {\n        const r = s[n];\n        r && (r.isNode === !0 || e && typeof r.toJSON == \"function\") && (yield { property: t, index: n, childNode: r });\n      }\n  }\n}\nconst wm = /* @__PURE__ */ new Map([\n  [1, \"float\"],\n  [2, \"vec2\"],\n  [3, \"vec3\"],\n  [4, \"vec4\"],\n  [9, \"mat3\"],\n  [16, \"mat4\"]\n]), Pu = /* @__PURE__ */ new WeakMap();\nfunction Bl(o) {\n  return wm.get(o);\n}\nfunction Fl(o) {\n  if (/[iu]?vec\\d/.test(o))\n    return o.startsWith(\"ivec\") ? Int32Array : o.startsWith(\"uvec\") ? Uint32Array : Float32Array;\n  if (/mat\\d/.test(o) || /float/.test(o)) return Float32Array;\n  if (/uint/.test(o)) return Uint32Array;\n  if (/int/.test(o)) return Int32Array;\n  throw new Error(`THREE.NodeUtils: Unsupported type: ${o}`);\n}\nfunction Ul(o) {\n  if (/float|int|uint/.test(o)) return 1;\n  if (/vec2/.test(o)) return 2;\n  if (/vec3/.test(o)) return 3;\n  if (/vec4/.test(o)) return 4;\n  if (/mat3/.test(o)) return 9;\n  if (/mat4/.test(o)) return 16;\n  console.error(\"THREE.TSL: Unsupported type:\", o);\n}\nfunction Yt(o) {\n  if (o == null) return null;\n  const e = typeof o;\n  return o.isNode === !0 ? \"node\" : e === \"number\" ? \"float\" : e === \"boolean\" ? \"bool\" : e === \"string\" ? \"string\" : e === \"function\" ? \"shader\" : o.isVector2 === !0 ? \"vec2\" : o.isVector3 === !0 ? \"vec3\" : o.isVector4 === !0 ? \"vec4\" : o.isMatrix3 === !0 ? \"mat3\" : o.isMatrix4 === !0 ? \"mat4\" : o.isColor === !0 ? \"color\" : o instanceof ArrayBuffer ? \"ArrayBuffer\" : null;\n}\nfunction Pl(o, ...e) {\n  const t = o ? o.slice(-4) : void 0;\n  return e.length === 1 && (t === \"vec2\" ? e = [e[0], e[0]] : t === \"vec3\" ? e = [e[0], e[0], e[0]] : t === \"vec4\" && (e = [e[0], e[0], e[0], e[0]])), o === \"color\" ? new Ct(...e) : t === \"vec2\" ? new He(...e) : t === \"vec3\" ? new Y(...e) : t === \"vec4\" ? new Ce(...e) : t === \"mat3\" ? new $n(...e) : t === \"mat4\" ? new Ue(...e) : o === \"bool\" ? e[0] || !1 : o === \"float\" || o === \"int\" || o === \"uint\" ? e[0] || 0 : o === \"string\" ? e[0] || \"\" : o === \"ArrayBuffer\" ? Ll(e[0]) : null;\n}\nfunction Dl(o) {\n  let e = Pu.get(o);\n  return e === void 0 && (e = {}, Pu.set(o, e)), e;\n}\nfunction Il(o) {\n  let e = \"\";\n  const t = new Uint8Array(o);\n  for (let s = 0; s < t.length; s++)\n    e += String.fromCharCode(t[s]);\n  return btoa(e);\n}\nfunction Ll(o) {\n  return Uint8Array.from(atob(o), (e) => e.charCodeAt(0)).buffer;\n}\nconst Fo = {\n  VERTEX: \"vertex\",\n  FRAGMENT: \"fragment\"\n}, z = {\n  NONE: \"none\",\n  FRAME: \"frame\",\n  RENDER: \"render\",\n  OBJECT: \"object\"\n}, Mm = {\n  BOOLEAN: \"bool\",\n  INTEGER: \"int\",\n  FLOAT: \"float\",\n  VECTOR2: \"vec2\",\n  VECTOR3: \"vec3\",\n  VECTOR4: \"vec4\",\n  MATRIX2: \"mat2\",\n  MATRIX3: \"mat3\",\n  MATRIX4: \"mat4\"\n}, De = {\n  READ_ONLY: \"readOnly\",\n  WRITE_ONLY: \"writeOnly\",\n  READ_WRITE: \"readWrite\"\n}, Vl = [\"fragment\", \"vertex\"], Uo = [\"setup\", \"analyze\", \"generate\"], Po = [...Vl, \"compute\"], xs = [\"x\", \"y\", \"z\", \"w\"];\nlet Bm = 0;\nclass G extends zc {\n  static get type() {\n    return \"Node\";\n  }\n  /**\n   * Constructs a new node.\n   *\n   * @param {String?} nodeType - The node type.\n   */\n  constructor(e = null) {\n    super(), this.nodeType = e, this.updateType = z.NONE, this.updateBeforeType = z.NONE, this.updateAfterType = z.NONE, this.uuid = $c.generateUUID(), this.version = 0, this.global = !1, this.isNode = !0, this._cacheKey = null, this._cacheKeyVersion = 0, Object.defineProperty(this, \"id\", { value: Bm++ });\n  }\n  /**\n   * Set this property to `true` when the node should be regenerated.\n   *\n   * @type {Boolean}\n   * @default false\n   * @param {boolean} value\n   */\n  set needsUpdate(e) {\n    e === !0 && this.version++;\n  }\n  /**\n   * The type of the class. The value is usually the constructor name.\n   *\n   * @type {String}\n  \t * @readonly\n   */\n  get type() {\n    return this.constructor.type;\n  }\n  /**\n   * Convenient method for defining {@link Node#update}.\n   *\n   * @param {Function} callback - The update method.\n   * @param {String} updateType - The update type.\n   * @return {Node} A reference to this node.\n   */\n  onUpdate(e, t) {\n    return this.updateType = t, this.update = e.bind(this.getSelf()), this;\n  }\n  /**\n   * Convenient method for defining {@link Node#update}. Similar to {@link Node#onUpdate}, but\n   * this method automatically sets the update type to `FRAME`.\n   *\n   * @param {Function} callback - The update method.\n   * @return {Node} A reference to this node.\n   */\n  onFrameUpdate(e) {\n    return this.onUpdate(e, z.FRAME);\n  }\n  /**\n   * Convenient method for defining {@link Node#update}. Similar to {@link Node#onUpdate}, but\n   * this method automatically sets the update type to `RENDER`.\n   *\n   * @param {Function} callback - The update method.\n   * @return {Node} A reference to this node.\n   */\n  onRenderUpdate(e) {\n    return this.onUpdate(e, z.RENDER);\n  }\n  /**\n   * Convenient method for defining {@link Node#update}. Similar to {@link Node#onUpdate}, but\n   * this method automatically sets the update type to `OBJECT`.\n   *\n   * @param {Function} callback - The update method.\n   * @return {Node} A reference to this node.\n   */\n  onObjectUpdate(e) {\n    return this.onUpdate(e, z.OBJECT);\n  }\n  /**\n   * Convenient method for defining {@link Node#updateReference}.\n   *\n   * @param {Function} callback - The update method.\n   * @return {Node} A reference to this node.\n   */\n  onReference(e) {\n    return this.updateReference = e.bind(this.getSelf()), this;\n  }\n  /**\n   * The `this` reference might point to a Proxy so this method can be used\n   * to get the reference to the actual node instance.\n   *\n   * @return {Node} A reference to the node.\n   */\n  getSelf() {\n    return this.self || this;\n  }\n  /**\n   * Nodes might refer to other objects like materials. This method allows to dynamically update the reference\n   * to such objects based on a given state (e.g. the current node frame or builder).\n   *\n   * @param {Any} state - This method can be invocated in different contexts so `state` can refer to any object type.\n   * @return {Any} The updated reference.\n   */\n  updateReference() {\n    return this;\n  }\n  /**\n   * By default this method returns the value of the {@link Node#global} flag. This method\n   * can be overwritten in derived classes if an analytical way is required to determine the\n   * global status.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Boolean} Whether this node is global or not.\n   */\n  isGlobal() {\n    return this.global;\n  }\n  /**\n   * Generator function that can be used to iterate over the child nodes.\n   *\n   * @generator\n   * @yields {Node} A child node.\n   */\n  *getChildren() {\n    for (const { childNode: e } of Vr(this))\n      yield e;\n  }\n  /**\n   * Calling this method dispatches the `dispose` event. This event can be used\n   * to register event listeners for clean up tasks.\n   */\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  /**\n   * Callback for {@link Node#traverse}.\n   *\n   * @callback traverseCallback\n   * @param {Node} node - The current node.\n   */\n  /**\n   * Can be used to traverse through the node's hierarchy.\n   *\n   * @param {traverseCallback} callback - A callback that is executed per node.\n   */\n  traverse(e) {\n    e(this);\n    for (const t of this.getChildren())\n      t.traverse(e);\n  }\n  /**\n   * Returns the cache key for this node.\n   *\n   * @param {Boolean} [force=false] - When set to `true`, a recomputation of the cache key is forced.\n   * @return {Number} The cache key of the node.\n   */\n  getCacheKey(e = !1) {\n    return e = e || this.version !== this._cacheKeyVersion, (e === !0 || this._cacheKey === null) && (this._cacheKey = aa(Ml(this, e), this.customCacheKey()), this._cacheKeyVersion = this.version), this._cacheKey;\n  }\n  /**\n   * Generate a custom cache key for this node.\n   *\n   * @return {Number} The cache key of the node.\n   */\n  customCacheKey() {\n    return 0;\n  }\n  /**\n   * Returns the references to this node which is by default `this`.\n   *\n   * @return {Node} A reference to this node.\n   */\n  getScope() {\n    return this;\n  }\n  /**\n   * Returns the hash of the node which is used to identify the node. By default it's\n   * the {@link Node#uuid} however derived node classes might have to overwrite this method\n   * depending on their implementation.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The hash.\n   */\n  getHash() {\n    return this.uuid;\n  }\n  /**\n   * Returns the update type of {@link Node#update}.\n   *\n   * @return {NodeUpdateType} The update type.\n   */\n  getUpdateType() {\n    return this.updateType;\n  }\n  /**\n   * Returns the update type of {@link Node#updateBefore}.\n   *\n   * @return {NodeUpdateType} The update type.\n   */\n  getUpdateBeforeType() {\n    return this.updateBeforeType;\n  }\n  /**\n   * Returns the update type of {@link Node#updateAfter}.\n   *\n   * @return {NodeUpdateType} The update type.\n   */\n  getUpdateAfterType() {\n    return this.updateAfterType;\n  }\n  /**\n   * Certain types are composed of multiple elements. For example a `vec3`\n   * is composed of three `float` values. This method returns the type of\n   * these elements.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The type of the node.\n   */\n  getElementType(e) {\n    const t = this.getNodeType(e);\n    return e.getElementType(t);\n  }\n  /**\n   * Returns the node's type.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The type of the node.\n   */\n  getNodeType(e) {\n    const t = e.getNodeProperties(this);\n    return t.outputNode ? t.outputNode.getNodeType(e) : this.nodeType;\n  }\n  /**\n   * This method is used during the build process of a node and ensures\n   * equal nodes are not built multiple times but just once. For example if\n   * `attribute( 'uv' )` is used multiple times by the user, the build\n   * process makes sure to process just the first node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node} The shared node if possible. Otherwise `this` is returned.\n   */\n  getShared(e) {\n    const t = this.getHash(e);\n    return e.getNodeFromHash(t) || this;\n  }\n  /**\n   * Represents the setup stage which is the first step of the build process, see {@link Node#build} method.\n   * This method is often overwritten in derived modules to prepare the node which is used as the output/result.\n   * The output node must be returned in the `return` statement.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node?} The output node.\n   */\n  setup(e) {\n    const t = e.getNodeProperties(this);\n    let s = 0;\n    for (const n of this.getChildren())\n      t[\"node\" + s++] = n;\n    return t.outputNode || null;\n  }\n  /**\n   * Represents the analyze stage which is the second step of the build process, see {@link Node#build} method.\n   * This stage analyzes the node hierarchy and ensures descendent nodes are built.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  analyze(e) {\n    if (e.increaseUsage(this) === 1) {\n      const s = e.getNodeProperties(this);\n      for (const n of Object.values(s))\n        n && n.isNode === !0 && n.build(e);\n    }\n  }\n  /**\n   * Represents the generate stage which is the third step of the build process, see {@link Node#build} method.\n   * This state builds the output node and returns the resulting shader string.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String?} output - Can be used to define the output type.\n   * @return {String?} The generated shader string.\n   */\n  generate(e, t) {\n    const { outputNode: s } = e.getNodeProperties(this);\n    if (s && s.isNode === !0)\n      return s.build(e, t);\n  }\n  /**\n   * The method can be implemented to update the node's internal state before it is used to render an object.\n   * The {@link Node#updateBeforeType} property defines how often the update is executed.\n   *\n   * @abstract\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   * @return {Boolean?} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).\n   */\n  updateBefore() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * The method can be implemented to update the node's internal state after it was used to render an object.\n   * The {@link Node#updateAfterType} property defines how often the update is executed.\n   *\n   * @abstract\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   * @return {Boolean?} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).\n   */\n  updateAfter() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * The method can be implemented to update the node's internal state when it is used to render an object.\n   * The {@link Node#updateType} property defines how often the update is executed.\n   *\n   * @abstract\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   * @return {Boolean?} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).\n   */\n  update() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * This method performs the build of a node. The behavior of this method as well as its return value depend\n   * on the current build stage (setup, analyze or generate).\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String?} output - Can be used to define the output type.\n   * @return {String?} When this method is executed in the setup or analyze stage, `null` is returned. In the generate stage, the generated shader string.\n   */\n  build(e, t = null) {\n    const s = this.getShared(e);\n    if (this !== s)\n      return s.build(e, t);\n    e.addNode(this), e.addChain(this);\n    let n = null;\n    const r = e.getBuildStage();\n    if (r === \"setup\") {\n      this.updateReference(e);\n      const i = e.getNodeProperties(this);\n      if (i.initialized !== !0) {\n        i.initialized = !0;\n        const a = this.setup(e), u = a && a.isNode === !0;\n        for (const c of Object.values(i))\n          c && c.isNode === !0 && c.build(e);\n        u && a.build(e), i.outputNode = a;\n      }\n    } else if (r === \"analyze\")\n      this.analyze(e);\n    else if (r === \"generate\")\n      if (this.generate.length === 1) {\n        const a = this.getNodeType(e), u = e.getDataFromNode(this);\n        n = u.snippet, n === void 0 ? (n = this.generate(e) || \"\", u.snippet = n) : u.flowCodes !== void 0 && e.context.nodeBlock !== void 0 && e.addFlowCodeHierarchy(this, e.context.nodeBlock), n = e.format(n, a, t);\n      } else\n        n = this.generate(e, t) || \"\";\n    return e.removeChain(this), e.addSequentialNode(this), n;\n  }\n  /**\n   * Returns the child nodes as a JSON object.\n   *\n   * @return {Object} The serialized child objects as JSON.\n   */\n  getSerializeChildren() {\n    return Vr(this);\n  }\n  /**\n   * Serializes the node to JSON.\n   *\n   * @param {Object} json - The output JSON object.\n   */\n  serialize(e) {\n    const t = this.getSerializeChildren(), s = {};\n    for (const { property: n, index: r, childNode: i } of t)\n      r !== void 0 ? (s[n] === void 0 && (s[n] = Number.isInteger(r) ? [] : {}), s[n][r] = i.toJSON(e.meta).uuid) : s[n] = i.toJSON(e.meta).uuid;\n    Object.keys(s).length > 0 && (e.inputNodes = s);\n  }\n  /**\n   * Deserializes the node from the given JSON.\n   *\n   * @param {Object} json - The JSON object.\n   */\n  deserialize(e) {\n    if (e.inputNodes !== void 0) {\n      const t = e.meta.nodes;\n      for (const s in e.inputNodes)\n        if (Array.isArray(e.inputNodes[s])) {\n          const n = [];\n          for (const r of e.inputNodes[s])\n            n.push(t[r]);\n          this[s] = n;\n        } else if (typeof e.inputNodes[s] == \"object\") {\n          const n = {};\n          for (const r in e.inputNodes[s]) {\n            const i = e.inputNodes[s][r];\n            n[r] = t[i];\n          }\n          this[s] = n;\n        } else {\n          const n = e.inputNodes[s];\n          this[s] = t[n];\n        }\n    }\n  }\n  /**\n   * Serializes the node into the three.js JSON Object/Scene format.\n   *\n   * @param {Object?} meta - An optional JSON object that already holds serialized data from other scene objects.\n   * @return {Object} The serialized node.\n   */\n  toJSON(e) {\n    const { uuid: t, type: s } = this, n = e === void 0 || typeof e == \"string\";\n    n && (e = {\n      textures: {},\n      images: {},\n      nodes: {}\n    });\n    let r = e.nodes[t];\n    r === void 0 && (r = {\n      uuid: t,\n      type: s,\n      meta: e,\n      metadata: {\n        version: 4.6,\n        type: \"Node\",\n        generator: \"Node.toJSON\"\n      }\n    }, n !== !0 && (e.nodes[r.uuid] = r), this.serialize(r), delete r.meta);\n    function i(a) {\n      const u = [];\n      for (const c in a) {\n        const l = a[c];\n        delete l.metadata, u.push(l);\n      }\n      return u;\n    }\n    if (n) {\n      const a = i(e.textures), u = i(e.images), c = i(e.nodes);\n      a.length > 0 && (r.textures = a), u.length > 0 && (r.images = u), c.length > 0 && (r.nodes = c);\n    }\n    return r;\n  }\n}\nclass Ts extends G {\n  // @TODO: If extending from TempNode it breaks webgpu_compute\n  static get type() {\n    return \"ArrayElementNode\";\n  }\n  /**\n   * Constructs an array element node.\n   *\n   * @param {Node} node - The array-like node.\n   * @param {Node} indexNode - The index node that defines the element access.\n   */\n  constructor(e, t) {\n    super(), this.node = e, this.indexNode = t, this.isArrayElementNode = !0;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from the array-like node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.node.getElementType(e);\n  }\n  generate(e) {\n    const t = this.node.build(e), s = this.indexNode.build(e, \"uint\");\n    return `${t}[ ${s} ]`;\n  }\n}\nclass Gl extends G {\n  static get type() {\n    return \"ConvertNode\";\n  }\n  /**\n   * Constructs a new convert node.\n   *\n   * @param {Node} node - The node which type should be converted.\n   * @param {String} convertTo - The target node type. Multiple types can be defined by separating them with a `|` sign.\n   */\n  constructor(e, t) {\n    super(), this.node = e, this.convertTo = t;\n  }\n  /**\n   * This method is overwritten since the implementation tries to infer the best\n   * matching type from the {@link ConvertNode#convertTo} property.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    const t = this.node.getNodeType(e);\n    let s = null;\n    for (const n of this.convertTo.split(\"|\"))\n      (s === null || e.getTypeLength(t) === e.getTypeLength(n)) && (s = n);\n    return s;\n  }\n  serialize(e) {\n    super.serialize(e), e.convertTo = this.convertTo;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.convertTo = e.convertTo;\n  }\n  generate(e, t) {\n    const s = this.node, n = this.getNodeType(e), r = s.build(e, n);\n    return e.format(r, n, t);\n  }\n}\nclass Ne extends G {\n  static get type() {\n    return \"TempNode\";\n  }\n  /**\n   * Constructs a temp node.\n   *\n   * @param {String?} nodeType - The node type.\n   */\n  constructor(e = null) {\n    super(e), this.isTempNode = !0;\n  }\n  /**\n   * Whether this node is used more than once in context of other nodes.\n   *\n   * @param {NodeBuilder} builder - The node builder.\n   * @return {Boolean} A flag that indicates if there is more than one dependency to other nodes.\n   */\n  hasDependencies(e) {\n    return e.getDataFromNode(this).usageCount > 1;\n  }\n  build(e, t) {\n    if (e.getBuildStage() === \"generate\") {\n      const n = e.getVectorType(this.getNodeType(e, t)), r = e.getDataFromNode(this);\n      if (r.propertyName !== void 0)\n        return e.format(r.propertyName, n, t);\n      if (n !== \"void\" && t !== \"void\" && this.hasDependencies(e)) {\n        const i = super.build(e, n), a = e.getVarFromNode(this, null, n), u = e.getPropertyName(a);\n        return e.addLineFlowCode(`${u} = ${i}`, this), r.snippet = i, r.propertyName = u, e.format(r.propertyName, n, t);\n      }\n    }\n    return super.build(e, t);\n  }\n}\nclass Fm extends Ne {\n  static get type() {\n    return \"JoinNode\";\n  }\n  /**\n   * Constructs a new join node.\n   *\n   * @param {Array<Node>} nodes - An array of nodes that should be joined.\n   * @param {String?} [nodeType=null] - The node type.\n   */\n  constructor(e = [], t = null) {\n    super(t), this.nodes = e;\n  }\n  /**\n   * This method is overwritten since the node type must be inferred from the\n   * joined data length if not explicitly defined.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.nodeType !== null ? e.getVectorType(this.nodeType) : e.getTypeFromLength(this.nodes.reduce((t, s) => t + e.getTypeLength(s.getNodeType(e)), 0));\n  }\n  generate(e, t) {\n    const s = this.getNodeType(e), n = this.nodes, r = e.getComponentType(s), i = [];\n    for (const u of n) {\n      let c = u.build(e);\n      const l = e.getComponentType(u.getNodeType(e));\n      l !== r && (c = e.format(c, l, r)), i.push(c);\n    }\n    const a = `${e.getType(s)}( ${i.join(\", \")} )`;\n    return e.format(a, s, t);\n  }\n}\nconst Um = xs.join(\"\");\nclass Do extends G {\n  static get type() {\n    return \"SplitNode\";\n  }\n  /**\n   * Constructs a new split node.\n   *\n   * @param {Node} node - The node that should be accessed.\n   * @param {String} [components='x'] - The components that should be accessed.\n   */\n  constructor(e, t = \"x\") {\n    super(), this.node = e, this.components = t, this.isSplitNode = !0;\n  }\n  /**\n   * Returns the vector length which is computed based on the requested components.\n   *\n   * @return {Number} The vector length.\n   */\n  getVectorLength() {\n    let e = this.components.length;\n    for (const t of this.components)\n      e = Math.max(xs.indexOf(t) + 1, e);\n    return e;\n  }\n  /**\n   * Returns the component type of the node's type.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The component type.\n   */\n  getComponentType(e) {\n    return e.getComponentType(this.node.getNodeType(e));\n  }\n  /**\n   * This method is overwritten since the node type is inferred from requested components.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return e.getTypeFromLength(this.components.length, this.getComponentType(e));\n  }\n  generate(e, t) {\n    const s = this.node, n = e.getTypeLength(s.getNodeType(e));\n    let r = null;\n    if (n > 1) {\n      let i = null;\n      this.getVectorLength() >= n && (i = e.getTypeFromLength(this.getVectorLength(), this.getComponentType(e)));\n      const u = s.build(e, i);\n      this.components.length === n && this.components === Um.slice(0, this.components.length) ? r = e.format(u, i, t) : r = e.format(`${u}.${this.components}`, this.getNodeType(e), t);\n    } else\n      r = s.build(e, t);\n    return r;\n  }\n  serialize(e) {\n    super.serialize(e), e.components = this.components;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.components = e.components;\n  }\n}\nclass Pm extends Ne {\n  static get type() {\n    return \"SetNode\";\n  }\n  /**\n   * Constructs a new set node.\n   *\n   * @param {Node} sourceNode - The node that should be updated.\n   * @param {String} components - The components that should be updated.\n   * @param {Node} targetNode - The value node.\n   */\n  constructor(e, t, s) {\n    super(), this.sourceNode = e, this.components = t, this.targetNode = s;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from {@link SetNode#sourceNode}.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.sourceNode.getNodeType(e);\n  }\n  generate(e) {\n    const { sourceNode: t, components: s, targetNode: n } = this, r = this.getNodeType(e), i = e.getComponentType(n.getNodeType(e)), a = e.getTypeFromLength(s.length, i), u = n.build(e, a), c = t.build(e, r), l = e.getTypeLength(r), d = [];\n    for (let h = 0; h < l; h++) {\n      const p = xs[h];\n      p === s[0] ? (d.push(u), h += s.length - 1) : d.push(c + \".\" + p);\n    }\n    return `${e.getType(r)}( ${d.join(\", \")} )`;\n  }\n}\nclass Dm extends Ne {\n  static get type() {\n    return \"FlipNode\";\n  }\n  /**\n   * Constructs a new flip node.\n   *\n   * @param {Node} sourceNode - The node which component(s) should be flipped.\n   * @param {String} components - The components that should be flipped e.g. `'x'` or `'xy'`.\n   */\n  constructor(e, t) {\n    super(), this.sourceNode = e, this.components = t;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from the source node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.sourceNode.getNodeType(e);\n  }\n  generate(e) {\n    const { components: t, sourceNode: s } = this, n = this.getNodeType(e), r = s.build(e), i = e.getVarFromNode(this), a = e.getPropertyName(i);\n    e.addLineFlowCode(a + \" = \" + r, this);\n    const u = e.getTypeLength(n), c = [];\n    let l = 0;\n    for (let d = 0; d < u; d++) {\n      const h = xs[d];\n      h === t[l] ? (c.push(\"1.0 - \" + (a + \".\" + h)), l++) : c.push(a + \".\" + h);\n    }\n    return `${e.getType(n)}( ${c.join(\", \")} )`;\n  }\n}\nclass ua extends G {\n  static get type() {\n    return \"InputNode\";\n  }\n  /**\n   * Constructs a new input node.\n   *\n   * @param {Any} value - The value of this node. This can be a any JS primitive, functions, array buffers or even three.js objects (vector, matrices, colors).\n   * @param {String?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.\n   */\n  constructor(e, t = null) {\n    super(t), this.isInputNode = !0, this.value = e, this.precision = null;\n  }\n  getNodeType() {\n    return this.nodeType === null ? Yt(this.value) : this.nodeType;\n  }\n  /**\n   * Returns the input type of the node which is by default the node type. Derived modules\n   * might overwrite this method and use a fixed type or compute one analytically.\n   *\n   * A typical example for different input and node types are textures. The input type of a\n   * normal RGBA texture is `texture` whereas its node type is `vec4`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType(e) {\n    return this.getNodeType(e);\n  }\n  /**\n   * Sets the precision to the given value. The method can be\n   * overwritten in derived classes if the final precision must be computed\n   * analytically.\n   *\n   * @param {('low'|'medium'|'high')} precision - The precision of the input value in the shader.\n   * @return {InputNode} A reference to this node.\n   */\n  setPrecision(e) {\n    return this.precision = e, this;\n  }\n  serialize(e) {\n    super.serialize(e), e.value = this.value, this.value && this.value.toArray && (e.value = this.value.toArray()), e.valueType = Yt(this.value), e.nodeType = this.nodeType, e.valueType === \"ArrayBuffer\" && (e.value = Il(e.value)), e.precision = this.precision;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.nodeType = e.nodeType, this.value = Array.isArray(e.value) ? Pl(e.valueType, ...e.value) : e.value, this.precision = e.precision || null, this.value && this.value.fromArray && (this.value = this.value.fromArray(e.value));\n  }\n  generate() {\n    console.warn(\"Abstract function.\");\n  }\n}\nclass ct extends ua {\n  static get type() {\n    return \"ConstNode\";\n  }\n  /**\n   * Constructs a new input node.\n   *\n   * @param {Any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color).\n   * @param {String?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.\n   */\n  constructor(e, t = null) {\n    super(e, t), this.isConstNode = !0;\n  }\n  /**\n   * Generates the shader string of the value with the current node builder.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The generated value as a shader string.\n   */\n  generateConst(e) {\n    return e.generateConst(this.getNodeType(e), this.value);\n  }\n  generate(e, t) {\n    const s = this.getNodeType(e);\n    return e.format(this.generateConst(e), s, t);\n  }\n}\nlet Qs = null;\nconst Vs = /* @__PURE__ */ new Map();\nfunction R(o, e) {\n  if (Vs.has(o)) {\n    console.warn(`Redefinition of method chaining ${o}`);\n    return;\n  }\n  if (typeof e != \"function\") throw new Error(`Node element ${o} is not a function`);\n  Vs.set(o, e);\n}\nconst Ol = (o) => o.replace(/r|s/g, \"x\").replace(/g|t/g, \"y\").replace(/b|p/g, \"z\").replace(/a|q/g, \"w\"), Du = (o) => Ol(o).split(\"\").sort().join(\"\"), kl = {\n  setup(o, e) {\n    const t = e.shift();\n    return o(qn(t), ...e);\n  },\n  get(o, e, t) {\n    if (typeof e == \"string\" && o[e] === void 0) {\n      if (o.isStackNode !== !0 && e === \"assign\")\n        return (...s) => (Qs.assign(t, ...s), t);\n      if (Vs.has(e)) {\n        const s = Vs.get(e);\n        return o.isStackNode ? (...n) => t.add(s(...n)) : (...n) => s(t, ...n);\n      } else {\n        if (e === \"self\")\n          return o;\n        if (e.endsWith(\"Assign\") && Vs.has(e.slice(0, e.length - 6))) {\n          const s = Vs.get(e.slice(0, e.length - 6));\n          return o.isStackNode ? (...n) => t.assign(n[0], s(...n)) : (...n) => t.assign(s(t, ...n));\n        } else {\n          if (/^[xyzwrgbastpq]{1,4}$/.test(e) === !0)\n            return e = Ol(e), E(new Do(t, e));\n          if (/^set[XYZWRGBASTPQ]{1,4}$/.test(e) === !0)\n            return e = Du(e.slice(3).toLowerCase()), (s) => E(new Pm(o, e, s));\n          if (/^flip[XYZWRGBASTPQ]{1,4}$/.test(e) === !0)\n            return e = Du(e.slice(4).toLowerCase()), () => E(new Dm(E(o), e));\n          if (e === \"width\" || e === \"height\" || e === \"depth\")\n            return e === \"width\" ? e = \"x\" : e === \"height\" ? e = \"y\" : e === \"depth\" && (e = \"z\"), E(new Do(o, e));\n          if (/^\\d+$/.test(e) === !0)\n            return E(new Ts(t, new ct(Number(e), \"uint\")));\n        }\n      }\n    }\n    return Reflect.get(o, e, t);\n  },\n  set(o, e, t, s) {\n    return typeof e == \"string\" && o[e] === void 0 && (/^[xyzwrgbastpq]{1,4}$/.test(e) === !0 || e === \"width\" || e === \"height\" || e === \"depth\" || /^\\d+$/.test(e) === !0) ? (s[e].assign(t), !0) : Reflect.set(o, e, t, s);\n  }\n}, Mi = /* @__PURE__ */ new WeakMap(), Iu = /* @__PURE__ */ new WeakMap(), Im = function(o, e = null) {\n  const t = Yt(o);\n  if (t === \"node\") {\n    let s = Mi.get(o);\n    return s === void 0 && (s = new Proxy(o, kl), Mi.set(o, s), Mi.set(s, s)), s;\n  } else {\n    if (e === null && (t === \"float\" || t === \"boolean\") || t && t !== \"shader\" && t !== \"string\")\n      return E(Io(o, e));\n    if (t === \"shader\")\n      return b(o);\n  }\n  return o;\n}, Lm = function(o, e = null) {\n  for (const t in o)\n    o[t] = E(o[t], e);\n  return o;\n}, Vm = function(o, e = null) {\n  const t = o.length;\n  for (let s = 0; s < t; s++)\n    o[s] = E(o[s], e);\n  return o;\n}, Gm = function(o, e = null, t = null, s = null) {\n  const n = (r) => E(s !== null ? Object.assign(r, s) : r);\n  return e === null ? (...r) => n(new o(...hs(r))) : t !== null ? (t = E(t), (...r) => n(new o(e, ...hs(r), t))) : (...r) => n(new o(e, ...hs(r)));\n}, Om = function(o, ...e) {\n  return E(new o(...hs(e)));\n};\nclass km extends G {\n  constructor(e, t) {\n    super(), this.shaderNode = e, this.inputNodes = t;\n  }\n  getNodeType(e) {\n    return this.shaderNode.nodeType || this.getOutputNode(e).getNodeType(e);\n  }\n  call(e) {\n    const { shaderNode: t, inputNodes: s } = this, n = e.getNodeProperties(t);\n    if (n.onceOutput) return n.onceOutput;\n    let r = null;\n    if (t.layout) {\n      let i = Iu.get(e.constructor);\n      i === void 0 && (i = /* @__PURE__ */ new WeakMap(), Iu.set(e.constructor, i));\n      let a = i.get(t);\n      a === void 0 && (a = E(e.buildFunctionNode(t)), i.set(t, a)), e.currentFunctionNode !== null && e.currentFunctionNode.includes.push(a), r = E(a.call(s));\n    } else {\n      const i = t.jsFunc, a = s !== null ? i(s, e) : i(e);\n      r = E(a);\n    }\n    return t.once && (n.onceOutput = r), r;\n  }\n  getOutputNode(e) {\n    const t = e.getNodeProperties(this);\n    return t.outputNode === null && (t.outputNode = this.setupOutput(e)), t.outputNode;\n  }\n  setup(e) {\n    return this.getOutputNode(e);\n  }\n  setupOutput(e) {\n    return e.addStack(), e.stack.outputNode = this.call(e), e.removeStack();\n  }\n  generate(e, t) {\n    return this.getOutputNode(e).build(e, t);\n  }\n}\nclass zm extends G {\n  constructor(e, t) {\n    super(t), this.jsFunc = e, this.layout = null, this.global = !0, this.once = !1;\n  }\n  setLayout(e) {\n    return this.layout = e, this;\n  }\n  call(e = null) {\n    return qn(e), E(new km(this, e));\n  }\n  setup() {\n    return this.call();\n  }\n}\nconst $m = [!1, !0], Wm = [0, 1, 2, 3], Hm = [-1, -2], zl = [0.5, 1.5, 1 / 3, 1e-6, 1e6, Math.PI, Math.PI * 2, 1 / Math.PI, 2 / Math.PI, 1 / (Math.PI * 2), Math.PI / 2], ca = /* @__PURE__ */ new Map();\nfor (const o of $m) ca.set(o, new ct(o));\nconst la = /* @__PURE__ */ new Map();\nfor (const o of Wm) la.set(o, new ct(o, \"uint\"));\nconst da = new Map([...la].map((o) => new ct(o.value, \"int\")));\nfor (const o of Hm) da.set(o, new ct(o, \"int\"));\nconst ri = new Map([...da].map((o) => new ct(o.value)));\nfor (const o of zl) ri.set(o, new ct(o));\nfor (const o of zl) ri.set(-o, new ct(-o));\nconst ii = { bool: ca, uint: la, ints: da, float: ri }, Lu = new Map([...ca, ...ri]), Io = (o, e) => Lu.has(o) ? Lu.get(o) : o.isNode === !0 ? o : new ct(o, e), qm = (o) => {\n  try {\n    return o.getNodeType();\n  } catch {\n    return;\n  }\n}, ve = function(o, e = null) {\n  return (...t) => {\n    if ((t.length === 0 || ![\"bool\", \"float\", \"int\", \"uint\"].includes(o) && t.every((n) => typeof n != \"object\")) && (t = [Pl(o, ...t)]), t.length === 1 && e !== null && e.has(t[0]))\n      return E(e.get(t[0]));\n    if (t.length === 1) {\n      const n = Io(t[0], o);\n      return qm(n) === o ? E(n) : E(new Gl(n, o));\n    }\n    const s = t.map((n) => Io(n));\n    return E(new Fm(s, o));\n  };\n}, Un = (o) => typeof o == \"object\" && o !== null ? o.value : o, $l = (o) => o != null ? o.nodeType || o.convertTo || (typeof o == \"string\" ? o : null) : null;\nfunction Nn(o, e) {\n  return new Proxy(new zm(o, e), kl);\n}\nconst E = (o, e = null) => (\n  /* new */\n  Im(o, e)\n), qn = (o, e = null) => new Lm(o, e), hs = (o, e = null) => new Vm(o, e), C = (...o) => new Gm(...o), B = (...o) => new Om(...o), b = (o, e) => {\n  const t = new Nn(o, e), s = (...n) => {\n    let r;\n    return qn(n), n[0] && n[0].isNode ? r = [...n] : r = n[0], t.call(r);\n  };\n  return s.shaderNode = t, s.setLayout = (n) => (t.setLayout(n), s), s.once = () => (t.once = !0, s), s;\n}, Xm = (...o) => (console.warn(\"TSL.ShaderNode: tslFn() has been renamed to Fn().\"), b(...o));\nR(\"toGlobal\", (o) => (o.global = !0, o));\nconst Pn = (o) => {\n  Qs = o;\n}, ha = () => Qs, H = (...o) => Qs.If(...o);\nfunction Wl(o) {\n  return Qs && Qs.add(o), o;\n}\nR(\"append\", Wl);\nconst Hl = new ve(\"color\"), g = new ve(\"float\", ii.float), y = new ve(\"int\", ii.ints), U = new ve(\"uint\", ii.uint), Vt = new ve(\"bool\", ii.bool), w = new ve(\"vec2\"), Ae = new ve(\"ivec2\"), ql = new ve(\"uvec2\"), Xl = new ve(\"bvec2\"), T = new ve(\"vec3\"), Kl = new ve(\"ivec3\"), nn = new ve(\"uvec3\"), pa = new ve(\"bvec3\"), I = new ve(\"vec4\"), Yl = new ve(\"ivec4\"), jl = new ve(\"uvec4\"), Ql = new ve(\"bvec4\"), oi = new ve(\"mat2\"), Le = new ve(\"mat3\"), ps = new ve(\"mat4\"), Km = (o = \"\") => E(new ct(o, \"string\")), Ym = (o) => E(new ct(o, \"ArrayBuffer\"));\nR(\"toColor\", Hl);\nR(\"toFloat\", g);\nR(\"toInt\", y);\nR(\"toUint\", U);\nR(\"toBool\", Vt);\nR(\"toVec2\", w);\nR(\"toIVec2\", Ae);\nR(\"toUVec2\", ql);\nR(\"toBVec2\", Xl);\nR(\"toVec3\", T);\nR(\"toIVec3\", Kl);\nR(\"toUVec3\", nn);\nR(\"toBVec3\", pa);\nR(\"toVec4\", I);\nR(\"toIVec4\", Yl);\nR(\"toUVec4\", jl);\nR(\"toBVec4\", Ql);\nR(\"toMat2\", oi);\nR(\"toMat3\", Le);\nR(\"toMat4\", ps);\nconst Zl = /* @__PURE__ */ C(Ts), Jl = (o, e) => E(new Gl(E(o), e)), jm = (o, e) => E(new Do(E(o), e));\nR(\"element\", Zl);\nR(\"convert\", Jl);\nclass ed extends G {\n  static get type() {\n    return \"UniformGroupNode\";\n  }\n  /**\n   * Constructs a new uniform group node.\n   *\n   * @param {String} name - The name of the uniform group node.\n   * @param {Boolean} [shared=false] - Whether this uniform group node is shared or not.\n   * @param {Number} [order=1] - Influences the internal sorting.\n   */\n  constructor(e, t = !1, s = 1) {\n    super(\"string\"), this.name = e, this.shared = t, this.order = s, this.isUniformGroup = !0;\n  }\n  serialize(e) {\n    super.serialize(e), e.name = this.name, e.version = this.version, e.shared = this.shared;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.name = e.name, this.version = e.version, this.shared = e.shared;\n  }\n}\nconst td = (o) => new ed(o), fa = (o, e = 0) => new ed(o, !0, e), sd = /* @__PURE__ */ fa(\"frame\"), O = /* @__PURE__ */ fa(\"render\"), ga = /* @__PURE__ */ td(\"object\");\nclass Xn extends ua {\n  static get type() {\n    return \"UniformNode\";\n  }\n  /**\n   * Constructs a new uniform node.\n   *\n   * @param {Any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).\n   * @param {String?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.\n   */\n  constructor(e, t = null) {\n    super(e, t), this.isUniformNode = !0, this.name = \"\", this.groupNode = ga;\n  }\n  /**\n   * Sets the {@link UniformNode#name} property.\n   *\n   * @param {String} name - The name of the uniform.\n   * @return {UniformNode} A reference to this node.\n   */\n  label(e) {\n    return this.name = e, this;\n  }\n  /**\n   * Sets the {@link UniformNode#groupNode} property.\n   *\n   * @param {UniformGroupNode} group - The uniform group.\n   * @return {UniformNode} A reference to this node.\n   */\n  setGroup(e) {\n    return this.groupNode = e, this;\n  }\n  /**\n   * Returns the {@link UniformNode#groupNode}.\n   *\n   * @return {UniformGroupNode} The uniform group.\n   */\n  getGroup() {\n    return this.groupNode;\n  }\n  /**\n   * By default, this method returns the result of {@link Node#getHash} but derived\n   * classes might overwrite this method with a different implementation.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The uniform hash.\n   */\n  getUniformHash(e) {\n    return this.getHash(e);\n  }\n  onUpdate(e, t) {\n    const s = this.getSelf();\n    return e = e.bind(s), super.onUpdate((n) => {\n      const r = e(n, s);\n      r !== void 0 && (this.value = r);\n    }, t);\n  }\n  generate(e, t) {\n    const s = this.getNodeType(e), n = this.getUniformHash(e);\n    let r = e.getNodeFromHash(n);\n    r === void 0 && (e.setHashNode(this, n), r = this);\n    const i = r.getInputType(e), a = e.getUniformFromNode(r, i, e.shaderStage, this.name || e.context.label), u = e.getPropertyName(a);\n    return e.context.label !== void 0 && delete e.context.label, e.format(u, s, t);\n  }\n}\nconst L = (o, e) => {\n  const t = $l(e || o), s = o && o.isNode === !0 ? o.node && o.node.value || o.value : o;\n  return E(new Xn(s, t));\n};\nclass ee extends G {\n  static get type() {\n    return \"PropertyNode\";\n  }\n  /**\n   * Constructs a new property node.\n   *\n   * @param {String} nodeType - The type of the node.\n   * @param {String?} [name=null] - The name of the property in the shader.\n   * @param {Boolean} [varying=false] - Whether this property is a varying or not.\n   */\n  constructor(e, t = null, s = !1) {\n    super(e), this.name = t, this.varying = s, this.isPropertyNode = !0;\n  }\n  getHash(e) {\n    return this.name || super.getHash(e);\n  }\n  /**\n   * The method is overwritten so it always returns `true`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Boolean} Whether this node is global or not.\n   */\n  isGlobal() {\n    return !0;\n  }\n  generate(e) {\n    let t;\n    return this.varying === !0 ? (t = e.getVaryingFromNode(this, this.name), t.needsInterpolation = !0) : t = e.getVarFromNode(this, this.name), e.getPropertyName(t);\n  }\n}\nconst nd = (o, e) => E(new ee(o, e)), Dn = (o, e) => E(new ee(o, e, !0)), Q = /* @__PURE__ */ B(ee, \"vec4\", \"DiffuseColor\"), Lo = /* @__PURE__ */ B(ee, \"vec3\", \"EmissiveColor\"), ft = /* @__PURE__ */ B(ee, \"float\", \"Roughness\"), In = /* @__PURE__ */ B(ee, \"float\", \"Metalness\"), Gr = /* @__PURE__ */ B(ee, \"float\", \"Clearcoat\"), Ln = /* @__PURE__ */ B(ee, \"float\", \"ClearcoatRoughness\"), as = /* @__PURE__ */ B(ee, \"vec3\", \"Sheen\"), ai = /* @__PURE__ */ B(ee, \"float\", \"SheenRoughness\"), ui = /* @__PURE__ */ B(ee, \"float\", \"Iridescence\"), ma = /* @__PURE__ */ B(ee, \"float\", \"IridescenceIOR\"), ya = /* @__PURE__ */ B(ee, \"float\", \"IridescenceThickness\"), Or = /* @__PURE__ */ B(ee, \"float\", \"AlphaT\"), Ht = /* @__PURE__ */ B(ee, \"float\", \"Anisotropy\"), bn = /* @__PURE__ */ B(ee, \"vec3\", \"AnisotropyT\"), fs = /* @__PURE__ */ B(ee, \"vec3\", \"AnisotropyB\"), Ge = /* @__PURE__ */ B(ee, \"color\", \"SpecularColor\"), Vn = /* @__PURE__ */ B(ee, \"float\", \"SpecularF90\"), kr = /* @__PURE__ */ B(ee, \"float\", \"Shininess\"), Gn = /* @__PURE__ */ B(ee, \"vec4\", \"Output\"), Er = /* @__PURE__ */ B(ee, \"float\", \"dashSize\"), Vo = /* @__PURE__ */ B(ee, \"float\", \"gapSize\"), Qm = /* @__PURE__ */ B(ee, \"float\", \"pointWidth\"), Sn = /* @__PURE__ */ B(ee, \"float\", \"IOR\"), zr = /* @__PURE__ */ B(ee, \"float\", \"Transmission\"), xa = /* @__PURE__ */ B(ee, \"float\", \"Thickness\"), Ta = /* @__PURE__ */ B(ee, \"float\", \"AttenuationDistance\"), _a = /* @__PURE__ */ B(ee, \"color\", \"AttenuationColor\"), Na = /* @__PURE__ */ B(ee, \"float\", \"Dispersion\");\nclass Zm extends Ne {\n  static get type() {\n    return \"AssignNode\";\n  }\n  /**\n   * Constructs a new assign node.\n   *\n   * @param {Node} targetNode - The target node.\n   * @param {Node} sourceNode - The source type.\n   */\n  constructor(e, t) {\n    super(), this.targetNode = e, this.sourceNode = t;\n  }\n  /**\n   * Whether this node is used more than once in context of other nodes. This method\n   * is overwritten since it always returns `false` (assigns are unique).\n   *\n   * @return {Boolean} A flag that indicates if there is more than one dependency to other nodes. Always `false`.\n   */\n  hasDependencies() {\n    return !1;\n  }\n  getNodeType(e, t) {\n    return t !== \"void\" ? this.targetNode.getNodeType(e) : \"void\";\n  }\n  /**\n   * Whether a split is required when assigning source to target. This can happen when the component length of\n   * target and source data type does not match.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Boolean} Whether a split is required when assigning source to target.\n   */\n  needsSplitAssign(e) {\n    const { targetNode: t } = this;\n    if (e.isAvailable(\"swizzleAssign\") === !1 && t.isSplitNode && t.components.length > 1) {\n      const s = e.getTypeLength(t.node.getNodeType(e));\n      return xs.join(\"\").slice(0, s) !== t.components;\n    }\n    return !1;\n  }\n  generate(e, t) {\n    const { targetNode: s, sourceNode: n } = this, r = this.needsSplitAssign(e), i = s.getNodeType(e), a = s.context({ assign: !0 }).build(e), u = n.build(e, i), c = n.getNodeType(e), l = e.getDataFromNode(this);\n    let d;\n    if (l.initialized === !0)\n      t !== \"void\" && (d = a);\n    else if (r) {\n      const h = e.getVarFromNode(this, null, i), p = e.getPropertyName(h);\n      e.addLineFlowCode(`${p} = ${u}`, this);\n      const f = s.node.context({ assign: !0 }).build(e);\n      for (let m = 0; m < s.components.length; m++) {\n        const _ = s.components[m];\n        e.addLineFlowCode(`${f}.${_} = ${p}[ ${m} ]`, this);\n      }\n      t !== \"void\" && (d = a);\n    } else\n      d = `${a} = ${u}`, (t === \"void\" || c === \"void\") && (e.addLineFlowCode(d, this), t !== \"void\" && (d = a));\n    return l.initialized = !0, e.format(d, i, t);\n  }\n}\nconst rd = /* @__PURE__ */ C(Zm);\nR(\"assign\", rd);\nclass Jm extends Ne {\n  static get type() {\n    return \"FunctionCallNode\";\n  }\n  /**\n   * Constructs a new function call node.\n   *\n   * @param {FunctionNode?} functionNode - The function node.\n   * @param {Object<String, Node>} [parameters={}] - The parameters for the function call.\n   */\n  constructor(e = null, t = {}) {\n    super(), this.functionNode = e, this.parameters = t;\n  }\n  /**\n   * Sets the parameters of the function call node.\n   *\n   * @param {Object<String, Node>} parameters - The parameters to set.\n   * @return {FunctionCallNode} A reference to this node.\n   */\n  setParameters(e) {\n    return this.parameters = e, this;\n  }\n  /**\n   * Returns the parameters of the function call node.\n   *\n   * @return {Object<String, Node>} The parameters of this node.\n   */\n  getParameters() {\n    return this.parameters;\n  }\n  getNodeType(e) {\n    return this.functionNode.getNodeType(e);\n  }\n  generate(e) {\n    const t = [], s = this.functionNode, n = s.getInputs(e), r = this.parameters, i = (u, c) => {\n      const l = c.type, d = l === \"pointer\";\n      let h;\n      return d ? h = \"&\" + u.build(e) : h = u.build(e, l), h;\n    };\n    if (Array.isArray(r))\n      for (let u = 0; u < r.length; u++)\n        t.push(i(r[u], n[u]));\n    else\n      for (const u of n) {\n        const c = r[u.name];\n        if (c !== void 0)\n          t.push(i(c, u));\n        else\n          throw new Error(`FunctionCallNode: Input '${u.name}' not found in FunctionNode.`);\n      }\n    return `${s.build(e, \"property\")}( ${t.join(\", \")} )`;\n  }\n}\nconst id = (o, ...e) => (e = e.length > 1 || e[0] && e[0].isNode === !0 ? hs(e) : qn(e[0]), E(new Jm(E(o), e)));\nR(\"call\", id);\nclass ce extends Ne {\n  static get type() {\n    return \"OperatorNode\";\n  }\n  /**\n   * Constructs a new operator node.\n   *\n   * @param {String} op - The operator.\n   * @param {Node} aNode - The first input.\n   * @param {Node} bNode - The second input.\n   * @param {...Node} params - Additional input parameters.\n   */\n  constructor(e, t, s, ...n) {\n    if (super(), n.length > 0) {\n      let r = new ce(e, t, s);\n      for (let i = 0; i < n.length - 1; i++)\n        r = new ce(e, r, n[i]);\n      t = r, s = n[n.length - 1];\n    }\n    this.op = e, this.aNode = t, this.bNode = s;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from the operator\n   * and the input node types.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String} output - The current output string.\n   * @return {String} The node type.\n   */\n  getNodeType(e, t) {\n    const s = this.op, n = this.aNode, r = this.bNode, i = n.getNodeType(e), a = typeof r < \"u\" ? r.getNodeType(e) : null;\n    if (i === \"void\" || a === \"void\")\n      return \"void\";\n    if (s === \"%\")\n      return i;\n    if (s === \"~\" || s === \"&\" || s === \"|\" || s === \"^\" || s === \">>\" || s === \"<<\")\n      return e.getIntegerType(i);\n    if (s === \"!\" || s === \"==\" || s === \"&&\" || s === \"||\" || s === \"^^\")\n      return \"bool\";\n    if (s === \"<\" || s === \">\" || s === \"<=\" || s === \">=\") {\n      const u = t ? e.getTypeLength(t) : Math.max(e.getTypeLength(i), e.getTypeLength(a));\n      return u > 1 ? `bvec${u}` : \"bool\";\n    } else\n      return i === \"float\" && e.isMatrix(a) ? a : e.isMatrix(i) && e.isVector(a) ? e.getVectorFromMatrix(i) : e.isVector(i) && e.isMatrix(a) ? e.getVectorFromMatrix(a) : e.getTypeLength(a) > e.getTypeLength(i) ? a : i;\n  }\n  generate(e, t) {\n    const s = this.op, n = this.aNode, r = this.bNode, i = this.getNodeType(e, t);\n    let a = null, u = null;\n    i !== \"void\" ? (a = n.getNodeType(e), u = typeof r < \"u\" ? r.getNodeType(e) : null, s === \"<\" || s === \">\" || s === \"<=\" || s === \">=\" || s === \"==\" ? e.isVector(a) ? u = a : a !== u && (a = u = \"float\") : s === \">>\" || s === \"<<\" ? (a = i, u = e.changeComponentType(u, \"uint\")) : e.isMatrix(a) && e.isVector(u) ? u = e.getVectorFromMatrix(a) : e.isVector(a) && e.isMatrix(u) ? a = e.getVectorFromMatrix(u) : a = u = i) : a = u = i;\n    const c = n.build(e, a), l = typeof r < \"u\" ? r.build(e, u) : null, d = e.getTypeLength(t), h = e.getFunctionOperator(s);\n    if (t !== \"void\")\n      return s === \"<\" && d > 1 ? e.useComparisonMethod ? e.format(`${e.getMethod(\"lessThan\", t)}( ${c}, ${l} )`, i, t) : e.format(`( ${c} < ${l} )`, i, t) : s === \"<=\" && d > 1 ? e.useComparisonMethod ? e.format(`${e.getMethod(\"lessThanEqual\", t)}( ${c}, ${l} )`, i, t) : e.format(`( ${c} <= ${l} )`, i, t) : s === \">\" && d > 1 ? e.useComparisonMethod ? e.format(`${e.getMethod(\"greaterThan\", t)}( ${c}, ${l} )`, i, t) : e.format(`( ${c} > ${l} )`, i, t) : s === \">=\" && d > 1 ? e.useComparisonMethod ? e.format(`${e.getMethod(\"greaterThanEqual\", t)}( ${c}, ${l} )`, i, t) : e.format(`( ${c} >= ${l} )`, i, t) : s === \"!\" || s === \"~\" ? e.format(`(${s}${c})`, a, t) : h ? e.format(`${h}( ${c}, ${l} )`, i, t) : e.format(`( ${c} ${s} ${l} )`, i, t);\n    if (a !== \"void\")\n      return h ? e.format(`${h}( ${c}, ${l} )`, i, t) : e.format(`${c} ${s} ${l}`, i, t);\n  }\n  serialize(e) {\n    super.serialize(e), e.op = this.op;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.op = e.op;\n  }\n}\nconst _e = /* @__PURE__ */ C(ce, \"+\"), K = /* @__PURE__ */ C(ce, \"-\"), $ = /* @__PURE__ */ C(ce, \"*\"), ut = /* @__PURE__ */ C(ce, \"/\"), ba = /* @__PURE__ */ C(ce, \"%\"), od = /* @__PURE__ */ C(ce, \"==\"), ad = /* @__PURE__ */ C(ce, \"!=\"), ud = /* @__PURE__ */ C(ce, \"<\"), Sa = /* @__PURE__ */ C(ce, \">\"), cd = /* @__PURE__ */ C(ce, \"<=\"), ld = /* @__PURE__ */ C(ce, \">=\"), dd = /* @__PURE__ */ C(ce, \"&&\"), hd = /* @__PURE__ */ C(ce, \"||\"), pd = /* @__PURE__ */ C(ce, \"!\"), fd = /* @__PURE__ */ C(ce, \"^^\"), gd = /* @__PURE__ */ C(ce, \"&\"), md = /* @__PURE__ */ C(ce, \"~\"), yd = /* @__PURE__ */ C(ce, \"|\"), xd = /* @__PURE__ */ C(ce, \"^\"), Td = /* @__PURE__ */ C(ce, \"<<\"), _d = /* @__PURE__ */ C(ce, \">>\");\nR(\"add\", _e);\nR(\"sub\", K);\nR(\"mul\", $);\nR(\"div\", ut);\nR(\"modInt\", ba);\nR(\"equal\", od);\nR(\"notEqual\", ad);\nR(\"lessThan\", ud);\nR(\"greaterThan\", Sa);\nR(\"lessThanEqual\", cd);\nR(\"greaterThanEqual\", ld);\nR(\"and\", dd);\nR(\"or\", hd);\nR(\"not\", pd);\nR(\"xor\", fd);\nR(\"bitAnd\", gd);\nR(\"bitNot\", md);\nR(\"bitOr\", yd);\nR(\"bitXor\", xd);\nR(\"shiftLeft\", Td);\nR(\"shiftRight\", _d);\nconst Nd = (...o) => (console.warn(\"TSL.OperatorNode: .remainder() has been renamed to .modInt().\"), ba(...o));\nR(\"remainder\", Nd);\nclass N extends Ne {\n  static get type() {\n    return \"MathNode\";\n  }\n  /**\n   * Constructs a new math node.\n   *\n   * @param {String} method - The method name.\n   * @param {Node} aNode - The first input.\n   * @param {Node?} [bNode=null] - The second input.\n   * @param {Node?} [cNode=null] - The third input.\n   */\n  constructor(e, t, s = null, n = null) {\n    super(), this.method = e, this.aNode = t, this.bNode = s, this.cNode = n;\n  }\n  /**\n   * The input type is inferred from the node types of the input nodes.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType(e) {\n    const t = this.aNode.getNodeType(e), s = this.bNode ? this.bNode.getNodeType(e) : null, n = this.cNode ? this.cNode.getNodeType(e) : null, r = e.isMatrix(t) ? 0 : e.getTypeLength(t), i = e.isMatrix(s) ? 0 : e.getTypeLength(s), a = e.isMatrix(n) ? 0 : e.getTypeLength(n);\n    return r > i && r > a ? t : i > a ? s : a > r ? n : t;\n  }\n  /**\n   * The selected method as well as the input type determine the node type of this node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    const t = this.method;\n    return t === N.LENGTH || t === N.DISTANCE || t === N.DOT ? \"float\" : t === N.CROSS ? \"vec3\" : t === N.ALL ? \"bool\" : t === N.EQUALS ? e.changeComponentType(this.aNode.getNodeType(e), \"bool\") : t === N.MOD ? this.aNode.getNodeType(e) : this.getInputType(e);\n  }\n  generate(e, t) {\n    let s = this.method;\n    const n = this.getNodeType(e), r = this.getInputType(e), i = this.aNode, a = this.bNode, u = this.cNode, c = e.renderer.coordinateSystem;\n    if (s === N.TRANSFORM_DIRECTION) {\n      let l = i, d = a;\n      e.isMatrix(l.getNodeType(e)) ? d = I(T(d), 0) : l = I(T(l), 0);\n      const h = $(l, d).xyz;\n      return Gt(h).build(e, t);\n    } else {\n      if (s === N.NEGATE)\n        return e.format(\"( - \" + i.build(e, r) + \" )\", n, t);\n      if (s === N.ONE_MINUS)\n        return K(1, i).build(e, t);\n      if (s === N.RECIPROCAL)\n        return ut(1, i).build(e, t);\n      if (s === N.DIFFERENCE)\n        return re(K(i, a)).build(e, t);\n      {\n        const l = [];\n        return s === N.CROSS || s === N.MOD ? l.push(\n          i.build(e, n),\n          a.build(e, n)\n        ) : c === En && s === N.STEP ? l.push(\n          i.build(e, e.getTypeLength(i.getNodeType(e)) === 1 ? \"float\" : r),\n          a.build(e, r)\n        ) : c === En && (s === N.MIN || s === N.MAX) || s === N.MOD ? l.push(\n          i.build(e, r),\n          a.build(e, e.getTypeLength(a.getNodeType(e)) === 1 ? \"float\" : r)\n        ) : s === N.REFRACT ? l.push(\n          i.build(e, r),\n          a.build(e, r),\n          u.build(e, \"float\")\n        ) : s === N.MIX ? l.push(\n          i.build(e, r),\n          a.build(e, r),\n          u.build(e, e.getTypeLength(u.getNodeType(e)) === 1 ? \"float\" : r)\n        ) : (c === sn && s === N.ATAN && a !== null && (s = \"atan2\"), l.push(i.build(e, r)), a !== null && l.push(a.build(e, r)), u !== null && l.push(u.build(e, r))), e.format(`${e.getMethod(s, n)}( ${l.join(\", \")} )`, n, t);\n      }\n    }\n  }\n  serialize(e) {\n    super.serialize(e), e.method = this.method;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.method = e.method;\n  }\n}\nN.ALL = \"all\";\nN.ANY = \"any\";\nN.RADIANS = \"radians\";\nN.DEGREES = \"degrees\";\nN.EXP = \"exp\";\nN.EXP2 = \"exp2\";\nN.LOG = \"log\";\nN.LOG2 = \"log2\";\nN.SQRT = \"sqrt\";\nN.INVERSE_SQRT = \"inversesqrt\";\nN.FLOOR = \"floor\";\nN.CEIL = \"ceil\";\nN.NORMALIZE = \"normalize\";\nN.FRACT = \"fract\";\nN.SIN = \"sin\";\nN.COS = \"cos\";\nN.TAN = \"tan\";\nN.ASIN = \"asin\";\nN.ACOS = \"acos\";\nN.ATAN = \"atan\";\nN.ABS = \"abs\";\nN.SIGN = \"sign\";\nN.LENGTH = \"length\";\nN.NEGATE = \"negate\";\nN.ONE_MINUS = \"oneMinus\";\nN.DFDX = \"dFdx\";\nN.DFDY = \"dFdy\";\nN.ROUND = \"round\";\nN.RECIPROCAL = \"reciprocal\";\nN.TRUNC = \"trunc\";\nN.FWIDTH = \"fwidth\";\nN.TRANSPOSE = \"transpose\";\nN.BITCAST = \"bitcast\";\nN.EQUALS = \"equals\";\nN.MIN = \"min\";\nN.MAX = \"max\";\nN.MOD = \"mod\";\nN.STEP = \"step\";\nN.REFLECT = \"reflect\";\nN.DISTANCE = \"distance\";\nN.DIFFERENCE = \"difference\";\nN.DOT = \"dot\";\nN.CROSS = \"cross\";\nN.POW = \"pow\";\nN.TRANSFORM_DIRECTION = \"transformDirection\";\nN.MIX = \"mix\";\nN.CLAMP = \"clamp\";\nN.REFRACT = \"refract\";\nN.SMOOTHSTEP = \"smoothstep\";\nN.FACEFORWARD = \"faceforward\";\nconst bd = /* @__PURE__ */ g(1e-6), ey = /* @__PURE__ */ g(1e6), $r = /* @__PURE__ */ g(Math.PI), ty = /* @__PURE__ */ g(Math.PI * 2), va = /* @__PURE__ */ C(N, N.ALL), Sd = /* @__PURE__ */ C(N, N.ANY), vd = /* @__PURE__ */ C(N, N.RADIANS), Ad = /* @__PURE__ */ C(N, N.DEGREES), Aa = /* @__PURE__ */ C(N, N.EXP), Zs = /* @__PURE__ */ C(N, N.EXP2), ci = /* @__PURE__ */ C(N, N.LOG), mt = /* @__PURE__ */ C(N, N.LOG2), Et = /* @__PURE__ */ C(N, N.SQRT), Ra = /* @__PURE__ */ C(N, N.INVERSE_SQRT), yt = /* @__PURE__ */ C(N, N.FLOOR), li = /* @__PURE__ */ C(N, N.CEIL), Gt = /* @__PURE__ */ C(N, N.NORMALIZE), kt = /* @__PURE__ */ C(N, N.FRACT), Ze = /* @__PURE__ */ C(N, N.SIN), Bt = /* @__PURE__ */ C(N, N.COS), Rd = /* @__PURE__ */ C(N, N.TAN), Cd = /* @__PURE__ */ C(N, N.ASIN), Ed = /* @__PURE__ */ C(N, N.ACOS), Ca = /* @__PURE__ */ C(N, N.ATAN), re = /* @__PURE__ */ C(N, N.ABS), On = /* @__PURE__ */ C(N, N.SIGN), Dt = /* @__PURE__ */ C(N, N.LENGTH), wd = /* @__PURE__ */ C(N, N.NEGATE), Md = /* @__PURE__ */ C(N, N.ONE_MINUS), Ea = /* @__PURE__ */ C(N, N.DFDX), wa = /* @__PURE__ */ C(N, N.DFDY), Bd = /* @__PURE__ */ C(N, N.ROUND), Fd = /* @__PURE__ */ C(N, N.RECIPROCAL), Ma = /* @__PURE__ */ C(N, N.TRUNC), Ud = /* @__PURE__ */ C(N, N.FWIDTH), Pd = /* @__PURE__ */ C(N, N.TRANSPOSE), sy = /* @__PURE__ */ C(N, N.BITCAST), Dd = /* @__PURE__ */ C(N, N.EQUALS), $e = /* @__PURE__ */ C(N, N.MIN), fe = /* @__PURE__ */ C(N, N.MAX), Ba = /* @__PURE__ */ C(N, N.MOD), di = /* @__PURE__ */ C(N, N.STEP), Id = /* @__PURE__ */ C(N, N.REFLECT), Ld = /* @__PURE__ */ C(N, N.DISTANCE), Vd = /* @__PURE__ */ C(N, N.DIFFERENCE), Zt = /* @__PURE__ */ C(N, N.DOT), hi = /* @__PURE__ */ C(N, N.CROSS), ot = /* @__PURE__ */ C(N, N.POW), Fa = /* @__PURE__ */ C(N, N.POW, 2), Gd = /* @__PURE__ */ C(N, N.POW, 3), Od = /* @__PURE__ */ C(N, N.POW, 4), kd = /* @__PURE__ */ C(N, N.TRANSFORM_DIRECTION), zd = (o) => $(On(o), ot(re(o), 1 / 3)), $d = (o) => Zt(o, o), Z = /* @__PURE__ */ C(N, N.MIX), _t = (o, e = 0, t = 1) => E(new N(N.CLAMP, E(o), E(e), E(t))), Wd = (o) => _t(o), Ua = /* @__PURE__ */ C(N, N.REFRACT), Ot = /* @__PURE__ */ C(N, N.SMOOTHSTEP), Pa = /* @__PURE__ */ C(N, N.FACEFORWARD), Hd = /* @__PURE__ */ b(([o]) => {\n  const s = 43758.5453, n = Zt(o.xy, w(12.9898, 78.233)), r = Ba(n, $r);\n  return kt(Ze(r).mul(s));\n}), qd = (o, e, t) => Z(e, t, o), Xd = (o, e, t) => Ot(e, t, o), Kd = (o, e) => (console.warn('THREE.TSL: \"atan2\" is overloaded. Use \"atan\" instead.'), Ca(o, e)), ny = Pa, ry = Ra;\nR(\"all\", va);\nR(\"any\", Sd);\nR(\"equals\", Dd);\nR(\"radians\", vd);\nR(\"degrees\", Ad);\nR(\"exp\", Aa);\nR(\"exp2\", Zs);\nR(\"log\", ci);\nR(\"log2\", mt);\nR(\"sqrt\", Et);\nR(\"inverseSqrt\", Ra);\nR(\"floor\", yt);\nR(\"ceil\", li);\nR(\"normalize\", Gt);\nR(\"fract\", kt);\nR(\"sin\", Ze);\nR(\"cos\", Bt);\nR(\"tan\", Rd);\nR(\"asin\", Cd);\nR(\"acos\", Ed);\nR(\"atan\", Ca);\nR(\"abs\", re);\nR(\"sign\", On);\nR(\"length\", Dt);\nR(\"lengthSq\", $d);\nR(\"negate\", wd);\nR(\"oneMinus\", Md);\nR(\"dFdx\", Ea);\nR(\"dFdy\", wa);\nR(\"round\", Bd);\nR(\"reciprocal\", Fd);\nR(\"trunc\", Ma);\nR(\"fwidth\", Ud);\nR(\"atan2\", Kd);\nR(\"min\", $e);\nR(\"max\", fe);\nR(\"mod\", Ba);\nR(\"step\", di);\nR(\"reflect\", Id);\nR(\"distance\", Ld);\nR(\"dot\", Zt);\nR(\"cross\", hi);\nR(\"pow\", ot);\nR(\"pow2\", Fa);\nR(\"pow3\", Gd);\nR(\"pow4\", Od);\nR(\"transformDirection\", kd);\nR(\"mix\", qd);\nR(\"clamp\", _t);\nR(\"refract\", Ua);\nR(\"smoothstep\", Xd);\nR(\"faceForward\", Pa);\nR(\"difference\", Vd);\nR(\"saturate\", Wd);\nR(\"cbrt\", zd);\nR(\"transpose\", Pd);\nR(\"rand\", Hd);\nclass iy extends G {\n  static get type() {\n    return \"ConditionalNode\";\n  }\n  /**\n   * Constructs a new conditional node.\n   *\n   * @param {Node} condNode - The node that defines the condition.\n   * @param {Node} ifNode - The node that is evaluate when the condition ends up `true`.\n   * @param {Node?} [elseNode=null] - The node that is evaluate when the condition ends up `false`.\n   */\n  constructor(e, t, s = null) {\n    super(), this.condNode = e, this.ifNode = t, this.elseNode = s;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from the if/else\n   * nodes.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    const { ifNode: t, elseNode: s } = e.getNodeProperties(this);\n    if (t === void 0)\n      return this.setup(e), this.getNodeType(e);\n    const n = t.getNodeType(e);\n    if (s !== null) {\n      const r = s.getNodeType(e);\n      if (e.getTypeLength(r) > e.getTypeLength(n))\n        return r;\n    }\n    return n;\n  }\n  setup(e) {\n    const t = this.condNode.cache(), s = this.ifNode.cache(), n = this.elseNode ? this.elseNode.cache() : null, r = e.context.nodeBlock;\n    e.getDataFromNode(s).parentNodeBlock = r, n !== null && (e.getDataFromNode(n).parentNodeBlock = r);\n    const i = e.getNodeProperties(this);\n    i.condNode = t, i.ifNode = s.context({ nodeBlock: s }), i.elseNode = n ? n.context({ nodeBlock: n }) : null;\n  }\n  generate(e, t) {\n    const s = this.getNodeType(e), n = e.getDataFromNode(this);\n    if (n.nodeProperty !== void 0)\n      return n.nodeProperty;\n    const { condNode: r, ifNode: i, elseNode: a } = e.getNodeProperties(this), u = t !== \"void\", c = u ? nd(s).build(e) : \"\";\n    n.nodeProperty = c;\n    const l = r.build(e, \"bool\");\n    e.addFlowCode(`\n${e.tab}if ( ${l} ) {\n\n`).addFlowTab();\n    let d = i.build(e, s);\n    if (d && (u ? d = c + \" = \" + d + \";\" : d = \"return \" + d + \";\"), e.removeFlowTab().addFlowCode(e.tab + \"\t\" + d + `\n\n` + e.tab + \"}\"), a !== null) {\n      e.addFlowCode(` else {\n\n`).addFlowTab();\n      let h = a.build(e, s);\n      h && (u ? h = c + \" = \" + h + \";\" : h = \"return \" + h + \";\"), e.removeFlowTab().addFlowCode(e.tab + \"\t\" + h + `\n\n` + e.tab + `}\n\n`);\n    } else\n      e.addFlowCode(`\n\n`);\n    return e.format(c, s, t);\n  }\n}\nconst Me = /* @__PURE__ */ C(iy);\nR(\"select\", Me);\nconst Yd = (...o) => (console.warn(\"TSL.ConditionalNode: cond() has been renamed to select().\"), Me(...o));\nR(\"cond\", Yd);\nclass jd extends G {\n  static get type() {\n    return \"ContextNode\";\n  }\n  /**\n   * Constructs a new context node.\n   *\n   * @param {Node} node - The node whose context should be modified.\n   * @param {Object} [value={}] - The modified context data.\n   */\n  constructor(e, t = {}) {\n    super(), this.isContextNode = !0, this.node = e, this.value = t;\n  }\n  /**\n   * This method is overwritten to ensure it returns the reference to {@link module:ContextNode~ContextNode#node}.\n   *\n   * @return {Node} A reference to {@link module:ContextNode~ContextNode#node}.\n   */\n  getScope() {\n    return this.node.getScope();\n  }\n  /**\n   * This method is overwritten to ensure it returns the type of {@link module:ContextNode~ContextNode#node}.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.node.getNodeType(e);\n  }\n  analyze(e) {\n    this.node.build(e);\n  }\n  setup(e) {\n    const t = e.getContext();\n    e.setContext({ ...e.context, ...this.value });\n    const s = this.node.build(e);\n    return e.setContext(t), s;\n  }\n  generate(e, t) {\n    const s = e.getContext();\n    e.setContext({ ...e.context, ...this.value });\n    const n = this.node.build(e, t);\n    return e.setContext(s), n;\n  }\n}\nconst pi = /* @__PURE__ */ C(jd), Qd = (o, e) => pi(o, { label: e });\nR(\"context\", pi);\nR(\"label\", Qd);\nclass wr extends G {\n  static get type() {\n    return \"VarNode\";\n  }\n  /**\n   * Constructs a new variable node.\n   *\n   * @param {Node} node - The node for which a variable should be created.\n   * @param {String?} name - The name of the variable in the shader.\n   */\n  constructor(e, t = null) {\n    super(), this.node = e, this.name = t, this.global = !0, this.isVarNode = !0;\n  }\n  getHash(e) {\n    return this.name || super.getHash(e);\n  }\n  getNodeType(e) {\n    return this.node.getNodeType(e);\n  }\n  generate(e) {\n    const { node: t, name: s } = this, n = e.getVarFromNode(this, s, e.getVectorType(this.getNodeType(e))), r = e.getPropertyName(n), i = t.build(e, n.type);\n    return e.addLineFlowCode(`${r} = ${i}`, this), r;\n  }\n}\nconst Zd = /* @__PURE__ */ C(wr);\nR(\"toVar\", (...o) => Zd(...o).append());\nconst Jd = (o) => (console.warn('TSL: \"temp\" is deprecated. Use \".toVar()\" instead.'), Zd(o));\nR(\"temp\", Jd);\nclass oy extends G {\n  static get type() {\n    return \"VaryingNode\";\n  }\n  /**\n   * Constructs a new varying node.\n   *\n   * @param {Node} node - The node for which a varying should be created.\n   * @param {String?} name - The name of the varying in the shader.\n   */\n  constructor(e, t = null) {\n    super(), this.node = e, this.name = t, this.isVaryingNode = !0;\n  }\n  /**\n   * The method is overwritten so it always returns `true`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Boolean} Whether this node is global or not.\n   */\n  isGlobal() {\n    return !0;\n  }\n  getHash(e) {\n    return this.name || super.getHash(e);\n  }\n  getNodeType(e) {\n    return this.node.getNodeType(e);\n  }\n  /**\n   * This method performs the setup of a varying node with the current node builder.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {NodeVarying} The node varying from the node builder.\n   */\n  setupVarying(e) {\n    const t = e.getNodeProperties(this);\n    let s = t.varying;\n    if (s === void 0) {\n      const n = this.name, r = this.getNodeType(e);\n      t.varying = s = e.getVaryingFromNode(this, n, r), t.node = this.node;\n    }\n    return s.needsInterpolation || (s.needsInterpolation = e.shaderStage === \"fragment\"), s;\n  }\n  setup(e) {\n    this.setupVarying(e);\n  }\n  analyze(e) {\n    return this.setupVarying(e), this.node.analyze(e);\n  }\n  generate(e) {\n    const t = e.getNodeProperties(this), s = this.setupVarying(e), n = e.shaderStage === \"fragment\" && t.reassignPosition === !0 && e.context.needsPositionReassign;\n    if (t.propertyName === void 0 || n) {\n      const r = this.getNodeType(e), i = e.getPropertyName(s, Fo.VERTEX);\n      e.flowNodeFromShaderStage(Fo.VERTEX, this.node, r, i), t.propertyName = i, n ? t.reassignPosition = !1 : t.reassignPosition === void 0 && e.context.isPositionNodeInput && (t.reassignPosition = !0);\n    }\n    return e.getPropertyName(s);\n  }\n}\nconst qe = /* @__PURE__ */ C(oy), eh = (o) => qe(o);\nR(\"varying\", qe);\nR(\"vertexStage\", eh);\nconst th = /* @__PURE__ */ b(([o]) => {\n  const e = o.mul(0.9478672986).add(0.0521327014).pow(2.4), t = o.mul(0.0773993808), s = o.lessThanEqual(0.04045);\n  return Z(e, t, s);\n}).setLayout({\n  name: \"sRGBTransferEOTF\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" }\n  ]\n}), sh = /* @__PURE__ */ b(([o]) => {\n  const e = o.pow(0.41666).mul(1.055).sub(0.055), t = o.mul(12.92), s = o.lessThanEqual(31308e-7);\n  return Z(e, t, s);\n}).setLayout({\n  name: \"sRGBTransferOETF\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" }\n  ]\n}), Kn = \"WorkingColorSpace\", Da = \"OutputColorSpace\";\nclass Yn extends Ne {\n  static get type() {\n    return \"ColorSpaceNode\";\n  }\n  /**\n   * Constructs a new color space node.\n   *\n   * @param {Node} colorNode - Represents the color to convert.\n   * @param {String} source - The source color space.\n   * @param {String} target - The target color space.\n   */\n  constructor(e, t, s) {\n    super(\"vec4\"), this.colorNode = e, this.source = t, this.target = s;\n  }\n  /**\n   * This method resolves the constants `WORKING_COLOR_SPACE` and\n   * `OUTPUT_COLOR_SPACE` based on the current configuration of the\n   * color management and renderer.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String} colorSpace - The color space to resolve.\n   * @return {String} The resolved color space.\n   */\n  resolveColorSpace(e, t) {\n    return t === Kn ? ht.workingColorSpace : t === Da ? e.context.outputColorSpace || e.renderer.outputColorSpace : t;\n  }\n  setup(e) {\n    const { colorNode: t } = this, s = this.resolveColorSpace(e, this.source), n = this.resolveColorSpace(e, this.target);\n    let r = t;\n    return ht.enabled === !1 || s === n || !s || !n || (ht.getTransfer(s) === Bu && (r = I(th(r.rgb), r.a)), ht.getPrimaries(s) !== ht.getPrimaries(n) && (r = I(\n      Le(ht._getMatrix(new $n(), s, n)).mul(r.rgb),\n      r.a\n    )), ht.getTransfer(n) === Bu && (r = I(sh(r.rgb), r.a))), r;\n  }\n}\nconst nh = (o) => E(new Yn(E(o), Kn, Da)), rh = (o) => E(new Yn(E(o), Da, Kn)), ih = (o, e) => E(new Yn(E(o), Kn, e)), Ia = (o, e) => E(new Yn(E(o), e, Kn)), ay = (o, e, t) => E(new Yn(E(o), e, t));\nR(\"toOutputColorSpace\", nh);\nR(\"toWorkingColorSpace\", rh);\nR(\"workingToColorSpace\", ih);\nR(\"colorSpaceToWorking\", Ia);\nlet uy = class extends Ts {\n  static get type() {\n    return \"ReferenceElementNode\";\n  }\n  /**\n   * Constructs a new reference element node.\n   *\n   * @param {Node?} referenceNode - The reference node.\n   * @param {Node} indexNode - The index node that defines the element access.\n   */\n  constructor(e, t) {\n    super(e, t), this.referenceNode = e, this.isReferenceElementNode = !0;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from\n   * the uniform type of the reference node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType() {\n    return this.referenceNode.uniformType;\n  }\n  generate(e) {\n    const t = super.generate(e), s = this.referenceNode.getNodeType(), n = this.getNodeType();\n    return e.format(t, s, n);\n  }\n};\nclass oh extends G {\n  static get type() {\n    return \"ReferenceBaseNode\";\n  }\n  /**\n   * Constructs a new reference base node.\n   *\n   * @param {String} property - The name of the property the node refers to.\n   * @param {String} uniformType - The uniform type that should be used to represent the property value.\n   * @param {Object?} [object=null] - The object the property belongs to.\n   * @param {Number?} [count=null] - When the linked property is an array-like, this parameter defines its length.\n   */\n  constructor(e, t, s = null, n = null) {\n    super(), this.property = e, this.uniformType = t, this.object = s, this.count = n, this.properties = e.split(\".\"), this.reference = s, this.node = null, this.group = null, this.updateType = z.OBJECT;\n  }\n  /**\n   * Sets the uniform group for this reference node.\n   *\n   * @param {UniformGroupNode} group - The uniform group to set.\n   * @return {ReferenceBaseNode} A reference to this node.\n   */\n  setGroup(e) {\n    return this.group = e, this;\n  }\n  /**\n   * When the referred property is array-like, this method can be used\n   * to access elements via an index node.\n   *\n   * @param {IndexNode} indexNode - indexNode.\n   * @return {ReferenceElementNode} A reference to an element.\n   */\n  element(e) {\n    return E(new uy(this, E(e)));\n  }\n  /**\n   * Sets the node type which automatically defines the internal\n   * uniform type.\n   *\n   * @param {String} uniformType - The type to set.\n   */\n  setNodeType(e) {\n    const t = L(null, e).getSelf();\n    this.group !== null && t.setGroup(this.group), this.node = t;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from\n   * the type of the reference node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.node === null && (this.updateReference(e), this.updateValue()), this.node.getNodeType(e);\n  }\n  /**\n   * Returns the property value from the given referred object.\n   *\n   * @param {Object} [object=this.reference] - The object to retrieve the property value from.\n   * @return {Any} The value.\n   */\n  getValueFromReference(e = this.reference) {\n    const { properties: t } = this;\n    let s = e[t[0]];\n    for (let n = 1; n < t.length; n++)\n      s = s[t[n]];\n    return s;\n  }\n  /**\n   * Allows to update the reference based on the given state. The state is only\n   * evaluated {@link module:ReferenceBaseNode~ReferenceBaseNode#object} is not set.\n   *\n   * @param {(NodeFrame|NodeBuilder)} state - The current state.\n   * @return {Object} The updated reference.\n   */\n  updateReference(e) {\n    return this.reference = this.object !== null ? this.object : e.object, this.reference;\n  }\n  /**\n   * The output of the reference node is the internal uniform node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {UniformNode} The output node.\n   */\n  setup() {\n    return this.updateValue(), this.node;\n  }\n  /**\n   * Overwritten to to update the internal uniform value.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update() {\n    this.updateValue();\n  }\n  /**\n   * Retrieves the value from the referred object property and uses it\n   * to updated the internal uniform.\n   */\n  updateValue() {\n    this.node === null && this.setNodeType(this.uniformType);\n    const e = this.getValueFromReference();\n    Array.isArray(e) ? this.node.array = e : this.node.value = e;\n  }\n}\nconst cy = (o, e, t) => E(new oh(o, e, t));\nclass ly extends oh {\n  static get type() {\n    return \"RendererReferenceNode\";\n  }\n  /**\n   * Constructs a new renderer reference node.\n   *\n   * @param {String} property - The name of the property the node refers to.\n   * @param {String} inputType - The uniform type that should be used to represent the property value.\n   * @param {Renderer?} [renderer=null] - The renderer the property belongs to. When no renderer is set,\n   * the node refers to the renderer of the current state.\n   */\n  constructor(e, t, s = null) {\n    super(e, t, s), this.renderer = s, this.setGroup(O);\n  }\n  /**\n   * Updates the reference based on the given state. The state is only evaluated\n   * {@link module:RendererReferenceNode~RendererReferenceNode#renderer} is not set.\n   *\n   * @param {(NodeFrame|NodeBuilder)} state - The current state.\n   * @return {Object} The updated reference.\n   */\n  updateReference(e) {\n    return this.reference = this.renderer !== null ? this.renderer : e.renderer, this.reference;\n  }\n}\nconst ah = (o, e, t = null) => E(new ly(o, e, t));\nclass dy extends Ne {\n  static get type() {\n    return \"ToneMappingNode\";\n  }\n  /**\n   * Constructs a new tone mapping node.\n   *\n   * @param {Number} toneMapping - The tone mapping type.\n   * @param {Node} exposureNode - The tone mapping exposure.\n   * @param {Node} [colorNode=null] - The color node to process.\n   */\n  constructor(e, t = ch, s = null) {\n    super(\"vec3\"), this.toneMapping = e, this.exposureNode = t, this.colorNode = s;\n  }\n  /**\n   * Overwrites the default `customCacheKey()` implementation by including the tone\n   * mapping type into the cache key.\n   *\n   * @return {Number} The hash.\n   */\n  customCacheKey() {\n    return aa(this.toneMapping);\n  }\n  setup(e) {\n    const t = this.colorNode || e.context.color, s = this.toneMapping;\n    if (s === $s) return t;\n    let n = null;\n    const r = e.renderer.library.getToneMappingFunction(s);\n    return r !== null ? n = I(r(t.rgb, this.exposureNode), t.a) : (console.error(\"ToneMappingNode: Unsupported Tone Mapping configuration.\", s), n = t), n;\n  }\n}\nconst uh = (o, e, t) => E(new dy(o, E(e), E(t))), ch = /* @__PURE__ */ ah(\"toneMappingExposure\", \"float\");\nR(\"toneMapping\", (o, e, t) => uh(e, t, o));\nclass hy extends ua {\n  static get type() {\n    return \"BufferAttributeNode\";\n  }\n  /**\n   * Constructs a new buffer attribute node.\n   *\n   * @param {BufferAttribute|InterleavedBuffer|TypedArray} value - The attribute data.\n   * @param {String?} [bufferType=null] - The buffer type (e.g. `'vec3'`).\n   * @param {Number} [bufferStride=0] - The buffer stride.\n   * @param {Number} [bufferOffset=0] - The buffer offset.\n   */\n  constructor(e, t = null, s = 0, n = 0) {\n    super(e, t), this.isBufferNode = !0, this.bufferType = t, this.bufferStride = s, this.bufferOffset = n, this.usage = Ig, this.instanced = !1, this.attribute = null, this.global = !0, e && e.isBufferAttribute === !0 && (this.attribute = e, this.usage = e.usage, this.instanced = e.isInstancedBufferAttribute);\n  }\n  /**\n   * This method is overwritten since the attribute data might be shared\n   * and thus the hash should be shared as well.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The hash.\n   */\n  getHash(e) {\n    if (this.bufferStride === 0 && this.bufferOffset === 0) {\n      let t = e.globalCache.getData(this.value);\n      return t === void 0 && (t = {\n        node: this\n      }, e.globalCache.setData(this.value, t)), t.node.uuid;\n    }\n    return this.uuid;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from\n   * the buffer attribute.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.bufferType === null && (this.bufferType = e.getTypeFromAttribute(this.attribute)), this.bufferType;\n  }\n  /**\n   * Depending on which value was passed to the node, `setup()` behaves\n   * differently. If no instance of `BufferAttribute` was passed, the method\n   * creates an internal attribute and configures it respectively.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    if (this.attribute !== null) return;\n    const t = this.getNodeType(e), s = this.value, n = e.getTypeLength(t), r = this.bufferStride || n, i = this.bufferOffset, a = s.isInterleavedBuffer === !0 ? s : new Lg(s, r), u = new Nm(a, n, i);\n    a.setUsage(this.usage), this.attribute = u, this.attribute.isInstancedBufferAttribute = this.instanced;\n  }\n  /**\n   * Generates the code snippet of the buffer attribute node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The generated code snippet.\n   */\n  generate(e) {\n    const t = this.getNodeType(e), s = e.getBufferAttributeFromNode(this, t), n = e.getPropertyName(s);\n    let r = null;\n    return e.shaderStage === \"vertex\" || e.shaderStage === \"compute\" ? (this.name = n, r = n) : r = qe(this).build(e, t), r;\n  }\n  /**\n   * Overwrites the default implementation to return a fixed value `'bufferAttribute'`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return \"bufferAttribute\";\n  }\n  /**\n   * Sets the `usage` property to the given value.\n   *\n   * @param {Number} value - The usage to set.\n   * @return {BufferAttributeNode} A reference to this node.\n   */\n  setUsage(e) {\n    return this.usage = e, this.attribute && this.attribute.isBufferAttribute === !0 && (this.attribute.usage = e), this;\n  }\n  /**\n   * Sets the `instanced` property to the given value.\n   *\n   * @param {Number} value - The value to set.\n   * @return {BufferAttributeNode} A reference to this node.\n   */\n  setInstanced(e) {\n    return this.instanced = e, this;\n  }\n}\nconst jn = (o, e = null, t = 0, s = 0) => E(new hy(o, e, t, s)), lh = (o, e = null, t = 0, s = 0) => jn(o, e, t, s).setUsage(Is), Wr = (o, e = null, t = 0, s = 0) => jn(o, e, t, s).setInstanced(!0), Go = (o, e = null, t = 0, s = 0) => lh(o, e, t, s).setInstanced(!0);\nR(\"toAttribute\", (o) => jn(o.value));\nclass py extends G {\n  static get type() {\n    return \"ComputeNode\";\n  }\n  /**\n   * Constructs a new compute node.\n   *\n   * @param {Node} computeNode - TODO\n   * @param {Number} count - TODO.\n   * @param {Array<Number>} [workgroupSize=[64]] - TODO.\n   */\n  constructor(e, t, s = [64]) {\n    super(\"void\"), this.isComputeNode = !0, this.computeNode = e, this.count = t, this.workgroupSize = s, this.dispatchCount = 0, this.version = 1, this.name = \"\", this.updateBeforeType = z.OBJECT, this.onInitFunction = null, this.updateDispatchCount();\n  }\n  /**\n   * Executes the `dispose` event for this node.\n   */\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  /**\n   * Sets the {@link ComputeNode#name} property.\n   *\n   * @param {String} name - The name of the uniform.\n   * @return {ComputeNode} A reference to this node.\n   */\n  label(e) {\n    return this.name = e, this;\n  }\n  /**\n   * TODO\n   */\n  updateDispatchCount() {\n    const { count: e, workgroupSize: t } = this;\n    let s = t[0];\n    for (let n = 1; n < t.length; n++)\n      s *= t[n];\n    this.dispatchCount = Math.ceil(e / s);\n  }\n  /**\n   * TODO\n   *\n   * @param {Function} callback - TODO.\n   * @return {ComputeNode} A reference to this node.\n   */\n  onInit(e) {\n    return this.onInitFunction = e, this;\n  }\n  /**\n   * The method execute the compute for this node.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  updateBefore({ renderer: e }) {\n    e.compute(this);\n  }\n  generate(e) {\n    const { shaderStage: t } = e;\n    if (t === \"compute\") {\n      const s = this.computeNode.build(e, \"void\");\n      s !== \"\" && e.addLineFlowCode(s, this);\n    }\n  }\n}\nconst dh = (o, e, t) => E(new py(E(o), e, t));\nR(\"compute\", dh);\nclass fy extends G {\n  static get type() {\n    return \"CacheNode\";\n  }\n  /**\n   * Constructs a new cache node.\n   *\n   * @param {Node} node - The node that should be cached.\n   * @param {Boolean} [parent=true] - Whether this node refers to a shared parent cache or not.\n   */\n  constructor(e, t = !0) {\n    super(), this.node = e, this.parent = t, this.isCacheNode = !0;\n  }\n  getNodeType(e) {\n    const t = e.getCache(), s = e.getCacheFromNode(this, this.parent);\n    e.setCache(s);\n    const n = this.node.getNodeType(e);\n    return e.setCache(t), n;\n  }\n  build(e, ...t) {\n    const s = e.getCache(), n = e.getCacheFromNode(this, this.parent);\n    e.setCache(n);\n    const r = this.node.build(e, ...t);\n    return e.setCache(s), r;\n  }\n}\nconst vn = (o, e) => E(new fy(E(o), e));\nR(\"cache\", vn);\nclass gy extends G {\n  static get type() {\n    return \"BypassNode\";\n  }\n  /**\n   * Constructs a new bypass node.\n   *\n   * @param {Node} outputNode - The output node.\n   * @param {Node} callNode - The call node.\n   */\n  constructor(e, t) {\n    super(), this.isBypassNode = !0, this.outputNode = e, this.callNode = t;\n  }\n  getNodeType(e) {\n    return this.outputNode.getNodeType(e);\n  }\n  generate(e) {\n    const t = this.callNode.build(e, \"void\");\n    return t !== \"\" && e.addLineFlowCode(t, this), this.outputNode.build(e);\n  }\n}\nconst hh = /* @__PURE__ */ C(gy);\nR(\"bypass\", hh);\nclass ph extends G {\n  static get type() {\n    return \"RemapNode\";\n  }\n  /**\n   * Constructs a new remap node.\n   *\n   * @param {Node} node - The node that should be remapped.\n   * @param {Node} inLowNode - The source or current lower bound of the range.\n   * @param {Node} inHighNode - The source or current upper bound of the range.\n   * @param {Node} [outLowNode=float(0)] - The target lower bound of the range.\n   * @param {Node} [outHighNode=float(1)] - The target upper bound of the range.\n   */\n  constructor(e, t, s, n = g(0), r = g(1)) {\n    super(), this.node = e, this.inLowNode = t, this.inHighNode = s, this.outLowNode = n, this.outHighNode = r, this.doClamp = !0;\n  }\n  setup() {\n    const { node: e, inLowNode: t, inHighNode: s, outLowNode: n, outHighNode: r, doClamp: i } = this;\n    let a = e.sub(t).div(s.sub(t));\n    return i === !0 && (a = a.clamp()), a.mul(r.sub(n)).add(n);\n  }\n}\nconst fh = /* @__PURE__ */ C(ph, null, null, { doClamp: !1 }), gh = /* @__PURE__ */ C(ph);\nR(\"remap\", fh);\nR(\"remapClamp\", gh);\nclass Mr extends G {\n  static get type() {\n    return \"ExpressionNode\";\n  }\n  /**\n   * Constructs a new expression node.\n   *\n   * @param {String} [snippet=''] - The native code snippet.\n   * @param {String} [nodeType='void'] - The node type.\n   */\n  constructor(e = \"\", t = \"void\") {\n    super(t), this.snippet = e;\n  }\n  generate(e, t) {\n    const s = this.getNodeType(e), n = this.snippet;\n    if (s === \"void\")\n      e.addLineFlowCode(n, this);\n    else\n      return e.format(`( ${n} )`, s, t);\n  }\n}\nconst Qt = /* @__PURE__ */ C(Mr), mh = (o) => (o ? Me(o, Qt(\"discard\")) : Qt(\"discard\")).append(), my = () => Qt(\"return\").append();\nR(\"discard\", mh);\nclass yy extends Ne {\n  static get type() {\n    return \"RenderOutputNode\";\n  }\n  /**\n   * Constructs a new render output node.\n   *\n   * @param {Node} colorNode - The color node to process.\n   * @param {Number} toneMapping - The tone mapping type.\n   * @param {String} outputColorSpace - The output color space.\n   */\n  constructor(e, t, s) {\n    super(\"vec4\"), this.colorNode = e, this.toneMapping = t, this.outputColorSpace = s, this.isRenderOutputNode = !0;\n  }\n  setup({ context: e }) {\n    let t = this.colorNode || e.color;\n    const s = (this.toneMapping !== null ? this.toneMapping : e.toneMapping) || $s, n = (this.outputColorSpace !== null ? this.outputColorSpace : e.outputColorSpace) || wn;\n    return s !== $s && (t = t.toneMapping(s)), n !== wn && n !== ht.workingColorSpace && (t = t.workingToColorSpace(n)), t;\n  }\n}\nconst yh = (o, e = null, t = null) => E(new yy(E(o), e, t));\nR(\"renderOutput\", yh);\nfunction xy(o) {\n  console.warn(\"THREE.TSLBase: AddNodeElement has been removed in favor of tree-shaking. Trying add\", o);\n}\nclass xh extends G {\n  static get type() {\n    return \"AttributeNode\";\n  }\n  /**\n   * Constructs a new attribute node.\n   *\n   * @param {String} attributeName - The name of the attribute.\n   * @param {String?} nodeType - The node type.\n   */\n  constructor(e, t = null) {\n    super(t), this.global = !0, this._attributeName = e;\n  }\n  getHash(e) {\n    return this.getAttributeName(e);\n  }\n  getNodeType(e) {\n    let t = this.nodeType;\n    if (t === null) {\n      const s = this.getAttributeName(e);\n      if (e.hasGeometryAttribute(s)) {\n        const n = e.geometry.getAttribute(s);\n        t = e.getTypeFromAttribute(n);\n      } else\n        t = \"float\";\n    }\n    return t;\n  }\n  /**\n   * Sets the attribute name to the given value. The method can be\n   * overwritten in derived classes if the final name must be computed\n   * analytically.\n   *\n   * @param {String} attributeName - The name of the attribute.\n   * @return {AttributeNode} A reference to this node.\n   */\n  setAttributeName(e) {\n    return this._attributeName = e, this;\n  }\n  /**\n   * Returns the attribute name of this node. The method can be\n   * overwritten in derived classes if the final name must be computed\n   * analytically.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The attribute name.\n   */\n  getAttributeName() {\n    return this._attributeName;\n  }\n  generate(e) {\n    const t = this.getAttributeName(e), s = this.getNodeType(e);\n    if (e.hasGeometryAttribute(t) === !0) {\n      const r = e.geometry.getAttribute(t), i = e.getTypeFromAttribute(r), a = e.getAttribute(t, i);\n      return e.shaderStage === \"vertex\" ? e.format(a.name, i, s) : qe(this).build(e, s);\n    } else\n      return console.warn(`AttributeNode: Vertex attribute \"${t}\" not found on geometry.`), e.generateConst(s);\n  }\n  serialize(e) {\n    super.serialize(e), e.global = this.global, e._attributeName = this._attributeName;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.global = e.global, this._attributeName = e._attributeName;\n  }\n}\nconst Nt = (o, e) => E(new xh(o, e)), le = (o = 0) => Nt(\"uv\" + (o > 0 ? o : \"\"), \"vec2\");\nclass Ty extends G {\n  static get type() {\n    return \"TextureSizeNode\";\n  }\n  /**\n   * Constructs a new texture size node.\n   *\n   * @param {TextureNode} textureNode - A texture node which size should be retrieved.\n   * @param {Node<int>?} [levelNode=null] - A level node which defines the requested mip.\n   */\n  constructor(e, t = null) {\n    super(\"uvec2\"), this.isTextureSizeNode = !0, this.textureNode = e, this.levelNode = t;\n  }\n  generate(e, t) {\n    const s = this.textureNode.build(e, \"property\"), n = this.levelNode === null ? \"0\" : this.levelNode.build(e, \"int\");\n    return e.format(`${e.getMethod(\"textureDimensions\")}( ${s}, ${n} )`, this.getNodeType(e), t);\n  }\n}\nconst jt = /* @__PURE__ */ C(Ty);\nclass _y extends Xn {\n  static get type() {\n    return \"MaxMipLevelNode\";\n  }\n  /**\n   * Constructs a new max mip level node.\n   *\n   * @param {TextureNode} textureNode - The texture node to compute the max mip level for.\n   */\n  constructor(e) {\n    super(0), this._textureNode = e, this.updateType = z.FRAME;\n  }\n  /**\n   * The texture node to compute the max mip level for.\n   *\n   * @readonly\n   * @type {TextureNode}\n   */\n  get textureNode() {\n    return this._textureNode;\n  }\n  /**\n   * The texture.\n   *\n   * @readonly\n   * @type {Texture}\n   */\n  get texture() {\n    return this._textureNode.value;\n  }\n  update() {\n    const e = this.texture, t = e.images, s = t && t.length > 0 ? t[0] && t[0].image || t[0] : e.image;\n    if (s && s.width !== void 0) {\n      const { width: n, height: r } = s;\n      this.value = Math.log2(Math.max(n, r));\n    }\n  }\n}\nconst Th = /* @__PURE__ */ C(_y);\nclass bt extends Xn {\n  static get type() {\n    return \"TextureNode\";\n  }\n  /**\n   * Constructs a new texture node.\n   *\n   * @param {Texture} value - The texture.\n   * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.\n   * @param {Node<int>?} [levelNode=null] - The level node.\n   * @param {Node<float>?} [biasNode=null] - The bias node.\n   */\n  constructor(e, t = null, s = null, n = null) {\n    super(e), this.isTextureNode = !0, this.uvNode = t, this.levelNode = s, this.biasNode = n, this.compareNode = null, this.depthNode = null, this.gradNode = null, this.sampler = !0, this.updateMatrix = !1, this.updateType = z.NONE, this.referenceNode = null, this._value = e, this._matrixUniform = null, this.setUpdateMatrix(t === null);\n  }\n  set value(e) {\n    this.referenceNode ? this.referenceNode.value = e : this._value = e;\n  }\n  /**\n   * The texture value.\n   *\n   * @type {Texture}\n   */\n  get value() {\n    return this.referenceNode ? this.referenceNode.value : this._value;\n  }\n  /**\n   * Overwritten since the uniform hash is defined by the texture's UUID.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The uniform hash.\n   */\n  getUniformHash() {\n    return this.value.uuid;\n  }\n  /**\n   * Overwritten since the node type is inferred from the texture type.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType() {\n    return this.value.isDepthTexture === !0 ? \"float\" : this.value.type === Pe ? \"uvec4\" : this.value.type === Ve ? \"ivec4\" : \"vec4\";\n  }\n  /**\n   * Overwrites the default implementation to return a fixed value `'texture'`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return \"texture\";\n  }\n  /**\n   * Returns a default uvs based on the current texture's channel.\n   *\n   * @return {AttributeNode<vec2>} The default uvs.\n   */\n  getDefaultUV() {\n    return le(this.value.channel);\n  }\n  /**\n   * Overwritten to always return the texture reference of the node.\n   *\n   * @param {Any} state - This method can be invocated in different contexts so `state` can refer to any object type.\n   * @return {Texture} The texture reference.\n   */\n  updateReference() {\n    return this.value;\n  }\n  /**\n   * Transforms the given uv node with the texture transformation matrix.\n   *\n   * @param {Node} uvNode - The uv node to transform.\n   * @return {Node} The transformed uv node.\n   */\n  getTransformedUV(e) {\n    return this._matrixUniform === null && (this._matrixUniform = L(this.value.matrix)), this._matrixUniform.mul(T(e, 1)).xy;\n  }\n  /**\n   * Defines whether the uv transformation matrix should automatically be updated or not.\n   *\n   * @param {Boolean} value - The update toggle.\n   * @return {TextureNode} A reference to this node.\n   */\n  setUpdateMatrix(e) {\n    return this.updateMatrix = e, this.updateType = e ? z.RENDER : z.NONE, this;\n  }\n  /**\n   * Setups the uv node. Depending on the backend as well as texture's image and type, it might be necessary\n   * to modify the uv node for correct sampling.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {Node} uvNode - The uv node to setup.\n   * @return {Node} The updated uv node.\n   */\n  setupUV(e, t) {\n    const s = this.value;\n    return e.isFlipY() && (s.image instanceof ImageBitmap && s.flipY === !0 || s.isRenderTargetTexture === !0 || s.isFramebufferTexture === !0 || s.isDepthTexture === !0) && (this.sampler ? t = t.flipY() : t = t.setY(y(jt(this, this.levelNode).y).sub(t.y).sub(1))), t;\n  }\n  /**\n   * Setups texture node by preparing the internal nodes for code generation.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    const t = e.getNodeProperties(this);\n    t.referenceNode = this.referenceNode;\n    const s = this.value;\n    if (!s || s.isTexture !== !0)\n      throw new Error(\"THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().\");\n    let n = this.uvNode;\n    (n === null || e.context.forceUVContext === !0) && e.context.getUV && (n = e.context.getUV(this)), n || (n = this.getDefaultUV()), this.updateMatrix === !0 && (n = this.getTransformedUV(n)), n = this.setupUV(e, n);\n    let r = this.levelNode;\n    r === null && e.context.getTextureLevel && (r = e.context.getTextureLevel(this)), t.uvNode = n, t.levelNode = r, t.biasNode = this.biasNode, t.compareNode = this.compareNode, t.gradNode = this.gradNode, t.depthNode = this.depthNode;\n  }\n  /**\n   * Generates the uv code snippet.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {Node} uvNode - The uv node to generate code for.\n   * @return {String} The generated code snippet.\n   */\n  generateUV(e, t) {\n    return t.build(e, this.sampler === !0 ? \"vec2\" : \"ivec2\");\n  }\n  /**\n   * Generates the snippet for the texture sampling.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String} textureProperty - The texture property.\n   * @param {String} uvSnippet - The uv snippet.\n   * @param {String} levelSnippet - The level snippet.\n   * @param {String} biasSnippet - The bias snippet.\n   * @param {String} depthSnippet - The depth snippet.\n   * @param {String} compareSnippet - The compare snippet.\n   * @param {String} gradSnippet - The grad snippet.\n   * @return {String} The generated code snippet.\n   */\n  generateSnippet(e, t, s, n, r, i, a, u) {\n    const c = this.value;\n    let l;\n    return n ? l = e.generateTextureLevel(c, t, s, n, i) : r ? l = e.generateTextureBias(c, t, s, r, i) : u ? l = e.generateTextureGrad(c, t, s, u, i) : a ? l = e.generateTextureCompare(c, t, s, a, i) : this.sampler === !1 ? l = e.generateTextureLoad(c, t, s, i) : l = e.generateTexture(c, t, s, i), l;\n  }\n  /**\n   * Generates the code snippet of the texture node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String} output - The current output.\n   * @return {String} The generated code snippet.\n   */\n  generate(e, t) {\n    const s = this.value, n = e.getNodeProperties(this), r = super.generate(e, \"property\");\n    if (t === \"sampler\")\n      return r + \"_sampler\";\n    if (e.isReference(t))\n      return r;\n    {\n      const i = e.getDataFromNode(this);\n      let a = i.propertyName;\n      if (a === void 0) {\n        const { uvNode: l, levelNode: d, biasNode: h, compareNode: p, depthNode: f, gradNode: m } = n, _ = this.generateUV(e, l), S = d ? d.build(e, \"float\") : null, A = h ? h.build(e, \"float\") : null, M = f ? f.build(e, \"int\") : null, F = p ? p.build(e, \"float\") : null, D = m ? [m[0].build(e, \"vec2\"), m[1].build(e, \"vec2\")] : null, P = e.getVarFromNode(this);\n        a = e.getPropertyName(P);\n        const V = this.generateSnippet(e, r, _, S, A, M, F, D);\n        e.addLineFlowCode(`${a} = ${V}`, this), i.snippet = V, i.propertyName = a;\n      }\n      let u = a;\n      const c = this.getNodeType(e);\n      return e.needsToWorkingColorSpace(s) && (u = Ia(Qt(u, c), s.colorSpace).setup(e).build(e, c)), e.format(u, c, t);\n    }\n  }\n  /**\n   * Sets the sampler value.\n   *\n   * @param {Boolean} value - The sampler value to set.\n   * @return {TextureNode} A reference to this texture node.\n   */\n  setSampler(e) {\n    return this.sampler = e, this;\n  }\n  /**\n   * Returns the sampler value.\n   *\n   * @return {Boolean} The sampler value.\n   */\n  getSampler() {\n    return this.sampler;\n  }\n  // @TODO: Move to TSL\n  uv(e) {\n    return console.warn(\"THREE.TextureNode: .uv() has been renamed. Use .sample() instead.\"), this.sample(e);\n  }\n  /**\n   * Samples the texture with the given uv node.\n   *\n   * @param {Node} uvNode - The uv node.\n   * @return {TextureNode} A texture node representing the texture sample.\n   */\n  sample(e) {\n    const t = this.clone();\n    return t.uvNode = E(e), t.referenceNode = this.getSelf(), E(t);\n  }\n  /**\n   * Samples a blurred version of the texture by defining an internal bias.\n   *\n   * @param {Node<float>} amountNode - How blurred the texture should be.\n   * @return {TextureNode} A texture node representing the texture sample.\n   */\n  blur(e) {\n    const t = this.clone();\n    return t.biasNode = E(e).mul(Th(t)), t.referenceNode = this.getSelf(), E(t);\n  }\n  /**\n   * Samples a specific mip of the texture.\n   *\n   * @param {Node<int>} levelNode - The mip level to sample.\n   * @return {TextureNode} A texture node representing the texture sample.\n   */\n  level(e) {\n    const t = this.clone();\n    return t.levelNode = E(e), t.referenceNode = this.getSelf(), E(t);\n  }\n  /**\n   * Returns the texture size of the requested level.\n   *\n   * @param {Node<int>} levelNode - The level to compute the size for.\n   * @return {TextureSizeNode} The texture size.\n   */\n  size(e) {\n    return jt(this, e);\n  }\n  /**\n   * Samples the texture with the given bias.\n   *\n   * @param {Node<float>} biasNode - The bias node.\n   * @return {TextureNode} A texture node representing the texture sample.\n   */\n  bias(e) {\n    const t = this.clone();\n    return t.biasNode = E(e), t.referenceNode = this.getSelf(), E(t);\n  }\n  /**\n   * Samples the texture by executing a compare operation.\n   *\n   * @param {Node<float>} compareNode - The node that defines the compare value.\n   * @return {TextureNode} A texture node representing the texture sample.\n   */\n  compare(e) {\n    const t = this.clone();\n    return t.compareNode = E(e), t.referenceNode = this.getSelf(), E(t);\n  }\n  /**\n   * Samples the texture using an explicit gradient.\n   *\n   * @param {Node<vec2>} gradNodeX - The gradX node.\n   * @param {Node<vec2>} gradNodeY - The gradY node.\n   * @return {TextureNode} A texture node representing the texture sample.\n   */\n  grad(e, t) {\n    const s = this.clone();\n    return s.gradNode = [E(e), E(t)], s.referenceNode = this.getSelf(), E(s);\n  }\n  /**\n   * Samples the texture by defining a depth node.\n   *\n   * @param {Node<int>} depthNode - The depth node.\n   * @return {TextureNode} A texture node representing the texture sample.\n   */\n  depth(e) {\n    const t = this.clone();\n    return t.depthNode = E(e), t.referenceNode = this.getSelf(), E(t);\n  }\n  // --\n  serialize(e) {\n    super.serialize(e), e.value = this.value.toJSON(e.meta).uuid, e.sampler = this.sampler, e.updateMatrix = this.updateMatrix, e.updateType = this.updateType;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.value = e.meta.textures[e.value], this.sampler = e.sampler, this.updateMatrix = e.updateMatrix, this.updateType = e.updateType;\n  }\n  /**\n   * The update is used to implement the update of the uv transformation matrix.\n   */\n  update() {\n    const e = this.value, t = this._matrixUniform;\n    t !== null && (t.value = e.matrix), e.matrixAutoUpdate === !0 && e.updateMatrix();\n  }\n  /**\n   * Clones the texture node.\n   *\n   * @return {TextureNode} The cloned texture node.\n   */\n  clone() {\n    const e = new this.constructor(this.value, this.uvNode, this.levelNode, this.biasNode);\n    return e.sampler = this.sampler, e;\n  }\n}\nconst X = /* @__PURE__ */ C(bt), de = (...o) => X(...o).setSampler(!1), Ny = (o) => (o.isNode === !0 ? o : X(o)).convert(\"sampler\"), qt = /* @__PURE__ */ L(\"float\").label(\"cameraNear\").setGroup(O).onRenderUpdate(({ camera: o }) => o.near), Xt = /* @__PURE__ */ L(\"float\").label(\"cameraFar\").setGroup(O).onRenderUpdate(({ camera: o }) => o.far), _s = /* @__PURE__ */ L(\"mat4\").label(\"cameraProjectionMatrix\").setGroup(O).onRenderUpdate(({ camera: o }) => o.projectionMatrix), by = /* @__PURE__ */ L(\"mat4\").label(\"cameraProjectionMatrixInverse\").setGroup(O).onRenderUpdate(({ camera: o }) => o.projectionMatrixInverse), Xe = /* @__PURE__ */ L(\"mat4\").label(\"cameraViewMatrix\").setGroup(O).onRenderUpdate(({ camera: o }) => o.matrixWorldInverse), Sy = /* @__PURE__ */ L(\"mat4\").label(\"cameraWorldMatrix\").setGroup(O).onRenderUpdate(({ camera: o }) => o.matrixWorld), vy = /* @__PURE__ */ L(\"mat3\").label(\"cameraNormalMatrix\").setGroup(O).onRenderUpdate(({ camera: o }) => o.normalMatrix), _h = /* @__PURE__ */ L(new Y()).label(\"cameraPosition\").setGroup(O).onRenderUpdate(({ camera: o }, e) => e.value.setFromMatrixPosition(o.matrixWorld));\nclass j extends G {\n  static get type() {\n    return \"Object3DNode\";\n  }\n  /**\n   * Constructs a new object 3D node.\n   *\n   * @param {('position'|'viewPosition'|'direction'|'scale'|'worldMatrix')} scope - The node represents a different type of transformation depending on the scope.\n   * @param {Object3D?} [object3d=null] - The 3D object.\n   */\n  constructor(e, t = null) {\n    super(), this.scope = e, this.object3d = t, this.updateType = z.OBJECT, this._uniformNode = new Xn(null);\n  }\n  /**\n   * Overwritten since the node type is inferred from the scope.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType() {\n    const e = this.scope;\n    if (e === j.WORLD_MATRIX)\n      return \"mat4\";\n    if (e === j.POSITION || e === j.VIEW_POSITION || e === j.DIRECTION || e === j.SCALE)\n      return \"vec3\";\n  }\n  /**\n   * Updates the uniform value depending on the scope.\n   *\n   * @param {NodeFrame} frame - The current node frame.\n   */\n  update(e) {\n    const t = this.object3d, s = this._uniformNode, n = this.scope;\n    if (n === j.WORLD_MATRIX)\n      s.value = t.matrixWorld;\n    else if (n === j.POSITION)\n      s.value = s.value || new Y(), s.value.setFromMatrixPosition(t.matrixWorld);\n    else if (n === j.SCALE)\n      s.value = s.value || new Y(), s.value.setFromMatrixScale(t.matrixWorld);\n    else if (n === j.DIRECTION)\n      s.value = s.value || new Y(), t.getWorldDirection(s.value);\n    else if (n === j.VIEW_POSITION) {\n      const r = e.camera;\n      s.value = s.value || new Y(), s.value.setFromMatrixPosition(t.matrixWorld), s.value.applyMatrix4(r.matrixWorldInverse);\n    }\n  }\n  /**\n   * Generates the code snippet of the uniform node. The node type of the uniform\n   * node also depends on the selected scope.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The generated code snippet.\n   */\n  generate(e) {\n    const t = this.scope;\n    return t === j.WORLD_MATRIX ? this._uniformNode.nodeType = \"mat4\" : (t === j.POSITION || t === j.VIEW_POSITION || t === j.DIRECTION || t === j.SCALE) && (this._uniformNode.nodeType = \"vec3\"), this._uniformNode.build(e);\n  }\n  serialize(e) {\n    super.serialize(e), e.scope = this.scope;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.scope = e.scope;\n  }\n}\nj.WORLD_MATRIX = \"worldMatrix\";\nj.POSITION = \"position\";\nj.SCALE = \"scale\";\nj.VIEW_POSITION = \"viewPosition\";\nj.DIRECTION = \"direction\";\nconst Ay = /* @__PURE__ */ C(j, j.DIRECTION), Ry = /* @__PURE__ */ C(j, j.WORLD_MATRIX), Nh = /* @__PURE__ */ C(j, j.POSITION), Cy = /* @__PURE__ */ C(j, j.SCALE), Ey = /* @__PURE__ */ C(j, j.VIEW_POSITION);\nclass St extends j {\n  static get type() {\n    return \"ModelNode\";\n  }\n  /**\n   * Constructs a new object model node.\n   *\n   * @param {('position'|'viewPosition'|'direction'|'scale'|'worldMatrix')} scope - The node represents a different type of transformation depending on the scope.\n   */\n  constructor(e) {\n    super(e);\n  }\n  /**\n   * Extracts the model reference from the frame state and then\n   * updates the uniform value depending on the scope.\n   *\n   * @param {NodeFrame} frame - The current node frame.\n   */\n  update(e) {\n    this.object3d = e.object, super.update(e);\n  }\n}\nconst wy = /* @__PURE__ */ B(St, St.DIRECTION), nt = /* @__PURE__ */ B(St, St.WORLD_MATRIX), My = /* @__PURE__ */ B(St, St.POSITION), By = /* @__PURE__ */ B(St, St.SCALE), Fy = /* @__PURE__ */ B(St, St.VIEW_POSITION), bh = /* @__PURE__ */ L(new $n()).onObjectUpdate(({ object: o }, e) => e.value.getNormalMatrix(o.matrixWorld)), Uy = /* @__PURE__ */ L(new Ue()).onObjectUpdate(({ object: o }, e) => e.value.copy(o.matrixWorld).invert()), rn = /* @__PURE__ */ b((o) => o.renderer.nodes.modelViewMatrix || Sh).once()().toVar(\"modelViewMatrix\"), Sh = /* @__PURE__ */ Xe.mul(nt), Py = /* @__PURE__ */ b((o) => (o.context.isHighPrecisionModelViewMatrix = !0, L(\"mat4\").onObjectUpdate(({ object: e, camera: t }) => e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse, e.matrixWorld)))).once()().toVar(\"highpModelViewMatrix\"), Dy = /* @__PURE__ */ b((o) => {\n  const e = o.context.isHighPrecisionModelViewMatrix;\n  return L(\"mat3\").onObjectUpdate(({ object: t, camera: s }) => (e !== !0 && t.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse, t.matrixWorld), t.normalMatrix.getNormalMatrix(t.modelViewMatrix)));\n}).once()().toVar(\"highpModelNormalViewMatrix\"), fi = /* @__PURE__ */ Nt(\"position\", \"vec3\"), pe = /* @__PURE__ */ fi.varying(\"positionLocal\"), Hr = /* @__PURE__ */ fi.varying(\"positionPrevious\"), It = /* @__PURE__ */ nt.mul(pe).xyz.varying(\"v_positionWorld\").context({ needsPositionReassign: !0 }), La = /* @__PURE__ */ pe.transformDirection(nt).varying(\"v_positionWorldDirection\").normalize().toVar(\"positionWorldDirection\").context({ needsPositionReassign: !0 }), xe = /* @__PURE__ */ b((o) => o.context.setupPositionView(), \"vec3\").once()().varying(\"v_positionView\").context({ needsPositionReassign: !0 }), oe = /* @__PURE__ */ xe.negate().varying(\"v_positionViewDirection\").normalize().toVar(\"positionViewDirection\");\nclass Iy extends G {\n  static get type() {\n    return \"FrontFacingNode\";\n  }\n  /**\n   * Constructs a new front facing node.\n   */\n  constructor() {\n    super(\"bool\"), this.isFrontFacingNode = !0;\n  }\n  generate(e) {\n    const { renderer: t, material: s } = e;\n    return t.coordinateSystem === En && s.side === Tt ? \"false\" : e.getFrontFacing();\n  }\n}\nconst vh = /* @__PURE__ */ B(Iy), Qn = /* @__PURE__ */ g(vh).mul(2).sub(1), gi = /* @__PURE__ */ Nt(\"normal\", \"vec3\"), We = /* @__PURE__ */ b((o) => o.geometry.hasAttribute(\"normal\") === !1 ? (console.warn('TSL.NormalNode: Vertex attribute \"normal\" not found on geometry.'), T(0, 1, 0)) : gi, \"vec3\").once()().toVar(\"normalLocal\"), Ah = /* @__PURE__ */ xe.dFdx().cross(xe.dFdy()).normalize().toVar(\"normalFlat\"), it = /* @__PURE__ */ b((o) => {\n  let e;\n  return o.material.flatShading === !0 ? e = Ah : e = qe(Va(We), \"v_normalView\").normalize(), e;\n}, \"vec3\").once()().toVar(\"normalView\"), mi = /* @__PURE__ */ qe(it.transformDirection(Xe), \"v_normalWorld\").normalize().toVar(\"normalWorld\"), he = /* @__PURE__ */ b((o) => o.context.setupNormal(), \"vec3\").once()().mul(Qn).toVar(\"transformedNormalView\"), yi = /* @__PURE__ */ he.transformDirection(Xe).toVar(\"transformedNormalWorld\"), Gs = /* @__PURE__ */ b((o) => o.context.setupClearcoatNormal(), \"vec3\").once()().mul(Qn).toVar(\"transformedClearcoatNormalView\"), Rh = /* @__PURE__ */ b(([o, e = nt]) => {\n  const t = Le(e), s = o.div(T(t[0].dot(t[0]), t[1].dot(t[1]), t[2].dot(t[2])));\n  return t.mul(s).xyz;\n}), Va = /* @__PURE__ */ b(([o], e) => {\n  const t = e.renderer.nodes.modelNormalViewMatrix;\n  if (t !== null)\n    return t.transformDirection(o);\n  const s = bh.mul(o);\n  return Xe.transformDirection(s);\n}), Ch = /* @__PURE__ */ L(0).onReference(({ material: o }) => o).onRenderUpdate(({ material: o }) => o.refractionRatio), Eh = /* @__PURE__ */ oe.negate().reflect(he), wh = /* @__PURE__ */ oe.negate().refract(he, Ch), Mh = /* @__PURE__ */ Eh.transformDirection(Xe).toVar(\"reflectVector\"), Bh = /* @__PURE__ */ wh.transformDirection(Xe).toVar(\"reflectVector\");\nclass Ly extends bt {\n  static get type() {\n    return \"CubeTextureNode\";\n  }\n  /**\n   * Constructs a new cube texture node.\n   *\n   * @param {CubeTexture} value - The cube texture.\n   * @param {Node<vec3>?} [uvNode=null] - The uv node.\n   * @param {Node<int>?} [levelNode=null] - The level node.\n   * @param {Node<float>?} [biasNode=null] - The bias node.\n   */\n  constructor(e, t = null, s = null, n = null) {\n    super(e, t, s, n), this.isCubeTextureNode = !0;\n  }\n  /**\n   * Overwrites the default implementation to return a fixed value `'cubeTexture'`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return \"cubeTexture\";\n  }\n  /**\n   * Returns a default uvs based on the mapping type of the cube texture.\n   *\n   * @return {Node<vec3>} The default uv attribute.\n   */\n  getDefaultUV() {\n    const e = this.value;\n    return e.mapping === Ks ? Mh : e.mapping === Ys ? Bh : (console.error('THREE.CubeTextureNode: Mapping \"%s\" not supported.', e.mapping), T(0, 0, 0));\n  }\n  /**\n   * Overwritten with an empty implementation since the `updateMatrix` flag is ignored\n   * for cube textures. The uv transformation matrix is not applied to cube textures.\n   *\n   * @param {Boolean} value - The update toggle.\n   */\n  setUpdateMatrix() {\n  }\n  // Ignore .updateMatrix for CubeTextureNode\n  /**\n   * Setups the uv node. Depending on the backend as well as the texture type, it might be necessary\n   * to modify the uv node for correct sampling.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {Node} uvNode - The uv node to setup.\n   * @return {Node} The updated uv node.\n   */\n  setupUV(e, t) {\n    const s = this.value;\n    return e.renderer.coordinateSystem === sn || !s.isRenderTargetTexture ? T(t.x.negate(), t.yz) : t;\n  }\n  /**\n   * Generates the uv code snippet.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {Node} cubeUV - The uv node to generate code for.\n   * @return {String} The generated code snippet.\n   */\n  generateUV(e, t) {\n    return t.build(e, \"vec3\");\n  }\n}\nconst Js = /* @__PURE__ */ C(Ly);\nclass Ga extends Xn {\n  static get type() {\n    return \"BufferNode\";\n  }\n  /**\n   * Constructs a new buffer node.\n   *\n   * @param {Array<Number>} value - Array-like buffer data.\n   * @param {String} bufferType - The data type of the buffer.\n   * @param {Number} [bufferCount=0] - The count of buffer elements.\n   */\n  constructor(e, t, s = 0) {\n    super(e, t), this.isBufferNode = !0, this.bufferType = t, this.bufferCount = s;\n  }\n  /**\n   * The data type of the buffer elements.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The element type.\n   */\n  getElementType(e) {\n    return this.getNodeType(e);\n  }\n  /**\n   * Overwrites the default implementation to return a fixed value `'buffer'`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return \"buffer\";\n  }\n}\nconst Zn = (o, e, t) => E(new Ga(o, e, t));\nclass Vy extends Ts {\n  static get type() {\n    return \"UniformArrayElementNode\";\n  }\n  /**\n   * Constructs a new buffer node.\n   *\n   * @param {UniformArrayNode} uniformArrayNode - The uniform array node to access.\n   * @param {IndexNode} indexNode - The index data that define the position of the accessed element in the array.\n   */\n  constructor(e, t) {\n    super(e, t), this.isArrayBufferElementNode = !0;\n  }\n  generate(e) {\n    const t = super.generate(e), s = this.getNodeType(), n = this.node.getPaddedType();\n    return e.format(t, n, s);\n  }\n}\nclass Fh extends Ga {\n  static get type() {\n    return \"UniformArrayNode\";\n  }\n  /**\n   * Constructs a new uniform array node.\n   *\n   * @param {Array<Any>} value - Array holding the buffer data.\n   * @param {String?} [elementType=null] - The data type of a buffer element.\n   */\n  constructor(e, t = null) {\n    super(null), this.array = e, this.elementType = t === null ? Yt(e[0]) : t, this.paddedType = this.getPaddedType(), this.updateType = z.RENDER, this.isArrayBufferNode = !0;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from the\n   * {@link module:UniformArrayNode~UniformArrayNode#paddedType}.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType() {\n    return this.paddedType;\n  }\n  /**\n   * The data type of the array elements.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The element type.\n   */\n  getElementType() {\n    return this.elementType;\n  }\n  /**\n   * Returns the padded type based on the element type.\n   *\n   * @return {String} The padded type.\n   */\n  getPaddedType() {\n    const e = this.elementType;\n    let t = \"vec4\";\n    return e === \"mat2\" ? t = \"mat2\" : /mat/.test(e) === !0 ? t = \"mat4\" : e.charAt(0) === \"i\" ? t = \"ivec4\" : e.charAt(0) === \"u\" && (t = \"uvec4\"), t;\n  }\n  /**\n   * The update makes sure to correctly transfer the data from the (complex) objects\n   * in the array to the internal, correctly padded value buffer.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update() {\n    const { array: e, value: t } = this, s = this.elementType;\n    if (s === \"float\" || s === \"int\" || s === \"uint\")\n      for (let n = 0; n < e.length; n++) {\n        const r = n * 4;\n        t[r] = e[n];\n      }\n    else if (s === \"color\")\n      for (let n = 0; n < e.length; n++) {\n        const r = n * 4, i = e[n];\n        t[r] = i.r, t[r + 1] = i.g, t[r + 2] = i.b || 0;\n      }\n    else if (s === \"mat2\")\n      for (let n = 0; n < e.length; n++) {\n        const r = n * 4, i = e[n];\n        t[r] = i.elements[0], t[r + 1] = i.elements[1], t[r + 2] = i.elements[2], t[r + 3] = i.elements[3];\n      }\n    else if (s === \"mat3\")\n      for (let n = 0; n < e.length; n++) {\n        const r = n * 16, i = e[n];\n        t[r] = i.elements[0], t[r + 1] = i.elements[1], t[r + 2] = i.elements[2], t[r + 4] = i.elements[3], t[r + 5] = i.elements[4], t[r + 6] = i.elements[5], t[r + 8] = i.elements[6], t[r + 9] = i.elements[7], t[r + 10] = i.elements[8], t[r + 15] = 1;\n      }\n    else if (s === \"mat4\")\n      for (let n = 0; n < e.length; n++) {\n        const r = n * 16, i = e[n];\n        for (let a = 0; a < i.elements.length; a++)\n          t[r + a] = i.elements[a];\n      }\n    else\n      for (let n = 0; n < e.length; n++) {\n        const r = n * 4, i = e[n];\n        t[r] = i.x, t[r + 1] = i.y, t[r + 2] = i.z || 0, t[r + 3] = i.w || 0;\n      }\n  }\n  /**\n   * Implement the value buffer creation based on the array data.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @return {null}\n   */\n  setup(e) {\n    const t = this.array.length, s = this.elementType;\n    let n = Float32Array;\n    const r = this.paddedType, i = e.getTypeLength(r);\n    return s.charAt(0) === \"i\" && (n = Int32Array), s.charAt(0) === \"u\" && (n = Uint32Array), this.value = new n(t * i), this.bufferCount = t, this.bufferType = r, super.setup(e);\n  }\n  /**\n   * Overwrites the default `element()` method to provide element access\n   * based on {@link module:UniformArrayNode~UniformArrayNode}.\n   *\n   * @param {IndexNode} indexNode - The index node.\n   * @return {UniformArrayElementNode}\n   */\n  element(e) {\n    return E(new Vy(this, E(e)));\n  }\n}\nconst Ut = (o, e) => E(new Fh(o, e)), Gy = (o, e) => (console.warn(\"TSL.UniformArrayNode: uniforms() has been renamed to uniformArray().\"), E(new Fh(o, e)));\nclass Oy extends Ts {\n  static get type() {\n    return \"ReferenceElementNode\";\n  }\n  /**\n   * Constructs a new reference element node.\n   *\n   * @param {Node?} referenceNode - The reference node.\n   * @param {Node} indexNode - The index node that defines the element access.\n   */\n  constructor(e, t) {\n    super(e, t), this.referenceNode = e, this.isReferenceElementNode = !0;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from\n   * the uniform type of the reference node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType() {\n    return this.referenceNode.uniformType;\n  }\n  generate(e) {\n    const t = super.generate(e), s = this.referenceNode.getNodeType(), n = this.getNodeType();\n    return e.format(t, s, n);\n  }\n}\nclass xi extends G {\n  static get type() {\n    return \"ReferenceNode\";\n  }\n  /**\n   * Constructs a new reference node.\n   *\n   * @param {String} property - The name of the property the node refers to.\n   * @param {String} uniformType - The uniform type that should be used to represent the property value.\n   * @param {Object?} [object=null] - The object the property belongs to.\n   * @param {Number?} [count=null] - When the linked property is an array-like, this parameter defines its length.\n   */\n  constructor(e, t, s = null, n = null) {\n    super(), this.property = e, this.uniformType = t, this.object = s, this.count = n, this.properties = e.split(\".\"), this.reference = s, this.node = null, this.group = null, this.name = null, this.updateType = z.OBJECT;\n  }\n  /**\n   * When the referred property is array-like, this method can be used\n   * to access elements via an index node.\n   *\n   * @param {IndexNode} indexNode - indexNode.\n   * @return {ReferenceElementNode} A reference to an element.\n   */\n  element(e) {\n    return E(new Oy(this, E(e)));\n  }\n  /**\n   * Sets the uniform group for this reference node.\n   *\n   * @param {UniformGroupNode} group - The uniform group to set.\n   * @return {ReferenceNode} A reference to this node.\n   */\n  setGroup(e) {\n    return this.group = e, this;\n  }\n  /**\n   * Sets the label for the internal uniform.\n   *\n   * @param {String} name - The label to set.\n   * @return {ReferenceNode} A reference to this node.\n   */\n  label(e) {\n    return this.name = e, this;\n  }\n  /**\n   * Sets the node type which automatically defines the internal\n   * uniform type.\n   *\n   * @param {String} uniformType - The type to set.\n   */\n  setNodeType(e) {\n    let t = null;\n    this.count !== null ? t = Zn(null, e, this.count) : Array.isArray(this.getValueFromReference()) ? t = Ut(null, e) : e === \"texture\" ? t = X(null) : e === \"cubeTexture\" ? t = Js(null) : t = L(null, e), this.group !== null && t.setGroup(this.group), this.name !== null && t.label(this.name), this.node = t.getSelf();\n  }\n  /**\n   * This method is overwritten since the node type is inferred from\n   * the type of the reference node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.node === null && (this.updateReference(e), this.updateValue()), this.node.getNodeType(e);\n  }\n  /**\n   * Returns the property value from the given referred object.\n   *\n   * @param {Object} [object=this.reference] - The object to retrieve the property value from.\n   * @return {Any} The value.\n   */\n  getValueFromReference(e = this.reference) {\n    const { properties: t } = this;\n    let s = e[t[0]];\n    for (let n = 1; n < t.length; n++)\n      s = s[t[n]];\n    return s;\n  }\n  /**\n   * Allows to update the reference based on the given state. The state is only\n   * evaluated {@link module:ReferenceNode~ReferenceNode#object} is not set.\n   *\n   * @param {(NodeFrame|NodeBuilder)} state - The current state.\n   * @return {Object} The updated reference.\n   */\n  updateReference(e) {\n    return this.reference = this.object !== null ? this.object : e.object, this.reference;\n  }\n  /**\n   * The output of the reference node is the internal uniform node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {UniformNode} The output node.\n   */\n  setup() {\n    return this.updateValue(), this.node;\n  }\n  /**\n   * Overwritten to to update the internal uniform value.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update() {\n    this.updateValue();\n  }\n  /**\n   * Retrieves the value from the referred object property and uses it\n   * to updated the internal uniform.\n   */\n  updateValue() {\n    this.node === null && this.setNodeType(this.uniformType);\n    const e = this.getValueFromReference();\n    Array.isArray(e) ? this.node.array = e : this.node.value = e;\n  }\n}\nconst te = (o, e, t) => E(new xi(o, e, t)), Oo = (o, e, t, s) => E(new xi(o, e, s, t));\nclass ky extends xi {\n  static get type() {\n    return \"MaterialReferenceNode\";\n  }\n  /**\n   * Constructs a new material reference node.\n   *\n   * @param {String} property - The name of the property the node refers to.\n   * @param {String} inputType - The uniform type that should be used to represent the property value.\n   * @param {Material?} [material=null] - The material the property belongs to. When no material is set,\n   * the node refers to the material of the current rendered object.\n   */\n  constructor(e, t, s = null) {\n    super(e, t, s), this.material = s, this.isMaterialReferenceNode = !0;\n  }\n  /**\n   * Updates the reference based on the given state. The state is only evaluated\n   * {@link module:MaterialReferenceNode~MaterialReferenceNode#material} is not set.\n   *\n   * @param {(NodeFrame|NodeBuilder)} state - The current state.\n   * @return {Object} The updated reference.\n   */\n  updateReference(e) {\n    return this.reference = this.material !== null ? this.material : e.material, this.reference;\n  }\n}\nconst Pt = (o, e, t = null) => E(new ky(o, e, t)), Ti = /* @__PURE__ */ b((o) => (o.geometry.hasAttribute(\"tangent\") === !1 && o.geometry.computeTangents(), Nt(\"tangent\", \"vec4\")))(), Jn = /* @__PURE__ */ Ti.xyz.toVar(\"tangentLocal\"), er = /* @__PURE__ */ rn.mul(I(Jn, 0)).xyz.varying(\"v_tangentView\").normalize().toVar(\"tangentView\"), Uh = /* @__PURE__ */ er.transformDirection(Xe).varying(\"v_tangentWorld\").normalize().toVar(\"tangentWorld\"), Oa = /* @__PURE__ */ er.toVar(\"transformedTangentView\"), zy = /* @__PURE__ */ Oa.transformDirection(Xe).normalize().toVar(\"transformedTangentWorld\"), tr = (o) => o.mul(Ti.w).xyz, $y = /* @__PURE__ */ qe(tr(gi.cross(Ti)), \"v_bitangentGeometry\").normalize().toVar(\"bitangentGeometry\"), Wy = /* @__PURE__ */ qe(tr(We.cross(Jn)), \"v_bitangentLocal\").normalize().toVar(\"bitangentLocal\"), Ph = /* @__PURE__ */ qe(tr(it.cross(er)), \"v_bitangentView\").normalize().toVar(\"bitangentView\"), Hy = /* @__PURE__ */ qe(tr(mi.cross(Uh)), \"v_bitangentWorld\").normalize().toVar(\"bitangentWorld\"), Dh = /* @__PURE__ */ tr(he.cross(Oa)).normalize().toVar(\"transformedBitangentView\"), qy = /* @__PURE__ */ Dh.transformDirection(Xe).normalize().toVar(\"transformedBitangentWorld\"), us = /* @__PURE__ */ Le(er, Ph, it), Ih = /* @__PURE__ */ oe.mul(us), Xy = (o, e) => o.sub(Ih.mul(e)), Lh = /* @__PURE__ */ (() => {\n  let o = fs.cross(oe);\n  return o = o.cross(fs).normalize(), o = Z(o, he, Ht.mul(ft.oneMinus()).oneMinus().pow2().pow2()).normalize(), o;\n})(), Ky = /* @__PURE__ */ b((o) => {\n  const { eye_pos: e, surf_norm: t, mapN: s, uv: n } = o, r = e.dFdx(), i = e.dFdy(), a = n.dFdx(), u = n.dFdy(), c = t, l = i.cross(c), d = c.cross(r), h = l.mul(a.x).add(d.mul(u.x)), p = l.mul(a.y).add(d.mul(u.y)), f = h.dot(h).max(p.dot(p)), m = Qn.mul(f.inverseSqrt());\n  return _e(h.mul(s.x, m), p.mul(s.y, m), c.mul(s.z)).normalize();\n});\nclass Yy extends Ne {\n  static get type() {\n    return \"NormalMapNode\";\n  }\n  /**\n   * Constructs a new normal map node.\n   *\n   * @param {Node} node - Represents the normal map data.\n   * @param {Node?} [scaleNode=null] - Controls the intensity of the effect.\n   */\n  constructor(e, t = null) {\n    super(\"vec3\"), this.node = e, this.scaleNode = t, this.normalMapType = Fu;\n  }\n  setup(e) {\n    const { normalMapType: t, scaleNode: s } = this;\n    let n = this.node.mul(2).sub(1);\n    s !== null && (n = T(n.xy.mul(s), n.z));\n    let r = null;\n    return t === Vg ? r = Va(n) : t === Fu && (e.hasGeometryAttribute(\"tangent\") === !0 ? r = us.mul(n).normalize() : r = Ky({\n      eye_pos: xe,\n      surf_norm: it,\n      mapN: n,\n      uv: le()\n    })), r;\n  }\n}\nconst ko = /* @__PURE__ */ C(Yy), jy = b(({ textureNode: o, bumpScale: e }) => {\n  const t = (n) => o.cache().context({ getUV: (r) => n(r.uvNode || le()), forceUVContext: !0 }), s = g(t((n) => n));\n  return w(\n    g(t((n) => n.add(n.dFdx()))).sub(s),\n    g(t((n) => n.add(n.dFdy()))).sub(s)\n  ).mul(e);\n}), Qy = b((o) => {\n  const { surf_pos: e, surf_norm: t, dHdxy: s } = o, n = e.dFdx().normalize(), r = e.dFdy().normalize(), i = t, a = r.cross(i), u = i.cross(n), c = n.dot(a).mul(Qn), l = c.sign().mul(s.x.mul(a).add(s.y.mul(u)));\n  return c.abs().mul(t).sub(l).normalize();\n});\nclass Zy extends Ne {\n  static get type() {\n    return \"BumpMapNode\";\n  }\n  /**\n   * Constructs a new bump map node.\n   *\n   * @param {Node} textureNode - Represents the bump map data.\n   * @param {Node?} [scaleNode=null] - Controls the intensity of the bump effect.\n   */\n  constructor(e, t = null) {\n    super(\"vec3\"), this.textureNode = e, this.scaleNode = t;\n  }\n  setup() {\n    const e = this.scaleNode !== null ? this.scaleNode : 1, t = jy({ textureNode: this.textureNode, bumpScale: e });\n    return Qy({\n      surf_pos: xe,\n      surf_norm: it,\n      dHdxy: t\n    });\n  }\n}\nconst Vh = /* @__PURE__ */ C(Zy), Vu = /* @__PURE__ */ new Map();\nclass v extends G {\n  static get type() {\n    return \"MaterialNode\";\n  }\n  /**\n   * Constructs a new material node.\n   *\n   * @param {String} scope - The scope defines what kind of material property is referred by the node.\n   */\n  constructor(e) {\n    super(), this.scope = e;\n  }\n  /**\n   * Returns a cached reference node for the given property and type.\n   *\n   * @param {String} property - The name of the material property.\n   * @param {String} type - The uniform type of the property.\n   * @return {MaterialReferenceNode} A material reference node representing the property access.\n   */\n  getCache(e, t) {\n    let s = Vu.get(e);\n    return s === void 0 && (s = Pt(e, t), Vu.set(e, s)), s;\n  }\n  /**\n   * Returns a float-typed material reference node for the given property name.\n   *\n   * @param {String} property - The name of the material property.\n   * @return {MaterialReferenceNode<float>} A material reference node representing the property access.\n   */\n  getFloat(e) {\n    return this.getCache(e, \"float\");\n  }\n  /**\n   * Returns a color-typed material reference node for the given property name.\n   *\n   * @param {String} property - The name of the material property.\n   * @return {MaterialReferenceNode<color>} A material reference node representing the property access.\n   */\n  getColor(e) {\n    return this.getCache(e, \"color\");\n  }\n  /**\n   * Returns a texture-typed material reference node for the given property name.\n   *\n   * @param {String} property - The name of the material property.\n   * @return {MaterialReferenceNode} A material reference node representing the property access.\n   */\n  getTexture(e) {\n    return this.getCache(e === \"map\" ? \"map\" : e + \"Map\", \"texture\");\n  }\n  /**\n   * The node setup is done depending on the selected scope. Multiple material properties\n   * might be grouped into a single node composition if they logically belong together.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node} The node representing the selected scope.\n   */\n  setup(e) {\n    const t = e.context.material, s = this.scope;\n    let n = null;\n    if (s === v.COLOR) {\n      const r = t.color !== void 0 ? this.getColor(s) : T();\n      t.map && t.map.isTexture === !0 ? n = r.mul(this.getTexture(\"map\")) : n = r;\n    } else if (s === v.OPACITY) {\n      const r = this.getFloat(s);\n      t.alphaMap && t.alphaMap.isTexture === !0 ? n = r.mul(this.getTexture(\"alpha\")) : n = r;\n    } else if (s === v.SPECULAR_STRENGTH)\n      t.specularMap && t.specularMap.isTexture === !0 ? n = this.getTexture(\"specular\").r : n = g(1);\n    else if (s === v.SPECULAR_INTENSITY) {\n      const r = this.getFloat(s);\n      t.specularIntensityMap && t.specularIntensityMap.isTexture === !0 ? n = r.mul(this.getTexture(s).a) : n = r;\n    } else if (s === v.SPECULAR_COLOR) {\n      const r = this.getColor(s);\n      t.specularColorMap && t.specularColorMap.isTexture === !0 ? n = r.mul(this.getTexture(s).rgb) : n = r;\n    } else if (s === v.ROUGHNESS) {\n      const r = this.getFloat(s);\n      t.roughnessMap && t.roughnessMap.isTexture === !0 ? n = r.mul(this.getTexture(s).g) : n = r;\n    } else if (s === v.METALNESS) {\n      const r = this.getFloat(s);\n      t.metalnessMap && t.metalnessMap.isTexture === !0 ? n = r.mul(this.getTexture(s).b) : n = r;\n    } else if (s === v.EMISSIVE) {\n      const r = this.getFloat(\"emissiveIntensity\"), i = this.getColor(s).mul(r);\n      t.emissiveMap && t.emissiveMap.isTexture === !0 ? n = i.mul(this.getTexture(s)) : n = i;\n    } else if (s === v.NORMAL)\n      t.normalMap ? (n = ko(this.getTexture(\"normal\"), this.getCache(\"normalScale\", \"vec2\")), n.normalMapType = t.normalMapType) : t.bumpMap ? n = Vh(this.getTexture(\"bump\").r, this.getFloat(\"bumpScale\")) : n = it;\n    else if (s === v.CLEARCOAT) {\n      const r = this.getFloat(s);\n      t.clearcoatMap && t.clearcoatMap.isTexture === !0 ? n = r.mul(this.getTexture(s).r) : n = r;\n    } else if (s === v.CLEARCOAT_ROUGHNESS) {\n      const r = this.getFloat(s);\n      t.clearcoatRoughnessMap && t.clearcoatRoughnessMap.isTexture === !0 ? n = r.mul(this.getTexture(s).r) : n = r;\n    } else if (s === v.CLEARCOAT_NORMAL)\n      t.clearcoatNormalMap ? n = ko(this.getTexture(s), this.getCache(s + \"Scale\", \"vec2\")) : n = it;\n    else if (s === v.SHEEN) {\n      const r = this.getColor(\"sheenColor\").mul(this.getFloat(\"sheen\"));\n      t.sheenColorMap && t.sheenColorMap.isTexture === !0 ? n = r.mul(this.getTexture(\"sheenColor\").rgb) : n = r;\n    } else if (s === v.SHEEN_ROUGHNESS) {\n      const r = this.getFloat(s);\n      t.sheenRoughnessMap && t.sheenRoughnessMap.isTexture === !0 ? n = r.mul(this.getTexture(s).a) : n = r, n = n.clamp(0.07, 1);\n    } else if (s === v.ANISOTROPY)\n      if (t.anisotropyMap && t.anisotropyMap.isTexture === !0) {\n        const r = this.getTexture(s);\n        n = oi(Ps.x, Ps.y, Ps.y.negate(), Ps.x).mul(r.rg.mul(2).sub(w(1)).normalize().mul(r.b));\n      } else\n        n = Ps;\n    else if (s === v.IRIDESCENCE_THICKNESS) {\n      const r = te(\"1\", \"float\", t.iridescenceThicknessRange);\n      if (t.iridescenceThicknessMap) {\n        const i = te(\"0\", \"float\", t.iridescenceThicknessRange);\n        n = r.sub(i).mul(this.getTexture(s).g).add(i);\n      } else\n        n = r;\n    } else if (s === v.TRANSMISSION) {\n      const r = this.getFloat(s);\n      t.transmissionMap ? n = r.mul(this.getTexture(s).r) : n = r;\n    } else if (s === v.THICKNESS) {\n      const r = this.getFloat(s);\n      t.thicknessMap ? n = r.mul(this.getTexture(s).g) : n = r;\n    } else if (s === v.IOR)\n      n = this.getFloat(s);\n    else if (s === v.LIGHT_MAP)\n      n = this.getTexture(s).rgb.mul(this.getFloat(\"lightMapIntensity\"));\n    else if (s === v.AO)\n      n = this.getTexture(s).r.sub(1).mul(this.getFloat(\"aoMapIntensity\")).add(1);\n    else {\n      const r = this.getNodeType(e);\n      n = this.getCache(s, r);\n    }\n    return n;\n  }\n}\nv.ALPHA_TEST = \"alphaTest\";\nv.COLOR = \"color\";\nv.OPACITY = \"opacity\";\nv.SHININESS = \"shininess\";\nv.SPECULAR = \"specular\";\nv.SPECULAR_STRENGTH = \"specularStrength\";\nv.SPECULAR_INTENSITY = \"specularIntensity\";\nv.SPECULAR_COLOR = \"specularColor\";\nv.REFLECTIVITY = \"reflectivity\";\nv.ROUGHNESS = \"roughness\";\nv.METALNESS = \"metalness\";\nv.NORMAL = \"normal\";\nv.CLEARCOAT = \"clearcoat\";\nv.CLEARCOAT_ROUGHNESS = \"clearcoatRoughness\";\nv.CLEARCOAT_NORMAL = \"clearcoatNormal\";\nv.EMISSIVE = \"emissive\";\nv.ROTATION = \"rotation\";\nv.SHEEN = \"sheen\";\nv.SHEEN_ROUGHNESS = \"sheenRoughness\";\nv.ANISOTROPY = \"anisotropy\";\nv.IRIDESCENCE = \"iridescence\";\nv.IRIDESCENCE_IOR = \"iridescenceIOR\";\nv.IRIDESCENCE_THICKNESS = \"iridescenceThickness\";\nv.IOR = \"ior\";\nv.TRANSMISSION = \"transmission\";\nv.THICKNESS = \"thickness\";\nv.ATTENUATION_DISTANCE = \"attenuationDistance\";\nv.ATTENUATION_COLOR = \"attenuationColor\";\nv.LINE_SCALE = \"scale\";\nv.LINE_DASH_SIZE = \"dashSize\";\nv.LINE_GAP_SIZE = \"gapSize\";\nv.LINE_WIDTH = \"linewidth\";\nv.LINE_DASH_OFFSET = \"dashOffset\";\nv.POINT_WIDTH = \"pointWidth\";\nv.DISPERSION = \"dispersion\";\nv.LIGHT_MAP = \"light\";\nv.AO = \"ao\";\nconst Gh = /* @__PURE__ */ B(v, v.ALPHA_TEST), Oh = /* @__PURE__ */ B(v, v.COLOR), kh = /* @__PURE__ */ B(v, v.SHININESS), zh = /* @__PURE__ */ B(v, v.EMISSIVE), ka = /* @__PURE__ */ B(v, v.OPACITY), $h = /* @__PURE__ */ B(v, v.SPECULAR), zo = /* @__PURE__ */ B(v, v.SPECULAR_INTENSITY), Wh = /* @__PURE__ */ B(v, v.SPECULAR_COLOR), An = /* @__PURE__ */ B(v, v.SPECULAR_STRENGTH), Br = /* @__PURE__ */ B(v, v.REFLECTIVITY), Hh = /* @__PURE__ */ B(v, v.ROUGHNESS), qh = /* @__PURE__ */ B(v, v.METALNESS), Xh = /* @__PURE__ */ B(v, v.NORMAL).context({ getUV: null }), Kh = /* @__PURE__ */ B(v, v.CLEARCOAT), Yh = /* @__PURE__ */ B(v, v.CLEARCOAT_ROUGHNESS), jh = /* @__PURE__ */ B(v, v.CLEARCOAT_NORMAL).context({ getUV: null }), Qh = /* @__PURE__ */ B(v, v.ROTATION), Zh = /* @__PURE__ */ B(v, v.SHEEN), Jh = /* @__PURE__ */ B(v, v.SHEEN_ROUGHNESS), ep = /* @__PURE__ */ B(v, v.ANISOTROPY), tp = /* @__PURE__ */ B(v, v.IRIDESCENCE), sp = /* @__PURE__ */ B(v, v.IRIDESCENCE_IOR), np = /* @__PURE__ */ B(v, v.IRIDESCENCE_THICKNESS), rp = /* @__PURE__ */ B(v, v.TRANSMISSION), ip = /* @__PURE__ */ B(v, v.THICKNESS), op = /* @__PURE__ */ B(v, v.IOR), ap = /* @__PURE__ */ B(v, v.ATTENUATION_DISTANCE), up = /* @__PURE__ */ B(v, v.ATTENUATION_COLOR), cp = /* @__PURE__ */ B(v, v.LINE_SCALE), lp = /* @__PURE__ */ B(v, v.LINE_DASH_SIZE), dp = /* @__PURE__ */ B(v, v.LINE_GAP_SIZE), Jy = /* @__PURE__ */ B(v, v.LINE_WIDTH), hp = /* @__PURE__ */ B(v, v.LINE_DASH_OFFSET), ex = /* @__PURE__ */ B(v, v.POINT_WIDTH), pp = /* @__PURE__ */ B(v, v.DISPERSION), za = /* @__PURE__ */ B(v, v.LIGHT_MAP), fp = /* @__PURE__ */ B(v, v.AO), Ps = /* @__PURE__ */ L(new He()).onReference(function(o) {\n  return o.material;\n}).onRenderUpdate(function({ material: o }) {\n  this.value.set(o.anisotropy * Math.cos(o.anisotropyRotation), o.anisotropy * Math.sin(o.anisotropyRotation));\n}), $a = /* @__PURE__ */ b((o) => o.context.setupModelViewProjection(), \"vec4\").once()().varying(\"v_modelViewProjection\");\nclass ae extends G {\n  static get type() {\n    return \"IndexNode\";\n  }\n  /**\n   * Constructs a new index node.\n   *\n   * @param {('vertex'|'instance'|'subgroup'|'invocationLocal'|'invocationSubgroup'|'draw')} scope - The scope of the index node.\n   */\n  constructor(e) {\n    super(\"uint\"), this.scope = e, this.isIndexNode = !0;\n  }\n  generate(e) {\n    const t = this.getNodeType(e), s = this.scope;\n    let n;\n    if (s === ae.VERTEX)\n      n = e.getVertexIndex();\n    else if (s === ae.INSTANCE)\n      n = e.getInstanceIndex();\n    else if (s === ae.DRAW)\n      n = e.getDrawIndex();\n    else if (s === ae.INVOCATION_LOCAL)\n      n = e.getInvocationLocalIndex();\n    else if (s === ae.INVOCATION_SUBGROUP)\n      n = e.getInvocationSubgroupIndex();\n    else if (s === ae.SUBGROUP)\n      n = e.getSubgroupIndex();\n    else\n      throw new Error(\"THREE.IndexNode: Unknown scope: \" + s);\n    let r;\n    return e.shaderStage === \"vertex\" || e.shaderStage === \"compute\" ? r = n : r = qe(this).build(e, t), r;\n  }\n}\nae.VERTEX = \"vertex\";\nae.INSTANCE = \"instance\";\nae.SUBGROUP = \"subgroup\";\nae.INVOCATION_LOCAL = \"invocationLocal\";\nae.INVOCATION_SUBGROUP = \"invocationSubgroup\";\nae.DRAW = \"draw\";\nconst gp = /* @__PURE__ */ B(ae, ae.VERTEX), sr = /* @__PURE__ */ B(ae, ae.INSTANCE), tx = /* @__PURE__ */ B(ae, ae.SUBGROUP), sx = /* @__PURE__ */ B(ae, ae.INVOCATION_SUBGROUP), nx = /* @__PURE__ */ B(ae, ae.INVOCATION_LOCAL), mp = /* @__PURE__ */ B(ae, ae.DRAW);\nclass yp extends G {\n  static get type() {\n    return \"InstanceNode\";\n  }\n  /**\n   * Constructs a new instance node.\n   *\n   * @param {Number} count - The number of instances.\n   * @param {InstancedBufferAttribute} instanceMatrix - Instanced buffer attribute representing the instance transformations.\n   * @param {InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.\n   */\n  constructor(e, t, s) {\n    super(\"void\"), this.count = e, this.instanceMatrix = t, this.instanceColor = s, this.instanceMatrixNode = null, this.instanceColorNode = null, this.updateType = z.FRAME, this.buffer = null, this.bufferColor = null;\n  }\n  /**\n   * Setups the internal buffers and nodes and assigns the transformed vertex data\n   * to predefined node variables for accumulation. That follows the same patterns\n   * like with morph and skinning nodes.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    const { count: t, instanceMatrix: s, instanceColor: n } = this;\n    let { instanceMatrixNode: r, instanceColorNode: i } = this;\n    if (r === null) {\n      if (t <= 1e3)\n        r = Zn(s.array, \"mat4\", Math.max(t, 1)).element(sr);\n      else {\n        const u = new Gg(s.array, 16, 1);\n        this.buffer = u;\n        const c = s.usage === Is ? Go : Wr, l = [\n          // F.Signature -> bufferAttribute( array, type, stride, offset )\n          c(u, \"vec4\", 16, 0),\n          c(u, \"vec4\", 16, 4),\n          c(u, \"vec4\", 16, 8),\n          c(u, \"vec4\", 16, 12)\n        ];\n        r = ps(...l);\n      }\n      this.instanceMatrixNode = r;\n    }\n    if (n && i === null) {\n      const u = new oa(n.array, 3), c = n.usage === Is ? Go : Wr;\n      this.bufferColor = u, i = T(c(u, \"vec3\", 3, 0)), this.instanceColorNode = i;\n    }\n    const a = r.mul(pe).xyz;\n    if (pe.assign(a), e.hasGeometryAttribute(\"normal\")) {\n      const u = Rh(We, r);\n      We.assign(u);\n    }\n    this.instanceColorNode !== null && Dn(\"vec3\", \"vInstanceColor\").assign(this.instanceColorNode);\n  }\n  /**\n   * Checks if the internal buffers required an update.\n   *\n   * @param {NodeFrame} frame - The current node frame.\n   */\n  update() {\n    this.instanceMatrix.usage !== Is && this.buffer !== null && this.instanceMatrix.version !== this.buffer.version && (this.buffer.version = this.instanceMatrix.version), this.instanceColor && this.instanceColor.usage !== Is && this.bufferColor !== null && this.instanceColor.version !== this.bufferColor.version && (this.bufferColor.version = this.instanceColor.version);\n  }\n}\nconst rx = /* @__PURE__ */ C(yp);\nclass ix extends yp {\n  static get type() {\n    return \"InstancedMeshNode\";\n  }\n  /**\n   * Constructs a new instanced mesh node.\n   *\n   * @param {InstancedMesh} instancedMesh - The instanced mesh.\n   */\n  constructor(e) {\n    const { count: t, instanceMatrix: s, instanceColor: n } = e;\n    super(t, s, n), this.instancedMesh = e;\n  }\n}\nconst xp = /* @__PURE__ */ C(ix);\nclass ox extends G {\n  static get type() {\n    return \"BatchNode\";\n  }\n  /**\n   * Constructs a new batch node.\n   *\n   * @param {BatchedMesh} batchMesh - A reference to batched mesh.\n   */\n  constructor(e) {\n    super(\"void\"), this.batchMesh = e, this.batchingIdNode = null;\n  }\n  /**\n   * Setups the internal buffers and nodes and assigns the transformed vertex data\n   * to predefined node variables for accumulation. That follows the same patterns\n   * like with morph and skinning nodes.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    this.batchingIdNode === null && (e.getDrawIndex() === null ? this.batchingIdNode = sr : this.batchingIdNode = mp);\n    const s = b(([f]) => {\n      const m = jt(de(this.batchMesh._indirectTexture), 0), _ = y(f).modInt(y(m)), S = y(f).div(y(m));\n      return de(this.batchMesh._indirectTexture, Ae(_, S)).x;\n    }).setLayout({\n      name: \"getIndirectIndex\",\n      type: \"uint\",\n      inputs: [\n        { name: \"id\", type: \"int\" }\n      ]\n    })(y(this.batchingIdNode)), n = this.batchMesh._matricesTexture, r = jt(de(n), 0), i = g(s).mul(4).toInt().toVar(), a = i.modInt(r), u = i.div(y(r)), c = ps(\n      de(n, Ae(a, u)),\n      de(n, Ae(a.add(1), u)),\n      de(n, Ae(a.add(2), u)),\n      de(n, Ae(a.add(3), u))\n    ), l = this.batchMesh._colorsTexture;\n    if (l !== null) {\n      const m = b(([_]) => {\n        const S = jt(de(l), 0).x, A = _, M = A.modInt(S), F = A.div(S);\n        return de(l, Ae(M, F)).rgb;\n      }).setLayout({\n        name: \"getBatchingColor\",\n        type: \"vec3\",\n        inputs: [\n          { name: \"id\", type: \"int\" }\n        ]\n      })(s);\n      Dn(\"vec3\", \"vBatchColor\").assign(m);\n    }\n    const d = Le(c);\n    pe.assign(c.mul(pe));\n    const h = We.div(T(d[0].dot(d[0]), d[1].dot(d[1]), d[2].dot(d[2]))), p = d.mul(h).xyz;\n    We.assign(p), e.hasGeometryAttribute(\"tangent\") && Jn.mulAssign(d);\n  }\n}\nconst Tp = /* @__PURE__ */ C(ox), Gu = /* @__PURE__ */ new WeakMap();\nclass _p extends G {\n  static get type() {\n    return \"SkinningNode\";\n  }\n  /**\n   * Constructs a new skinning node.\n   *\n   * @param {SkinnedMesh} skinnedMesh - The skinned mesh.\n   * @param {Boolean} [useReference=false] - Whether to use reference nodes for internal skinned mesh related data or not.\n   */\n  constructor(e, t = !1) {\n    super(\"void\"), this.skinnedMesh = e, this.useReference = t, this.updateType = z.OBJECT, this.skinIndexNode = Nt(\"skinIndex\", \"uvec4\"), this.skinWeightNode = Nt(\"skinWeight\", \"vec4\");\n    let s, n, r;\n    t ? (s = te(\"bindMatrix\", \"mat4\"), n = te(\"bindMatrixInverse\", \"mat4\"), r = Oo(\"skeleton.boneMatrices\", \"mat4\", e.skeleton.bones.length)) : (s = L(e.bindMatrix, \"mat4\"), n = L(e.bindMatrixInverse, \"mat4\"), r = Zn(e.skeleton.boneMatrices, \"mat4\", e.skeleton.bones.length)), this.bindMatrixNode = s, this.bindMatrixInverseNode = n, this.boneMatricesNode = r, this.previousBoneMatricesNode = null;\n  }\n  /**\n   * Transforms the given vertex position via skinning.\n   *\n   * @param {Node} [boneMatrices=this.boneMatricesNode] - The bone matrices\n   * @param {Node<vec3>} [position=positionLocal] - The vertex position in local space.\n   * @return {Node<vec3>} The transformed vertex position.\n   */\n  getSkinnedPosition(e = this.boneMatricesNode, t = pe) {\n    const { skinIndexNode: s, skinWeightNode: n, bindMatrixNode: r, bindMatrixInverseNode: i } = this, a = e.element(s.x), u = e.element(s.y), c = e.element(s.z), l = e.element(s.w), d = r.mul(t), h = _e(\n      a.mul(n.x).mul(d),\n      u.mul(n.y).mul(d),\n      c.mul(n.z).mul(d),\n      l.mul(n.w).mul(d)\n    );\n    return i.mul(h).xyz;\n  }\n  /**\n   * Transforms the given vertex normal via skinning.\n   *\n   * @param {Node} [boneMatrices=this.boneMatricesNode] - The bone matrices\n   * @param {Node<vec3>} [normal=normalLocal] - The vertex normal in local space.\n   * @return {Node<vec3>} The transformed vertex normal.\n   */\n  getSkinnedNormal(e = this.boneMatricesNode, t = We) {\n    const { skinIndexNode: s, skinWeightNode: n, bindMatrixNode: r, bindMatrixInverseNode: i } = this, a = e.element(s.x), u = e.element(s.y), c = e.element(s.z), l = e.element(s.w);\n    let d = _e(\n      n.x.mul(a),\n      n.y.mul(u),\n      n.z.mul(c),\n      n.w.mul(l)\n    );\n    return d = i.mul(d).mul(r), d.transformDirection(t).xyz;\n  }\n  /**\n   * Transforms the given vertex normal via skinning.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec3>} The skinned position from the previous frame.\n   */\n  getPreviousSkinnedPosition(e) {\n    const t = e.object;\n    return this.previousBoneMatricesNode === null && (t.skeleton.previousBoneMatrices = new Float32Array(t.skeleton.boneMatrices), this.previousBoneMatricesNode = Oo(\"skeleton.previousBoneMatrices\", \"mat4\", t.skeleton.bones.length)), this.getSkinnedPosition(this.previousBoneMatricesNode, Hr);\n  }\n  /**\n   * Returns `true` if bone matrices from the previous frame are required.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Boolean} Whether bone matrices from the previous frame are required or not.\n   */\n  needsPreviousBoneMatrices(e) {\n    const t = e.renderer.getMRT();\n    return t && t.has(\"velocity\") || Dl(e.object).useVelocity === !0;\n  }\n  /**\n   * Setups the skinning node by assigning the transformed vertex data to predefined node variables.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    this.needsPreviousBoneMatrices(e) && Hr.assign(this.getPreviousSkinnedPosition(e));\n    const t = this.getSkinnedPosition();\n    if (pe.assign(t), e.hasGeometryAttribute(\"normal\")) {\n      const s = this.getSkinnedNormal();\n      We.assign(s), e.hasGeometryAttribute(\"tangent\") && Jn.assign(s);\n    }\n  }\n  /**\n   * Generates the code snippet of the skinning node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String} output - The current output.\n   * @return {String} The generated code snippet.\n   */\n  generate(e, t) {\n    if (t !== \"void\")\n      return pe.build(e, t);\n  }\n  /**\n   * Updates the state of the skinned mesh by updating the skeleton once per frame.\n   *\n   * @param {NodeFrame} frame - The current node frame.\n   */\n  update(e) {\n    const s = (this.useReference ? e.object : this.skinnedMesh).skeleton;\n    Gu.get(s) !== e.frameId && (Gu.set(s, e.frameId), this.previousBoneMatricesNode !== null && s.previousBoneMatrices.set(s.boneMatrices), s.update());\n  }\n}\nconst ax = (o) => E(new _p(o)), Np = (o) => E(new _p(o, !0));\nclass ux extends G {\n  static get type() {\n    return \"LoopNode\";\n  }\n  /**\n   * Constructs a new loop node.\n   *\n   * @param {Array<Any>} params - Depending on the loop type, array holds different parameterization values for the loop.\n   */\n  constructor(e = []) {\n    super(), this.params = e;\n  }\n  /**\n   * Returns a loop variable name based on an index. The pattern is\n   * `0` = `i`, `1`= `j`, `2`= `k` and so on.\n   *\n   * @param {Number} index - The index.\n   * @return {String} The loop variable name.\n   */\n  getVarName(e) {\n    return String.fromCharCode(105 + e);\n  }\n  /**\n   * Returns properties about this node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Object} The node properties.\n   */\n  getProperties(e) {\n    const t = e.getNodeProperties(this);\n    if (t.stackNode !== void 0) return t;\n    const s = {};\n    for (let r = 0, i = this.params.length - 1; r < i; r++) {\n      const a = this.params[r], u = a.isNode !== !0 && a.name || this.getVarName(r), c = a.isNode !== !0 && a.type || \"int\";\n      s[u] = Qt(u, c);\n    }\n    const n = e.addStack();\n    return t.returnsNode = this.params[this.params.length - 1](s, n, e), t.stackNode = n, e.removeStack(), t;\n  }\n  /**\n   * This method is overwritten since the node type is inferred based on the loop configuration.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    const { returnsNode: t } = this.getProperties(e);\n    return t ? t.getNodeType(e) : \"void\";\n  }\n  setup(e) {\n    this.getProperties(e);\n  }\n  generate(e) {\n    const t = this.getProperties(e), s = this.params, n = t.stackNode;\n    for (let a = 0, u = s.length - 1; a < u; a++) {\n      const c = s[a];\n      let l = null, d = null, h = null, p = null, f = null, m = null;\n      c.isNode ? (p = \"int\", h = this.getVarName(a), l = \"0\", d = c.build(e, p), f = \"<\") : (p = c.type || \"int\", h = c.name || this.getVarName(a), l = c.start, d = c.end, f = c.condition, m = c.update, typeof l == \"number\" ? l = e.generateConst(p, l) : l && l.isNode && (l = l.build(e, p)), typeof d == \"number\" ? d = e.generateConst(p, d) : d && d.isNode && (d = d.build(e, p)), l !== void 0 && d === void 0 ? (l = l + \" - 1\", d = \"0\", f = \">=\") : d !== void 0 && l === void 0 && (l = \"0\", f = \"<\"), f === void 0 && (Number(l) > Number(d) ? f = \">=\" : f = \"<\"));\n      const _ = { start: l, end: d, condition: f }, S = _.start, A = _.end;\n      let M = \"\", F = \"\", D = \"\";\n      m || (p === \"int\" || p === \"uint\" ? f.includes(\"<\") ? m = \"++\" : m = \"--\" : f.includes(\"<\") ? m = \"+= 1.\" : m = \"-= 1.\"), M += e.getVar(p, h) + \" = \" + S, F += h + \" \" + f + \" \" + A, D += h + \" \" + m;\n      const P = `for ( ${M}; ${F}; ${D} )`;\n      e.addFlowCode((a === 0 ? `\n` : \"\") + e.tab + P + ` {\n\n`).addFlowTab();\n    }\n    const r = n.build(e, \"void\"), i = t.returnsNode ? t.returnsNode.build(e) : \"\";\n    e.removeFlowTab().addFlowCode(`\n` + e.tab + r);\n    for (let a = 0, u = this.params.length - 1; a < u; a++)\n      e.addFlowCode((a === 0 ? \"\" : e.tab) + `}\n\n`).removeFlowTab();\n    return e.addFlowTab(), i;\n  }\n}\nconst J = (...o) => E(new ux(hs(o, \"int\"))).append(), cx = () => Qt(\"continue\").append(), bp = () => Qt(\"break\").append(), lx = (...o) => (console.warn(\"TSL.LoopNode: loop() has been renamed to Loop().\"), J(...o)), Bi = /* @__PURE__ */ new WeakMap(), je = /* @__PURE__ */ new Ce(), Ou = /* @__PURE__ */ b(({ bufferMap: o, influence: e, stride: t, width: s, depth: n, offset: r }) => {\n  const i = y(gp).mul(t).add(r), a = i.div(s), u = i.sub(a.mul(s));\n  return de(o, Ae(u, a)).depth(n).mul(e);\n});\nfunction dx(o) {\n  const e = o.morphAttributes.position !== void 0, t = o.morphAttributes.normal !== void 0, s = o.morphAttributes.color !== void 0, n = o.morphAttributes.position || o.morphAttributes.normal || o.morphAttributes.color, r = n !== void 0 ? n.length : 0;\n  let i = Bi.get(o);\n  if (i === void 0 || i.count !== r) {\n    let S = function() {\n      m.dispose(), Bi.delete(o), o.removeEventListener(\"dispose\", S);\n    };\n    i !== void 0 && i.texture.dispose();\n    const a = o.morphAttributes.position || [], u = o.morphAttributes.normal || [], c = o.morphAttributes.color || [];\n    let l = 0;\n    e === !0 && (l = 1), t === !0 && (l = 2), s === !0 && (l = 3);\n    let d = o.attributes.position.count * l, h = 1;\n    const p = 4096;\n    d > p && (h = Math.ceil(d / p), d = p);\n    const f = new Float32Array(d * h * 4 * r), m = new bm(f, d, h, r);\n    m.type = st, m.needsUpdate = !0;\n    const _ = l * 4;\n    for (let A = 0; A < r; A++) {\n      const M = a[A], F = u[A], D = c[A], P = d * h * 4 * A;\n      for (let V = 0; V < M.count; V++) {\n        const k = V * _;\n        e === !0 && (je.fromBufferAttribute(M, V), f[P + k + 0] = je.x, f[P + k + 1] = je.y, f[P + k + 2] = je.z, f[P + k + 3] = 0), t === !0 && (je.fromBufferAttribute(F, V), f[P + k + 4] = je.x, f[P + k + 5] = je.y, f[P + k + 6] = je.z, f[P + k + 7] = 0), s === !0 && (je.fromBufferAttribute(D, V), f[P + k + 8] = je.x, f[P + k + 9] = je.y, f[P + k + 10] = je.z, f[P + k + 11] = D.itemSize === 4 ? je.w : 1);\n      }\n    }\n    i = {\n      count: r,\n      texture: m,\n      stride: l,\n      size: new He(d, h)\n    }, Bi.set(o, i), o.addEventListener(\"dispose\", S);\n  }\n  return i;\n}\nclass hx extends G {\n  static get type() {\n    return \"MorphNode\";\n  }\n  /**\n   * Constructs a new morph node.\n   *\n   * @param {Mesh} mesh - The mesh holding the morph targets.\n   */\n  constructor(e) {\n    super(\"void\"), this.mesh = e, this.morphBaseInfluence = L(1), this.updateType = z.OBJECT;\n  }\n  /**\n   * Setups the morph node by assigning the transformed vertex data to predefined node variables.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    const { geometry: t } = e, s = t.morphAttributes.position !== void 0, n = t.hasAttribute(\"normal\") && t.morphAttributes.normal !== void 0, r = t.morphAttributes.position || t.morphAttributes.normal || t.morphAttributes.color, i = r !== void 0 ? r.length : 0, { texture: a, stride: u, size: c } = dx(t);\n    s === !0 && pe.mulAssign(this.morphBaseInfluence), n === !0 && We.mulAssign(this.morphBaseInfluence);\n    const l = y(c.width);\n    J(i, ({ i: d }) => {\n      const h = g(0).toVar();\n      this.mesh.count > 1 && this.mesh.morphTexture !== null && this.mesh.morphTexture !== void 0 ? h.assign(de(this.mesh.morphTexture, Ae(y(d).add(1), y(sr))).r) : h.assign(te(\"morphTargetInfluences\", \"float\").element(d).toVar()), s === !0 && pe.addAssign(Ou({\n        bufferMap: a,\n        influence: h,\n        stride: u,\n        width: l,\n        depth: d,\n        offset: y(0)\n      })), n === !0 && We.addAssign(Ou({\n        bufferMap: a,\n        influence: h,\n        stride: u,\n        width: l,\n        depth: d,\n        offset: y(1)\n      }));\n    });\n  }\n  /**\n   * Updates the state of the morphed mesh by updating the base influence.\n   *\n   * @param {NodeFrame} frame - The current node frame.\n   */\n  update() {\n    const e = this.morphBaseInfluence;\n    this.mesh.geometry.morphTargetsRelative ? e.value = 1 : e.value = 1 - this.mesh.morphTargetInfluences.reduce((t, s) => t + s, 0);\n  }\n}\nconst Sp = /* @__PURE__ */ C(hx);\nclass on extends G {\n  static get type() {\n    return \"LightingNode\";\n  }\n  /**\n   * Constructs a new lighting node.\n   */\n  constructor() {\n    super(\"vec3\"), this.isLightingNode = !0;\n  }\n}\nclass px extends on {\n  static get type() {\n    return \"AONode\";\n  }\n  /**\n   * Constructs a new AO node.\n   *\n   * @param {Node<float>?} [aoNode=null] - The ambient occlusion node.\n   */\n  constructor(e = null) {\n    super(), this.aoNode = e;\n  }\n  setup(e) {\n    e.context.ambientOcclusion.mulAssign(this.aoNode);\n  }\n}\nclass fx extends jd {\n  static get type() {\n    return \"LightingContextNode\";\n  }\n  /**\n   * Constructs a new lighting context node.\n   *\n   * @param {LightsNode} node - The lights node.\n   * @param {LightingModel?} [lightingModel=null] - The current lighting model.\n   * @param {Node<vec3>?} [backdropNode=null] - A backdrop node.\n   * @param {Node<float>?} [backdropAlphaNode=null] - A backdrop alpha node.\n   */\n  constructor(e, t = null, s = null, n = null) {\n    super(e), this.lightingModel = t, this.backdropNode = s, this.backdropAlphaNode = n, this._value = null;\n  }\n  /**\n   * Returns a lighting context object.\n   *\n   * @return {{\n   * radiance: Node<vec3>,\n   * irradiance: Node<vec3>,\n   * iblIrradiance: Node<vec3>,\n   * ambientOcclusion: Node<float>,\n   * reflectedLight: {directDiffuse: Node<vec3>, directSpecular: Node<vec3>, indirectDiffuse: Node<vec3>, indirectSpecular: Node<vec3>},\n   * backdrop: Node<vec3>,\n   * backdropAlpha: Node<float>\n   * }} The lighting context object.\n   */\n  getContext() {\n    const { backdropNode: e, backdropAlphaNode: t } = this, s = T().toVar(\"directDiffuse\"), n = T().toVar(\"directSpecular\"), r = T().toVar(\"indirectDiffuse\"), i = T().toVar(\"indirectSpecular\"), a = {\n      directDiffuse: s,\n      directSpecular: n,\n      indirectDiffuse: r,\n      indirectSpecular: i\n    };\n    return {\n      radiance: T().toVar(\"radiance\"),\n      irradiance: T().toVar(\"irradiance\"),\n      iblIrradiance: T().toVar(\"iblIrradiance\"),\n      ambientOcclusion: g(1).toVar(\"ambientOcclusion\"),\n      reflectedLight: a,\n      backdrop: e,\n      backdropAlpha: t\n    };\n  }\n  setup(e) {\n    return this.value = this._value || (this._value = this.getContext()), this.value.lightingModel = this.lightingModel || e.context.lightingModel, super.setup(e);\n  }\n}\nconst vp = /* @__PURE__ */ C(fx);\nclass gx extends on {\n  static get type() {\n    return \"IrradianceNode\";\n  }\n  /**\n   * Constructs a new irradiance node.\n   *\n   * @param {Node<vec3>} node - A node contributing irradiance.\n   */\n  constructor(e) {\n    super(), this.node = e;\n  }\n  setup(e) {\n    e.context.irradiance.addAssign(this.node);\n  }\n}\nlet un, cn;\nclass Se extends G {\n  static get type() {\n    return \"ScreenNode\";\n  }\n  /**\n   * Constructs a new screen node.\n   *\n   * @param {('coordinate'|'viewport'|'size'|'uv')} scope - The node's scope.\n   */\n  constructor(e) {\n    super(), this.scope = e, this.isViewportNode = !0;\n  }\n  /**\n   * This method is overwritten since the node type depends on the selected scope.\n   *\n   * @return {('vec2'|'vec4')} The node type.\n   */\n  getNodeType() {\n    return this.scope === Se.VIEWPORT ? \"vec4\" : \"vec2\";\n  }\n  /**\n   * This method is overwritten since the node's update type depends on the selected scope.\n   *\n   * @return {NodeUpdateType} The update type.\n   */\n  getUpdateType() {\n    let e = z.NONE;\n    return (this.scope === Se.SIZE || this.scope === Se.VIEWPORT) && (e = z.RENDER), this.updateType = e, e;\n  }\n  /**\n   * `ScreenNode` implements {@link Node#update} to retrieve viewport and size information\n   * from the current renderer.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update({ renderer: e }) {\n    const t = e.getRenderTarget();\n    this.scope === Se.VIEWPORT ? t !== null ? cn.copy(t.viewport) : (e.getViewport(cn), cn.multiplyScalar(e.getPixelRatio())) : t !== null ? (un.width = t.width, un.height = t.height) : e.getDrawingBufferSize(un);\n  }\n  setup() {\n    const e = this.scope;\n    let t = null;\n    return e === Se.SIZE ? t = L(un || (un = new He())) : e === Se.VIEWPORT ? t = L(cn || (cn = new Ce())) : t = w(nr.div(kn)), t;\n  }\n  generate(e) {\n    if (this.scope === Se.COORDINATE) {\n      let t = e.getFragCoord();\n      if (e.isFlipY()) {\n        const s = e.getNodeProperties(kn).outputNode.build(e);\n        t = `${e.getType(\"vec2\")}( ${t}.x, ${s}.y - ${t}.y )`;\n      }\n      return t;\n    }\n    return super.generate(e);\n  }\n}\nSe.COORDINATE = \"coordinate\";\nSe.VIEWPORT = \"viewport\";\nSe.SIZE = \"size\";\nSe.UV = \"uv\";\nconst vt = /* @__PURE__ */ B(Se, Se.UV), kn = /* @__PURE__ */ B(Se, Se.SIZE), nr = /* @__PURE__ */ B(Se, Se.COORDINATE), Wa = /* @__PURE__ */ B(Se, Se.VIEWPORT), Ap = Wa.zw, Rp = /* @__PURE__ */ nr.sub(Wa.xy), mx = /* @__PURE__ */ Rp.div(Ap), yx = /* @__PURE__ */ b(() => (console.warn('TSL.ViewportNode: \"viewportResolution\" is deprecated. Use \"screenSize\" instead.'), kn), \"vec2\").once()(), xx = /* @__PURE__ */ b(() => (console.warn('TSL.ViewportNode: \"viewportTopLeft\" is deprecated. Use \"screenUV\" instead.'), vt), \"vec2\").once()(), Tx = /* @__PURE__ */ b(() => (console.warn('TSL.ViewportNode: \"viewportBottomLeft\" is deprecated. Use \"screenUV.flipY()\" instead.'), vt.flipY()), \"vec2\").once()(), ln = /* @__PURE__ */ new He();\nclass _i extends bt {\n  static get type() {\n    return \"ViewportTextureNode\";\n  }\n  /**\n   * Constructs a new viewport texture node.\n   *\n   * @param {Node} [uvNode=screenUV] - The uv node.\n   * @param {Node?} [levelNode=null] - The level node.\n   * @param {Texture?} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.\n   */\n  constructor(e = vt, t = null, s = null) {\n    s === null && (s = new bl(), s.minFilter = ds), super(s, e, t), this.generateMipmaps = !1, this.isOutputTextureNode = !0, this.updateBeforeType = z.FRAME;\n  }\n  updateBefore(e) {\n    const t = e.renderer;\n    t.getDrawingBufferSize(ln);\n    const s = this.value;\n    (s.image.width !== ln.width || s.image.height !== ln.height) && (s.image.width = ln.width, s.image.height = ln.height, s.needsUpdate = !0);\n    const n = s.generateMipmaps;\n    s.generateMipmaps = this.generateMipmaps, t.copyFramebufferToTexture(s), s.generateMipmaps = n;\n  }\n  clone() {\n    const e = new this.constructor(this.uvNode, this.levelNode, this.value);\n    return e.generateMipmaps = this.generateMipmaps, e;\n  }\n}\nconst _x = /* @__PURE__ */ C(_i), Ha = /* @__PURE__ */ C(_i, null, null, { generateMipmaps: !0 });\nlet Fi = null;\nclass Nx extends _i {\n  static get type() {\n    return \"ViewportDepthTextureNode\";\n  }\n  /**\n   * Constructs a new viewport depth texture node.\n   *\n   * @param {Node} [uvNode=screenUV] - The uv node.\n   * @param {Node?} [levelNode=null] - The level node.\n   */\n  constructor(e = vt, t = null) {\n    Fi === null && (Fi = new ys()), super(e, t, Fi);\n  }\n}\nconst qa = /* @__PURE__ */ C(Nx);\nclass ke extends G {\n  static get type() {\n    return \"ViewportDepthNode\";\n  }\n  /**\n   * Constructs a new viewport depth node.\n   *\n   * @param {('depth'|'depthBase'|'linearDepth')} scope - The node's scope.\n   * @param {Node?} [valueNode=null] - The value node.\n   */\n  constructor(e, t = null) {\n    super(\"float\"), this.scope = e, this.valueNode = t, this.isViewportDepthNode = !0;\n  }\n  generate(e) {\n    const { scope: t } = this;\n    return t === ke.DEPTH_BASE ? e.getFragDepth() : super.generate(e);\n  }\n  setup({ camera: e }) {\n    const { scope: t } = this, s = this.valueNode;\n    let n = null;\n    if (t === ke.DEPTH_BASE)\n      s !== null && (n = Ep().assign(s));\n    else if (t === ke.DEPTH)\n      e.isPerspectiveCamera ? n = Cp(xe.z, qt, Xt) : n = qs(xe.z, qt, Xt);\n    else if (t === ke.LINEAR_DEPTH)\n      if (s !== null)\n        if (e.isPerspectiveCamera) {\n          const r = Xa(s, qt, Xt);\n          n = qs(r, qt, Xt);\n        } else\n          n = s;\n      else\n        n = qs(xe.z, qt, Xt);\n    return n;\n  }\n}\nke.DEPTH_BASE = \"depthBase\";\nke.DEPTH = \"depth\";\nke.LINEAR_DEPTH = \"linearDepth\";\nconst qs = (o, e, t) => o.add(e).div(e.sub(t)), bx = (o, e, t) => e.sub(t).mul(o).sub(e), Cp = (o, e, t) => e.add(o).mul(t).div(t.sub(e).mul(o)), Xa = (o, e, t) => e.mul(t).div(t.sub(e).mul(o).sub(t)), Ka = (o, e, t) => {\n  e = e.max(1e-6).toVar();\n  const s = mt(o.negate().div(e)), n = mt(t.div(e));\n  return s.div(n);\n}, Sx = (o, e, t) => {\n  const s = o.mul(ci(t.div(e)));\n  return g(Math.E).pow(s).mul(e).negate();\n}, Ep = /* @__PURE__ */ C(ke, ke.DEPTH_BASE), Ya = /* @__PURE__ */ B(ke, ke.DEPTH), qr = /* @__PURE__ */ C(ke, ke.LINEAR_DEPTH), vx = /* @__PURE__ */ qr(qa());\nYa.assign = (o) => Ep(o);\nclass Ax extends G {\n  /**\n   * Constructs a new builtin node.\n   *\n   * @param {String} name - The name of the built-in shader variable.\n   */\n  constructor(e) {\n    super(\"float\"), this.name = e, this.isBuiltinNode = !0;\n  }\n  /**\n   * Generates the code snippet of the builtin node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The generated code snippet.\n   */\n  generate() {\n    return this.name;\n  }\n}\nconst Rx = C(Ax);\nclass rt extends G {\n  static get type() {\n    return \"ClippingNode\";\n  }\n  /**\n   * Constructs a new clipping node.\n   *\n   * @param {('default'|'hardware'|'alphaToCoverage')} [scope='default'] - The node's scope. Similar to other nodes,\n   * the selected scope influences the behavior of the node and what type of code is generated.\n   */\n  constructor(e = rt.DEFAULT) {\n    super(), this.scope = e;\n  }\n  /**\n   * Setups the node depending on the selected scope.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node} The result node.\n   */\n  setup(e) {\n    super.setup(e);\n    const t = e.clippingContext, { intersectionPlanes: s, unionPlanes: n } = t;\n    return this.hardwareClipping = e.material.hardwareClipping, this.scope === rt.ALPHA_TO_COVERAGE ? this.setupAlphaToCoverage(s, n) : this.scope === rt.HARDWARE ? this.setupHardwareClipping(n, e) : this.setupDefault(s, n);\n  }\n  /**\n   * Setups alpha to coverage.\n   *\n   * @param {Array<Vector4>} intersectionPlanes - The intersection planes.\n   * @param {Array<Vector4>} unionPlanes - The union planes.\n   * @return {Node} The result node.\n   */\n  setupAlphaToCoverage(e, t) {\n    return b(() => {\n      const s = g().toVar(\"distanceToPlane\"), n = g().toVar(\"distanceToGradient\"), r = g(1).toVar(\"clipOpacity\"), i = t.length;\n      if (this.hardwareClipping === !1 && i > 0) {\n        const u = Ut(t);\n        J(i, ({ i: c }) => {\n          const l = u.element(c);\n          s.assign(xe.dot(l.xyz).negate().add(l.w)), n.assign(s.fwidth().div(2)), r.mulAssign(Ot(n.negate(), n, s));\n        });\n      }\n      const a = e.length;\n      if (a > 0) {\n        const u = Ut(e), c = g(1).toVar(\"intersectionClipOpacity\");\n        J(a, ({ i: l }) => {\n          const d = u.element(l);\n          s.assign(xe.dot(d.xyz).negate().add(d.w)), n.assign(s.fwidth().div(2)), c.mulAssign(Ot(n.negate(), n, s).oneMinus());\n        }), r.mulAssign(c.oneMinus());\n      }\n      Q.a.mulAssign(r), Q.a.equal(0).discard();\n    })();\n  }\n  /**\n   * Setups the default clipping.\n   *\n   * @param {Array<Vector4>} intersectionPlanes - The intersection planes.\n   * @param {Array<Vector4>} unionPlanes - The union planes.\n   * @return {Node} The result node.\n   */\n  setupDefault(e, t) {\n    return b(() => {\n      const s = t.length;\n      if (this.hardwareClipping === !1 && s > 0) {\n        const r = Ut(t);\n        J(s, ({ i }) => {\n          const a = r.element(i);\n          xe.dot(a.xyz).greaterThan(a.w).discard();\n        });\n      }\n      const n = e.length;\n      if (n > 0) {\n        const r = Ut(e), i = Vt(!0).toVar(\"clipped\");\n        J(n, ({ i: a }) => {\n          const u = r.element(a);\n          i.assign(xe.dot(u.xyz).greaterThan(u.w).and(i));\n        }), i.discard();\n      }\n    })();\n  }\n  /**\n   * Setups hardware clipping.\n   *\n   * @param {Array<Vector4>} unionPlanes - The union planes.\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node} The result node.\n   */\n  setupHardwareClipping(e, t) {\n    const s = e.length;\n    return t.enableHardwareClipping(s), b(() => {\n      const n = Ut(e), r = Rx(t.getClipDistance());\n      J(s, ({ i }) => {\n        const a = n.element(i), u = xe.dot(a.xyz).sub(a.w).negate();\n        r.element(i).assign(u);\n      });\n    })();\n  }\n}\nrt.ALPHA_TO_COVERAGE = \"alphaToCoverage\";\nrt.DEFAULT = \"default\";\nrt.HARDWARE = \"hardware\";\nconst Cx = () => E(new rt()), Ex = () => E(new rt(rt.ALPHA_TO_COVERAGE)), wx = () => E(new rt(rt.HARDWARE)), Mx = 0.05, ku = /* @__PURE__ */ b(([o]) => kt($(1e4, Ze($(17, o.x).add($(0.1, o.y)))).mul(_e(0.1, re(Ze($(13, o.y).add(o.x))))))), zu = /* @__PURE__ */ b(([o]) => ku(w(ku(o.xy), o.z))), Bx = /* @__PURE__ */ b(([o]) => {\n  const e = fe(\n    Dt(Ea(o.xyz)),\n    Dt(wa(o.xyz))\n  ), t = g(1).div(g(Mx).mul(e)).toVar(\"pixScale\"), s = w(\n    Zs(yt(mt(t))),\n    Zs(li(mt(t)))\n  ), n = w(\n    zu(yt(s.x.mul(o.xyz))),\n    zu(yt(s.y.mul(o.xyz)))\n  ), r = kt(mt(t)), i = _e($(r.oneMinus(), n.x), $(r, n.y)), a = $e(r, r.oneMinus()), u = T(\n    i.mul(i).div($(2, a).mul(K(1, a))),\n    i.sub($(0.5, a)).div(K(1, a)),\n    K(1, K(1, i).mul(K(1, i)).div($(2, a).mul(K(1, a))))\n  ), c = i.lessThan(a.oneMinus()).select(i.lessThan(a).select(u.x, u.y), u.z);\n  return _t(c, 1e-6, 1);\n}).setLayout({\n  name: \"getAlphaHashThreshold\",\n  type: \"float\",\n  inputs: [\n    { name: \"position\", type: \"vec3\" }\n  ]\n});\nclass ge extends bu {\n  static get type() {\n    return \"NodeMaterial\";\n  }\n  /**\n   * Represents the type of the node material.\n   *\n   * @type {String}\n   */\n  get type() {\n    return this.constructor.type;\n  }\n  set type(e) {\n  }\n  /**\n   * Constructs a new node material.\n   */\n  constructor() {\n    super(), this.isNodeMaterial = !0, this.fog = !0, this.lights = !1, this.hardwareClipping = !1, this.lightsNode = null, this.envNode = null, this.aoNode = null, this.colorNode = null, this.normalNode = null, this.opacityNode = null, this.backdropNode = null, this.backdropAlphaNode = null, this.alphaTestNode = null, this.positionNode = null, this.geometryNode = null, this.depthNode = null, this.shadowPositionNode = null, this.receivedShadowNode = null, this.castShadowNode = null, this.outputNode = null, this.mrtNode = null, this.fragmentNode = null, this.vertexNode = null;\n  }\n  /**\n   * Allows to define a custom cache key that influence the material key computation\n   * for render objects.\n   *\n   * @return {String} The custom cache key.\n   */\n  customProgramCacheKey() {\n    return this.type + Ml(this);\n  }\n  /**\n   * Builds this material with the given node builder.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  build(e) {\n    this.setup(e);\n  }\n  /**\n   * Setups a node material observer with the given builder.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {NodeMaterialObserver} The node material observer.\n   */\n  setupObserver(e) {\n    return new Em(e);\n  }\n  /**\n   * Setups the vertex and fragment stage of this node material.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    e.context.setupNormal = () => this.setupNormal(e), e.context.setupPositionView = () => this.setupPositionView(e), e.context.setupModelViewProjection = () => this.setupModelViewProjection(e);\n    const t = e.renderer, s = t.getRenderTarget();\n    e.addStack();\n    const n = this.vertexNode || this.setupVertex(e);\n    e.stack.outputNode = n, this.setupHardwareClipping(e), this.geometryNode !== null && (e.stack.outputNode = e.stack.outputNode.bypass(this.geometryNode)), e.addFlow(\"vertex\", e.removeStack()), e.addStack();\n    let r;\n    const i = this.setupClipping(e);\n    if ((this.depthWrite === !0 || this.depthTest === !0) && (s !== null ? s.depthBuffer === !0 && this.setupDepth(e) : t.depth === !0 && this.setupDepth(e)), this.fragmentNode === null) {\n      this.setupDiffuseColor(e), this.setupVariants(e);\n      const a = this.setupLighting(e);\n      i !== null && e.stack.add(i);\n      const u = I(a, Q.a).max(0);\n      if (r = this.setupOutput(e, u), Gn.assign(r), this.outputNode !== null && (r = this.outputNode), s !== null) {\n        const c = t.getMRT(), l = this.mrtNode;\n        c !== null ? (r = c, l !== null && (r = c.merge(l))) : l !== null && (r = l);\n      }\n    } else {\n      let a = this.fragmentNode;\n      a.isOutputStructNode !== !0 && (a = I(a)), r = this.setupOutput(e, a);\n    }\n    e.stack.outputNode = r, e.addFlow(\"fragment\", e.removeStack()), e.monitor = this.setupObserver(e);\n  }\n  /**\n   * Setups the clipping node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {ClippingNode} The clipping node.\n   */\n  setupClipping(e) {\n    if (e.clippingContext === null) return null;\n    const { unionPlanes: t, intersectionPlanes: s } = e.clippingContext;\n    let n = null;\n    if (t.length > 0 || s.length > 0) {\n      const r = e.renderer.samples;\n      this.alphaToCoverage && r > 1 ? n = Ex() : e.stack.add(Cx());\n    }\n    return n;\n  }\n  /**\n   * Setups the hardware clipping if available on the current device.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupHardwareClipping(e) {\n    if (this.hardwareClipping = !1, e.clippingContext === null) return;\n    const t = e.clippingContext.unionPlanes.length;\n    t > 0 && t <= 8 && e.isAvailable(\"clipDistance\") && (e.stack.add(wx()), this.hardwareClipping = !0);\n  }\n  /**\n   * Setups the depth of this material.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupDepth(e) {\n    const { renderer: t, camera: s } = e;\n    let n = this.depthNode;\n    if (n === null) {\n      const r = t.getMRT();\n      r && r.has(\"depth\") ? n = r.get(\"depth\") : t.logarithmicDepthBuffer === !0 && (s.isPerspectiveCamera ? n = Ka(xe.z, qt, Xt) : n = qs(xe.z, qt, Xt));\n    }\n    n !== null && Ya.assign(n).append();\n  }\n  /**\n   * Setups the position node in view space. This method exists\n   * so derived node materials can modifiy the implementation e.g. sprite materials.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec3>} The position in view space.\n   */\n  setupPositionView() {\n    return rn.mul(pe).xyz;\n  }\n  /**\n   * Setups the position in clip space.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec4>} The position in view space.\n   */\n  setupModelViewProjection() {\n    return _s.mul(xe);\n  }\n  /**\n   * Setups the logic for the vertex stage.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec4>} The position in clip space.\n   */\n  setupVertex(e) {\n    return e.addStack(), this.setupPosition(e), e.context.vertex = e.removeStack(), $a;\n  }\n  /**\n   * Setups the computation of the position in local space.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec3>} The position in local space.\n   */\n  setupPosition(e) {\n    const { object: t, geometry: s } = e;\n    if ((s.morphAttributes.position || s.morphAttributes.normal || s.morphAttributes.color) && Sp(t).append(), t.isSkinnedMesh === !0 && Np(t).append(), this.displacementMap) {\n      const n = Pt(\"displacementMap\", \"texture\"), r = Pt(\"displacementScale\", \"float\"), i = Pt(\"displacementBias\", \"float\");\n      pe.addAssign(We.normalize().mul(n.x.mul(r).add(i)));\n    }\n    return t.isBatchedMesh && Tp(t).append(), t.isInstancedMesh && t.instanceMatrix && t.instanceMatrix.isInstancedBufferAttribute === !0 && xp(t).append(), this.positionNode !== null && pe.assign(this.positionNode.context({ isPositionNodeInput: !0 })), pe;\n  }\n  /**\n   * Setups the computation of the material's diffuse color.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {BufferGeometry} geometry - The geometry.\n   */\n  setupDiffuseColor({ object: e, geometry: t }) {\n    let s = this.colorNode ? I(this.colorNode) : Oh;\n    this.vertexColors === !0 && t.hasAttribute(\"color\") && (s = I(s.xyz.mul(Nt(\"color\", \"vec3\")), s.a)), e.instanceColor && (s = Dn(\"vec3\", \"vInstanceColor\").mul(s)), e.isBatchedMesh && e._colorsTexture && (s = Dn(\"vec3\", \"vBatchColor\").mul(s)), Q.assign(s);\n    const n = this.opacityNode ? g(this.opacityNode) : ka;\n    if (Q.a.assign(Q.a.mul(n)), this.alphaTestNode !== null || this.alphaTest > 0) {\n      const r = this.alphaTestNode !== null ? g(this.alphaTestNode) : Gh;\n      Q.a.lessThanEqual(r).discard();\n    }\n    this.alphaHash === !0 && Q.a.lessThan(Bx(pe)).discard(), this.transparent === !1 && this.blending === zs && this.alphaToCoverage === !1 && Q.a.assign(1);\n  }\n  /**\n   * Abstract interface method that can be implemented by derived materials\n   * to setup material-specific node variables.\n   *\n   * @abstract\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupVariants() {\n  }\n  /**\n   * Setups the outgoing light node variable\n   *\n   * @return {Node<vec3>} The outgoing light node.\n   */\n  setupOutgoingLight() {\n    return this.lights === !0 ? T(0) : Q.rgb;\n  }\n  /**\n   * Setups the normal node from the material.\n   *\n   * @return {Node<vec3>} The normal node.\n   */\n  setupNormal() {\n    return this.normalNode ? T(this.normalNode) : Xh;\n  }\n  /**\n   * Setups the environment node from the material.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec4>} The environment node.\n   */\n  setupEnvironment() {\n    let e = null;\n    return this.envNode ? e = this.envNode : this.envMap && (e = this.envMap.isCubeTexture ? Pt(\"envMap\", \"cubeTexture\") : Pt(\"envMap\", \"texture\")), e;\n  }\n  /**\n   * Setups the light map node from the material.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec3>} The light map node.\n   */\n  setupLightMap(e) {\n    let t = null;\n    return e.material.lightMap && (t = new gx(za)), t;\n  }\n  /**\n   * Setups the lights node based on the scene, environment and material.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {LightsNode} The lights node.\n   */\n  setupLights(e) {\n    const t = [], s = this.setupEnvironment(e);\n    s && s.isLightingNode && t.push(s);\n    const n = this.setupLightMap(e);\n    if (n && n.isLightingNode && t.push(n), this.aoNode !== null || e.material.aoMap) {\n      const i = this.aoNode !== null ? this.aoNode : fp;\n      t.push(new px(i));\n    }\n    let r = this.lightsNode || e.lightsNode;\n    return t.length > 0 && (r = e.renderer.lighting.createNode([...r.getLights(), ...t])), r;\n  }\n  /**\n   * This method should be implemented by most derived materials\n   * since it defines the material's lighting model.\n   *\n   * @abstract\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {LightingModel} The lighting model.\n   */\n  setupLightingModel() {\n  }\n  /**\n   * Setups the outgoing light node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec3>} The outgoing light node.\n   */\n  setupLighting(e) {\n    const { material: t } = e, { backdropNode: s, backdropAlphaNode: n, emissiveNode: r } = this, a = this.lights === !0 || this.lightsNode !== null ? this.setupLights(e) : null;\n    let u = this.setupOutgoingLight(e);\n    if (a && a.getScope().hasLights) {\n      const c = this.setupLightingModel(e);\n      u = vp(a, c, s, n);\n    } else s !== null && (u = T(n !== null ? Z(u, s, n) : s));\n    return (r && r.isNode === !0 || t.emissive && t.emissive.isColor === !0) && (Lo.assign(T(r || zh)), u = u.add(Lo)), u;\n  }\n  /**\n   * Setups the output node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {Node<vec4>} outputNode - The existing output node.\n   * @return {Node<vec4>} The output node.\n   */\n  setupOutput(e, t) {\n    if (this.fog === !0) {\n      const s = e.fogNode;\n      s && (Gn.assign(t), t = I(s));\n    }\n    return t;\n  }\n  /**\n   * Most classic material types have a node pendant e.g. for `MeshBasicMaterial`\n   * there is `MeshBasicNodeMaterial`. This utility method is intended for\n   * defining all material properties of the classic type in the node type.\n   *\n   * @param {Material} material - The material to copy properties with their values to this node material.\n   */\n  setDefaultValues(e) {\n    for (const s in e) {\n      const n = e[s];\n      this[s] === void 0 && (this[s] = n, n && n.clone && (this[s] = n.clone()));\n    }\n    const t = Object.getOwnPropertyDescriptors(e.constructor.prototype);\n    for (const s in t)\n      Object.getOwnPropertyDescriptor(this.constructor.prototype, s) === void 0 && t[s].get !== void 0 && Object.defineProperty(this.constructor.prototype, s, t[s]);\n  }\n  /**\n   * Serializes this material to JSON.\n   *\n   * @param {(Object|String)?} meta - The meta information for serialization.\n   * @return {Object} The serialized node.\n   */\n  toJSON(e) {\n    const t = e === void 0 || typeof e == \"string\";\n    t && (e = {\n      textures: {},\n      images: {},\n      nodes: {}\n    });\n    const s = bu.prototype.toJSON.call(this, e), n = Vr(this);\n    s.inputNodes = {};\n    for (const { property: i, childNode: a } of n)\n      s.inputNodes[i] = a.toJSON(e).uuid;\n    function r(i) {\n      const a = [];\n      for (const u in i) {\n        const c = i[u];\n        delete c.metadata, a.push(c);\n      }\n      return a;\n    }\n    if (t) {\n      const i = r(e.textures), a = r(e.images), u = r(e.nodes);\n      i.length > 0 && (s.textures = i), a.length > 0 && (s.images = a), u.length > 0 && (s.nodes = u);\n    }\n    return s;\n  }\n  /**\n   * Copies the properties of the given node material to this instance.\n   *\n   * @param {NodeMaterial} source - The material to copy.\n   * @return {NodeMaterial} A reference to this node material.\n   */\n  copy(e) {\n    return this.lightsNode = e.lightsNode, this.envNode = e.envNode, this.colorNode = e.colorNode, this.normalNode = e.normalNode, this.opacityNode = e.opacityNode, this.backdropNode = e.backdropNode, this.backdropAlphaNode = e.backdropAlphaNode, this.alphaTestNode = e.alphaTestNode, this.positionNode = e.positionNode, this.geometryNode = e.geometryNode, this.depthNode = e.depthNode, this.shadowPositionNode = e.shadowPositionNode, this.receivedShadowNode = e.receivedShadowNode, this.castShadowNode = e.castShadowNode, this.outputNode = e.outputNode, this.mrtNode = e.mrtNode, this.fragmentNode = e.fragmentNode, this.vertexNode = e.vertexNode, super.copy(e);\n  }\n}\nconst Fx = /* @__PURE__ */ new Og();\nclass Ux extends ge {\n  static get type() {\n    return \"LineBasicNodeMaterial\";\n  }\n  /**\n   * Constructs a new line basic node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isLineBasicNodeMaterial = !0, this.setDefaultValues(Fx), this.setValues(e);\n  }\n}\nconst Px = /* @__PURE__ */ new kg();\nclass Dx extends ge {\n  static get type() {\n    return \"LineDashedNodeMaterial\";\n  }\n  /**\n   * Constructs a new line dashed node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isLineDashedNodeMaterial = !0, this.setDefaultValues(Px), this.dashOffset = 0, this.offsetNode = null, this.dashScaleNode = null, this.dashSizeNode = null, this.gapSizeNode = null, this.setValues(e);\n  }\n  /**\n   * Setups the dash specific node variables.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupVariants() {\n    const e = this.offsetNode ? g(this.offsetNode) : hp, t = this.dashScaleNode ? g(this.dashScaleNode) : cp, s = this.dashSizeNode ? g(this.dashSizeNode) : lp, n = this.gapSizeNode ? g(this.gapSizeNode) : dp;\n    Er.assign(s), Vo.assign(n);\n    const r = qe(Nt(\"lineDistance\").mul(t));\n    (e ? r.add(e) : r).mod(Er.add(Vo)).greaterThan(Er).discard();\n  }\n}\nlet Ui = null;\nclass Ix extends _i {\n  static get type() {\n    return \"ViewportSharedTextureNode\";\n  }\n  /**\n   * Constructs a new viewport shared texture node.\n   *\n   * @param {Node} [uvNode=screenUV] - The uv node.\n   * @param {Node?} [levelNode=null] - The level node.\n   */\n  constructor(e = vt, t = null) {\n    Ui === null && (Ui = new bl()), super(e, t, Ui);\n  }\n  updateReference() {\n    return this;\n  }\n}\nconst Lx = /* @__PURE__ */ C(Ix), wp = (o) => E(o).mul(0.5).add(0.5), Vx = (o) => E(o).mul(2).sub(1), Gx = /* @__PURE__ */ new zg();\nclass Ox extends ge {\n  static get type() {\n    return \"MeshNormalNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh normal node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshNormalNodeMaterial = !0, this.setDefaultValues(Gx), this.setValues(e);\n  }\n  /**\n   * Overwrites the default implementation by computing the diffuse color\n   * based on the normal data.\n   */\n  setupDiffuseColor() {\n    const e = this.opacityNode ? g(this.opacityNode) : ka;\n    Q.assign(I(wp(he), e));\n  }\n}\nclass kx extends Ne {\n  static get type() {\n    return \"EquirectUVNode\";\n  }\n  /**\n   * Constructs a new equirect uv node.\n   *\n   * @param {Node<vec3>} [dirNode=positionWorldDirection] - A direction vector for sampling which is by default `positionWorldDirection`.\n   */\n  constructor(e = La) {\n    super(\"vec2\"), this.dirNode = e;\n  }\n  setup() {\n    const e = this.dirNode, t = e.z.atan(e.x).mul(1 / (Math.PI * 2)).add(0.5), s = e.y.clamp(-1, 1).asin().mul(1 / Math.PI).add(0.5);\n    return w(t, s);\n  }\n}\nconst ja = /* @__PURE__ */ C(kx);\nclass Mp extends Sm {\n  constructor(e = 1, t = {}) {\n    super(e, t), this.isCubeRenderTarget = !0;\n  }\n  /**\n   * Converts the given equirectangular texture to a cube map.\n   *\n   * @param {Renderer} renderer - The renderer.\n   * @param {Texture} texture - The equirectangular texture.\n   * @return {CubeRenderTarget} A reference to this cube render target.\n   */\n  fromEquirectangularTexture(e, t) {\n    const s = t.minFilter, n = t.generateMipmaps;\n    t.generateMipmaps = !0, this.texture.type = t.type, this.texture.colorSpace = t.colorSpace, this.texture.generateMipmaps = t.generateMipmaps, this.texture.minFilter = t.minFilter, this.texture.magFilter = t.magFilter;\n    const r = new Cl(5, 5, 5), i = ja(La), a = new ge();\n    a.colorNode = X(t, i, 0), a.side = Tt, a.blending = Mn;\n    const u = new js(r, a), c = new Wc();\n    c.add(u), t.minFilter === ds && (t.minFilter = Lt);\n    const l = new vm(1, 10, this), d = e.getMRT();\n    return e.setMRT(null), l.update(e, c), e.setMRT(d), t.minFilter = s, t.currentGenerateMipmaps = n, u.geometry.dispose(), u.material.dispose(), this;\n  }\n}\nconst Rn = /* @__PURE__ */ new WeakMap();\nclass zx extends Ne {\n  static get type() {\n    return \"CubeMapNode\";\n  }\n  /**\n   * Constructs a new cube map node.\n   *\n   * @param {Node} envNode - The node representing the environment map.\n   */\n  constructor(e) {\n    super(\"vec3\"), this.envNode = e, this._cubeTexture = null, this._cubeTextureNode = Js();\n    const t = new Sl();\n    t.isRenderTargetTexture = !0, this._defaultTexture = t, this.updateBeforeType = z.RENDER;\n  }\n  updateBefore(e) {\n    const { renderer: t, material: s } = e, n = this.envNode;\n    if (n.isTextureNode || n.isMaterialReferenceNode) {\n      const r = n.isTextureNode ? n.value : s[n.property];\n      if (r && r.isTexture) {\n        const i = r.mapping;\n        if (i === Wn || i === Hn) {\n          if (Rn.has(r)) {\n            const a = Rn.get(r);\n            $u(a, r.mapping), this._cubeTexture = a;\n          } else {\n            const a = r.image;\n            if ($x(a)) {\n              const u = new Mp(a.height);\n              u.fromEquirectangularTexture(t, r), $u(u.texture, r.mapping), this._cubeTexture = u.texture, Rn.set(r, u.texture), r.addEventListener(\"dispose\", Bp);\n            } else\n              this._cubeTexture = this._defaultTexture;\n          }\n          this._cubeTextureNode.value = this._cubeTexture;\n        } else\n          this._cubeTextureNode = this.envNode;\n      }\n    }\n  }\n  setup(e) {\n    return this.updateBefore(e), this._cubeTextureNode;\n  }\n}\nfunction $x(o) {\n  return o == null ? !1 : o.height > 0;\n}\nfunction Bp(o) {\n  const e = o.target;\n  e.removeEventListener(\"dispose\", Bp);\n  const t = Rn.get(e);\n  t !== void 0 && (Rn.delete(e), t.dispose());\n}\nfunction $u(o, e) {\n  e === Wn ? o.mapping = Ks : e === Hn && (o.mapping = Ys);\n}\nconst Fp = /* @__PURE__ */ C(zx);\nclass Qa extends on {\n  static get type() {\n    return \"BasicEnvironmentNode\";\n  }\n  /**\n   * Constructs a new basic environment node.\n   *\n   * @param {Node} [envNode=null] - A node representing the environment.\n   */\n  constructor(e = null) {\n    super(), this.envNode = e;\n  }\n  setup(e) {\n    e.context.environment = Fp(this.envNode);\n  }\n}\nclass Wx extends on {\n  static get type() {\n    return \"BasicLightMapNode\";\n  }\n  /**\n   * Constructs a new basic light map node.\n   *\n   * @param {Node<vec3>?} [lightMapNode=null] - The light map node.\n   */\n  constructor(e = null) {\n    super(), this.lightMapNode = e;\n  }\n  setup(e) {\n    const t = g(1 / Math.PI);\n    e.context.irradianceLightMap = this.lightMapNode.mul(t);\n  }\n}\nclass Ni {\n  /**\n   * This method is intended for setting up lighting model and context data\n   * which are later used in the evaluation process.\n   *\n   * @abstract\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  start() {\n  }\n  /**\n   * This method is intended for executing final tasks like final updates\n   * to the outgoing light.\n   *\n   * @abstract\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  finish() {\n  }\n  /**\n   * This method is intended for implementing the direct light term and\n   * executed during the build process of directional, point and spot light nodes.\n   *\n   * @abstract\n   * @param {Object} input - The input data.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  direct() {\n  }\n  /**\n   * This method is intended for implementing the direct light term for\n   * rect area light nodes.\n   *\n   * @abstract\n   * @param {Object} input - The input data.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  directRectArea() {\n  }\n  /**\n   * This method is intended for implementing the indirect light term.\n   *\n   * @abstract\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  indirect() {\n  }\n  /**\n   * This method is intended for implementing the ambient occlusion term.\n   * Unlike other methods, this method must be called manually by the lighting\n   * model in its indirect term.\n   *\n   * @abstract\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  ambientOcclusion() {\n  }\n}\nclass Up extends Ni {\n  /**\n   * Constructs a new basic lighting model.\n   */\n  constructor() {\n    super();\n  }\n  /**\n   * Implements the baked indirect lighting with its modulation.\n   *\n   * @param {ContextNode} context - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  indirect(e, t, s) {\n    const n = e.ambientOcclusion, r = e.reflectedLight, i = s.context.irradianceLightMap;\n    r.indirectDiffuse.assign(I(0)), i ? r.indirectDiffuse.addAssign(i) : r.indirectDiffuse.addAssign(I(1, 1, 1, 0)), r.indirectDiffuse.mulAssign(n), r.indirectDiffuse.mulAssign(Q.rgb);\n  }\n  /**\n   * Implements the environment mapping.\n   *\n   * @param {ContextNode} context - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  finish(e, t, s) {\n    const n = s.material, r = e.outgoingLight, i = s.context.environment;\n    if (i)\n      switch (n.combine) {\n        case og:\n          r.rgb.assign(Z(r.rgb, r.rgb.mul(i.rgb), An.mul(Br)));\n          break;\n        case ig:\n          r.rgb.assign(Z(r.rgb, i.rgb, An.mul(Br)));\n          break;\n        case rg:\n          r.rgb.addAssign(i.rgb.mul(An.mul(Br)));\n          break;\n        default:\n          console.warn(\"THREE.BasicLightingModel: Unsupported .combine value:\", n.combine);\n          break;\n      }\n  }\n}\nconst Hx = /* @__PURE__ */ new Gc();\nclass qx extends ge {\n  static get type() {\n    return \"MeshBasicNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh basic node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshBasicNodeMaterial = !0, this.lights = !0, this.setDefaultValues(Hx), this.setValues(e);\n  }\n  /**\n   * Basic materials are not affected by normal and bump maps so we\n   * return by default {@link module:Normal.normalView}.\n   *\n   * @return {Node<vec3>} The normal node.\n   */\n  setupNormal() {\n    return it;\n  }\n  /**\n   * Overwritten since this type of material uses {@link BasicEnvironmentNode}\n   * to implement the default environment mapping.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {BasicEnvironmentNode<vec3>?} The environment node.\n   */\n  setupEnvironment(e) {\n    const t = super.setupEnvironment(e);\n    return t ? new Qa(t) : null;\n  }\n  /**\n   * This method must be overwriten since light maps are evaluated\n   * with a special scaling factor for basic materials.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {BasicLightMapNode<vec3>?} The light map node.\n   */\n  setupLightMap(e) {\n    let t = null;\n    return e.material.lightMap && (t = new Wx(za)), t;\n  }\n  /**\n   * The material overwrites this method because `lights` is set to `true` but\n   * we still want to return the diffuse color as the outgoing light.\n   *\n   * @return {Node<vec3>} The outgoing light node.\n   */\n  setupOutgoingLight() {\n    return Q.rgb;\n  }\n  /**\n   * Setups the lighting model.\n   *\n   * @return {BasicLightingModel} The lighting model.\n   */\n  setupLightingModel() {\n    return new Up();\n  }\n}\nconst en = /* @__PURE__ */ b(({ f0: o, f90: e, dotVH: t }) => {\n  const s = t.mul(-5.55473).sub(6.98316).mul(t).exp2();\n  return o.mul(s.oneMinus()).add(e.mul(s));\n}), gs = /* @__PURE__ */ b((o) => o.diffuseColor.mul(1 / Math.PI)), Xx = () => g(0.25), Kx = /* @__PURE__ */ b(({ dotNH: o }) => kr.mul(g(0.5)).add(1).mul(g(1 / Math.PI)).mul(o.pow(kr))), Yx = /* @__PURE__ */ b(({ lightDirection: o }) => {\n  const e = o.add(oe).normalize(), t = he.dot(e).clamp(), s = oe.dot(e).clamp(), n = en({ f0: Ge, f90: 1, dotVH: s }), r = Xx(), i = Kx({ dotNH: t });\n  return n.mul(r).mul(i);\n});\nclass Pp extends Up {\n  /**\n   * Constructs a new phong lighting model.\n   *\n   * @param {Boolean} [specular=true] - Whether specular is supported or not.\n   */\n  constructor(e = !0) {\n    super(), this.specular = e;\n  }\n  /**\n   * Implements the direct lighting. The specular portion is optional an can be controlled\n   * with the {@link PhongLightingModel#specular} flag.\n   *\n   * @param {Object} input - The input data.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  direct({ lightDirection: e, lightColor: t, reflectedLight: s }) {\n    const r = he.dot(e).clamp().mul(t);\n    s.directDiffuse.addAssign(r.mul(gs({ diffuseColor: Q.rgb }))), this.specular === !0 && s.directSpecular.addAssign(r.mul(Yx({ lightDirection: e })).mul(An));\n  }\n  /**\n   * Implements the indirect lighting.\n   *\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  indirect({ ambientOcclusion: e, irradiance: t, reflectedLight: s }) {\n    s.indirectDiffuse.addAssign(t.mul(gs({ diffuseColor: Q }))), s.indirectDiffuse.mulAssign(e);\n  }\n}\nconst jx = /* @__PURE__ */ new $g();\nclass Qx extends ge {\n  static get type() {\n    return \"MeshLambertNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh lambert node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshLambertNodeMaterial = !0, this.lights = !0, this.setDefaultValues(jx), this.setValues(e);\n  }\n  /**\n   * Overwritten since this type of material uses {@link BasicEnvironmentNode}\n   * to implement the default environment mapping.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {BasicEnvironmentNode<vec3>?} The environment node.\n   */\n  setupEnvironment(e) {\n    const t = super.setupEnvironment(e);\n    return t ? new Qa(t) : null;\n  }\n  /**\n   * Setups the lighting model.\n   *\n   * @return {PhongLightingModel} The lighting model.\n   */\n  setupLightingModel() {\n    return new Pp(!1);\n  }\n}\nconst Zx = /* @__PURE__ */ new Wg();\nclass Jx extends ge {\n  static get type() {\n    return \"MeshPhongNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh lambert node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshPhongNodeMaterial = !0, this.lights = !0, this.shininessNode = null, this.specularNode = null, this.setDefaultValues(Zx), this.setValues(e);\n  }\n  /**\n   * Overwritten since this type of material uses {@link BasicEnvironmentNode}\n   * to implement the default environment mapping.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {BasicEnvironmentNode<vec3>?} The environment node.\n   */\n  setupEnvironment(e) {\n    const t = super.setupEnvironment(e);\n    return t ? new Qa(t) : null;\n  }\n  /**\n   * Setups the lighting model.\n   *\n   * @return {PhongLightingModel} The lighting model.\n   */\n  setupLightingModel() {\n    return new Pp();\n  }\n  /**\n   * Setups the phong specific node variables.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupVariants() {\n    const e = (this.shininessNode ? g(this.shininessNode) : kh).max(1e-4);\n    kr.assign(e);\n    const t = this.specularNode || $h;\n    Ge.assign(t);\n  }\n  copy(e) {\n    return this.shininessNode = e.shininessNode, this.specularNode = e.specularNode, super.copy(e);\n  }\n}\nconst Dp = /* @__PURE__ */ b((o) => {\n  if (o.geometry.hasAttribute(\"normal\") === !1)\n    return g(0);\n  const e = it.dFdx().abs().max(it.dFdy().abs());\n  return e.x.max(e.y).max(e.z);\n}), Za = /* @__PURE__ */ b((o) => {\n  const { roughness: e } = o, t = Dp();\n  let s = e.max(0.0525);\n  return s = s.add(t), s = s.min(1), s;\n}), Ip = /* @__PURE__ */ b(({ alpha: o, dotNL: e, dotNV: t }) => {\n  const s = o.pow2(), n = e.mul(s.add(s.oneMinus().mul(t.pow2())).sqrt()), r = t.mul(s.add(s.oneMinus().mul(e.pow2())).sqrt());\n  return ut(0.5, n.add(r).max(bd));\n}).setLayout({\n  name: \"V_GGX_SmithCorrelated\",\n  type: \"float\",\n  inputs: [\n    { name: \"alpha\", type: \"float\" },\n    { name: \"dotNL\", type: \"float\" },\n    { name: \"dotNV\", type: \"float\" }\n  ]\n}), eT = /* @__PURE__ */ b(({ alphaT: o, alphaB: e, dotTV: t, dotBV: s, dotTL: n, dotBL: r, dotNV: i, dotNL: a }) => {\n  const u = a.mul(T(o.mul(t), e.mul(s), i).length()), c = i.mul(T(o.mul(n), e.mul(r), a).length());\n  return ut(0.5, u.add(c)).saturate();\n}).setLayout({\n  name: \"V_GGX_SmithCorrelated_Anisotropic\",\n  type: \"float\",\n  inputs: [\n    { name: \"alphaT\", type: \"float\", qualifier: \"in\" },\n    { name: \"alphaB\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotTV\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotBV\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotTL\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotBL\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotNV\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotNL\", type: \"float\", qualifier: \"in\" }\n  ]\n}), Lp = /* @__PURE__ */ b(({ alpha: o, dotNH: e }) => {\n  const t = o.pow2(), s = e.pow2().mul(t.oneMinus()).oneMinus();\n  return t.div(s.pow2()).mul(1 / Math.PI);\n}).setLayout({\n  name: \"D_GGX\",\n  type: \"float\",\n  inputs: [\n    { name: \"alpha\", type: \"float\" },\n    { name: \"dotNH\", type: \"float\" }\n  ]\n}), tT = /* @__PURE__ */ g(1 / Math.PI), sT = /* @__PURE__ */ b(({ alphaT: o, alphaB: e, dotNH: t, dotTH: s, dotBH: n }) => {\n  const r = o.mul(e), i = T(e.mul(s), o.mul(n), r.mul(t)), a = i.dot(i), u = r.div(a);\n  return tT.mul(r.mul(u.pow2()));\n}).setLayout({\n  name: \"D_GGX_Anisotropic\",\n  type: \"float\",\n  inputs: [\n    { name: \"alphaT\", type: \"float\", qualifier: \"in\" },\n    { name: \"alphaB\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotNH\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotTH\", type: \"float\", qualifier: \"in\" },\n    { name: \"dotBH\", type: \"float\", qualifier: \"in\" }\n  ]\n}), $o = /* @__PURE__ */ b((o) => {\n  const { lightDirection: e, f0: t, f90: s, roughness: n, f: r, USE_IRIDESCENCE: i, USE_ANISOTROPY: a } = o, u = o.normalView || he, c = n.pow2(), l = e.add(oe).normalize(), d = u.dot(e).clamp(), h = u.dot(oe).clamp(), p = u.dot(l).clamp(), f = oe.dot(l).clamp();\n  let m = en({ f0: t, f90: s, dotVH: f }), _, S;\n  if (Un(i) && (m = ui.mix(m, r)), Un(a)) {\n    const A = bn.dot(e), M = bn.dot(oe), F = bn.dot(l), D = fs.dot(e), P = fs.dot(oe), V = fs.dot(l);\n    _ = eT({ alphaT: Or, alphaB: c, dotTV: M, dotBV: P, dotTL: A, dotBL: D, dotNV: h, dotNL: d }), S = sT({ alphaT: Or, alphaB: c, dotNH: p, dotTH: F, dotBH: V });\n  } else\n    _ = Ip({ alpha: c, dotNL: d, dotNV: h }), S = Lp({ alpha: c, dotNH: p });\n  return m.mul(_).mul(S);\n}), Ja = /* @__PURE__ */ b(({ roughness: o, dotNV: e }) => {\n  const t = I(-1, -0.0275, -0.572, 0.022), s = I(1, 0.0425, 1.04, -0.04), n = o.mul(t).add(s), r = n.x.mul(n.x).min(e.mul(-9.28).exp2()).mul(n.x).add(n.y);\n  return w(-1.04, 1.04).mul(r).add(n.zw);\n}).setLayout({\n  name: \"DFGApprox\",\n  type: \"vec2\",\n  inputs: [\n    { name: \"roughness\", type: \"float\" },\n    { name: \"dotNV\", type: \"vec3\" }\n  ]\n}), Vp = /* @__PURE__ */ b((o) => {\n  const { dotNV: e, specularColor: t, specularF90: s, roughness: n } = o, r = Ja({ dotNV: e, roughness: n });\n  return t.mul(r.x).add(s.mul(r.y));\n}), Gp = /* @__PURE__ */ b(({ f: o, f90: e, dotVH: t }) => {\n  const s = t.oneMinus().saturate(), n = s.mul(s), r = s.mul(n, n).clamp(0, 0.9999);\n  return o.sub(T(e).mul(r)).div(r.oneMinus());\n}).setLayout({\n  name: \"Schlick_to_F0\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"f\", type: \"vec3\" },\n    { name: \"f90\", type: \"float\" },\n    { name: \"dotVH\", type: \"float\" }\n  ]\n}), nT = /* @__PURE__ */ b(({ roughness: o, dotNH: e }) => {\n  const t = o.pow2(), s = g(1).div(t), r = e.pow2().oneMinus().max(78125e-7);\n  return g(2).add(s).mul(r.pow(s.mul(0.5))).div(2 * Math.PI);\n}).setLayout({\n  name: \"D_Charlie\",\n  type: \"float\",\n  inputs: [\n    { name: \"roughness\", type: \"float\" },\n    { name: \"dotNH\", type: \"float\" }\n  ]\n}), rT = /* @__PURE__ */ b(({ dotNV: o, dotNL: e }) => g(1).div(g(4).mul(e.add(o).sub(e.mul(o))))).setLayout({\n  name: \"V_Neubelt\",\n  type: \"float\",\n  inputs: [\n    { name: \"dotNV\", type: \"float\" },\n    { name: \"dotNL\", type: \"float\" }\n  ]\n}), iT = /* @__PURE__ */ b(({ lightDirection: o }) => {\n  const e = o.add(oe).normalize(), t = he.dot(o).clamp(), s = he.dot(oe).clamp(), n = he.dot(e).clamp(), r = nT({ roughness: ai, dotNH: n }), i = rT({ dotNV: s, dotNL: t });\n  return as.mul(r).mul(i);\n}), oT = /* @__PURE__ */ b(({ N: o, V: e, roughness: t }) => {\n  const r = 78125e-7, i = o.dot(e).saturate(), a = w(t, i.oneMinus().sqrt());\n  return a.assign(a.mul(0.984375).add(r)), a;\n}).setLayout({\n  name: \"LTC_Uv\",\n  type: \"vec2\",\n  inputs: [\n    { name: \"N\", type: \"vec3\" },\n    { name: \"V\", type: \"vec3\" },\n    { name: \"roughness\", type: \"float\" }\n  ]\n}), aT = /* @__PURE__ */ b(({ f: o }) => {\n  const e = o.length();\n  return fe(e.mul(e).add(o.z).div(e.add(1)), 0);\n}).setLayout({\n  name: \"LTC_ClippedSphereFormFactor\",\n  type: \"float\",\n  inputs: [\n    { name: \"f\", type: \"vec3\" }\n  ]\n}), ar = /* @__PURE__ */ b(({ v1: o, v2: e }) => {\n  const t = o.dot(e), s = t.abs().toVar(), n = s.mul(0.0145206).add(0.4965155).mul(s).add(0.8543985).toVar(), r = s.add(4.1616724).mul(s).add(3.417594).toVar(), i = n.div(r), a = t.greaterThan(0).select(i, fe(t.mul(t).oneMinus(), 1e-7).inverseSqrt().mul(0.5).sub(i));\n  return o.cross(e).mul(a);\n}).setLayout({\n  name: \"LTC_EdgeVectorFormFactor\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"v1\", type: \"vec3\" },\n    { name: \"v2\", type: \"vec3\" }\n  ]\n}), Wu = /* @__PURE__ */ b(({ N: o, V: e, P: t, mInv: s, p0: n, p1: r, p2: i, p3: a }) => {\n  const u = r.sub(n).toVar(), c = a.sub(n).toVar(), l = u.cross(c), d = T().toVar();\n  return H(l.dot(t.sub(n)).greaterThanEqual(0), () => {\n    const h = e.sub(o.mul(e.dot(o))).normalize(), p = o.cross(h).negate(), f = s.mul(Le(h, p, o).transpose()).toVar(), m = f.mul(n.sub(t)).normalize().toVar(), _ = f.mul(r.sub(t)).normalize().toVar(), S = f.mul(i.sub(t)).normalize().toVar(), A = f.mul(a.sub(t)).normalize().toVar(), M = T(0).toVar();\n    M.addAssign(ar({ v1: m, v2: _ })), M.addAssign(ar({ v1: _, v2: S })), M.addAssign(ar({ v1: S, v2: A })), M.addAssign(ar({ v1: A, v2: m })), d.assign(T(aT({ f: M })));\n  }), d;\n}).setLayout({\n  name: \"LTC_Evaluate\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"N\", type: \"vec3\" },\n    { name: \"V\", type: \"vec3\" },\n    { name: \"P\", type: \"vec3\" },\n    { name: \"mInv\", type: \"mat3\" },\n    { name: \"p0\", type: \"vec3\" },\n    { name: \"p1\", type: \"vec3\" },\n    { name: \"p2\", type: \"vec3\" },\n    { name: \"p3\", type: \"vec3\" }\n  ]\n}), bi = 1 / 6, Op = (o) => $(bi, $(o, $(o, o.negate().add(3)).sub(3)).add(1)), Wo = (o) => $(bi, $(o, $(o, $(3, o).sub(6))).add(4)), kp = (o) => $(bi, $(o, $(o, $(-3, o).add(3)).add(3)).add(1)), Ho = (o) => $(bi, ot(o, 3)), Hu = (o) => Op(o).add(Wo(o)), qu = (o) => kp(o).add(Ho(o)), Xu = (o) => _e(-1, Wo(o).div(Op(o).add(Wo(o)))), Ku = (o) => _e(1, Ho(o).div(kp(o).add(Ho(o)))), Yu = (o, e, t) => {\n  const s = o.uvNode, n = $(s, e.zw).add(0.5), r = yt(n), i = kt(n), a = Hu(i.x), u = qu(i.x), c = Xu(i.x), l = Ku(i.x), d = Xu(i.y), h = Ku(i.y), p = w(r.x.add(c), r.y.add(d)).sub(0.5).mul(e.xy), f = w(r.x.add(l), r.y.add(d)).sub(0.5).mul(e.xy), m = w(r.x.add(c), r.y.add(h)).sub(0.5).mul(e.xy), _ = w(r.x.add(l), r.y.add(h)).sub(0.5).mul(e.xy), S = Hu(i.y).mul(_e(a.mul(o.sample(p).level(t)), u.mul(o.sample(f).level(t)))), A = qu(i.y).mul(_e(a.mul(o.sample(m).level(t)), u.mul(o.sample(_).level(t))));\n  return S.add(A);\n}, zp = /* @__PURE__ */ b(([o, e = g(3)]) => {\n  const t = w(o.size(y(e))), s = w(o.size(y(e.add(1)))), n = ut(1, t), r = ut(1, s), i = Yu(o, I(n, t), yt(e)), a = Yu(o, I(r, s), li(e));\n  return kt(e).mix(i, a);\n}), ju = /* @__PURE__ */ b(([o, e, t, s, n]) => {\n  const r = T(Ua(e.negate(), Gt(o), ut(1, s))), i = T(\n    Dt(n[0].xyz),\n    Dt(n[1].xyz),\n    Dt(n[2].xyz)\n  );\n  return Gt(r).mul(t.mul(i));\n}).setLayout({\n  name: \"getVolumeTransmissionRay\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"n\", type: \"vec3\" },\n    { name: \"v\", type: \"vec3\" },\n    { name: \"thickness\", type: \"float\" },\n    { name: \"ior\", type: \"float\" },\n    { name: \"modelMatrix\", type: \"mat4\" }\n  ]\n}), uT = /* @__PURE__ */ b(([o, e]) => o.mul(_t(e.mul(2).sub(2), 0, 1))).setLayout({\n  name: \"applyIorToRoughness\",\n  type: \"float\",\n  inputs: [\n    { name: \"roughness\", type: \"float\" },\n    { name: \"ior\", type: \"float\" }\n  ]\n}), cT = /* @__PURE__ */ Ha(), lT = /* @__PURE__ */ Ha(), Qu = /* @__PURE__ */ b(([o, e, t], { material: s }) => {\n  const r = (s.side === Tt ? cT : lT).sample(o), i = mt(kn.x).mul(uT(e, t));\n  return zp(r, i);\n}), Zu = /* @__PURE__ */ b(([o, e, t]) => (H(t.notEqual(0), () => {\n  const s = ci(e).negate().div(t);\n  return Aa(s.negate().mul(o));\n}), T(1))).setLayout({\n  name: \"volumeAttenuation\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"transmissionDistance\", type: \"float\" },\n    { name: \"attenuationColor\", type: \"vec3\" },\n    { name: \"attenuationDistance\", type: \"float\" }\n  ]\n}), dT = /* @__PURE__ */ b(([o, e, t, s, n, r, i, a, u, c, l, d, h, p, f]) => {\n  let m, _;\n  if (f) {\n    m = I().toVar(), _ = T().toVar();\n    const D = l.sub(1).mul(f.mul(0.025)), P = T(l.sub(D), l, l.add(D));\n    J({ start: 0, end: 3 }, ({ i: V }) => {\n      const k = P.element(V), ie = ju(o, e, d, k, a), me = i.add(ie), ne = c.mul(u.mul(I(me, 1))), Ke = w(ne.xy.div(ne.w)).toVar();\n      Ke.addAssign(1), Ke.divAssign(2), Ke.assign(w(Ke.x, Ke.y.oneMinus()));\n      const Ye = Qu(Ke, t, k);\n      m.element(V).assign(Ye.element(V)), m.a.addAssign(Ye.a), _.element(V).assign(s.element(V).mul(Zu(Dt(ie), h, p).element(V)));\n    }), m.a.divAssign(3);\n  } else {\n    const D = ju(o, e, d, l, a), P = i.add(D), V = c.mul(u.mul(I(P, 1))), k = w(V.xy.div(V.w)).toVar();\n    k.addAssign(1), k.divAssign(2), k.assign(w(k.x, k.y.oneMinus())), m = Qu(k, t, l), _ = s.mul(Zu(Dt(D), h, p));\n  }\n  const S = _.rgb.mul(m.rgb), A = o.dot(e).clamp(), M = T(Vp({\n    // n, v, specularColor, specularF90, roughness\n    dotNV: A,\n    specularColor: n,\n    specularF90: r,\n    roughness: t\n  })), F = _.r.add(_.g, _.b).div(3);\n  return I(M.oneMinus().mul(S), m.a.oneMinus().mul(F).oneMinus());\n}), hT = /* @__PURE__ */ Le(\n  3.2404542,\n  -0.969266,\n  0.0556434,\n  -1.5371385,\n  1.8760108,\n  -0.2040259,\n  -0.4985314,\n  0.041556,\n  1.0572252\n), pT = (o) => {\n  const e = o.sqrt();\n  return T(1).add(e).div(T(1).sub(e));\n}, Ju = (o, e) => o.sub(e).div(o.add(e)).pow2(), fT = (o, e) => {\n  const t = o.mul(2 * Math.PI * 1e-9), s = T(54856e-17, 44201e-17, 52481e-17), n = T(1681e3, 1795300, 2208400), r = T(43278e5, 93046e5, 66121e5), i = g(9747e-17 * Math.sqrt(2 * Math.PI * 45282e5)).mul(t.mul(2239900).add(e.x).cos()).mul(t.pow2().mul(-45282e5).exp());\n  let a = s.mul(r.mul(2 * Math.PI).sqrt()).mul(n.mul(t).add(e).cos()).mul(t.pow2().negate().mul(r).exp());\n  return a = T(a.x.add(i), a.y, a.z).div(10685e-11), hT.mul(a);\n}, gT = /* @__PURE__ */ b(({ outsideIOR: o, eta2: e, cosTheta1: t, thinFilmThickness: s, baseF0: n }) => {\n  const r = Z(o, e, Ot(0, 0.03, s)), a = o.div(r).pow2().mul(t.pow2().oneMinus()).oneMinus();\n  H(a.lessThan(0), () => T(1));\n  const u = a.sqrt(), c = Ju(r, o), l = en({ f0: c, f90: 1, dotVH: t }), d = l.oneMinus(), h = r.lessThan(o).select(Math.PI, 0), p = g(Math.PI).sub(h), f = pT(n.clamp(0, 0.9999)), m = Ju(f, r.toVec3()), _ = en({ f0: m, f90: 1, dotVH: u }), S = T(\n    f.x.lessThan(r).select(Math.PI, 0),\n    f.y.lessThan(r).select(Math.PI, 0),\n    f.z.lessThan(r).select(Math.PI, 0)\n  ), A = r.mul(s, u, 2), M = T(p).add(S), F = l.mul(_).clamp(1e-5, 0.9999), D = F.sqrt(), P = d.pow2().mul(_).div(T(1).sub(F)), k = l.add(P).toVar(), ie = P.sub(d).toVar();\n  return J({ start: 1, end: 2, condition: \"<=\", name: \"m\" }, ({ m: me }) => {\n    ie.mulAssign(D);\n    const ne = fT(g(me).mul(A), g(me).mul(M)).mul(2);\n    k.addAssign(ie.mul(ne));\n  }), k.max(T(0));\n}).setLayout({\n  name: \"evalIridescence\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"outsideIOR\", type: \"float\" },\n    { name: \"eta2\", type: \"float\" },\n    { name: \"cosTheta1\", type: \"float\" },\n    { name: \"thinFilmThickness\", type: \"float\" },\n    { name: \"baseF0\", type: \"vec3\" }\n  ]\n}), mT = /* @__PURE__ */ b(({ normal: o, viewDir: e, roughness: t }) => {\n  const s = o.dot(e).saturate(), n = t.pow2(), r = Me(\n    t.lessThan(0.25),\n    g(-339.2).mul(n).add(g(161.4).mul(t)).sub(25.9),\n    g(-8.48).mul(n).add(g(14.3).mul(t)).sub(9.95)\n  ), i = Me(\n    t.lessThan(0.25),\n    g(44).mul(n).sub(g(23.7).mul(t)).add(3.26),\n    g(1.97).mul(n).sub(g(3.27).mul(t)).add(0.72)\n  );\n  return Me(t.lessThan(0.25), 0, g(0.1).mul(t).sub(0.025)).add(r.mul(s).add(i).exp()).mul(1 / Math.PI).saturate();\n}), Pi = T(0.04), Di = g(1);\nclass $p extends Ni {\n  /**\n   * Constructs a new physical lighting model.\n   *\n   * @param {Boolean} [clearcoat=false] - Whether clearcoat is supported or not.\n   * @param {Boolean} [sheen=false] - Whether sheen is supported or not.\n   * @param {Boolean} [iridescence=false] - Whether iridescence is supported or not.\n   * @param {Boolean} [anisotropy=false] - Whether anisotropy is supported or not.\n   * @param {Boolean} [transmission=false] - Whether transmission is supported or not.\n   * @param {Boolean} [dispersion=false] - Whether dispersion is supported or not.\n   */\n  constructor(e = !1, t = !1, s = !1, n = !1, r = !1, i = !1) {\n    super(), this.clearcoat = e, this.sheen = t, this.iridescence = s, this.anisotropy = n, this.transmission = r, this.dispersion = i, this.clearcoatRadiance = null, this.clearcoatSpecularDirect = null, this.clearcoatSpecularIndirect = null, this.sheenSpecularDirect = null, this.sheenSpecularIndirect = null, this.iridescenceFresnel = null, this.iridescenceF0 = null;\n  }\n  /**\n   * Depending on what features are requested, the method prepares certain node variables\n   * which are later used for lighting computations.\n   *\n   * @param {ContextNode} context - The current node context.\n   */\n  start(e) {\n    if (this.clearcoat === !0 && (this.clearcoatRadiance = T().toVar(\"clearcoatRadiance\"), this.clearcoatSpecularDirect = T().toVar(\"clearcoatSpecularDirect\"), this.clearcoatSpecularIndirect = T().toVar(\"clearcoatSpecularIndirect\")), this.sheen === !0 && (this.sheenSpecularDirect = T().toVar(\"sheenSpecularDirect\"), this.sheenSpecularIndirect = T().toVar(\"sheenSpecularIndirect\")), this.iridescence === !0) {\n      const t = he.dot(oe).clamp();\n      this.iridescenceFresnel = gT({\n        outsideIOR: g(1),\n        eta2: ma,\n        cosTheta1: t,\n        thinFilmThickness: ya,\n        baseF0: Ge\n      }), this.iridescenceF0 = Gp({ f: this.iridescenceFresnel, f90: 1, dotVH: t });\n    }\n    if (this.transmission === !0) {\n      const t = It, s = _h.sub(It).normalize(), n = yi;\n      e.backdrop = dT(\n        n,\n        s,\n        ft,\n        Q,\n        Ge,\n        Vn,\n        // specularF90\n        t,\n        // positionWorld\n        nt,\n        // modelMatrix\n        Xe,\n        // viewMatrix\n        _s,\n        // projMatrix\n        Sn,\n        xa,\n        _a,\n        Ta,\n        this.dispersion ? Na : null\n      ), e.backdropAlpha = zr, Q.a.mulAssign(Z(1, e.backdrop.a, zr));\n    }\n  }\n  // Fdez-Agüera's \"Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting\"\n  // Approximates multi-scattering in order to preserve energy.\n  // http://www.jcgt.org/published/0008/01/03/\n  computeMultiscattering(e, t, s) {\n    const n = he.dot(oe).clamp(), r = Ja({ roughness: ft, dotNV: n }), a = (this.iridescenceF0 ? ui.mix(Ge, this.iridescenceF0) : Ge).mul(r.x).add(s.mul(r.y)), c = r.x.add(r.y).oneMinus(), l = Ge.add(Ge.oneMinus().mul(0.047619)), d = a.mul(l).div(c.mul(l).oneMinus());\n    e.addAssign(a), t.addAssign(d.mul(c));\n  }\n  /**\n   * Implements the direct light.\n   *\n   * @param {Object} input - The input data.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  direct({ lightDirection: e, lightColor: t, reflectedLight: s }) {\n    const r = he.dot(e).clamp().mul(t);\n    if (this.sheen === !0 && this.sheenSpecularDirect.addAssign(r.mul(iT({ lightDirection: e }))), this.clearcoat === !0) {\n      const a = Gs.dot(e).clamp().mul(t);\n      this.clearcoatSpecularDirect.addAssign(a.mul($o({ lightDirection: e, f0: Pi, f90: Di, roughness: Ln, normalView: Gs })));\n    }\n    s.directDiffuse.addAssign(r.mul(gs({ diffuseColor: Q.rgb }))), s.directSpecular.addAssign(r.mul($o({ lightDirection: e, f0: Ge, f90: 1, roughness: ft, iridescence: this.iridescence, f: this.iridescenceFresnel, USE_IRIDESCENCE: this.iridescence, USE_ANISOTROPY: this.anisotropy })));\n  }\n  /**\n   * This method is intended for implementing the direct light term for\n   * rect area light nodes.\n   *\n   * @param {Object} input - The input data.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  directRectArea({ lightColor: e, lightPosition: t, halfWidth: s, halfHeight: n, reflectedLight: r, ltc_1: i, ltc_2: a }) {\n    const u = t.add(s).sub(n), c = t.sub(s).sub(n), l = t.sub(s).add(n), d = t.add(s).add(n), h = he, p = oe, f = xe.toVar(), m = oT({ N: h, V: p, roughness: ft }), _ = i.sample(m).toVar(), S = a.sample(m).toVar(), A = Le(\n      T(_.x, 0, _.y),\n      T(0, 1, 0),\n      T(_.z, 0, _.w)\n    ).toVar(), M = Ge.mul(S.x).add(Ge.oneMinus().mul(S.y)).toVar();\n    r.directSpecular.addAssign(e.mul(M).mul(Wu({ N: h, V: p, P: f, mInv: A, p0: u, p1: c, p2: l, p3: d }))), r.directDiffuse.addAssign(e.mul(Q).mul(Wu({ N: h, V: p, P: f, mInv: Le(1, 0, 0, 0, 1, 0, 0, 0, 1), p0: u, p1: c, p2: l, p3: d })));\n  }\n  /**\n   * Implements the indirect lighting.\n   *\n   * @param {ContextNode} context - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  indirect(e, t, s) {\n    this.indirectDiffuse(e, t, s), this.indirectSpecular(e, t, s), this.ambientOcclusion(e, t, s);\n  }\n  /**\n   * Implements the indirect diffuse term.\n   *\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  indirectDiffuse({ irradiance: e, reflectedLight: t }) {\n    t.indirectDiffuse.addAssign(e.mul(gs({ diffuseColor: Q })));\n  }\n  /**\n   * Implements the indirect specular term.\n   *\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  indirectSpecular({ radiance: e, iblIrradiance: t, reflectedLight: s }) {\n    if (this.sheen === !0 && this.sheenSpecularIndirect.addAssign(t.mul(\n      as,\n      mT({\n        normal: he,\n        viewDir: oe,\n        roughness: ai\n      })\n    )), this.clearcoat === !0) {\n      const c = Gs.dot(oe).clamp(), l = Vp({\n        dotNV: c,\n        specularColor: Pi,\n        specularF90: Di,\n        roughness: Ln\n      });\n      this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(l));\n    }\n    const n = T().toVar(\"singleScattering\"), r = T().toVar(\"multiScattering\"), i = t.mul(1 / Math.PI);\n    this.computeMultiscattering(n, r, Vn);\n    const a = n.add(r), u = Q.mul(a.r.max(a.g).max(a.b).oneMinus());\n    s.indirectSpecular.addAssign(e.mul(n)), s.indirectSpecular.addAssign(r.mul(i)), s.indirectDiffuse.addAssign(u.mul(i));\n  }\n  /**\n   * Implements the ambient occlusion term.\n   *\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  ambientOcclusion({ ambientOcclusion: e, reflectedLight: t }) {\n    const n = he.dot(oe).clamp().add(e), r = ft.mul(-16).oneMinus().negate().exp2(), i = e.sub(n.pow(r).oneMinus()).clamp();\n    this.clearcoat === !0 && this.clearcoatSpecularIndirect.mulAssign(e), this.sheen === !0 && this.sheenSpecularIndirect.mulAssign(e), t.indirectDiffuse.mulAssign(e), t.indirectSpecular.mulAssign(i);\n  }\n  /**\n   * Used for final lighting accumulations depending on the requested features.\n   *\n   * @param {ContextNode} context - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  finish(e) {\n    const { outgoingLight: t } = e;\n    if (this.clearcoat === !0) {\n      const s = Gs.dot(oe).clamp(), n = en({\n        dotVH: s,\n        f0: Pi,\n        f90: Di\n      }), r = t.mul(Gr.mul(n).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(Gr));\n      t.assign(r);\n    }\n    if (this.sheen === !0) {\n      const s = as.r.max(as.g).max(as.b).mul(0.157).oneMinus(), n = t.mul(s).add(this.sheenSpecularDirect, this.sheenSpecularIndirect);\n      t.assign(n);\n    }\n  }\n}\nconst ec = /* @__PURE__ */ g(1), qo = /* @__PURE__ */ g(-2), ur = /* @__PURE__ */ g(0.8), Ii = /* @__PURE__ */ g(-1), cr = /* @__PURE__ */ g(0.4), Li = /* @__PURE__ */ g(2), lr = /* @__PURE__ */ g(0.305), Vi = /* @__PURE__ */ g(3), tc = /* @__PURE__ */ g(0.21), yT = /* @__PURE__ */ g(4), sc = /* @__PURE__ */ g(4), xT = /* @__PURE__ */ g(16), TT = /* @__PURE__ */ b(([o]) => {\n  const e = T(re(o)).toVar(), t = g(-1).toVar();\n  return H(e.x.greaterThan(e.z), () => {\n    H(e.x.greaterThan(e.y), () => {\n      t.assign(Me(o.x.greaterThan(0), 0, 3));\n    }).Else(() => {\n      t.assign(Me(o.y.greaterThan(0), 1, 4));\n    });\n  }).Else(() => {\n    H(e.z.greaterThan(e.y), () => {\n      t.assign(Me(o.z.greaterThan(0), 2, 5));\n    }).Else(() => {\n      t.assign(Me(o.y.greaterThan(0), 1, 4));\n    });\n  }), t;\n}).setLayout({\n  name: \"getFace\",\n  type: \"float\",\n  inputs: [\n    { name: \"direction\", type: \"vec3\" }\n  ]\n}), _T = /* @__PURE__ */ b(([o, e]) => {\n  const t = w().toVar();\n  return H(e.equal(0), () => {\n    t.assign(w(o.z, o.y).div(re(o.x)));\n  }).ElseIf(e.equal(1), () => {\n    t.assign(w(o.x.negate(), o.z.negate()).div(re(o.y)));\n  }).ElseIf(e.equal(2), () => {\n    t.assign(w(o.x.negate(), o.y).div(re(o.z)));\n  }).ElseIf(e.equal(3), () => {\n    t.assign(w(o.z.negate(), o.y).div(re(o.x)));\n  }).ElseIf(e.equal(4), () => {\n    t.assign(w(o.x.negate(), o.z).div(re(o.y)));\n  }).Else(() => {\n    t.assign(w(o.x, o.y).div(re(o.z)));\n  }), $(0.5, t.add(1));\n}).setLayout({\n  name: \"getUV\",\n  type: \"vec2\",\n  inputs: [\n    { name: \"direction\", type: \"vec3\" },\n    { name: \"face\", type: \"float\" }\n  ]\n}), NT = /* @__PURE__ */ b(([o]) => {\n  const e = g(0).toVar();\n  return H(o.greaterThanEqual(ur), () => {\n    e.assign(ec.sub(o).mul(Ii.sub(qo)).div(ec.sub(ur)).add(qo));\n  }).ElseIf(o.greaterThanEqual(cr), () => {\n    e.assign(ur.sub(o).mul(Li.sub(Ii)).div(ur.sub(cr)).add(Ii));\n  }).ElseIf(o.greaterThanEqual(lr), () => {\n    e.assign(cr.sub(o).mul(Vi.sub(Li)).div(cr.sub(lr)).add(Li));\n  }).ElseIf(o.greaterThanEqual(tc), () => {\n    e.assign(lr.sub(o).mul(yT.sub(Vi)).div(lr.sub(tc)).add(Vi));\n  }).Else(() => {\n    e.assign(g(-2).mul(mt($(1.16, o))));\n  }), e;\n}).setLayout({\n  name: \"roughnessToMip\",\n  type: \"float\",\n  inputs: [\n    { name: \"roughness\", type: \"float\" }\n  ]\n}), Wp = /* @__PURE__ */ b(([o, e]) => {\n  const t = o.toVar();\n  t.assign($(2, t).sub(1));\n  const s = T(t, 1).toVar();\n  return H(e.equal(0), () => {\n    s.assign(s.zyx);\n  }).ElseIf(e.equal(1), () => {\n    s.assign(s.xzy), s.xz.mulAssign(-1);\n  }).ElseIf(e.equal(2), () => {\n    s.x.mulAssign(-1);\n  }).ElseIf(e.equal(3), () => {\n    s.assign(s.zyx), s.xz.mulAssign(-1);\n  }).ElseIf(e.equal(4), () => {\n    s.assign(s.xzy), s.xy.mulAssign(-1);\n  }).ElseIf(e.equal(5), () => {\n    s.z.mulAssign(-1);\n  }), s;\n}).setLayout({\n  name: \"getDirection\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"uv\", type: \"vec2\" },\n    { name: \"face\", type: \"float\" }\n  ]\n}), Hp = /* @__PURE__ */ b(([o, e, t, s, n, r]) => {\n  const i = g(t), a = T(e), u = _t(NT(i), qo, r), c = kt(u), l = yt(u), d = T(Xo(o, a, l, s, n, r)).toVar();\n  return H(c.notEqual(0), () => {\n    const h = T(Xo(o, a, l.add(1), s, n, r)).toVar();\n    d.assign(Z(d, h, c));\n  }), d;\n}), Xo = /* @__PURE__ */ b(([o, e, t, s, n, r]) => {\n  const i = g(t).toVar(), a = T(e), u = g(TT(a)).toVar(), c = g(fe(sc.sub(i), 0)).toVar();\n  i.assign(fe(i, sc));\n  const l = g(Zs(i)).toVar(), d = w(_T(a, u).mul(l.sub(2)).add(1)).toVar();\n  return H(u.greaterThan(2), () => {\n    d.y.addAssign(l), u.subAssign(3);\n  }), d.x.addAssign(u.mul(l)), d.x.addAssign(c.mul($(3, xT))), d.y.addAssign($(4, Zs(r).sub(l))), d.x.mulAssign(s), d.y.mulAssign(n), o.sample(d).grad(w(), w());\n}), Gi = /* @__PURE__ */ b(({ envMap: o, mipInt: e, outputDirection: t, theta: s, axis: n, CUBEUV_TEXEL_WIDTH: r, CUBEUV_TEXEL_HEIGHT: i, CUBEUV_MAX_MIP: a }) => {\n  const u = Bt(s), c = t.mul(u).add(n.cross(t).mul(Ze(s))).add(n.mul(n.dot(t).mul(u.oneMinus())));\n  return Xo(o, c, e, r, i, a);\n}), qp = /* @__PURE__ */ b(({ n: o, latitudinal: e, poleAxis: t, outputDirection: s, weights: n, samples: r, dTheta: i, mipInt: a, envMap: u, CUBEUV_TEXEL_WIDTH: c, CUBEUV_TEXEL_HEIGHT: l, CUBEUV_MAX_MIP: d }) => {\n  const h = T(Me(e, t, hi(t, s))).toVar();\n  H(va(h.equals(T(0))), () => {\n    h.assign(T(s.z, 0, s.x.negate()));\n  }), h.assign(Gt(h));\n  const p = T().toVar();\n  return p.addAssign(n.element(y(0)).mul(Gi({ theta: 0, axis: h, outputDirection: s, mipInt: a, envMap: u, CUBEUV_TEXEL_WIDTH: c, CUBEUV_TEXEL_HEIGHT: l, CUBEUV_MAX_MIP: d }))), J({ start: y(1), end: o }, ({ i: f }) => {\n    H(f.greaterThanEqual(r), () => {\n      bp();\n    });\n    const m = g(i.mul(g(f))).toVar();\n    p.addAssign(n.element(f).mul(Gi({ theta: m.mul(-1), axis: h, outputDirection: s, mipInt: a, envMap: u, CUBEUV_TEXEL_WIDTH: c, CUBEUV_TEXEL_HEIGHT: l, CUBEUV_MAX_MIP: d }))), p.addAssign(n.element(f).mul(Gi({ theta: m, axis: h, outputDirection: s, mipInt: a, envMap: u, CUBEUV_TEXEL_WIDTH: c, CUBEUV_TEXEL_HEIGHT: l, CUBEUV_MAX_MIP: d })));\n  }), I(p, 1);\n});\nlet Xr = null;\nconst nc = /* @__PURE__ */ new WeakMap();\nfunction bT(o) {\n  const e = Math.log2(o) - 2, t = 1 / o;\n  return { texelWidth: 1 / (3 * Math.max(Math.pow(2, e), 7 * 16)), texelHeight: t, maxMip: e };\n}\nfunction ST(o) {\n  let e = nc.get(o);\n  if ((e !== void 0 ? e.pmremVersion : -1) !== o.pmremVersion) {\n    const s = o.image;\n    if (o.isCubeTexture)\n      if (AT(s))\n        e = Xr.fromCubemap(o, e);\n      else\n        return null;\n    else if (RT(s))\n      e = Xr.fromEquirectangular(o, e);\n    else\n      return null;\n    e.pmremVersion = o.pmremVersion, nc.set(o, e);\n  }\n  return e.texture;\n}\nclass vT extends Ne {\n  static get type() {\n    return \"PMREMNode\";\n  }\n  /**\n   * Constructs a new function overloading node.\n   *\n   * @param {Texture} value - The input texture.\n   * @param {Node<vec2>} [uvNode=null] - The uv node.\n   * @param {Node<float>} [levelNode=null] - The level node.\n   */\n  constructor(e, t = null, s = null) {\n    super(\"vec3\"), this._value = e, this._pmrem = null, this.uvNode = t, this.levelNode = s, this._generator = null;\n    const n = new vl();\n    n.isRenderTargetTexture = !0, this._texture = X(n), this._width = L(0), this._height = L(0), this._maxMip = L(0), this.updateBeforeType = z.RENDER;\n  }\n  set value(e) {\n    this._value = e, this._pmrem = null;\n  }\n  /**\n   * The node's texture value.\n   *\n   * @type {Texture}\n   */\n  get value() {\n    return this._value;\n  }\n  /**\n   * Uses the given PMREM texture to update internal values.\n   *\n   * @param {Texture} texture - The PMREM texture.\n   */\n  updateFromTexture(e) {\n    const t = bT(e.image.height);\n    this._texture.value = e, this._width.value = t.texelWidth, this._height.value = t.texelHeight, this._maxMip.value = t.maxMip;\n  }\n  updateBefore() {\n    let e = this._pmrem;\n    const t = e ? e.pmremVersion : -1, s = this._value;\n    t !== s.pmremVersion && (s.isPMREMTexture === !0 ? e = s : e = ST(s), e !== null && (this._pmrem = e, this.updateFromTexture(e)));\n  }\n  setup(e) {\n    Xr === null && (Xr = e.createPMREMGenerator()), this.updateBefore(e);\n    let t = this.uvNode;\n    t === null && e.context.getUV && (t = e.context.getUV(this));\n    const s = this.value;\n    e.renderer.coordinateSystem === En && s.isPMREMTexture !== !0 && s.isRenderTargetTexture === !0 && (t = T(t.x.negate(), t.yz)), t = T(t.x, t.y.negate(), t.z);\n    let n = this.levelNode;\n    return n === null && e.context.getTextureLevel && (n = e.context.getTextureLevel(this)), Hp(this._texture, t, n, this._width, this._height, this._maxMip);\n  }\n}\nfunction AT(o) {\n  if (o == null) return !1;\n  let e = 0;\n  const t = 6;\n  for (let s = 0; s < t; s++)\n    o[s] !== void 0 && e++;\n  return e === t;\n}\nfunction RT(o) {\n  return o == null ? !1 : o.height > 0;\n}\nconst eu = /* @__PURE__ */ C(vT), rc = /* @__PURE__ */ new WeakMap();\nclass CT extends on {\n  static get type() {\n    return \"EnvironmentNode\";\n  }\n  /**\n   * Constructs a new environment node.\n   *\n   * @param {Node} [envNode=null] - A node representing the environment.\n   */\n  constructor(e = null) {\n    super(), this.envNode = e;\n  }\n  setup(e) {\n    const { material: t } = e;\n    let s = this.envNode;\n    if (s.isTextureNode || s.isMaterialReferenceNode) {\n      const p = s.isTextureNode ? s.value : t[s.property];\n      let f = rc.get(p);\n      f === void 0 && (f = eu(p), rc.set(p, f)), s = f;\n    }\n    const r = t.envMap ? te(\"envMapIntensity\", \"float\", e.material) : te(\"environmentIntensity\", \"float\", e.scene), a = t.useAnisotropy === !0 || t.anisotropy > 0 ? Lh : he, u = s.context(ic(ft, a)).mul(r), c = s.context(ET(yi)).mul(Math.PI).mul(r), l = vn(u), d = vn(c);\n    e.context.radiance.addAssign(l), e.context.iblIrradiance.addAssign(d);\n    const h = e.context.lightingModel.clearcoatRadiance;\n    if (h) {\n      const p = s.context(ic(Ln, Gs)).mul(r), f = vn(p);\n      h.addAssign(f);\n    }\n  }\n}\nconst ic = (o, e) => {\n  let t = null;\n  return {\n    getUV: () => (t === null && (t = oe.negate().reflect(e), t = o.mul(o).mix(t, e).normalize(), t = t.transformDirection(Xe)), t),\n    getTextureLevel: () => o\n  };\n}, ET = (o) => ({\n  getUV: () => o,\n  getTextureLevel: () => g(1)\n}), wT = /* @__PURE__ */ new Hg();\nclass Xp extends ge {\n  static get type() {\n    return \"MeshStandardNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh standard node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshStandardNodeMaterial = !0, this.lights = !0, this.emissiveNode = null, this.metalnessNode = null, this.roughnessNode = null, this.setDefaultValues(wT), this.setValues(e);\n  }\n  /**\n   * Overwritten since this type of material uses {@link EnvironmentNode}\n   * to implement the PBR (PMREM based) environment mapping. Besides, the\n   * method honors `Scene.environment`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {EnvironmentNode<vec3>?} The environment node.\n   */\n  setupEnvironment(e) {\n    let t = super.setupEnvironment(e);\n    return t === null && e.environmentNode && (t = e.environmentNode), t ? new CT(t) : null;\n  }\n  /**\n   * Setups the lighting model.\n   *\n   * @return {PhysicalLightingModel} The lighting model.\n   */\n  setupLightingModel() {\n    return new $p();\n  }\n  /**\n   * Setups the specular related node variables.\n   */\n  setupSpecular() {\n    const e = Z(T(0.04), Q.rgb, In);\n    Ge.assign(e), Vn.assign(1);\n  }\n  /**\n   * Setups the standard specific node variables.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupVariants() {\n    const e = this.metalnessNode ? g(this.metalnessNode) : qh;\n    In.assign(e);\n    let t = this.roughnessNode ? g(this.roughnessNode) : Hh;\n    t = Za({ roughness: t }), ft.assign(t), this.setupSpecular(), Q.assign(I(Q.rgb.mul(e.oneMinus()), Q.a));\n  }\n  copy(e) {\n    return this.emissiveNode = e.emissiveNode, this.metalnessNode = e.metalnessNode, this.roughnessNode = e.roughnessNode, super.copy(e);\n  }\n}\nconst MT = /* @__PURE__ */ new qg();\nclass BT extends Xp {\n  static get type() {\n    return \"MeshPhysicalNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh physical node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshPhysicalNodeMaterial = !0, this.clearcoatNode = null, this.clearcoatRoughnessNode = null, this.clearcoatNormalNode = null, this.sheenNode = null, this.sheenRoughnessNode = null, this.iridescenceNode = null, this.iridescenceIORNode = null, this.iridescenceThicknessNode = null, this.specularIntensityNode = null, this.specularColorNode = null, this.iorNode = null, this.transmissionNode = null, this.thicknessNode = null, this.attenuationDistanceNode = null, this.attenuationColorNode = null, this.dispersionNode = null, this.anisotropyNode = null, this.setDefaultValues(MT), this.setValues(e);\n  }\n  /**\n   * Whether the lighting model should use clearcoat or not.\n   *\n   * @type {Boolean}\n   * @default true\n   */\n  get useClearcoat() {\n    return this.clearcoat > 0 || this.clearcoatNode !== null;\n  }\n  /**\n   * Whether the lighting model should use iridescence or not.\n   *\n   * @type {Boolean}\n   * @default true\n   */\n  get useIridescence() {\n    return this.iridescence > 0 || this.iridescenceNode !== null;\n  }\n  /**\n   * Whether the lighting model should use sheen or not.\n   *\n   * @type {Boolean}\n   * @default true\n   */\n  get useSheen() {\n    return this.sheen > 0 || this.sheenNode !== null;\n  }\n  /**\n   * Whether the lighting model should use anisotropy or not.\n   *\n   * @type {Boolean}\n   * @default true\n   */\n  get useAnisotropy() {\n    return this.anisotropy > 0 || this.anisotropyNode !== null;\n  }\n  /**\n   * Whether the lighting model should use transmission or not.\n   *\n   * @type {Boolean}\n   * @default true\n   */\n  get useTransmission() {\n    return this.transmission > 0 || this.transmissionNode !== null;\n  }\n  /**\n   * Whether the lighting model should use dispersion or not.\n   *\n   * @type {Boolean}\n   * @default true\n   */\n  get useDispersion() {\n    return this.dispersion > 0 || this.dispersionNode !== null;\n  }\n  /**\n   * Setups the specular related node variables.\n   */\n  setupSpecular() {\n    const e = this.iorNode ? g(this.iorNode) : op;\n    Sn.assign(e), Ge.assign(Z($e(Fa(Sn.sub(1).div(Sn.add(1))).mul(Wh), T(1)).mul(zo), Q.rgb, In)), Vn.assign(Z(zo, 1, In));\n  }\n  /**\n   * Setups the lighting model.\n   *\n   * @return {PhysicalLightingModel} The lighting model.\n   */\n  setupLightingModel() {\n    return new $p(this.useClearcoat, this.useSheen, this.useIridescence, this.useAnisotropy, this.useTransmission, this.useDispersion);\n  }\n  /**\n   * Setups the physical specific node variables.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupVariants(e) {\n    if (super.setupVariants(e), this.useClearcoat) {\n      const t = this.clearcoatNode ? g(this.clearcoatNode) : Kh, s = this.clearcoatRoughnessNode ? g(this.clearcoatRoughnessNode) : Yh;\n      Gr.assign(t), Ln.assign(Za({ roughness: s }));\n    }\n    if (this.useSheen) {\n      const t = this.sheenNode ? T(this.sheenNode) : Zh, s = this.sheenRoughnessNode ? g(this.sheenRoughnessNode) : Jh;\n      as.assign(t), ai.assign(s);\n    }\n    if (this.useIridescence) {\n      const t = this.iridescenceNode ? g(this.iridescenceNode) : tp, s = this.iridescenceIORNode ? g(this.iridescenceIORNode) : sp, n = this.iridescenceThicknessNode ? g(this.iridescenceThicknessNode) : np;\n      ui.assign(t), ma.assign(s), ya.assign(n);\n    }\n    if (this.useAnisotropy) {\n      const t = (this.anisotropyNode ? w(this.anisotropyNode) : ep).toVar();\n      Ht.assign(t.length()), H(Ht.equal(0), () => {\n        t.assign(w(1, 0));\n      }).Else(() => {\n        t.divAssign(w(Ht)), Ht.assign(Ht.saturate());\n      }), Or.assign(Ht.pow2().mix(ft.pow2(), 1)), bn.assign(us[0].mul(t.x).add(us[1].mul(t.y))), fs.assign(us[1].mul(t.x).sub(us[0].mul(t.y)));\n    }\n    if (this.useTransmission) {\n      const t = this.transmissionNode ? g(this.transmissionNode) : rp, s = this.thicknessNode ? g(this.thicknessNode) : ip, n = this.attenuationDistanceNode ? g(this.attenuationDistanceNode) : ap, r = this.attenuationColorNode ? T(this.attenuationColorNode) : up;\n      if (zr.assign(t), xa.assign(s), Ta.assign(n), _a.assign(r), this.useDispersion) {\n        const i = this.dispersionNode ? g(this.dispersionNode) : pp;\n        Na.assign(i);\n      }\n    }\n  }\n  /**\n   * Setups the clearcoat normal node.\n   *\n   * @return {Node<vec3>} The clearcoat noraml.\n   */\n  setupClearcoatNormal() {\n    return this.clearcoatNormalNode ? T(this.clearcoatNormalNode) : jh;\n  }\n  setup(e) {\n    e.context.setupClearcoatNormal = () => this.setupClearcoatNormal(e), super.setup(e);\n  }\n  copy(e) {\n    return this.clearcoatNode = e.clearcoatNode, this.clearcoatRoughnessNode = e.clearcoatRoughnessNode, this.clearcoatNormalNode = e.clearcoatNormalNode, this.sheenNode = e.sheenNode, this.sheenRoughnessNode = e.sheenRoughnessNode, this.iridescenceNode = e.iridescenceNode, this.iridescenceIORNode = e.iridescenceIORNode, this.iridescenceThicknessNode = e.iridescenceThicknessNode, this.specularIntensityNode = e.specularIntensityNode, this.specularColorNode = e.specularColorNode, this.transmissionNode = e.transmissionNode, this.thicknessNode = e.thicknessNode, this.attenuationDistanceNode = e.attenuationDistanceNode, this.attenuationColorNode = e.attenuationColorNode, this.dispersionNode = e.dispersionNode, this.anisotropyNode = e.anisotropyNode, super.copy(e);\n  }\n}\nconst FT = /* @__PURE__ */ b(({ normal: o, lightDirection: e, builder: t }) => {\n  const s = o.dot(e), n = w(s.mul(0.5).add(0.5), 0);\n  if (t.material.gradientMap) {\n    const r = Pt(\"gradientMap\", \"texture\").context({ getUV: () => n });\n    return T(r.r);\n  } else {\n    const r = n.fwidth().mul(0.5);\n    return Z(T(0.7), T(1), Ot(g(0.7).sub(r.x), g(0.7).add(r.x), n.x));\n  }\n});\nclass UT extends Ni {\n  /**\n   * Implements the direct lighting. Instead of using a conventional smooth irradiance, the irradiance is\n   * reduced to a small number of discrete shades to create a comic-like, flat look.\n   *\n   * @param {Object} input - The input data.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  direct({ lightDirection: e, lightColor: t, reflectedLight: s }, n, r) {\n    const i = FT({ normal: gi, lightDirection: e, builder: r }).mul(t);\n    s.directDiffuse.addAssign(i.mul(gs({ diffuseColor: Q.rgb })));\n  }\n  /**\n   * Implements the indirect lighting.\n   *\n   * @param {ContextNode} input - The current node context.\n   * @param {StackNode} stack - The current stack.\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  indirect({ ambientOcclusion: e, irradiance: t, reflectedLight: s }) {\n    s.indirectDiffuse.addAssign(t.mul(gs({ diffuseColor: Q }))), s.indirectDiffuse.mulAssign(e);\n  }\n}\nconst PT = /* @__PURE__ */ new Xg();\nclass DT extends ge {\n  static get type() {\n    return \"MeshToonNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh toon node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshToonNodeMaterial = !0, this.lights = !0, this.setDefaultValues(PT), this.setValues(e);\n  }\n  /**\n   * Setups the lighting model.\n   *\n   * @return {ToonLightingModel} The lighting model.\n   */\n  setupLightingModel() {\n    return new UT();\n  }\n}\nclass IT extends Ne {\n  static get type() {\n    return \"MatcapUVNode\";\n  }\n  /**\n   * Constructs a new matcap uv node.\n   */\n  constructor() {\n    super(\"vec2\");\n  }\n  setup() {\n    const e = T(oe.z, 0, oe.x.negate()).normalize(), t = oe.cross(e);\n    return w(e.dot(he), t.dot(he)).mul(0.495).add(0.5);\n  }\n}\nconst Kp = /* @__PURE__ */ B(IT), LT = /* @__PURE__ */ new Kg();\nclass VT extends ge {\n  static get type() {\n    return \"MeshMatcapNodeMaterial\";\n  }\n  /**\n   * Constructs a new mesh normal node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isMeshMatcapNodeMaterial = !0, this.setDefaultValues(LT), this.setValues(e);\n  }\n  /**\n   * Setups the matcap specific node variables.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupVariants(e) {\n    const t = Kp;\n    let s;\n    e.material.matcap ? s = Pt(\"matcap\", \"texture\").context({ getUV: () => t }) : s = T(Z(0.2, 0.8, t.y)), Q.rgb.mulAssign(s.rgb);\n  }\n}\nconst GT = /* @__PURE__ */ new Yg();\nclass OT extends ge {\n  static get type() {\n    return \"PointsNodeMaterial\";\n  }\n  /**\n   * Constructs a new points node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isPointsNodeMaterial = !0, this.setDefaultValues(GT), this.setValues(e);\n  }\n}\nclass kT extends Ne {\n  static get type() {\n    return \"RotateNode\";\n  }\n  /**\n   * Constructs a new rotate node.\n   *\n   * @param {Node} positionNode - The position node.\n   * @param {Node} rotationNode - Represents the rotation that is applied to the position node. Depending\n   * on whether the position data are 2D or 3D, the rotation is expressed a single float value or an Euler value.\n   */\n  constructor(e, t) {\n    super(), this.positionNode = e, this.rotationNode = t;\n  }\n  /**\n   * The type of the {@link RotateNode#positionNode} defines the node's type.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node's type.\n   */\n  getNodeType(e) {\n    return this.positionNode.getNodeType(e);\n  }\n  setup(e) {\n    const { rotationNode: t, positionNode: s } = this;\n    if (this.getNodeType(e) === \"vec2\") {\n      const r = t.cos(), i = t.sin();\n      return oi(\n        r,\n        i,\n        i.negate(),\n        r\n      ).mul(s);\n    } else {\n      const r = t, i = ps(I(1, 0, 0, 0), I(0, Bt(r.x), Ze(r.x).negate(), 0), I(0, Ze(r.x), Bt(r.x), 0), I(0, 0, 0, 1)), a = ps(I(Bt(r.y), 0, Ze(r.y), 0), I(0, 1, 0, 0), I(Ze(r.y).negate(), 0, Bt(r.y), 0), I(0, 0, 0, 1)), u = ps(I(Bt(r.z), Ze(r.z).negate(), 0, 0), I(Ze(r.z), Bt(r.z), 0, 0), I(0, 0, 1, 0), I(0, 0, 0, 1));\n      return i.mul(a).mul(u).mul(I(s, 1)).xyz;\n    }\n  }\n}\nconst tu = /* @__PURE__ */ C(kT), zT = /* @__PURE__ */ new jg();\nclass $T extends ge {\n  static get type() {\n    return \"SpriteNodeMaterial\";\n  }\n  /**\n   * Constructs a new sprite node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isSpriteNodeMaterial = !0, this._useSizeAttenuation = !0, this.positionNode = null, this.rotationNode = null, this.scaleNode = null, this.setDefaultValues(zT), this.setValues(e);\n  }\n  /**\n   * Setups the position node in view space. This method implements\n   * the sprite specific vertex shader.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node<vec3>} The position in view space.\n   */\n  setupPositionView(e) {\n    const { object: t, camera: s } = e, n = this.sizeAttenuation, { positionNode: r, rotationNode: i, scaleNode: a } = this, u = rn.mul(T(r || 0));\n    let c = w(nt[0].xyz.length(), nt[1].xyz.length());\n    if (a !== null && (c = c.mul(a)), n === !1)\n      if (s.isPerspectiveCamera)\n        c = c.mul(u.z.negate());\n      else {\n        const p = g(2).div(_s.element(1).element(1));\n        c = c.mul(p.mul(2));\n      }\n    let l = fi.xy;\n    if (t.center && t.center.isVector2 === !0) {\n      const p = cy(\"center\", \"vec2\", t);\n      l = l.sub(p.sub(0.5));\n    }\n    l = l.mul(c);\n    const d = g(i || Qh), h = tu(l, d);\n    return I(u.xy.add(h), u.zw);\n  }\n  copy(e) {\n    return this.positionNode = e.positionNode, this.rotationNode = e.rotationNode, this.scaleNode = e.scaleNode, super.copy(e);\n  }\n  /**\n   * Whether to use size attenuation or not.\n   *\n   * @type {Boolean}\n   * @default true\n   */\n  get sizeAttenuation() {\n    return this._useSizeAttenuation;\n  }\n  set sizeAttenuation(e) {\n    this._useSizeAttenuation !== e && (this._useSizeAttenuation = e, this.needsUpdate = !0);\n  }\n}\nclass WT extends Ni {\n  /**\n   * Constructs a new shadow mask model.\n   */\n  constructor() {\n    super(), this.shadowNode = g(1).toVar(\"shadowMask\");\n  }\n  /**\n   * Only used to save the shadow mask.\n   *\n   * @param {Object} input - The input data.\n   */\n  direct({ shadowMask: e }) {\n    this.shadowNode.mulAssign(e);\n  }\n  /**\n   * Uses the shadow mask to produce the final color.\n   *\n   * @param {ContextNode} context - The current node context.\n   */\n  finish(e) {\n    Q.a.mulAssign(this.shadowNode.oneMinus()), e.outgoingLight.rgb.assign(Q.rgb);\n  }\n}\nconst HT = /* @__PURE__ */ new Qg();\nclass qT extends ge {\n  static get type() {\n    return \"ShadowNodeMaterial\";\n  }\n  /**\n   * Constructs a new shadow node material.\n   *\n   * @param {Object?} parameters - The configuration parameter.\n   */\n  constructor(e) {\n    super(), this.isShadowNodeMaterial = !0, this.lights = !0, this.setDefaultValues(HT), this.setValues(e);\n  }\n  /**\n   * Setups the lighting model.\n   *\n   * @return {ShadowMaskModel} The lighting model.\n   */\n  setupLightingModel() {\n    return new WT();\n  }\n}\nconst XT = b(({ texture: o, uv: e }) => {\n  const s = T().toVar();\n  return H(e.x.lessThan(1e-4), () => {\n    s.assign(T(1, 0, 0));\n  }).ElseIf(e.y.lessThan(1e-4), () => {\n    s.assign(T(0, 1, 0));\n  }).ElseIf(e.z.lessThan(1e-4), () => {\n    s.assign(T(0, 0, 1));\n  }).ElseIf(e.x.greaterThan(1 - 1e-4), () => {\n    s.assign(T(-1, 0, 0));\n  }).ElseIf(e.y.greaterThan(1 - 1e-4), () => {\n    s.assign(T(0, -1, 0));\n  }).ElseIf(e.z.greaterThan(1 - 1e-4), () => {\n    s.assign(T(0, 0, -1));\n  }).Else(() => {\n    const r = o.sample(e.add(T(-0.01, 0, 0))).r.sub(o.sample(e.add(T(0.01, 0, 0))).r), i = o.sample(e.add(T(0, -0.01, 0))).r.sub(o.sample(e.add(T(0, 0.01, 0))).r), a = o.sample(e.add(T(0, 0, -0.01))).r.sub(o.sample(e.add(T(0, 0, 0.01))).r);\n    s.assign(T(r, i, a));\n  }), s.normalize();\n});\nclass KT extends bt {\n  static get type() {\n    return \"Texture3DNode\";\n  }\n  /**\n   * Constructs a new 3D texture node.\n   *\n   * @param {Data3DTexture} value - The 3D texture.\n   * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.\n   * @param {Node<int>?} [levelNode=null] - The level node.\n   */\n  constructor(e, t = null, s = null) {\n    super(e, t, s), this.isTexture3DNode = !0;\n  }\n  /**\n   * Overwrites the default implementation to return a fixed value `'texture3D'`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return \"texture3D\";\n  }\n  /**\n   * Returns a default uv node which is in context of 3D textures a three-dimensional\n   * uv node.\n   *\n   * @return {Node<vec3>} The default uv node.\n   */\n  getDefaultUV() {\n    return T(0.5, 0.5, 0.5);\n  }\n  /**\n   * Overwritten with an empty implementation since the `updateMatrix` flag is ignored\n   * for 3D textures. The uv transformation matrix is not applied to 3D textures.\n   *\n   * @param {Boolean} value - The update toggle.\n   */\n  setUpdateMatrix() {\n  }\n  // Ignore .updateMatrix for 3d TextureNode\n  /**\n   * Overwrites the default implementation to return the unmodified uv node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {Node} uvNode - The uv node to setup.\n   * @return {Node} The unmodified uv node.\n   */\n  setupUV(e, t) {\n    const s = this.value;\n    return e.isFlipY() && (s.isRenderTargetTexture === !0 || s.isFramebufferTexture === !0) && (this.sampler ? t = t.flipY() : t = t.setY(y(jt(this, this.levelNode).y).sub(t.y).sub(1))), t;\n  }\n  /**\n   * Generates the uv code snippet.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {Node} uvNode - The uv node to generate code for.\n   * @return {String} The generated code snippet.\n   */\n  generateUV(e, t) {\n    return t.build(e, \"vec3\");\n  }\n  /**\n   * TODO.\n   *\n   * @param {Node<vec3>} uvNode - The uv node .\n   * @return {Node<vec3>} TODO.\n   */\n  normal(e) {\n    return XT({ texture: this, uv: e });\n  }\n}\nconst YT = /* @__PURE__ */ C(KT);\nclass jT {\n  /**\n   * Constructs a new animation loop management component.\n   *\n   * @param {Nodes} nodes - Renderer component for managing nodes related logic.\n   * @param {Info} info - Renderer component for managing metrics and monitoring data.\n   */\n  constructor(e, t) {\n    this.nodes = e, this.info = t, this._context = self, this._animationLoop = null, this._requestId = null;\n  }\n  /**\n   * Starts the internal animation loop.\n   */\n  start() {\n    const e = (t, s) => {\n      this._requestId = this._context.requestAnimationFrame(e), this.info.autoReset === !0 && this.info.reset(), this.nodes.nodeFrame.update(), this.info.frame = this.nodes.nodeFrame.frameId, this._animationLoop !== null && this._animationLoop(t, s);\n    };\n    e();\n  }\n  /**\n   * Stops the internal animation loop.\n   */\n  stop() {\n    this._context.cancelAnimationFrame(this._requestId), this._requestId = null;\n  }\n  /**\n   * Defines the user-level animation loop.\n   *\n   * @param {Function} callback - The animation loop.\n   */\n  setAnimationLoop(e) {\n    this._animationLoop = e;\n  }\n  /**\n   * Defines the context in which `requestAnimationFrame()` is executed.\n   *\n   * @param {Window|XRSession} context - The context to set.\n   */\n  setContext(e) {\n    this._context = e;\n  }\n  /**\n   * Frees all internal resources and stops the animation loop.\n   */\n  dispose() {\n    this.stop();\n  }\n}\nclass At {\n  /**\n   * Constructs a new chained map.\n   */\n  constructor() {\n    this.weakMap = /* @__PURE__ */ new WeakMap();\n  }\n  /**\n   * Returns the value for the given array of keys.\n   *\n   * @param {Array<Object>} keys - List of keys.\n   * @return {Any} The value. Returns `undefined` if no value was found.\n   */\n  get(e) {\n    let t = this.weakMap;\n    for (let s = 0; s < e.length; s++)\n      if (t = t.get(e[s]), t === void 0) return;\n    return t.get(e[e.length - 1]);\n  }\n  /**\n   * Sets the value for the given keys.\n   *\n   * @param {Array<Object>} keys - List of keys.\n   * @param {Any} value - The value to set.\n   * @return {ChainMap} A reference to this chain map.\n   */\n  set(e, t) {\n    let s = this.weakMap;\n    for (let n = 0; n < e.length; n++) {\n      const r = e[n];\n      s.has(r) === !1 && s.set(r, /* @__PURE__ */ new WeakMap()), s = s.get(r);\n    }\n    return s.set(e[e.length - 1], t), this;\n  }\n  /**\n   * Deletes a value for the given keys.\n   *\n   * @param {Array<Object>} keys - The keys.\n   * @return {Boolean} Returns `true` if the value has been removed successfully and `false` if the value has not be found.\n   */\n  delete(e) {\n    let t = this.weakMap;\n    for (let s = 0; s < e.length; s++)\n      if (t = t.get(e[s]), t === void 0) return !1;\n    return t.delete(e[e.length - 1]);\n  }\n}\nlet QT = 0;\nfunction ZT(o) {\n  const e = Object.keys(o);\n  let t = Object.getPrototypeOf(o);\n  for (; t; ) {\n    const s = Object.getOwnPropertyDescriptors(t);\n    for (const n in s)\n      if (s[n] !== void 0) {\n        const r = s[n];\n        r && typeof r.get == \"function\" && e.push(n);\n      }\n    t = Object.getPrototypeOf(t);\n  }\n  return e;\n}\nclass JT {\n  /**\n   * Constructs a new render object.\n   *\n   * @param {Nodes} nodes - Renderer component for managing nodes related logic.\n   * @param {Geometries} geometries - Renderer component for managing geometries.\n   * @param {Renderer} renderer - The renderer.\n   * @param {Object3D} object - The 3D object.\n   * @param {Material} material - The 3D object's material.\n   * @param {Scene} scene - The scene the 3D object belongs to.\n   * @param {Camera} camera - The camera the object should be rendered with.\n   * @param {LightsNode} lightsNode - The lights node.\n   * @param {RenderContext} renderContext - The render context.\n   * @param {ClippingContext} clippingContext - The clipping context.\n   */\n  constructor(e, t, s, n, r, i, a, u, c, l) {\n    this.id = QT++, this._nodes = e, this._geometries = t, this.renderer = s, this.object = n, this.material = r, this.scene = i, this.camera = a, this.lightsNode = u, this.context = c, this.geometry = n.geometry, this.version = r.version, this.drawRange = null, this.attributes = null, this.pipeline = null, this.vertexBuffers = null, this.drawParams = null, this.bundle = null, this.clippingContext = l, this.clippingContextCacheKey = l !== null ? l.cacheKey : \"\", this.initialNodesCacheKey = this.getDynamicCacheKey(), this.initialCacheKey = this.getCacheKey(), this._nodeBuilderState = null, this._bindings = null, this._monitor = null, this.onDispose = null, this.isRenderObject = !0, this.onMaterialDispose = () => {\n      this.dispose();\n    }, this.material.addEventListener(\"dispose\", this.onMaterialDispose);\n  }\n  /**\n   * Updates the clipping context.\n   *\n   * @param {ClippingContext} context - The clipping context to set.\n   */\n  updateClipping(e) {\n    this.clippingContext = e;\n  }\n  /**\n   * Whether the clipping requires an update or not.\n   *\n   * @type {Boolean}\n   * @readonly\n   */\n  get clippingNeedsUpdate() {\n    return this.clippingContext === null || this.clippingContext.cacheKey === this.clippingContextCacheKey ? !1 : (this.clippingContextCacheKey = this.clippingContext.cacheKey, !0);\n  }\n  /**\n   * The number of clipping planes defined in context of hardware clipping.\n   *\n   * @type {Number}\n   * @readonly\n   */\n  get hardwareClippingPlanes() {\n    return this.material.hardwareClipping === !0 ? this.clippingContext.unionClippingCount : 0;\n  }\n  /**\n   * Returns the node builder state of this render object.\n   *\n   * @return {NodeBuilderState} The node buider state.\n   */\n  getNodeBuilderState() {\n    return this._nodeBuilderState || (this._nodeBuilderState = this._nodes.getForRender(this));\n  }\n  /**\n   * Returns the node material observer of this render object.\n   *\n   * @return {NodeMaterialObserver} The node material observer.\n   */\n  getMonitor() {\n    return this._monitor || (this._monitor = this.getNodeBuilderState().monitor);\n  }\n  /**\n   * Returns an array of bind groups of this render object.\n   *\n   * @return {Array<BindGroup>} The bindings.\n   */\n  getBindings() {\n    return this._bindings || (this._bindings = this.getNodeBuilderState().createBindings());\n  }\n  /**\n   * Returns the index of the render object's geometry.\n   *\n   * @return {BufferAttribute?} The index. Returns `null` for non-indexed geometries.\n   */\n  getIndex() {\n    return this._geometries.getIndex(this);\n  }\n  /**\n   * Returns the indirect buffer attribute.\n   *\n   * @return {BufferAttribute?} The indirect attribute. `null` if no indirect drawing is used.\n   */\n  getIndirect() {\n    return this._geometries.getIndirect(this);\n  }\n  /**\n   * Returns an array that acts as a key for identifying the render object in a chain map.\n   *\n   * @return {Array<Object>} An array with object references.\n   */\n  getChainArray() {\n    return [this.object, this.material, this.context, this.lightsNode];\n  }\n  /**\n   * This method is used when the geometry of a 3D object has been exchanged and the\n   * respective render object now requires an update.\n   *\n   * @param {BufferGeometry} geometry - The geometry to set.\n   */\n  setGeometry(e) {\n    this.geometry = e, this.attributes = null;\n  }\n  /**\n   * Returns the buffer attributes of the render object. The returned array holds\n   * attribute definitions on geometry and node level.\n   *\n   * @return {Array<BufferAttribute>} An array with buffer attributes.\n   */\n  getAttributes() {\n    if (this.attributes !== null) return this.attributes;\n    const e = this.getNodeBuilderState().nodeAttributes, t = this.geometry, s = [], n = /* @__PURE__ */ new Set();\n    for (const r of e) {\n      const i = r.node && r.node.attribute ? r.node.attribute : t.getAttribute(r.name);\n      if (i === void 0) continue;\n      s.push(i);\n      const a = i.isInterleavedBufferAttribute ? i.data : i;\n      n.add(a);\n    }\n    return this.attributes = s, this.vertexBuffers = Array.from(n.values()), s;\n  }\n  /**\n   * Returns the vertex buffers of the render object.\n   *\n   * @return {Array<BufferAttribute|InterleavedBuffer>} An array with buffer attribute or interleaved buffers.\n   */\n  getVertexBuffers() {\n    return this.vertexBuffers === null && this.getAttributes(), this.vertexBuffers;\n  }\n  /**\n   * Returns the draw parameters for the render object.\n   *\n   * @return {{vertexCount: Number, firstVertex: Number, instanceCount: Number, firstInstance: Number}} The draw parameters.\n   */\n  getDrawParameters() {\n    const { object: e, material: t, geometry: s, group: n, drawRange: r } = this, i = this.drawParams || (this.drawParams = {\n      vertexCount: 0,\n      firstVertex: 0,\n      instanceCount: 0,\n      firstInstance: 0\n    }), a = this.getIndex(), u = a !== null, c = s.isInstancedBufferGeometry ? s.instanceCount : e.count > 1 ? e.count : 1;\n    if (c === 0) return null;\n    if (i.instanceCount = c, e.isBatchedMesh === !0) return i;\n    let l = 1;\n    t.wireframe === !0 && !e.isPoints && !e.isLineSegments && !e.isLine && !e.isLineLoop && (l = 2);\n    let d = r.start * l, h = (r.start + r.count) * l;\n    n !== null && (d = Math.max(d, n.start * l), h = Math.min(h, (n.start + n.count) * l));\n    const p = s.attributes.position;\n    let f = 1 / 0;\n    u ? f = a.count : p != null && (f = p.count), d = Math.max(d, 0), h = Math.min(h, f);\n    const m = h - d;\n    return m < 0 || m === 1 / 0 ? null : (i.vertexCount = m, i.firstVertex = d, i);\n  }\n  /**\n   * Returns the render object's geometry cache key.\n   *\n   * The geometry cache key is part of the material cache key.\n   *\n   * @return {String} The geometry cache key.\n   */\n  getGeometryCacheKey() {\n    const { geometry: e } = this;\n    let t = \"\";\n    for (const s of Object.keys(e.attributes).sort()) {\n      const n = e.attributes[s];\n      t += s + \",\", n.data && (t += n.data.stride + \",\"), n.offset && (t += n.offset + \",\"), n.itemSize && (t += n.itemSize + \",\"), n.normalized && (t += \"n,\");\n    }\n    return e.index && (t += \"index,\"), t;\n  }\n  /**\n   * Returns the render object's material cache key.\n   *\n   * The material cache key is part of the render object cache key.\n   *\n   * @return {String} The material cache key.\n   */\n  getMaterialCacheKey() {\n    const { object: e, material: t } = this;\n    let s = t.customProgramCacheKey();\n    for (const n of ZT(t)) {\n      if (/^(is[A-Z]|_)|^(visible|version|uuid|name|opacity|userData)$/.test(n)) continue;\n      const r = t[n];\n      let i;\n      if (r !== null) {\n        const a = typeof r;\n        a === \"number\" ? i = r !== 0 ? \"1\" : \"0\" : a === \"object\" ? (i = \"{\", r.isTexture && (i += r.mapping), i += \"}\") : i = String(r);\n      } else\n        i = String(r);\n      s += /*property + ':' +*/\n      i + \",\";\n    }\n    return s += this.clippingContextCacheKey + \",\", e.geometry && (s += this.getGeometryCacheKey()), e.skeleton && (s += e.skeleton.bones.length + \",\"), e.morphTargetInfluences && (s += e.morphTargetInfluences.length + \",\"), e.isBatchedMesh && (s += e._matricesTexture.uuid + \",\", e._colorsTexture !== null && (s += e._colorsTexture.uuid + \",\")), e.count > 1 && (s += e.uuid + \",\"), s += e.receiveShadow + \",\", wl(s);\n  }\n  /**\n   * Whether the geometry requires an update or not.\n   *\n   * @type {Boolean}\n   * @readonly\n   */\n  get needsGeometryUpdate() {\n    return this.geometry.id !== this.object.geometry.id;\n  }\n  /**\n   * Whether the render object requires an update or not.\n   *\n   * Note: There are two distinct places where render objects are checked for an update.\n   *\n   * 1. In `RenderObjects.get()` which is executed when the render object is request. This\n   * method checks the `needsUpdate` flag and recreates the render object if necessary.\n   * 2. In `Renderer._renderObjectDirect()` right after getting the render object via\n   * `RenderObjects.get()`. The render object's NodeMaterialObserver is then used to detect\n   * a need for a refresh due to material, geometry or object related value changes.\n   *\n   * TODO: Investigate if it's possible to merge boths steps so there is only a single place\n   * that performs the 'needsUpdate' check.\n   *\n   * @type {Boolean}\n   * @readonly\n   */\n  get needsUpdate() {\n    return (\n      /*this.object.static !== true &&*/\n      this.initialNodesCacheKey !== this.getDynamicCacheKey() || this.clippingNeedsUpdate\n    );\n  }\n  /**\n   * Returns the dynamic cache key which represents a key that is computed per draw command.\n   *\n   * @return {String} The cache key.\n   */\n  getDynamicCacheKey() {\n    let e = this._nodes.getCacheKey(this.scene, this.lightsNode);\n    return this.object.receiveShadow && (e += 1), e;\n  }\n  /**\n   * Returns the render object's cache key.\n   *\n   * @return {String} The cache key.\n   */\n  getCacheKey() {\n    return this.getMaterialCacheKey() + this.getDynamicCacheKey();\n  }\n  /**\n   * Frees internal resources.\n   */\n  dispose() {\n    this.material.removeEventListener(\"dispose\", this.onMaterialDispose), this.onDispose();\n  }\n}\nconst As = [];\nclass e_ {\n  /**\n   * Constructs a new render object management component.\n   *\n   * @param {Renderer} renderer - The renderer.\n   * @param {Nodes} nodes - Renderer component for managing nodes related logic.\n   * @param {Geometries} geometries - Renderer component for managing geometries.\n   * @param {Pipelines} pipelines - Renderer component for managing pipelines.\n   * @param {Bindings} bindings - Renderer component for managing bindings.\n   * @param {Info} info - Renderer component for managing metrics and monitoring data.\n   */\n  constructor(e, t, s, n, r, i) {\n    this.renderer = e, this.nodes = t, this.geometries = s, this.pipelines = n, this.bindings = r, this.info = i, this.chainMaps = {};\n  }\n  /**\n   * Returns a render object for the given object and state data.\n   *\n   * @param {Object3D} object - The 3D object.\n   * @param {Material} material - The 3D object's material.\n   * @param {Scene} scene - The scene the 3D object belongs to.\n   * @param {Camera} camera - The camera the 3D object should be rendered with.\n   * @param {LightsNode} lightsNode - The lights node.\n   * @param {RenderContext} renderContext - The render context.\n   * @param {ClippingContext} clippingContext - The clipping context.\n   * @param {String?} passId - An optional ID for identifying the pass.\n   * @return {RenderObject} The render object.\n   */\n  get(e, t, s, n, r, i, a, u) {\n    const c = this.getChainMap(u);\n    As[0] = e, As[1] = t, As[2] = i, As[3] = r;\n    let l = c.get(As);\n    return l === void 0 ? (l = this.createRenderObject(this.nodes, this.geometries, this.renderer, e, t, s, n, r, i, a, u), c.set(As, l)) : (l.updateClipping(a), l.needsGeometryUpdate && l.setGeometry(e.geometry), (l.version !== t.version || l.needsUpdate) && (l.initialCacheKey !== l.getCacheKey() ? (l.dispose(), l = this.get(e, t, s, n, r, i, a, u)) : l.version = t.version)), l;\n  }\n  /**\n   * Returns a chain map for the given pass ID.\n   *\n   * @param {String} [passId='default'] - The pass ID.\n   * @return {ChainMap} The chain map.\n   */\n  getChainMap(e = \"default\") {\n    return this.chainMaps[e] || (this.chainMaps[e] = new At());\n  }\n  /**\n   * Frees internal resources.\n   */\n  dispose() {\n    this.chainMaps = {};\n  }\n  /**\n   * Factory method for creating render objects with the given list of parameters.\n   *\n   * @param {Nodes} nodes - Renderer component for managing nodes related logic.\n   * @param {Geometries} geometries - Renderer component for managing geometries.\n   * @param {Renderer} renderer - The renderer.\n   * @param {Object3D} object - The 3D object.\n   * @param {Material} material - The object's material.\n   * @param {Scene} scene - The scene the 3D object belongs to.\n   * @param {Camera} camera - The camera the object should be rendered with.\n   * @param {LightsNode} lightsNode - The lights node.\n   * @param {RenderContext} renderContext - The render context.\n   * @param {ClippingContext} clippingContext - The clipping context.\n   * @param {String?} passId - An optional ID for identifying the pass.\n   * @return {RenderObject} The render object.\n   */\n  createRenderObject(e, t, s, n, r, i, a, u, c, l, d) {\n    const h = this.getChainMap(d), p = new JT(e, t, s, n, r, i, a, u, c, l);\n    return p.onDispose = () => {\n      this.pipelines.delete(p), this.bindings.delete(p), this.nodes.delete(p), h.delete(p.getChainArray());\n    }, p;\n  }\n}\nclass Jt {\n  /**\n   * Constructs a new data map.\n   */\n  constructor() {\n    this.data = /* @__PURE__ */ new WeakMap();\n  }\n  /**\n   * Returns the dictionary for the given object.\n   *\n   * @param {Object} object - The object.\n   * @return {Object} The dictionary.\n   */\n  get(e) {\n    let t = this.data.get(e);\n    return t === void 0 && (t = {}, this.data.set(e, t)), t;\n  }\n  /**\n   * Deletes the dictionary for the given object.\n   *\n   * @param {Object} object - The object.\n   * @return {Object?} The deleted dictionary.\n   */\n  delete(e) {\n    let t = null;\n    return this.data.has(e) && (t = this.data.get(e), this.data.delete(e)), t;\n  }\n  /**\n   * Returns `true` if the given object has a dictionary defined.\n   *\n   * @param {Object} object - The object to test.\n   * @return {Boolean} Whether a dictionary is defined or not.\n   */\n  has(e) {\n    return this.data.has(e);\n  }\n  /**\n   * Frees internal resources.\n   */\n  dispose() {\n    this.data = /* @__PURE__ */ new WeakMap();\n  }\n}\nconst gt = {\n  VERTEX: 1,\n  INDEX: 2,\n  STORAGE: 3,\n  INDIRECT: 4\n}, Kt = 16, t_ = 211, s_ = 212;\nclass n_ extends Jt {\n  /**\n   * Constructs a new attribute management component.\n   *\n   * @param {Backend} backend - The renderer's backend.\n   */\n  constructor(e) {\n    super(), this.backend = e;\n  }\n  /**\n   * Deletes the data for the given attribute.\n   *\n   * @param {BufferAttribute} attribute - The attribute.\n   * @return {Object} The deleted attribute data.\n   */\n  delete(e) {\n    const t = super.delete(e);\n    return t !== void 0 && this.backend.destroyAttribute(e), t;\n  }\n  /**\n   * Updates the given attribute. This method creates attribute buffers\n   * for new attributes and updates data for existing ones.\n   *\n   * @param {BufferAttribute} attribute - The attribute to update.\n   * @param {Number} type - The attribute type.\n   */\n  update(e, t) {\n    const s = this.get(e);\n    if (s.version === void 0)\n      t === gt.VERTEX ? this.backend.createAttribute(e) : t === gt.INDEX ? this.backend.createIndexAttribute(e) : t === gt.STORAGE ? this.backend.createStorageAttribute(e) : t === gt.INDIRECT && this.backend.createIndirectStorageAttribute(e), s.version = this._getBufferAttribute(e).version;\n    else {\n      const n = this._getBufferAttribute(e);\n      (s.version < n.version || n.usage === Is) && (this.backend.updateAttribute(e), s.version = n.version);\n    }\n  }\n  /**\n   * Utility method for handling interleaved buffer attributes correctly.\n   * To process them, their `InterleavedBuffer` is returned.\n   *\n   * @param {BufferAttribute} attribute - The attribute.\n   * @return {BufferAttribute|InterleavedBuffer}\n   */\n  _getBufferAttribute(e) {\n    return e.isInterleavedBufferAttribute && (e = e.data), e;\n  }\n}\nfunction r_(o) {\n  for (let e = o.length - 1; e >= 0; --e)\n    if (o[e] >= 65535) return !0;\n  return !1;\n}\nfunction Yp(o) {\n  return o.index !== null ? o.index.version : o.attributes.position.version;\n}\nfunction oc(o) {\n  const e = [], t = o.index, s = o.attributes.position;\n  if (t !== null) {\n    const r = t.array;\n    for (let i = 0, a = r.length; i < a; i += 3) {\n      const u = r[i + 0], c = r[i + 1], l = r[i + 2];\n      e.push(u, c, c, l, l, u);\n    }\n  } else {\n    const r = s.array;\n    for (let i = 0, a = r.length / 3 - 1; i < a; i += 3) {\n      const u = i + 0, c = i + 1, l = i + 2;\n      e.push(u, c, c, l, l, u);\n    }\n  }\n  const n = new (r_(e) ? Zg : Jg)(e, 1);\n  return n.version = Yp(o), n;\n}\nclass i_ extends Jt {\n  /**\n   * Constructs a new geometry management component.\n   *\n   * @param {Attributes} attributes - Renderer component for managing attributes.\n   * @param {Info} info - Renderer component for managing metrics and monitoring data.\n   */\n  constructor(e, t) {\n    super(), this.attributes = e, this.info = t, this.wireframes = /* @__PURE__ */ new WeakMap(), this.attributeCall = /* @__PURE__ */ new WeakMap();\n  }\n  /**\n   * Returns `true` if the given render object has an initialized geometry.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether if the given render object has an initialized geometry or not.\n   */\n  has(e) {\n    const t = e.geometry;\n    return super.has(t) && this.get(t).initialized === !0;\n  }\n  /**\n   * Prepares the geometry of the given render object for rendering.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  updateForRender(e) {\n    this.has(e) === !1 && this.initGeometry(e), this.updateAttributes(e);\n  }\n  /**\n   * Initializes the geometry of the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  initGeometry(e) {\n    const t = e.geometry, s = this.get(t);\n    s.initialized = !0, this.info.memory.geometries++;\n    const n = () => {\n      this.info.memory.geometries--;\n      const r = t.index, i = e.getAttributes();\n      r !== null && this.attributes.delete(r);\n      for (const u of i)\n        this.attributes.delete(u);\n      const a = this.wireframes.get(t);\n      a !== void 0 && this.attributes.delete(a), t.removeEventListener(\"dispose\", n);\n    };\n    t.addEventListener(\"dispose\", n);\n  }\n  /**\n   * Updates the geometry attributes of the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  updateAttributes(e) {\n    const t = e.getAttributes();\n    for (const r of t)\n      r.isStorageBufferAttribute || r.isStorageInstancedBufferAttribute ? this.updateAttribute(r, gt.STORAGE) : this.updateAttribute(r, gt.VERTEX);\n    const s = this.getIndex(e);\n    s !== null && this.updateAttribute(s, gt.INDEX);\n    const n = e.geometry.indirect;\n    n !== null && this.updateAttribute(n, gt.INDIRECT);\n  }\n  /**\n   * Updates the given attribute.\n   *\n   * @param {BufferAttribute} attribute - The attribute to update.\n   * @param {Number} type - The attribute type.\n   */\n  updateAttribute(e, t) {\n    const s = this.info.render.calls;\n    e.isInterleavedBufferAttribute ? this.attributeCall.get(e) === void 0 ? (this.attributes.update(e, t), this.attributeCall.set(e, s)) : this.attributeCall.get(e.data) !== s && (this.attributes.update(e, t), this.attributeCall.set(e.data, s), this.attributeCall.set(e, s)) : this.attributeCall.get(e) !== s && (this.attributes.update(e, t), this.attributeCall.set(e, s));\n  }\n  /**\n   * Returns the indirect buffer attribute of the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {BufferAttribute?} The indirect attribute. `null` if no indirect drawing is used.\n   */\n  getIndirect(e) {\n    return e.geometry.indirect;\n  }\n  /**\n   * Returns the index of the given render object's geometry. This is implemented\n   * in a method to return a wireframe index if necessary.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {BufferAttribute?} The index. Returns `null` for non-indexed geometries.\n   */\n  getIndex(e) {\n    const { geometry: t, material: s } = e;\n    let n = t.index;\n    if (s.wireframe === !0) {\n      const r = this.wireframes;\n      let i = r.get(t);\n      i === void 0 ? (i = oc(t), r.set(t, i)) : i.version !== Yp(t) && (this.attributes.delete(i), i = oc(t), r.set(t, i)), n = i;\n    }\n    return n;\n  }\n}\nclass o_ {\n  /**\n   * Constructs a new info component.\n   */\n  constructor() {\n    this.autoReset = !0, this.frame = 0, this.calls = 0, this.render = {\n      calls: 0,\n      frameCalls: 0,\n      drawCalls: 0,\n      triangles: 0,\n      points: 0,\n      lines: 0,\n      timestamp: 0,\n      previousFrameCalls: 0,\n      timestampCalls: 0\n    }, this.compute = {\n      calls: 0,\n      frameCalls: 0,\n      timestamp: 0,\n      previousFrameCalls: 0,\n      timestampCalls: 0\n    }, this.memory = {\n      geometries: 0,\n      textures: 0\n    };\n  }\n  /**\n   * This method should be executed per draw call and updates the corresponding metrics.\n   *\n   * @param {Object3D} object - The 3D object that is going to be rendered.\n   * @param {Number} count - The vertex or index count.\n   * @param {Number} instanceCount - The instance count.\n   */\n  update(e, t, s) {\n    this.render.drawCalls++, e.isMesh || e.isSprite ? this.render.triangles += s * (t / 3) : e.isPoints ? this.render.points += s * t : e.isLineSegments ? this.render.lines += s * (t / 2) : e.isLine ? this.render.lines += s * (t - 1) : console.error(\"THREE.WebGPUInfo: Unknown object type.\");\n  }\n  /**\n   * Used by async render methods to updated timestamp metrics.\n   *\n   * @param {('render'|'compute')} type - The type of render call.\n   * @param {Number} time - The duration of the compute/render call in milliseconds.\n   */\n  updateTimestamp(e, t) {\n    this[e].timestampCalls === 0 && (this[e].timestamp = 0), this[e].timestamp += t, this[e].timestampCalls++, this[e].timestampCalls >= this[e].previousFrameCalls && (this[e].timestampCalls = 0);\n  }\n  /**\n   * Resets frame related metrics.\n   */\n  reset() {\n    const e = this.render.frameCalls;\n    this.render.previousFrameCalls = e;\n    const t = this.compute.frameCalls;\n    this.compute.previousFrameCalls = t, this.render.drawCalls = 0, this.render.frameCalls = 0, this.compute.frameCalls = 0, this.render.triangles = 0, this.render.points = 0, this.render.lines = 0;\n  }\n  /**\n   * Performs a complete reset of the object.\n   */\n  dispose() {\n    this.reset(), this.calls = 0, this.render.calls = 0, this.compute.calls = 0, this.render.timestamp = 0, this.compute.timestamp = 0, this.memory.geometries = 0, this.memory.textures = 0;\n  }\n}\nclass jp {\n  /**\n   * Constructs a new pipeline.\n   *\n   * @param {String} cacheKey - The pipeline's cache key.\n   */\n  constructor(e) {\n    this.cacheKey = e, this.usedTimes = 0;\n  }\n}\nclass a_ extends jp {\n  /**\n   * Constructs a new render pipeline.\n   *\n   * @param {String} cacheKey - The pipeline's cache key.\n   * @param {ProgrammableStage} vertexProgram - The pipeline's vertex shader.\n   * @param {ProgrammableStage} fragmentProgram - The pipeline's fragment shader.\n   */\n  constructor(e, t, s) {\n    super(e), this.vertexProgram = t, this.fragmentProgram = s;\n  }\n}\nclass u_ extends jp {\n  /**\n   * Constructs a new render pipeline.\n   *\n   * @param {String} cacheKey - The pipeline's cache key.\n   * @param {ProgrammableStage} computeProgram - The pipeline's compute shader.\n   */\n  constructor(e, t) {\n    super(e), this.computeProgram = t, this.isComputePipeline = !0;\n  }\n}\nlet c_ = 0;\nclass Oi {\n  /**\n   * Constructs a new programmable stage.\n   *\n   * @param {String} code - The shader code.\n   * @param {('vertex'|'fragment'|'compute')} stage - The type of stage.\n   * @param {String} name - The name of the shader.\n   * @param {Array<Object>?} [transforms=null] - The transforms (only relevant for compute stages with WebGL 2 which uses Transform Feedback).\n   * @param {Array<Object>?} [attributes=null] - The attributes (only relevant for compute stages with WebGL 2 which uses Transform Feedback).\n   */\n  constructor(e, t, s, n = null, r = null) {\n    this.id = c_++, this.code = e, this.stage = t, this.name = s, this.transforms = n, this.attributes = r, this.usedTimes = 0;\n  }\n}\nclass l_ extends Jt {\n  /**\n   * Constructs a new pipeline management component.\n   *\n   * @param {Backend} backend - The renderer's backend.\n   * @param {Nodes} nodes - Renderer component for managing nodes related logic.\n   */\n  constructor(e, t) {\n    super(), this.backend = e, this.nodes = t, this.bindings = null, this.caches = /* @__PURE__ */ new Map(), this.programs = {\n      vertex: /* @__PURE__ */ new Map(),\n      fragment: /* @__PURE__ */ new Map(),\n      compute: /* @__PURE__ */ new Map()\n    };\n  }\n  /**\n   * Returns a compute pipeline for the given compute node.\n   *\n   * @param {Node} computeNode - The compute node.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   * @return {ComputePipeline} The compute pipeline.\n   */\n  getForCompute(e, t) {\n    const { backend: s } = this, n = this.get(e);\n    if (this._needsComputeUpdate(e)) {\n      const r = n.pipeline;\n      r && (r.usedTimes--, r.computeProgram.usedTimes--);\n      const i = this.nodes.getForCompute(e);\n      let a = this.programs.compute.get(i.computeShader);\n      a === void 0 && (r && r.computeProgram.usedTimes === 0 && this._releaseProgram(r.computeProgram), a = new Oi(i.computeShader, \"compute\", e.name, i.transforms, i.nodeAttributes), this.programs.compute.set(i.computeShader, a), s.createProgram(a));\n      const u = this._getComputeCacheKey(e, a);\n      let c = this.caches.get(u);\n      c === void 0 && (r && r.usedTimes === 0 && this._releasePipeline(r), c = this._getComputePipeline(e, a, u, t)), c.usedTimes++, a.usedTimes++, n.version = e.version, n.pipeline = c;\n    }\n    return n.pipeline;\n  }\n  /**\n   * Returns a render pipeline for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @param {Array<Promise>?} [promises=null] - An array of compilation promises which is only relevant in context of `Renderer.compileAsync()`.\n   * @return {RenderPipeline} The render pipeline.\n   */\n  getForRender(e, t = null) {\n    const { backend: s } = this, n = this.get(e);\n    if (this._needsRenderUpdate(e)) {\n      const r = n.pipeline;\n      r && (r.usedTimes--, r.vertexProgram.usedTimes--, r.fragmentProgram.usedTimes--);\n      const i = e.getNodeBuilderState(), a = e.material ? e.material.name : \"\";\n      let u = this.programs.vertex.get(i.vertexShader);\n      u === void 0 && (r && r.vertexProgram.usedTimes === 0 && this._releaseProgram(r.vertexProgram), u = new Oi(i.vertexShader, \"vertex\", a), this.programs.vertex.set(i.vertexShader, u), s.createProgram(u));\n      let c = this.programs.fragment.get(i.fragmentShader);\n      c === void 0 && (r && r.fragmentProgram.usedTimes === 0 && this._releaseProgram(r.fragmentProgram), c = new Oi(i.fragmentShader, \"fragment\", a), this.programs.fragment.set(i.fragmentShader, c), s.createProgram(c));\n      const l = this._getRenderCacheKey(e, u, c);\n      let d = this.caches.get(l);\n      d === void 0 ? (r && r.usedTimes === 0 && this._releasePipeline(r), d = this._getRenderPipeline(e, u, c, l, t)) : e.pipeline = d, d.usedTimes++, u.usedTimes++, c.usedTimes++, n.pipeline = d;\n    }\n    return n.pipeline;\n  }\n  /**\n   * Deletes the pipeline for the given render object.\n   *\n   * @param {RenderObject} object - The render object.\n   * @return {Object?} The deleted dictionary.\n   */\n  delete(e) {\n    const t = this.get(e).pipeline;\n    return t && (t.usedTimes--, t.usedTimes === 0 && this._releasePipeline(t), t.isComputePipeline ? (t.computeProgram.usedTimes--, t.computeProgram.usedTimes === 0 && this._releaseProgram(t.computeProgram)) : (t.fragmentProgram.usedTimes--, t.vertexProgram.usedTimes--, t.vertexProgram.usedTimes === 0 && this._releaseProgram(t.vertexProgram), t.fragmentProgram.usedTimes === 0 && this._releaseProgram(t.fragmentProgram))), super.delete(e);\n  }\n  /**\n   * Frees internal resources.\n   */\n  dispose() {\n    super.dispose(), this.caches = /* @__PURE__ */ new Map(), this.programs = {\n      vertex: /* @__PURE__ */ new Map(),\n      fragment: /* @__PURE__ */ new Map(),\n      compute: /* @__PURE__ */ new Map()\n    };\n  }\n  /**\n   * Updates the pipeline for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  updateForRender(e) {\n    this.getForRender(e);\n  }\n  /**\n   * Returns a compute pipeline for the given parameters.\n   *\n   * @private\n   * @param {Node} computeNode - The compute node.\n   * @param {ProgrammableStage} stageCompute - The programmable stage representing the compute shader.\n   * @param {String} cacheKey - The cache key.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   * @return {ComputePipeline} The compute pipeline.\n   */\n  _getComputePipeline(e, t, s, n) {\n    s = s || this._getComputeCacheKey(e, t);\n    let r = this.caches.get(s);\n    return r === void 0 && (r = new u_(s, t), this.caches.set(s, r), this.backend.createComputePipeline(r, n)), r;\n  }\n  /**\n   * Returns a render pipeline for the given parameters.\n   *\n   * @private\n   * @param {RenderObject} renderObject - The render object.\n   * @param {ProgrammableStage} stageVertex - The programmable stage representing the vertex shader.\n   * @param {ProgrammableStage} stageFragment - The programmable stage representing the fragment shader.\n   * @param {String} cacheKey - The cache key.\n   * @param {Array} promises - An array of compilation promises which is only relevant in context of `Renderer.compileAsync()`.\n   * @return {ComputePipeline} The compute pipeline.\n   */\n  _getRenderPipeline(e, t, s, n, r) {\n    n = n || this._getRenderCacheKey(e, t, s);\n    let i = this.caches.get(n);\n    return i === void 0 && (i = new a_(n, t, s), this.caches.set(n, i), e.pipeline = i, this.backend.createRenderPipeline(e, r)), i;\n  }\n  /**\n   * Computes a cache key representing a compute pipeline.\n   *\n   * @private\n   * @param {Node} computeNode - The compute node.\n   * @param {ProgrammableStage} stageCompute - The programmable stage representing the compute shader.\n   * @return {String} The cache key.\n   */\n  _getComputeCacheKey(e, t) {\n    return e.id + \",\" + t.id;\n  }\n  /**\n   * Computes a cache key representing a render pipeline.\n   *\n   * @private\n   * @param {RenderObject} renderObject - The render object.\n   * @param {ProgrammableStage} stageVertex - The programmable stage representing the vertex shader.\n   * @param {ProgrammableStage} stageFragment - The programmable stage representing the fragment shader.\n   * @return {String} The cache key.\n   */\n  _getRenderCacheKey(e, t, s) {\n    return t.id + \",\" + s.id + \",\" + this.backend.getRenderCacheKey(e);\n  }\n  /**\n   * Releases the given pipeline.\n   *\n   * @private\n   * @param {Pipeline} pipeline - The pipeline to release.\n   */\n  _releasePipeline(e) {\n    this.caches.delete(e.cacheKey);\n  }\n  /**\n   * Releases the shader program.\n   *\n   * @private\n   * @param {Object} program - The shdaer program to release.\n   */\n  _releaseProgram(e) {\n    const t = e.code, s = e.stage;\n    this.programs[s].delete(t);\n  }\n  /**\n   * Returns `true` if the compute pipeline for the given compute node requires an update.\n   *\n   * @private\n   * @param {Node} computeNode - The compute node.\n   * @return {Boolean} Whether the compute pipeline for the given compute node requires an update or not.\n   */\n  _needsComputeUpdate(e) {\n    const t = this.get(e);\n    return t.pipeline === void 0 || t.version !== e.version;\n  }\n  /**\n   * Returns `true` if the render pipeline for the given render object requires an update.\n   *\n   * @private\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether the render object for the given render object requires an update or not.\n   */\n  _needsRenderUpdate(e) {\n    return this.get(e).pipeline === void 0 || this.backend.needsRenderUpdate(e);\n  }\n}\nclass d_ extends Jt {\n  /**\n   * Constructs a new bindings management component.\n   *\n   * @param {Backend} backend - The renderer's backend.\n   * @param {Nodes} nodes - Renderer component for managing nodes related logic.\n   * @param {Textures} textures - Renderer component for managing textures.\n   * @param {Attributes} attributes - Renderer component for managing attributes.\n   * @param {Pipelines} pipelines - Renderer component for managing pipelines.\n   * @param {Info} info - Renderer component for managing metrics and monitoring data.\n   */\n  constructor(e, t, s, n, r, i) {\n    super(), this.backend = e, this.textures = s, this.pipelines = r, this.attributes = n, this.nodes = t, this.info = i, this.pipelines.bindings = this;\n  }\n  /**\n   * Returns the bind groups for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Array<BindGroup>} The bind groups.\n   */\n  getForRender(e) {\n    const t = e.getBindings();\n    for (const s of t) {\n      const n = this.get(s);\n      n.bindGroup === void 0 && (this._init(s), this.backend.createBindings(s, t, 0), n.bindGroup = s);\n    }\n    return t;\n  }\n  /**\n   * Returns the bind groups for the given compute node.\n   *\n   * @param {Node} computeNode - The compute node.\n   * @return {Array<BindGroup>} The bind groups.\n   */\n  getForCompute(e) {\n    const t = this.nodes.getForCompute(e).bindings;\n    for (const s of t) {\n      const n = this.get(s);\n      n.bindGroup === void 0 && (this._init(s), this.backend.createBindings(s, t, 0), n.bindGroup = s);\n    }\n    return t;\n  }\n  /**\n   * Updates the bindings for the given compute node.\n   *\n   * @param {Node} computeNode - The compute node.\n   */\n  updateForCompute(e) {\n    this._updateBindings(this.getForCompute(e));\n  }\n  /**\n   * Updates the bindings for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  updateForRender(e) {\n    this._updateBindings(this.getForRender(e));\n  }\n  /**\n   * Updates the given array of bindings.\n   *\n   * @param {Array<BindGroup>} bindings - The bind groups.\n   */\n  _updateBindings(e) {\n    for (const t of e)\n      this._update(t, e);\n  }\n  /**\n   * Initializes the given bind group.\n   *\n   * @param {BindGroup} bindGroup - The bind group to initialize.\n   */\n  _init(e) {\n    for (const t of e.bindings)\n      if (t.isSampledTexture)\n        this.textures.updateTexture(t.texture);\n      else if (t.isStorageBuffer) {\n        const s = t.attribute, n = s.isIndirectStorageBufferAttribute ? gt.INDIRECT : gt.STORAGE;\n        this.attributes.update(s, n);\n      }\n  }\n  /**\n   * Updates the given bind group.\n   *\n   * @param {BindGroup} bindGroup - The bind group to update.\n   * @param {Array<BindGroup>} bindings - The bind groups.\n   */\n  _update(e, t) {\n    const { backend: s } = this;\n    let n = !1, r = !0, i = 0, a = 0;\n    for (const u of e.bindings)\n      if (!(u.isNodeUniformsGroup && this.nodes.updateGroup(u) === !1)) {\n        if (u.isUniformBuffer)\n          u.update() && s.updateBinding(u);\n        else if (u.isSampler)\n          u.update();\n        else if (u.isSampledTexture) {\n          const c = this.textures.get(u.texture);\n          u.needsBindingsUpdate(c.generation) && (n = !0);\n          const l = u.update(), d = u.texture;\n          l && this.textures.updateTexture(d);\n          const h = s.get(d);\n          if (h.externalTexture !== void 0 || c.isDefaultTexture ? r = !1 : (i = i * 10 + d.id, a += d.version), s.isWebGPUBackend === !0 && h.texture === void 0 && h.externalTexture === void 0 && (console.error(\"Bindings._update: binding should be available:\", u, l, d, u.textureNode.value, n), this.textures.updateTexture(d), n = !0), d.isStorageTexture === !0) {\n            const p = this.get(d);\n            u.store === !0 ? p.needsMipmap = !0 : this.textures.needsMipmaps(d) && p.needsMipmap === !0 && (this.backend.generateMipmaps(d), p.needsMipmap = !1);\n          }\n        }\n      }\n    n === !0 && this.backend.updateBindings(e, t, r ? i : 0, a);\n  }\n}\nfunction h_(o, e) {\n  return o.groupOrder !== e.groupOrder ? o.groupOrder - e.groupOrder : o.renderOrder !== e.renderOrder ? o.renderOrder - e.renderOrder : o.material.id !== e.material.id ? o.material.id - e.material.id : o.z !== e.z ? o.z - e.z : o.id - e.id;\n}\nfunction ac(o, e) {\n  return o.groupOrder !== e.groupOrder ? o.groupOrder - e.groupOrder : o.renderOrder !== e.renderOrder ? o.renderOrder - e.renderOrder : o.z !== e.z ? e.z - o.z : o.id - e.id;\n}\nfunction uc(o) {\n  return (o.transmission > 0 || o.transmissionNode) && o.side === Ws && o.forceSinglePass === !1;\n}\nclass p_ {\n  /**\n   * Constructs a render list.\n   *\n   * @param {Lighting} lighting - The lighting management component.\n   * @param {Scene} scene - The scene.\n   * @param {Camera} camera - The camera the scene is rendered with.\n   */\n  constructor(e, t, s) {\n    this.renderItems = [], this.renderItemsIndex = 0, this.opaque = [], this.transparentDoublePass = [], this.transparent = [], this.bundles = [], this.lightsNode = e.getNode(t, s), this.lightsArray = [], this.scene = t, this.camera = s, this.occlusionQueryCount = 0;\n  }\n  /**\n   * This method is called right at the beginning of a render call\n   * before the scene is analyzed. It prepares the internal data\n   * structures for the upcoming render lists generation.\n   *\n   * @return {RenderList} A reference to this render list.\n   */\n  begin() {\n    return this.renderItemsIndex = 0, this.opaque.length = 0, this.transparentDoublePass.length = 0, this.transparent.length = 0, this.bundles.length = 0, this.lightsArray.length = 0, this.occlusionQueryCount = 0, this;\n  }\n  /**\n   * Returns a render item for the giving render item state. The state is defined\n   * by a series of object-related parameters.\n   *\n   * The method avoids object creation by holding render items and reusing them in\n   * subsequent render calls (just with different property values).\n   *\n   * @param {Object3D} object - The 3D object.\n   * @param {BufferGeometry} geometry - The 3D object's geometry.\n   * @param {Material} material - The 3D object's material.\n   * @param {Number} groupOrder - The current group order.\n   * @param {Number} z - Th 3D object's depth value (z value in clip space).\n   * @param {Number?} group - {Object?} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.\n   * @param {ClippingContext} clippingContext - The current clipping context.\n   * @return {Object} The render item.\n   */\n  getNextRenderItem(e, t, s, n, r, i, a) {\n    let u = this.renderItems[this.renderItemsIndex];\n    return u === void 0 ? (u = {\n      id: e.id,\n      object: e,\n      geometry: t,\n      material: s,\n      groupOrder: n,\n      renderOrder: e.renderOrder,\n      z: r,\n      group: i,\n      clippingContext: a\n    }, this.renderItems[this.renderItemsIndex] = u) : (u.id = e.id, u.object = e, u.geometry = t, u.material = s, u.groupOrder = n, u.renderOrder = e.renderOrder, u.z = r, u.group = i, u.clippingContext = a), this.renderItemsIndex++, u;\n  }\n  /**\n   * Pushes the given object as a render item to the internal render lists.\n   * The selected lists depend on the object properties.\n   *\n   * @param {Object3D} object - The 3D object.\n   * @param {BufferGeometry} geometry - The 3D object's geometry.\n   * @param {Material} material - The 3D object's material.\n   * @param {Number} groupOrder - The current group order.\n   * @param {Number} z - Th 3D object's depth value (z value in clip space).\n   * @param {Number?} group - {Object?} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.\n   * @param {ClippingContext} clippingContext - The current clipping context.\n   */\n  push(e, t, s, n, r, i, a) {\n    const u = this.getNextRenderItem(e, t, s, n, r, i, a);\n    e.occlusionTest === !0 && this.occlusionQueryCount++, s.transparent === !0 || s.transmission > 0 ? (uc(s) && this.transparentDoublePass.push(u), this.transparent.push(u)) : this.opaque.push(u);\n  }\n  /**\n   * Inserts the given object as a render item at the start of the internal render lists.\n   * The selected lists depend on the object properties.\n   *\n   * @param {Object3D} object - The 3D object.\n   * @param {BufferGeometry} geometry - The 3D object's geometry.\n   * @param {Material} material - The 3D object's material.\n   * @param {Number} groupOrder - The current group order.\n   * @param {Number} z - Th 3D object's depth value (z value in clip space).\n   * @param {Number?} group - {Object?} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.\n   * @param {ClippingContext} clippingContext - The current clipping context.\n   */\n  unshift(e, t, s, n, r, i, a) {\n    const u = this.getNextRenderItem(e, t, s, n, r, i, a);\n    s.transparent === !0 || s.transmission > 0 ? (uc(s) && this.transparentDoublePass.unshift(u), this.transparent.unshift(u)) : this.opaque.unshift(u);\n  }\n  /**\n   * Pushes render bundle group data into the render list.\n   *\n   * @param {Object} group - Bundle group data.\n   */\n  pushBundle(e) {\n    this.bundles.push(e);\n  }\n  /**\n   * Pushes a light into the render list.\n   *\n   * @param {Light} light - The light.\n   */\n  pushLight(e) {\n    this.lightsArray.push(e);\n  }\n  /**\n   * Sorts the internal render lists.\n   *\n   * @param {Function} customOpaqueSort - A custom sort function for opaque objects.\n   * @param {Function} customTransparentSort -  A custom sort function for transparent objects.\n   */\n  sort(e, t) {\n    this.opaque.length > 1 && this.opaque.sort(e || h_), this.transparentDoublePass.length > 1 && this.transparentDoublePass.sort(t || ac), this.transparent.length > 1 && this.transparent.sort(t || ac);\n  }\n  /**\n   * This method performs finalizing tasks right after the render lists\n   * have been generated.\n   */\n  finish() {\n    this.lightsNode.setLights(this.lightsArray);\n    for (let e = this.renderItemsIndex, t = this.renderItems.length; e < t; e++) {\n      const s = this.renderItems[e];\n      if (s.id === null) break;\n      s.id = null, s.object = null, s.geometry = null, s.material = null, s.groupOrder = null, s.renderOrder = null, s.z = null, s.group = null, s.clippingContext = null;\n    }\n  }\n}\nclass f_ {\n  /**\n   * Constructs a render lists management component.\n   *\n   * @param {Lighting} lighting - The lighting management component.\n   */\n  constructor(e) {\n    this.lighting = e, this.lists = new At();\n  }\n  /**\n   * Returns a render list for the given scene and camera.\n   *\n   * @param {Scene} scene - The scene.\n   * @param {Camera} camera - The camera.\n   * @return {RenderList} The render list.\n   */\n  get(e, t) {\n    const s = this.lists, n = [e, t];\n    let r = s.get(n);\n    return r === void 0 && (r = new p_(this.lighting, e, t), s.set(n, r)), r;\n  }\n  /**\n   * Frees all internal resources.\n   */\n  dispose() {\n    this.lists = new At();\n  }\n}\nlet g_ = 0;\nclass m_ {\n  /**\n   * Constructs a new render context.\n   */\n  constructor() {\n    this.id = g_++, this.color = !0, this.clearColor = !0, this.clearColorValue = { r: 0, g: 0, b: 0, a: 1 }, this.depth = !0, this.clearDepth = !0, this.clearDepthValue = 1, this.stencil = !1, this.clearStencil = !0, this.clearStencilValue = 1, this.viewport = !1, this.viewportValue = new Ce(), this.scissor = !1, this.scissorValue = new Ce(), this.textures = null, this.depthTexture = null, this.activeCubeFace = 0, this.sampleCount = 1, this.width = 0, this.height = 0, this.isRenderContext = !0;\n  }\n  /**\n   * Returns the cache key of this render context.\n   *\n   * @return {Number} The cache key.\n   */\n  getCacheKey() {\n    return Qp(this);\n  }\n}\nfunction Qp(o) {\n  const { textures: e, activeCubeFace: t } = o, s = [t];\n  for (const n of e)\n    s.push(n.id);\n  return ni(s);\n}\nclass y_ {\n  /**\n   * Constructs a new render context management component.\n   */\n  constructor() {\n    this.chainMaps = {};\n  }\n  /**\n   * Returns a render context for the given scene, camera and render target.\n   *\n   * @param {Scene?} [scene=null] - The scene. The parameter can become `null` e.g. when the renderer clears a render target.\n   * @param {Camera?} [camera=null] - The camera that is used to render the scene. The parameter can become `null` e.g. when the renderer clears a render target.\n   * @param {RenderTarget?} [renderTarget=null] - The active render target.\n   * @return {RenderContext} The render context.\n   */\n  get(e = null, t = null, s = null) {\n    const n = [];\n    e !== null && n.push(e), t !== null && n.push(t), n.length === 0 && n.push({ id: \"default\" });\n    let r;\n    if (s === null)\n      r = \"default\";\n    else {\n      const u = s.texture.format;\n      r = `${s.textures.length}:${u}:${s.samples}:${s.depthBuffer}:${s.stencilBuffer}`;\n    }\n    const i = this.getChainMap(r);\n    let a = i.get(n);\n    return a === void 0 && (a = new m_(), i.set(n, a)), s !== null && (a.sampleCount = s.samples === 0 ? 1 : s.samples), a;\n  }\n  /**\n   * Returns a chain map for the given attachment state.\n   *\n   * @param {String} attachmentState - The attachment state.\n   * @return {ChainMap} The chain map.\n   */\n  getChainMap(e) {\n    return this.chainMaps[e] || (this.chainMaps[e] = new At());\n  }\n  /**\n   * Frees internal resources.\n   */\n  dispose() {\n    this.chainMaps = {};\n  }\n}\nconst x_ = /* @__PURE__ */ new Y();\nclass T_ extends Jt {\n  /**\n   * Constructs a new texture management component.\n   *\n   * @param {Renderer} renderer - The renderer.\n   * @param {Backend} backend - The renderer's backend.\n   * @param {Info} info - Renderer component for managing metrics and monitoring data.\n   */\n  constructor(e, t, s) {\n    super(), this.renderer = e, this.backend = t, this.info = s;\n  }\n  /**\n   * Updates the given render target. Based on the given render target configuration,\n   * it updates the texture states representing the attachments of the framebuffer.\n   *\n   * @param {RenderTarget} renderTarget - The render target to update.\n   * @param {Number} [activeMipmapLevel=0] - The active mipmap level.\n   */\n  updateRenderTarget(e, t = 0) {\n    const s = this.get(e), n = e.samples === 0 ? 1 : e.samples, r = s.depthTextureMips || (s.depthTextureMips = {}), i = e.textures, a = this.getSize(i[0]), u = a.width >> t, c = a.height >> t;\n    let l = e.depthTexture || r[t];\n    const d = e.depthBuffer === !0 || e.stencilBuffer === !0;\n    let h = !1;\n    l === void 0 && d && (l = new ys(), l.format = e.stencilBuffer ? Zr : Jr, l.type = e.stencilBuffer ? ei : Pe, l.image.width = u, l.image.height = c, r[t] = l), (s.width !== a.width || a.height !== s.height) && (h = !0, l && (l.needsUpdate = !0, l.image.width = u, l.image.height = c)), s.width = a.width, s.height = a.height, s.textures = i, s.depthTexture = l || null, s.depth = e.depthBuffer, s.stencil = e.stencilBuffer, s.renderTarget = e, s.sampleCount !== n && (h = !0, l && (l.needsUpdate = !0), s.sampleCount = n);\n    const p = { sampleCount: n };\n    for (let f = 0; f < i.length; f++) {\n      const m = i[f];\n      h && (m.needsUpdate = !0), this.updateTexture(m, p);\n    }\n    if (l && this.updateTexture(l, p), s.initialized !== !0) {\n      s.initialized = !0;\n      const f = () => {\n        e.removeEventListener(\"dispose\", f);\n        for (let m = 0; m < i.length; m++)\n          this._destroyTexture(i[m]);\n        l && this._destroyTexture(l), this.delete(e);\n      };\n      e.addEventListener(\"dispose\", f);\n    }\n  }\n  /**\n   * Updates the given texture. Depending on the texture state, this method\n   * triggers the upload of texture data to the GPU memory. If the texture data are\n   * not yet ready for the upload, it uses default texture data for as a placeholder.\n   *\n   * @param {Texture} texture - The texture to update.\n   * @param {Object} [options={}] - The options.\n   */\n  updateTexture(e, t = {}) {\n    const s = this.get(e);\n    if (s.initialized === !0 && s.version === e.version) return;\n    const n = e.isRenderTargetTexture || e.isDepthTexture || e.isFramebufferTexture, r = this.backend;\n    if (n && s.initialized === !0 && (r.destroySampler(e), r.destroyTexture(e)), e.isFramebufferTexture) {\n      const c = this.renderer.getRenderTarget();\n      c ? e.type = c.texture.type : e.type = ls;\n    }\n    const { width: i, height: a, depth: u } = this.getSize(e);\n    if (t.width = i, t.height = a, t.depth = u, t.needsMipmaps = this.needsMipmaps(e), t.levels = t.needsMipmaps ? this.getMipLevels(e, i, a) : 1, n || e.isStorageTexture === !0)\n      r.createSampler(e), r.createTexture(e, t), s.generation = e.version;\n    else if (s.initialized !== !0 && r.createSampler(e), e.version > 0) {\n      const l = e.image;\n      if (l === void 0)\n        console.warn(\"THREE.Renderer: Texture marked for update but image is undefined.\");\n      else if (l.complete === !1)\n        console.warn(\"THREE.Renderer: Texture marked for update but image is incomplete.\");\n      else {\n        if (e.images) {\n          const d = [];\n          for (const h of e.images)\n            d.push(h);\n          t.images = d;\n        } else\n          t.image = l;\n        (s.isDefaultTexture === void 0 || s.isDefaultTexture === !0) && (r.createTexture(e, t), s.isDefaultTexture = !1, s.generation = e.version), e.source.dataReady === !0 && r.updateTexture(e, t), t.needsMipmaps && e.mipmaps.length === 0 && r.generateMipmaps(e);\n      }\n    } else\n      r.createDefaultTexture(e), s.isDefaultTexture = !0, s.generation = e.version;\n    if (s.initialized !== !0) {\n      s.initialized = !0, s.generation = e.version, this.info.memory.textures++;\n      const c = () => {\n        e.removeEventListener(\"dispose\", c), this._destroyTexture(e), this.info.memory.textures--;\n      };\n      e.addEventListener(\"dispose\", c);\n    }\n    s.version = e.version;\n  }\n  /**\n   * Computes the size of the given texture and writes the result\n   * into the target vector. This vector is also returned by the\n   * method.\n   *\n   * If no texture data are available for the compute yet, the method\n   * returns default size values.\n   *\n   * @param {Texture} texture - The texture to compute the size for.\n   * @param {Vector3} target - The target vector.\n   * @return {Vector3} The target vector.\n   */\n  getSize(e, t = x_) {\n    let s = e.images ? e.images[0] : e.image;\n    return s ? (s.image !== void 0 && (s = s.image), t.width = s.width || 1, t.height = s.height || 1, t.depth = e.isCubeTexture ? 6 : s.depth || 1) : t.width = t.height = t.depth = 1, t;\n  }\n  /**\n   * Computes the number of mipmap levels for the given texture.\n   *\n   * @param {Texture} texture - The texture.\n   * @param {Number} width - The texture's width.\n   * @param {Number} height - The texture's height.\n   * @return {Number} The number of mipmap levels.\n   */\n  getMipLevels(e, t, s) {\n    let n;\n    return e.isCompressedTexture ? e.mipmaps ? n = e.mipmaps.length : n = 1 : n = Math.floor(Math.log2(Math.max(t, s))) + 1, n;\n  }\n  /**\n   * Returns `true` if the given texture requires mipmaps.\n   *\n   * @param {Texture} texture - The texture.\n   * @return {Boolean} Whether mipmaps are required or not.\n   */\n  needsMipmaps(e) {\n    return this.isEnvironmentTexture(e) || e.isCompressedTexture === !0 || e.generateMipmaps;\n  }\n  /**\n   * Returns `true` if the given texture is an environment map.\n   *\n   * @param {Texture} texture - The texture.\n   * @return {Boolean} Whether the given texture is an environment map or not.\n   */\n  isEnvironmentTexture(e) {\n    const t = e.mapping;\n    return t === Wn || t === Hn || t === Ks || t === Ys;\n  }\n  /**\n   * Frees internal resource when the given texture isn't\n   * required anymore.\n   *\n   * @param {Texture} texture - The texture to destroy.\n   */\n  _destroyTexture(e) {\n    this.backend.destroySampler(e), this.backend.destroyTexture(e), this.delete(e);\n  }\n}\nclass su extends Ct {\n  /**\n   * Constructs a new four-component color.\n   *\n   * @param {Number|String} r - The red value.\n   * @param {Number} g - The green value.\n   * @param {Number} b - The blue value.\n   * @param {Number} [a=1] - The alpha value.\n   */\n  constructor(e, t, s, n = 1) {\n    super(e, t, s), this.a = n;\n  }\n  /**\n   * Overwrites the default to honor alpha.\n   *\n   * @param {Number|String} r - The red value.\n   * @param {Number} g - The green value.\n   * @param {Number} b - The blue value.\n   * @param {Number} [a=1] - The alpha value.\n   * @return {Color4} A reference to this object.\n   */\n  set(e, t, s, n = 1) {\n    return this.a = n, super.set(e, t, s);\n  }\n  /**\n   * Overwrites the default to honor alpha.\n   *\n   * @param {Color4} color - The color to copy.\n   * @return {Color4} A reference to this object.\n   */\n  copy(e) {\n    return e.a !== void 0 && (this.a = e.a), super.copy(e);\n  }\n  /**\n   * Overwrites the default to honor alpha.\n   *\n   * @return {Color4} The cloned color.\n   */\n  clone() {\n    return new this.constructor(this.r, this.g, this.b, this.a);\n  }\n}\nclass Zp extends ee {\n  static get type() {\n    return \"ParameterNode\";\n  }\n  /**\n   * Constructs a new parameter node.\n   *\n   * @param {String} nodeType - The type of the node.\n   * @param {String?} [name=null] - The name of the parameter in the shader.\n   */\n  constructor(e, t = null) {\n    super(e, t), this.isParameterNode = !0;\n  }\n  getHash() {\n    return this.uuid;\n  }\n  generate() {\n    return this.name;\n  }\n}\nconst __ = (o, e) => E(new Zp(o, e));\nclass N_ extends G {\n  static get type() {\n    return \"StackNode\";\n  }\n  /**\n   * Constructs a new stack node.\n   *\n   * @param {StackNode?} [parent=null] - The parent stack node.\n   */\n  constructor(e = null) {\n    super(), this.nodes = [], this.outputNode = null, this.parent = e, this._currentCond = null, this.isStackNode = !0;\n  }\n  getNodeType(e) {\n    return this.outputNode ? this.outputNode.getNodeType(e) : \"void\";\n  }\n  /**\n   * Adds a node to this stack.\n   *\n   * @param {Node} node - The node to add.\n   * @return {StackNode} A reference to this stack node.\n   */\n  add(e) {\n    return this.nodes.push(e), this;\n  }\n  /**\n   * Represent an `if` statement in TSL.\n   *\n   * @param {Node} boolNode - Represents the condition.\n   * @param {Function} method - TSL code which is executed if the condition evaluates to `true`.\n   * @return {StackNode} A reference to this stack node.\n   */\n  If(e, t) {\n    const s = new Nn(t);\n    return this._currentCond = Me(e, s), this.add(this._currentCond);\n  }\n  /**\n   * Represent an `elseif` statement in TSL.\n   *\n   * @param {Node} boolNode - Represents the condition.\n   * @param {Function} method - TSL code which is executed if the condition evaluates to `true`.\n   * @return {StackNode} A reference to this stack node.\n   */\n  ElseIf(e, t) {\n    const s = new Nn(t), n = Me(e, s);\n    return this._currentCond.elseNode = n, this._currentCond = n, this;\n  }\n  /**\n   * Represent an `else` statement in TSL.\n   *\n   * @param {Function} method - TSL code which is executed in the `else` case.\n   * @return {StackNode} A reference to this stack node.\n   */\n  Else(e) {\n    return this._currentCond.elseNode = new Nn(e), this;\n  }\n  build(e, ...t) {\n    const s = ha();\n    Pn(this);\n    for (const n of this.nodes)\n      n.build(e, \"void\");\n    return Pn(s), this.outputNode ? this.outputNode.build(e, ...t) : super.build(e, ...t);\n  }\n  //\n  else(...e) {\n    return console.warn(\"TSL.StackNode: .else() has been renamed to .Else().\"), this.Else(...e);\n  }\n  elseif(...e) {\n    return console.warn(\"TSL.StackNode: .elseif() has been renamed to .ElseIf().\"), this.ElseIf(...e);\n  }\n}\nconst Fr = /* @__PURE__ */ C(N_);\nclass Jp extends G {\n  static get type() {\n    return \"OutputStructNode\";\n  }\n  /**\n   * Constructs a new output struct node. The constructor can be invoked with an\n   * arbitrary number of nodes representing the members.\n   *\n   * @param {...Node} members - A parameter list of nodes.\n   */\n  constructor(...e) {\n    super(), this.members = e, this.isOutputStructNode = !0;\n  }\n  setup(e) {\n    super.setup(e);\n    const t = this.members, s = [];\n    for (let n = 0; n < t.length; n++)\n      s.push(t[n].getNodeType(e));\n    this.nodeType = e.getStructTypeFromNode(this, s).name;\n  }\n  generate(e, t) {\n    const s = e.getOutputStructName(), n = this.members, r = s !== \"\" ? s + \".\" : \"\";\n    for (let i = 0; i < n.length; i++) {\n      const a = n[i].build(e, t);\n      e.addLineFlowCode(`${r}m${i} = ${a}`, this);\n    }\n    return s;\n  }\n}\nconst b_ = /* @__PURE__ */ C(Jp);\nfunction ef(o, e) {\n  for (let t = 0; t < o.length; t++)\n    if (o[t].name === e)\n      return t;\n  return -1;\n}\nclass S_ extends Jp {\n  static get type() {\n    return \"MRTNode\";\n  }\n  /**\n   * Constructs a new output struct node.\n   *\n   * @param {Object<String, Node>} outputNodes - The MRT outputs.\n   */\n  constructor(e) {\n    super(), this.outputNodes = e, this.isMRTNode = !0;\n  }\n  /**\n   * Returns `true` if the MRT node has an output with the given name.\n   *\n   * @param {String} name - The name of the output.\n   * @return {NodeBuilder} Whether the MRT node has an output for the given name or not.\n   */\n  has(e) {\n    return this.outputNodes[e] !== void 0;\n  }\n  /**\n   * Returns the output node for the given name.\n   *\n   * @param {String} name - The name of the output.\n   * @return {Node} The output node.\n   */\n  get(e) {\n    return this.outputNodes[e];\n  }\n  /**\n   * Merges the outputs of the given MRT node with the outputs of this node.\n   *\n   * @param {MRTNode} mrtNode - The MRT to merge.\n   * @return {MRTNode} A new MRT node with merged outputs..\n   */\n  merge(e) {\n    const t = { ...this.outputNodes, ...e.outputNodes };\n    return tf(t);\n  }\n  setup(e) {\n    const t = this.outputNodes, s = e.renderer.getRenderTarget(), n = [], r = s.textures;\n    for (const i in t) {\n      const a = ef(r, i);\n      n[a] = I(t[i]);\n    }\n    return this.members = n, super.setup(e);\n  }\n}\nconst tf = /* @__PURE__ */ C(S_), v_ = /* @__PURE__ */ b(([o]) => {\n  const e = o.toUint().mul(747796405).add(2891336453), t = e.shiftRight(e.shiftRight(28).add(4)).bitXor(e).mul(277803737);\n  return t.shiftRight(22).bitXor(t).toFloat().mul(1 / 2 ** 32);\n}), Ko = (o, e) => ot($(4, o.mul(K(1, o))), e), A_ = (o, e) => o.lessThan(0.5) ? Ko(o.mul(2), e).div(2) : K(1, Ko($(K(1, o), 2), e).div(2)), R_ = (o, e, t) => ot(ut(ot(o, e), _e(ot(o, e), ot(K(1, o), t))), 1 / e), C_ = (o, e) => Ze($r.mul(e.mul(o).sub(1))).div($r.mul(e.mul(o).sub(1))), Ft = /* @__PURE__ */ b(([o]) => o.fract().sub(0.5).abs()).setLayout({\n  name: \"tri\",\n  type: \"float\",\n  inputs: [\n    { name: \"x\", type: \"float\" }\n  ]\n}), E_ = /* @__PURE__ */ b(([o]) => T(Ft(o.z.add(Ft(o.y.mul(1)))), Ft(o.z.add(Ft(o.x.mul(1)))), Ft(o.y.add(Ft(o.x.mul(1)))))).setLayout({\n  name: \"tri3\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" }\n  ]\n}), w_ = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = T(o).toVar(), n = g(1.4).toVar(), r = g(0).toVar(), i = T(s).toVar();\n  return J({ start: g(0), end: g(3), type: \"float\", condition: \"<=\" }, () => {\n    const a = T(E_(i.mul(2))).toVar();\n    s.addAssign(a.add(t.mul(g(0.1).mul(e)))), i.mulAssign(1.8), n.mulAssign(1.5), s.mulAssign(1.2);\n    const u = g(Ft(s.z.add(Ft(s.x.add(Ft(s.y)))))).toVar();\n    r.addAssign(u.div(n)), i.addAssign(0.14);\n  }), r;\n}).setLayout({\n  name: \"triNoise3D\",\n  type: \"float\",\n  inputs: [\n    { name: \"position\", type: \"vec3\" },\n    { name: \"speed\", type: \"float\" },\n    { name: \"time\", type: \"float\" }\n  ]\n});\nclass M_ extends G {\n  static get type() {\n    return \"FunctionOverloadingNode\";\n  }\n  /**\n   * Constructs a new function overloading node.\n   *\n   * @param {Array<Function>} functionNodes - Array of `Fn` function definitions.\n   * @param {...Node} parametersNodes - A list of parameter nodes.\n   */\n  constructor(e = [], ...t) {\n    super(), this.functionNodes = e, this.parametersNodes = t, this._candidateFnCall = null, this.global = !0;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from\n   * the function's return type.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType() {\n    return this.functionNodes[0].shaderNode.layout.type;\n  }\n  setup(e) {\n    const t = this.parametersNodes;\n    let s = this._candidateFnCall;\n    if (s === null) {\n      let n = null, r = -1;\n      for (const i of this.functionNodes) {\n        const u = i.shaderNode.layout;\n        if (u === null)\n          throw new Error(\"FunctionOverloadingNode: FunctionNode must be a layout.\");\n        const c = u.inputs;\n        if (t.length === c.length) {\n          let l = 0;\n          for (let d = 0; d < t.length; d++) {\n            const h = t[d], p = c[d];\n            h.getNodeType(e) === p.type ? l++ : l = 0;\n          }\n          l > r && (n = i, r = l);\n        }\n      }\n      this._candidateFnCall = s = n(...t);\n    }\n    return s;\n  }\n}\nconst B_ = /* @__PURE__ */ C(M_), Be = (o) => (...e) => B_(o, ...e), Ns = /* @__PURE__ */ L(0).setGroup(O).onRenderUpdate((o) => o.time), sf = /* @__PURE__ */ L(0).setGroup(O).onRenderUpdate((o) => o.deltaTime), F_ = /* @__PURE__ */ L(0, \"uint\").setGroup(O).onRenderUpdate((o) => o.frameId), U_ = (o = 1) => (console.warn('TSL: timerLocal() is deprecated. Use \"time\" instead.'), Ns.mul(o)), P_ = (o = 1) => (console.warn('TSL: timerGlobal() is deprecated. Use \"time\" instead.'), Ns.mul(o)), D_ = (o = 1) => (console.warn('TSL: timerDelta() is deprecated. Use \"deltaTime\" instead.'), sf.mul(o)), I_ = (o = Ns) => o.add(0.75).mul(Math.PI * 2).sin().mul(0.5).add(0.5), L_ = (o = Ns) => o.fract().round(), V_ = (o = Ns) => o.add(0.5).fract().mul(2).sub(1).abs(), G_ = (o = Ns) => o.fract(), O_ = /* @__PURE__ */ b(([o, e, t = w(0.5)]) => tu(o.sub(t), e).add(t)), k_ = /* @__PURE__ */ b(([o, e, t = w(0.5)]) => {\n  const s = o.sub(t), n = s.dot(s), i = n.mul(n).mul(e);\n  return o.add(s.mul(i));\n}), z_ = /* @__PURE__ */ b(({ position: o = null, horizontal: e = !0, vertical: t = !1 }) => {\n  let s;\n  o !== null ? (s = nt.toVar(), s[3][0] = o.x, s[3][1] = o.y, s[3][2] = o.z) : s = nt;\n  const n = Xe.mul(s);\n  return Un(e) && (n[0][0] = nt[0].length(), n[0][1] = 0, n[0][2] = 0), Un(t) && (n[1][0] = 0, n[1][1] = nt[1].length(), n[1][2] = 0), n[2][0] = 0, n[2][1] = 0, n[2][2] = 1, _s.mul(n).mul(pe);\n}), $_ = /* @__PURE__ */ b(([o = null]) => {\n  const e = qr();\n  return qr(qa(o)).sub(e).lessThan(0).select(vt, o);\n});\nclass W_ extends G {\n  static get type() {\n    return \"SpriteSheetUVNode\";\n  }\n  /**\n   * Constructs a new sprite sheet uv node.\n   *\n   * @param {Node<vec2>} countNode - The node that defines the number of sprites in the x and y direction (e.g 6x6).\n   * @param {Node<vec2>} [uvNode=uv()] - The uv node.\n   * @param {Node<float>} [frameNode=float()] - The node that defines the current frame/sprite.\n   */\n  constructor(e, t = le(), s = g(0)) {\n    super(\"vec2\"), this.countNode = e, this.uvNode = t, this.frameNode = s;\n  }\n  setup() {\n    const { frameNode: e, uvNode: t, countNode: s } = this, { width: n, height: r } = s, i = e.mod(n.mul(r)).floor(), a = i.mod(n), u = r.sub(i.add(1).div(n).ceil()), c = s.reciprocal(), l = w(a, u);\n    return t.add(l).mul(c);\n  }\n}\nconst H_ = /* @__PURE__ */ C(W_);\nclass q_ extends G {\n  static get type() {\n    return \"TriplanarTexturesNode\";\n  }\n  /**\n   * Constructs a new triplanar textures node.\n   *\n   * @param {Node} textureXNode - First texture node.\n   * @param {Node?} [textureYNode=null] - Second texture node. When not set, the shader will sample from `textureXNode` instead.\n   * @param {Node?} [textureZNode=null] - Third texture node. When not set, the shader will sample from `textureXNode` instead.\n   * @param {Node<float>?} [scaleNode=float(1)] - The scale node.\n   * @param {Node<vec3>?} [positionNode=positionLocal] - Vertex positions in local space.\n   * @param {Node<vec3>?} [normalNode=normalLocal] - Normals in local space.\n   */\n  constructor(e, t = null, s = null, n = g(1), r = pe, i = We) {\n    super(\"vec4\"), this.textureXNode = e, this.textureYNode = t, this.textureZNode = s, this.scaleNode = n, this.positionNode = r, this.normalNode = i;\n  }\n  setup() {\n    const { textureXNode: e, textureYNode: t, textureZNode: s, scaleNode: n, positionNode: r, normalNode: i } = this;\n    let a = i.abs().normalize();\n    a = a.div(a.dot(T(1)));\n    const u = r.yz.mul(n), c = r.zx.mul(n), l = r.xy.mul(n), d = e.value, h = t !== null ? t.value : d, p = s !== null ? s.value : d, f = X(d, u).mul(a.x), m = X(h, c).mul(a.y), _ = X(p, l).mul(a.z);\n    return _e(f, m, _);\n  }\n}\nconst nf = /* @__PURE__ */ C(q_), X_ = (...o) => nf(...o), Rs = new Oc(), es = new Y(), Cs = new Y(), ki = new Y(), dn = new Ue(), dr = new Y(0, 0, -1), lt = new Ce(), hn = new Y(), hr = new Y(), pn = new Ce(), pr = new He(), Kr = new ms(), K_ = vt.flipX();\nKr.depthTexture = new ys(1, 1);\nlet zi = !1;\nclass nu extends bt {\n  static get type() {\n    return \"ReflectorNode\";\n  }\n  /**\n   * Constructs a new reflector node.\n   *\n   * @param {Object} [parameters={}] - An object holding configuration parameters.\n   * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.\n   * @param {Number} [parameters.resolution=1] - The resolution scale.\n   * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.\n   * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.\n   * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.\n   * @param {TextureNode} [parameters.defaultTexture] - The default texture node.\n   * @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.\n   */\n  constructor(e = {}) {\n    super(e.defaultTexture || Kr.texture, K_), this._reflectorBaseNode = e.reflector || new Y_(this, e), this._depthNode = null, this.setUpdateMatrix(!1);\n  }\n  /**\n   * A reference to the internal reflector node.\n   *\n   * @type {ReflectorBaseNode}\n   */\n  get reflector() {\n    return this._reflectorBaseNode;\n  }\n  /**\n   * A reference to 3D object the reflector is linked to.\n   *\n   * @type {Object3D}\n   */\n  get target() {\n    return this._reflectorBaseNode.target;\n  }\n  /**\n   * Returns a node representing the mirror's depth. That can be used\n   * to implement more advanced reflection effects like distance attenuation.\n   *\n   * @return {Node} The depth node.\n   */\n  getDepthNode() {\n    if (this._depthNode === null) {\n      if (this._reflectorBaseNode.depth !== !0)\n        throw new Error(\"THREE.ReflectorNode: Depth node can only be requested when the reflector is created with { depth: true }. \");\n      this._depthNode = E(new nu({\n        defaultTexture: Kr.depthTexture,\n        reflector: this._reflectorBaseNode\n      }));\n    }\n    return this._depthNode;\n  }\n  setup(e) {\n    return e.object.isQuadMesh || this._reflectorBaseNode.build(e), super.setup(e);\n  }\n  clone() {\n    const e = new this.constructor(this.reflectorNode);\n    return e._reflectorBaseNode = this._reflectorBaseNode, e;\n  }\n}\nclass Y_ extends G {\n  static get type() {\n    return \"ReflectorBaseNode\";\n  }\n  /**\n   * Constructs a new reflector base node.\n   *\n   * @param {TextureNode} textureNode - Represents the rendered reflections as a texture node.\n   * @param {Object} [parameters={}] - An object holding configuration parameters.\n   * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.\n   * @param {Number} [parameters.resolution=1] - The resolution scale.\n   * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.\n   * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.\n   * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.\n   */\n  constructor(e, t = {}) {\n    super();\n    const {\n      target: s = new em(),\n      resolution: n = 1,\n      generateMipmaps: r = !1,\n      bounces: i = !0,\n      depth: a = !1\n    } = t;\n    this.textureNode = e, this.target = s, this.resolution = n, this.generateMipmaps = r, this.bounces = i, this.depth = a, this.updateBeforeType = i ? z.RENDER : z.FRAME, this.virtualCameras = /* @__PURE__ */ new WeakMap(), this.renderTargets = /* @__PURE__ */ new WeakMap();\n  }\n  /**\n   * Updates the resolution of the internal render target.\n   *\n   * @private\n   * @param {RenderTarget} renderTarget - The render target to resize.\n   * @param {Renderer} renderer - The renderer that is used to determine the new size.\n   */\n  _updateResolution(e, t) {\n    const s = this.resolution;\n    t.getDrawingBufferSize(pr), e.setSize(Math.round(pr.width * s), Math.round(pr.height * s));\n  }\n  setup(e) {\n    return this._updateResolution(Kr, e.renderer), super.setup(e);\n  }\n  /**\n   * Returns a virtual camera for the given camera. The virtual camera is used to\n   * render the scene from the reflector's view so correct reflections can be produced.\n   *\n   * @param {Camera} camera - The scene's camera.\n   * @return {Camera} The corresponding virtual camera.\n   */\n  getVirtualCamera(e) {\n    let t = this.virtualCameras.get(e);\n    return t === void 0 && (t = e.clone(), this.virtualCameras.set(e, t)), t;\n  }\n  /**\n   * Returns a render target for the given camera. The reflections are rendered\n   * into this render target.\n   *\n   * @param {Camera} camera - The scene's camera.\n   * @return {RenderTarget} The render target.\n   */\n  getRenderTarget(e) {\n    let t = this.renderTargets.get(e);\n    return t === void 0 && (t = new ms(0, 0, { type: at }), this.generateMipmaps === !0 && (t.texture.minFilter = tm, t.texture.generateMipmaps = !0), this.depth === !0 && (t.depthTexture = new ys()), this.renderTargets.set(e, t)), t;\n  }\n  updateBefore(e) {\n    if (this.bounces === !1 && zi) return !1;\n    zi = !0;\n    const { scene: t, camera: s, renderer: n, material: r } = e, { target: i } = this, a = this.getVirtualCamera(s), u = this.getRenderTarget(a);\n    if (n.getDrawingBufferSize(pr), this._updateResolution(u, n), Cs.setFromMatrixPosition(i.matrixWorld), ki.setFromMatrixPosition(s.matrixWorld), dn.extractRotation(i.matrixWorld), es.set(0, 0, 1), es.applyMatrix4(dn), hn.subVectors(Cs, ki), hn.dot(es) > 0) return;\n    hn.reflect(es).negate(), hn.add(Cs), dn.extractRotation(s.matrixWorld), dr.set(0, 0, -1), dr.applyMatrix4(dn), dr.add(ki), hr.subVectors(Cs, dr), hr.reflect(es).negate(), hr.add(Cs), a.coordinateSystem = s.coordinateSystem, a.position.copy(hn), a.up.set(0, 1, 0), a.up.applyMatrix4(dn), a.up.reflect(es), a.lookAt(hr), a.near = s.near, a.far = s.far, a.updateMatrixWorld(), a.projectionMatrix.copy(s.projectionMatrix), Rs.setFromNormalAndCoplanarPoint(es, Cs), Rs.applyMatrix4(a.matrixWorldInverse), lt.set(Rs.normal.x, Rs.normal.y, Rs.normal.z, Rs.constant);\n    const c = a.projectionMatrix;\n    pn.x = (Math.sign(lt.x) + c.elements[8]) / c.elements[0], pn.y = (Math.sign(lt.y) + c.elements[9]) / c.elements[5], pn.z = -1, pn.w = (1 + c.elements[10]) / c.elements[14], lt.multiplyScalar(1 / lt.dot(pn));\n    const l = 0;\n    c.elements[2] = lt.x, c.elements[6] = lt.y, c.elements[10] = n.coordinateSystem === sn ? lt.z - l : lt.z + 1 - l, c.elements[14] = lt.w, this.textureNode.value = u.texture, this.depth === !0 && (this.textureNode.getDepthNode().value = u.depthTexture), r.visible = !1;\n    const d = n.getRenderTarget(), h = n.getMRT(), p = n.autoClear;\n    n.setMRT(null), n.setRenderTarget(u), n.autoClear = !0, n.render(t, a), n.setMRT(h), n.setRenderTarget(d), n.autoClear = p, r.visible = !0, zi = !1;\n  }\n}\nconst j_ = (o) => E(new nu(o)), $i = /* @__PURE__ */ new Al(-1, 1, 1, -1, 0, 1);\nclass Q_ extends El {\n  /**\n   * Constructs a new quad geometry.\n   *\n   * @param {Boolean} [flipY=false] - Whether the uv coordinates should be flipped along the vertical axis or not.\n   */\n  constructor(e = !1) {\n    super();\n    const t = e === !1 ? [0, -1, 0, 1, 2, 1] : [0, 2, 0, 0, 2, 0];\n    this.setAttribute(\"position\", new Uu([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute(\"uv\", new Uu(t, 2));\n  }\n}\nconst Z_ = /* @__PURE__ */ new Q_();\nclass ru extends js {\n  /**\n   * Constructs a new quad mesh.\n   *\n   * @param {Material?} [material=null] - The material to render the quad mesh with.\n   */\n  constructor(e = null) {\n    super(Z_, e), this.camera = $i, this.isQuadMesh = !0;\n  }\n  /**\n   * Async version of `render()`.\n   *\n   * @async\n   * @param {Renderer} renderer - The renderer.\n   * @return {Promise} A Promise that resolves when the render has been finished.\n   */\n  async renderAsync(e) {\n    return e.renderAsync(this, $i);\n  }\n  /**\n   * Renders the quad mesh\n   *\n   * @param {Renderer} renderer - The renderer.\n   */\n  render(e) {\n    e.render(this, $i);\n  }\n}\nconst J_ = /* @__PURE__ */ new He();\nclass eN extends bt {\n  static get type() {\n    return \"RTTNode\";\n  }\n  /**\n   * Constructs a new RTT node.\n   *\n   * @param {Node} node - The node to render a texture with.\n   * @param {Number?} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.\n   * @param {Number?} [height=null] - The height of the internal render target.\n   * @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.\n   */\n  constructor(e, t = null, s = null, n = { type: at }) {\n    const r = new ms(t, s, n);\n    super(r.texture, le()), this.node = e, this.width = t, this.height = s, this.pixelRatio = 1, this.renderTarget = r, this.textureNeedsUpdate = !0, this.autoUpdate = !0, this._rttNode = null, this._quadMesh = new ru(new ge()), this.updateBeforeType = z.RENDER;\n  }\n  /**\n   * Whether the internal render target should automatically be resized or not.\n   *\n   * @type {Boolean}\n   * @readonly\n   * @default true\n   */\n  get autoSize() {\n    return this.width === null;\n  }\n  setup(e) {\n    return this._rttNode = this.node.context(e.getSharedContext()), this._quadMesh.material.name = \"RTT\", this._quadMesh.material.needsUpdate = !0, super.setup(e);\n  }\n  /**\n   * Sets the size of the internal render target\n   *\n   * @param {Number} width - The width to set.\n   * @param {Number} height - The width to set.\n   */\n  setSize(e, t) {\n    this.width = e, this.height = t;\n    const s = e * this.pixelRatio, n = t * this.pixelRatio;\n    this.renderTarget.setSize(s, n), this.textureNeedsUpdate = !0;\n  }\n  /**\n   * Sets the pixel ratio. This will also resize the render target.\n   *\n   * @param {Number} pixelRatio - The pixel ratio to set.\n   */\n  setPixelRatio(e) {\n    this.pixelRatio = e, this.setSize(this.width, this.height);\n  }\n  updateBefore({ renderer: e }) {\n    if (this.textureNeedsUpdate === !1 && this.autoUpdate === !1) return;\n    if (this.textureNeedsUpdate = !1, this.autoSize === !0) {\n      this.pixelRatio = e.getPixelRatio();\n      const s = e.getSize(J_);\n      this.setSize(s.width, s.height);\n    }\n    this._quadMesh.material.fragmentNode = this._rttNode;\n    const t = e.getRenderTarget();\n    e.setRenderTarget(this.renderTarget), this._quadMesh.render(e), e.setRenderTarget(t);\n  }\n  clone() {\n    const e = new bt(this.value, this.uvNode, this.levelNode);\n    return e.sampler = this.sampler, e.referenceNode = this, e;\n  }\n}\nconst rf = (o, ...e) => E(new eN(E(o), ...e)), tN = (o, ...e) => o.isTextureNode ? o : o.isPassNode ? o.getTextureNode() : rf(o, ...e), Ds = /* @__PURE__ */ b(([o, e, t], s) => {\n  let n;\n  s.renderer.coordinateSystem === sn ? (o = w(o.x, o.y.oneMinus()).mul(2).sub(1), n = I(T(o, e), 1)) : n = I(T(o.x, o.y.oneMinus(), e).mul(2).sub(1), 1);\n  const r = I(t.mul(n));\n  return r.xyz.div(r.w);\n}), sN = /* @__PURE__ */ b(([o, e]) => {\n  const t = e.mul(I(o, 1)), s = t.xy.div(t.w).mul(0.5).add(0.5).toVar();\n  return w(s.x, s.y.oneMinus());\n}), nN = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = jt(de(e)), n = Ae(o.mul(s)).toVar(), r = de(e, n).toVar(), i = de(e, n.sub(Ae(2, 0))).toVar(), a = de(e, n.sub(Ae(1, 0))).toVar(), u = de(e, n.add(Ae(1, 0))).toVar(), c = de(e, n.add(Ae(2, 0))).toVar(), l = de(e, n.add(Ae(0, 2))).toVar(), d = de(e, n.add(Ae(0, 1))).toVar(), h = de(e, n.sub(Ae(0, 1))).toVar(), p = de(e, n.sub(Ae(0, 2))).toVar(), f = re(K(g(2).mul(a).sub(i), r)).toVar(), m = re(K(g(2).mul(u).sub(c), r)).toVar(), _ = re(K(g(2).mul(d).sub(l), r)).toVar(), S = re(K(g(2).mul(h).sub(p), r)).toVar(), A = Ds(o, r, t).toVar(), M = f.lessThan(m).select(A.sub(Ds(o.sub(w(g(1).div(s.x), 0)), a, t)), A.negate().add(Ds(o.add(w(g(1).div(s.x), 0)), u, t))), F = _.lessThan(S).select(A.sub(Ds(o.add(w(0, g(1).div(s.y))), d, t)), A.negate().add(Ds(o.sub(w(0, g(1).div(s.y))), h, t)));\n  return Gt(hi(M, F));\n});\nclass rN extends oa {\n  /**\n   * Constructs a new storage instanced buffer attribute.\n   *\n   * @param {Number|TypedArray} count - The item count. It is also valid to pass a typed array as an argument.\n   * The subsequent parameters are then obsolete.\n   * @param {Number} itemSize - The item size.\n   * @param {TypedArray.contructor} [typeClass=Float32Array] - A typed array constructor.\n   */\n  constructor(e, t, s = Float32Array) {\n    const n = ArrayBuffer.isView(e) ? e : new s(e * t);\n    super(n, t), this.isStorageInstancedBufferAttribute = !0;\n  }\n}\nclass iN extends Cr {\n  /**\n   * Constructs a new storage buffer attribute.\n   *\n   * @param {Number|TypedArray} count - The item count. It is also valid to pass a typed array as an argument.\n   * The subsequent parameters are then obsolete.\n   * @param {Number} itemSize - The item size.\n   * @param {TypedArray.contructor} [typeClass=Float32Array] - A typed array constructor.\n   */\n  constructor(e, t, s = Float32Array) {\n    const n = ArrayBuffer.isView(e) ? e : new s(e * t);\n    super(n, t), this.isStorageBufferAttribute = !0;\n  }\n}\nclass oN extends Ts {\n  static get type() {\n    return \"StorageArrayElementNode\";\n  }\n  /**\n   * Constructs storage buffer element node.\n   *\n   * @param {StorageBufferNode} storageBufferNode - The storage buffer node.\n   * @param {Node} indexNode - The index node that defines the element access.\n   */\n  constructor(e, t) {\n    super(e, t), this.isStorageArrayElementNode = !0;\n  }\n  /**\n   * The storage buffer node.\n   *\n   * @param {Node} value\n   * @type {StorageBufferNode}\n   */\n  set storageBufferNode(e) {\n    this.node = e;\n  }\n  get storageBufferNode() {\n    return this.node;\n  }\n  setup(e) {\n    return e.isAvailable(\"storageBuffer\") === !1 && this.node.isPBO === !0 && e.setupPBO(this.node), super.setup(e);\n  }\n  generate(e, t) {\n    let s;\n    const n = e.context.assign;\n    if (e.isAvailable(\"storageBuffer\") === !1 ? this.node.isPBO === !0 && n !== !0 && (this.node.value.isInstancedBufferAttribute || e.shaderStage !== \"compute\") ? s = e.generatePBO(this) : s = this.node.build(e) : s = super.generate(e), n !== !0) {\n      const r = this.getNodeType(e);\n      s = e.format(s, r, t);\n    }\n    return s;\n  }\n}\nconst aN = /* @__PURE__ */ C(oN);\nclass uN extends Ga {\n  static get type() {\n    return \"StorageBufferNode\";\n  }\n  /**\n   * Constructs a new storage buffer node.\n   *\n   * @param {StorageBufferAttribute|StorageInstancedBufferAttribute|BufferAttribute} value - The buffer data.\n   * @param {String?} [bufferType=null] - The buffer type (e.g. `'vec3'`).\n   * @param {Number} [bufferCount=0] - The buffer count.\n   */\n  constructor(e, t = null, s = 0) {\n    t === null && (e.isStorageBufferAttribute || e.isStorageInstancedBufferAttribute) && (t = Bl(e.itemSize), s = e.count), super(e, t, s), this.isStorageBufferNode = !0, this.access = De.READ_WRITE, this.isAtomic = !1, this.isPBO = !1, this._attribute = null, this._varying = null, this.global = !0, e.isStorageBufferAttribute !== !0 && e.isStorageInstancedBufferAttribute !== !0 && (e.isInstancedBufferAttribute ? e.isStorageInstancedBufferAttribute = !0 : e.isStorageBufferAttribute = !0);\n  }\n  /**\n   * This method is overwritten since the buffer data might be shared\n   * and thus the hash should be shared as well.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The hash.\n   */\n  getHash(e) {\n    if (this.bufferCount === 0) {\n      let t = e.globalCache.getData(this.value);\n      return t === void 0 && (t = {\n        node: this\n      }, e.globalCache.setData(this.value, t)), t.node.uuid;\n    }\n    return this.uuid;\n  }\n  /**\n   * Overwrites the default implementation to return a fixed value `'indirectStorageBuffer'` or `'storageBuffer'`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return this.value.isIndirectStorageBufferAttribute ? \"indirectStorageBuffer\" : \"storageBuffer\";\n  }\n  /**\n   * Enables element access with the given index node.\n   *\n   * @param {IndexNode} indexNode - The index node.\n   * @return {StorageArrayElementNode} A node representing the element access.\n   */\n  element(e) {\n    return aN(this, e);\n  }\n  /**\n   * Defines whether this node is a PBO or not. Only relevant for WebGL.\n   *\n   * @param {Boolean} value - The value so set.\n   * @return {StorageBufferNode} A reference to this node.\n   */\n  setPBO(e) {\n    return this.isPBO = e, this;\n  }\n  /**\n   * Returns the `isPBO` value.\n   *\n   * @return {Boolean} Whether the node represents a PBO or not.\n   */\n  getPBO() {\n    return this.isPBO;\n  }\n  /**\n   * Defines the node access.\n   *\n   * @param {String} value - The node access.\n   * @return {StorageBufferNode} A reference to this node.\n   */\n  setAccess(e) {\n    return this.access = e, this;\n  }\n  /**\n   * Convenience method for configuring a read-only node access.\n   *\n   * @return {StorageBufferNode} A reference to this node.\n   */\n  toReadOnly() {\n    return this.setAccess(De.READ_ONLY);\n  }\n  /**\n   * Defines whether the node is atomic or not.\n   *\n   * @param {Boolean} value - The atomic flag.\n   * @return {StorageBufferNode} A reference to this node.\n   */\n  setAtomic(e) {\n    return this.isAtomic = e, this;\n  }\n  /**\n   * Convenience method for making this node atomic.\n   *\n   * @return {StorageBufferNode} A reference to this node.\n   */\n  toAtomic() {\n    return this.setAtomic(!0);\n  }\n  /**\n   * Returns attribute data for this storage buffer node.\n   *\n   * @return {{attribute: BufferAttributeNode, varying: VaryingNode}} The attribute data.\n   */\n  getAttributeData() {\n    return this._attribute === null && (this._attribute = jn(this.value), this._varying = qe(this._attribute)), {\n      attribute: this._attribute,\n      varying: this._varying\n    };\n  }\n  /**\n   * This method is overwritten since the node type from the availability of storage buffers\n   * and the attribute data.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    if (e.isAvailable(\"storageBuffer\") || e.isAvailable(\"indirectStorageBuffer\"))\n      return super.getNodeType(e);\n    const { attribute: t } = this.getAttributeData();\n    return t.getNodeType(e);\n  }\n  /**\n   * Generates the code snippet of the storage buffer node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The generated code snippet.\n   */\n  generate(e) {\n    if (e.isAvailable(\"storageBuffer\") || e.isAvailable(\"indirectStorageBuffer\"))\n      return super.generate(e);\n    const { attribute: t, varying: s } = this.getAttributeData(), n = s.build(e);\n    return e.registerTransform(n, t), n;\n  }\n}\nconst Si = (o, e = null, t = 0) => E(new uN(o, e, t)), cN = (o, e, t) => (console.warn('THREE.TSL: \"storageObject()\" is deprecated. Use \"storage().setPBO( true )\" instead.'), Si(o, e, t).setPBO(!0)), lN = (o, e = \"float\") => {\n  const t = Ul(e), s = Fl(e), n = new iN(o, t, s);\n  return Si(n, e, o);\n}, dN = (o, e = \"float\") => {\n  const t = Ul(e), s = Fl(e), n = new rN(o, t, s);\n  return Si(n, e, o);\n};\nclass hN extends xh {\n  static get type() {\n    return \"VertexColorNode\";\n  }\n  /**\n   * Constructs a new vertex color node.\n   *\n   * @param {Number} [index=0] - The attribute index.\n   */\n  constructor(e = 0) {\n    super(null, \"vec4\"), this.isVertexColorNode = !0, this.index = e;\n  }\n  /**\n   * Overwrites the default implementation by honoring the attribute index.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The attribute name.\n   */\n  getAttributeName() {\n    const e = this.index;\n    return \"color\" + (e > 0 ? e : \"\");\n  }\n  generate(e) {\n    const t = this.getAttributeName(e), s = e.hasGeometryAttribute(t);\n    let n;\n    return s === !0 ? n = super.generate(e) : n = e.generateConst(this.nodeType, new Ce(1, 1, 1, 1)), n;\n  }\n  serialize(e) {\n    super.serialize(e), e.index = this.index;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.index = e.index;\n  }\n}\nconst pN = (o) => E(new hN(o));\nclass fN extends G {\n  static get type() {\n    return \"PointUVNode\";\n  }\n  /**\n   * Constructs a new point uv node.\n   */\n  constructor() {\n    super(\"vec2\"), this.isPointUVNode = !0;\n  }\n  generate() {\n    return \"vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )\";\n  }\n}\nconst gN = /* @__PURE__ */ B(fN), fn = /* @__PURE__ */ new bg(), Wi = /* @__PURE__ */ new Ue();\nclass ze extends G {\n  static get type() {\n    return \"SceneNode\";\n  }\n  /**\n   * Constructs a new scene node.\n   *\n   * @param {('backgroundBlurriness'|'backgroundIntensity'|'backgroundRotation')} scope - The scope defines the type of scene property that is accessed.\n   * @param {Scene?} [scene=null] - A reference to the scene.\n   */\n  constructor(e = ze.BACKGROUND_BLURRINESS, t = null) {\n    super(), this.scope = e, this.scene = t;\n  }\n  /**\n   * Depending on the scope, the method returns a different type of node that represents\n   * the respective scene property.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Node} The output node.\n   */\n  setup(e) {\n    const t = this.scope, s = this.scene !== null ? this.scene : e.scene;\n    let n;\n    return t === ze.BACKGROUND_BLURRINESS ? n = te(\"backgroundBlurriness\", \"float\", s) : t === ze.BACKGROUND_INTENSITY ? n = te(\"backgroundIntensity\", \"float\", s) : t === ze.BACKGROUND_ROTATION ? n = L(\"mat4\").label(\"backgroundRotation\").setGroup(O).onRenderUpdate(() => {\n      const r = s.background;\n      return r !== null && r.isTexture && r.mapping !== ag ? (fn.copy(s.backgroundRotation), fn.x *= -1, fn.y *= -1, fn.z *= -1, Wi.makeRotationFromEuler(fn)) : Wi.identity(), Wi;\n    }) : console.error(\"THREE.SceneNode: Unknown scope:\", t), n;\n  }\n}\nze.BACKGROUND_BLURRINESS = \"backgroundBlurriness\";\nze.BACKGROUND_INTENSITY = \"backgroundIntensity\";\nze.BACKGROUND_ROTATION = \"backgroundRotation\";\nconst of = /* @__PURE__ */ B(ze, ze.BACKGROUND_BLURRINESS), Yo = /* @__PURE__ */ B(ze, ze.BACKGROUND_INTENSITY), af = /* @__PURE__ */ B(ze, ze.BACKGROUND_ROTATION);\nclass mN extends bt {\n  static get type() {\n    return \"StorageTextureNode\";\n  }\n  /**\n   * Constructs a new storage texture node.\n   *\n   * @param {StorageTexture} value - The storage texture.\n   * @param {Node<vec2|vec3>} uvNode - The uv node.\n   * @param {Node?} [storeNode=null] - The value node that should be stored in the texture.\n   */\n  constructor(e, t, s = null) {\n    super(e, t), this.storeNode = s, this.isStorageTextureNode = !0, this.access = De.WRITE_ONLY;\n  }\n  /**\n   * Overwrites the default implementation to return a fixed value `'storageTexture'`.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return \"storageTexture\";\n  }\n  setup(e) {\n    super.setup(e);\n    const t = e.getNodeProperties(this);\n    t.storeNode = this.storeNode;\n  }\n  /**\n   * Defines the node access.\n   *\n   * @param {String} value - The node access.\n   * @return {StorageTextureNode} A reference to this node.\n   */\n  setAccess(e) {\n    return this.access = e, this;\n  }\n  /**\n   * Generates the code snippet of the stroge node. If no `storeNode`\n   * is defined, the texture node is generated as normal texture.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @param {String} output - The current output.\n   * @return {String} The generated code snippet.\n   */\n  generate(e, t) {\n    let s;\n    return this.storeNode !== null ? s = this.generateStore(e) : s = super.generate(e, t), s;\n  }\n  /**\n   * Convenience method for configuring a read/write node access.\n   *\n   * @return {StorageTextureNode} A reference to this node.\n   */\n  toReadWrite() {\n    return this.setAccess(De.READ_WRITE);\n  }\n  /**\n   * Convenience method for configuring a read-only node access.\n   *\n   * @return {StorageTextureNode} A reference to this node.\n   */\n  toReadOnly() {\n    return this.setAccess(De.READ_ONLY);\n  }\n  /**\n   * Convenience method for configuring a write-only node access.\n   *\n   * @return {StorageTextureNode} A reference to this node.\n   */\n  toWriteOnly() {\n    return this.setAccess(De.WRITE_ONLY);\n  }\n  /**\n   * Generates the code snippet of the storage texture node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  generateStore(e) {\n    const t = e.getNodeProperties(this), { uvNode: s, storeNode: n } = t, r = super.generate(e, \"property\"), i = s.build(e, \"uvec2\"), a = n.build(e, \"vec4\"), u = e.generateTextureStore(e, r, i, a);\n    e.addLineFlowCode(u, this);\n  }\n}\nconst uf = /* @__PURE__ */ C(mN), yN = (o, e, t) => {\n  const s = uf(o, e, t);\n  return t !== null && s.append(), s;\n};\nclass xN extends xi {\n  static get type() {\n    return \"UserDataNode\";\n  }\n  /**\n   * Constructs a new user data node.\n   *\n   * @param {String} property - The property name that should be referenced by the node.\n   * @param {String} inputType - The node data type of the reference.\n   * @param {Object?} [userData=null] - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.\n   */\n  constructor(e, t, s = null) {\n    super(e, t, s), this.userData = s;\n  }\n  /**\n   * Overwritten to make sure {@link module:ReferenceNode~ReferenceNode#reference} points to the correct\n   * `userData` field.\n   *\n   * @param {(NodeFrame|NodeBuilder)} state - The current state to evaluate.\n   * @return {Object} A reference to the `userData` field.\n   */\n  updateReference(e) {\n    return this.reference = this.userData !== null ? this.userData : e.object.userData, this.reference;\n  }\n}\nconst TN = (o, e, t) => E(new xN(o, e, t)), cc = /* @__PURE__ */ new WeakMap();\nclass _N extends Ne {\n  static get type() {\n    return \"VelocityNode\";\n  }\n  /**\n   * Constructs a new vertex color node.\n   *\n   * @param {Number} [index=0] - The attribute index.\n   */\n  constructor() {\n    super(\"vec2\"), this.projectionMatrix = null, this.updateType = z.OBJECT, this.updateAfterType = z.OBJECT, this.previousModelWorldMatrix = L(new Ue()), this.previousProjectionMatrix = L(new Ue()).setGroup(O), this.previousCameraViewMatrix = L(new Ue());\n  }\n  /**\n   * Sets the given projection matrix.\n   *\n   * @param {Matrix4} projectionMatrix - The projection matrix to set.\n   */\n  setProjectionMatrix(e) {\n    this.projectionMatrix = e;\n  }\n  /**\n   * Updates velocity specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update({ frameId: e, camera: t, object: s }) {\n    const n = lc(s);\n    this.previousModelWorldMatrix.value.copy(n);\n    const r = cf(t);\n    r.frameId !== e && (r.frameId = e, r.previousProjectionMatrix === void 0 ? (r.previousProjectionMatrix = new Ue(), r.previousCameraViewMatrix = new Ue(), r.currentProjectionMatrix = new Ue(), r.currentCameraViewMatrix = new Ue(), r.previousProjectionMatrix.copy(this.projectionMatrix || t.projectionMatrix), r.previousCameraViewMatrix.copy(t.matrixWorldInverse)) : (r.previousProjectionMatrix.copy(r.currentProjectionMatrix), r.previousCameraViewMatrix.copy(r.currentCameraViewMatrix)), r.currentProjectionMatrix.copy(this.projectionMatrix || t.projectionMatrix), r.currentCameraViewMatrix.copy(t.matrixWorldInverse), this.previousProjectionMatrix.value.copy(r.previousProjectionMatrix), this.previousCameraViewMatrix.value.copy(r.previousCameraViewMatrix));\n  }\n  /**\n   * Overwritten to updated velocity specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  updateAfter({ object: e }) {\n    lc(e).copy(e.matrixWorld);\n  }\n  /**\n   * Implements the velocity computation based on the previous and current vertex data.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @return {Node<vec2>} The motion vector.\n   */\n  setup() {\n    const e = this.projectionMatrix === null ? _s : L(this.projectionMatrix), t = this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix), s = e.mul(rn).mul(pe), n = this.previousProjectionMatrix.mul(t).mul(Hr), r = s.xy.div(s.w), i = n.xy.div(n.w);\n    return K(r, i);\n  }\n}\nfunction cf(o) {\n  let e = cc.get(o);\n  return e === void 0 && (e = {}, cc.set(o, e)), e;\n}\nfunction lc(o, e = 0) {\n  const t = cf(o);\n  let s = t[e];\n  return s === void 0 && (t[e] = s = new Ue()), s;\n}\nconst NN = /* @__PURE__ */ B(_N), lf = /* @__PURE__ */ b(([o, e]) => $e(1, o.oneMinus().div(e)).oneMinus()).setLayout({\n  name: \"blendBurn\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"base\", type: \"vec3\" },\n    { name: \"blend\", type: \"vec3\" }\n  ]\n}), df = /* @__PURE__ */ b(([o, e]) => $e(o.div(e.oneMinus()), 1)).setLayout({\n  name: \"blendDodge\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"base\", type: \"vec3\" },\n    { name: \"blend\", type: \"vec3\" }\n  ]\n}), hf = /* @__PURE__ */ b(([o, e]) => o.oneMinus().mul(e.oneMinus()).oneMinus()).setLayout({\n  name: \"blendScreen\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"base\", type: \"vec3\" },\n    { name: \"blend\", type: \"vec3\" }\n  ]\n}), pf = /* @__PURE__ */ b(([o, e]) => Z(o.mul(2).mul(e), o.oneMinus().mul(2).mul(e.oneMinus()).oneMinus(), di(0.5, o))).setLayout({\n  name: \"blendOverlay\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"base\", type: \"vec3\" },\n    { name: \"blend\", type: \"vec3\" }\n  ]\n}), bN = /* @__PURE__ */ b(([o, e]) => {\n  const t = e.a.add(o.a.mul(e.a.oneMinus()));\n  return I(e.rgb.mul(e.a).add(o.rgb.mul(o.a).mul(e.a.oneMinus())).div(t), t);\n}).setLayout({\n  name: \"blendColor\",\n  type: \"vec4\",\n  inputs: [\n    { name: \"base\", type: \"vec4\" },\n    { name: \"blend\", type: \"vec4\" }\n  ]\n}), SN = (...o) => (console.warn('THREE.TSL: \"burn\" has been renamed. Use \"blendBurn\" instead.'), lf(o)), vN = (...o) => (console.warn('THREE.TSL: \"dodge\" has been renamed. Use \"blendDodge\" instead.'), df(o)), AN = (...o) => (console.warn('THREE.TSL: \"screen\" has been renamed. Use \"blendScreen\" instead.'), hf(o)), RN = (...o) => (console.warn('THREE.TSL: \"overlay\" has been renamed. Use \"blendOverlay\" instead.'), pf(o)), CN = /* @__PURE__ */ b(([o]) => iu(o.rgb)), EN = /* @__PURE__ */ b(([o, e = g(1)]) => e.mix(iu(o.rgb), o.rgb)), wN = /* @__PURE__ */ b(([o, e = g(1)]) => {\n  const t = _e(o.r, o.g, o.b).div(3), s = o.r.max(o.g.max(o.b)), n = s.sub(t).mul(e).mul(-3);\n  return Z(o.rgb, s, n);\n}), MN = /* @__PURE__ */ b(([o, e = g(1)]) => {\n  const t = T(0.57735, 0.57735, 0.57735), s = e.cos();\n  return T(o.rgb.mul(s).add(t.cross(o.rgb).mul(e.sin()).add(t.mul(Zt(t, o.rgb).mul(s.oneMinus())))));\n}), iu = (o, e = T(ht.getLuminanceCoefficients(new Y()))) => Zt(o, e), BN = /* @__PURE__ */ b(([\n  o,\n  e = T(1),\n  t = T(0),\n  s = T(1),\n  n = g(1),\n  // ASC CDL v1.2 explicitly requires Rec. 709 luminance coefficients.\n  r = T(ht.getLuminanceCoefficients(new Y(), cs))\n]) => {\n  const i = o.rgb.dot(T(r)), a = fe(o.rgb.mul(e).add(t), 0).toVar(), u = a.pow(s).toVar();\n  return H(a.r.greaterThan(0), () => {\n    a.r.assign(u.r);\n  }), H(a.g.greaterThan(0), () => {\n    a.g.assign(u.g);\n  }), H(a.b.greaterThan(0), () => {\n    a.b.assign(u.b);\n  }), a.assign(i.add(a.sub(i).mul(n))), I(a.rgb, o.a);\n});\nclass FN extends Ne {\n  static get type() {\n    return \"PosterizeNode\";\n  }\n  /**\n   * Constructs a new posterize node.\n   *\n   * @param {Node} sourceNode - The input color.\n   * @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.\n   */\n  constructor(e, t) {\n    super(), this.sourceNode = e, this.stepsNode = t;\n  }\n  setup() {\n    const { sourceNode: e, stepsNode: t } = this;\n    return e.mul(t).floor().div(t);\n  }\n}\nconst UN = /* @__PURE__ */ C(FN), PN = /* @__PURE__ */ new He();\nclass ff extends bt {\n  static get type() {\n    return \"PassTextureNode\";\n  }\n  /**\n   * Constructs a new pass texture node.\n   *\n   * @param {PassNode} passNode - The pass node.\n   * @param {Texture} texture - The output texture.\n   */\n  constructor(e, t) {\n    super(t), this.passNode = e, this.setUpdateMatrix(!1);\n  }\n  setup(e) {\n    return e.object.isQuadMesh && this.passNode.build(e), super.setup(e);\n  }\n  clone() {\n    return new this.constructor(this.passNode, this.value);\n  }\n}\nclass dc extends ff {\n  static get type() {\n    return \"PassMultipleTextureNode\";\n  }\n  /**\n   * Constructs a new pass texture node.\n   *\n   * @param {PassNode} passNode - The pass node.\n   * @param {String} textureName - The output texture name.\n   * @param {Boolean} [previousTexture=false] - Whether previous frame data should be used or not.\n   */\n  constructor(e, t, s = !1) {\n    super(e, null), this.textureName = t, this.previousTexture = s;\n  }\n  /**\n   * Updates the texture reference of this node.\n   */\n  updateTexture() {\n    this.value = this.previousTexture ? this.passNode.getPreviousTexture(this.textureName) : this.passNode.getTexture(this.textureName);\n  }\n  setup(e) {\n    return this.updateTexture(), super.setup(e);\n  }\n  clone() {\n    return new this.constructor(this.passNode, this.textureName, this.previousTexture);\n  }\n}\nclass Rt extends Ne {\n  static get type() {\n    return \"PassNode\";\n  }\n  /**\n   * Constructs a new pass node.\n   *\n   * @param {('color'|'depth')} scope - The scope of the pass. The scope determines whether the node outputs color or depth.\n   * @param {Scene} scene - A reference to the scene.\n   * @param {Camera} camera - A reference to the camera.\n   * @param {Object} options - Options for the internal render target.\n   */\n  constructor(e, t, s, n = {}) {\n    super(\"vec4\"), this.scope = e, this.scene = t, this.camera = s, this.options = n, this._pixelRatio = 1, this._width = 1, this._height = 1;\n    const r = new ys();\n    r.isRenderTargetTexture = !0, r.name = \"depth\";\n    const i = new ms(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: at, ...n });\n    i.texture.name = \"output\", i.depthTexture = r, this.renderTarget = i, this._textures = {\n      output: i.texture,\n      depth: r\n    }, this._textureNodes = {}, this._linearDepthNodes = {}, this._viewZNodes = {}, this._previousTextures = {}, this._previousTextureNodes = {}, this._cameraNear = L(0), this._cameraFar = L(0), this._mrt = null, this.isPassNode = !0, this.updateBeforeType = z.FRAME;\n  }\n  /**\n   * Sets the given MRT node to setup MRT for this pass.\n   *\n   * @param {MRTNode} mrt - The MRT object.\n   * @return {PassNode} A reference to this pass.\n   */\n  setMRT(e) {\n    return this._mrt = e, this;\n  }\n  /**\n   * Returns the current MRT node.\n   *\n   * @return {MRTNode} The current MRT node.\n   */\n  getMRT() {\n    return this._mrt;\n  }\n  /**\n   * The method is overwritten so it always returns `true`.\n   *\n   * @return {Boolean} Whether this node is global or not.\n   */\n  isGlobal() {\n    return !0;\n  }\n  /**\n   * Returns the texture for the given output name.\n   *\n   * @param {String} name - The output name to get the texture for.\n   * @return {Texture} The texture.\n   */\n  getTexture(e) {\n    let t = this._textures[e];\n    return t === void 0 && (t = this.renderTarget.texture.clone(), t.name = e, this._textures[e] = t, this.renderTarget.textures.push(t)), t;\n  }\n  /**\n   * Returns the texture holding the data of the previous frame for the given output name.\n   *\n   * @param {String} name - The output name to get the texture for.\n   * @return {Texture} The texture holding the data of the previous frame.\n   */\n  getPreviousTexture(e) {\n    let t = this._previousTextures[e];\n    return t === void 0 && (t = this.getTexture(e).clone(), this._previousTextures[e] = t), t;\n  }\n  /**\n   * Switches current and previous textures for the given output name.\n   *\n   * @param {String} name - The output name.\n   */\n  toggleTexture(e) {\n    const t = this._previousTextures[e];\n    if (t !== void 0) {\n      const s = this._textures[e], n = this.renderTarget.textures.indexOf(s);\n      this.renderTarget.textures[n] = t, this._textures[e] = t, this._previousTextures[e] = s, this._textureNodes[e].updateTexture(), this._previousTextureNodes[e].updateTexture();\n    }\n  }\n  /**\n   * Returns the texture node for the given output name.\n   *\n   * @param {String} [name='output'] - The output name to get the texture node for.\n   * @return {TextureNode} The texture node.\n   */\n  getTextureNode(e = \"output\") {\n    let t = this._textureNodes[e];\n    return t === void 0 && (t = E(new dc(this, e)), t.updateTexture(), this._textureNodes[e] = t), t;\n  }\n  /**\n   * Returns the previous texture node for the given output name.\n   *\n   * @param {String} [name='output'] - The output name to get the previous texture node for.\n   * @return {TextureNode} The previous texture node.\n   */\n  getPreviousTextureNode(e = \"output\") {\n    let t = this._previousTextureNodes[e];\n    return t === void 0 && (this._textureNodes[e] === void 0 && this.getTextureNode(e), t = E(new dc(this, e, !0)), t.updateTexture(), this._previousTextureNodes[e] = t), t;\n  }\n  /**\n   * Returns a viewZ node of this pass.\n   *\n   * @param {String} [name='depth'] - The output name to get the viewZ node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.\n   * @return {Node} The viewZ node.\n   */\n  getViewZNode(e = \"depth\") {\n    let t = this._viewZNodes[e];\n    if (t === void 0) {\n      const s = this._cameraNear, n = this._cameraFar;\n      this._viewZNodes[e] = t = Xa(this.getTextureNode(e), s, n);\n    }\n    return t;\n  }\n  /**\n   * Returns a linear depth node of this pass.\n   *\n   * @param {String} [name='depth'] - The output name to get the linear depth node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.\n   * @return {Node} The linear depth node.\n   */\n  getLinearDepthNode(e = \"depth\") {\n    let t = this._linearDepthNodes[e];\n    if (t === void 0) {\n      const s = this._cameraNear, n = this._cameraFar, r = this.getViewZNode(e);\n      this._linearDepthNodes[e] = t = qs(r, s, n);\n    }\n    return t;\n  }\n  setup({ renderer: e }) {\n    return this.renderTarget.samples = this.options.samples === void 0 ? e.samples : this.options.samples, e.backend.isWebGLBackend === !0 && (this.renderTarget.samples = 0), this.scope === Rt.COLOR ? this.getTextureNode() : this.getLinearDepthNode();\n  }\n  updateBefore(e) {\n    const { renderer: t } = e, { scene: s, camera: n } = this;\n    this._pixelRatio = t.getPixelRatio();\n    const r = t.getSize(PN);\n    this.setSize(r.width, r.height);\n    const i = t.getRenderTarget(), a = t.getMRT();\n    this._cameraNear.value = n.near, this._cameraFar.value = n.far;\n    for (const u in this._previousTextures)\n      this.toggleTexture(u);\n    t.setRenderTarget(this.renderTarget), t.setMRT(this._mrt), t.render(s, n), t.setRenderTarget(i), t.setMRT(a);\n  }\n  /**\n   * Sets the size of the pass's render target. Honors the pixel ratio.\n   *\n   * @param {Number} width - The width to set.\n   * @param {Number} height - The height to set.\n   */\n  setSize(e, t) {\n    this._width = e, this._height = t;\n    const s = this._width * this._pixelRatio, n = this._height * this._pixelRatio;\n    this.renderTarget.setSize(s, n);\n  }\n  /**\n   * Sets the pixel ratio the pass's render target and updates the size.\n   *\n   * @param {Number} pixelRatio - The pixel ratio to set.\n   */\n  setPixelRatio(e) {\n    this._pixelRatio = e, this.setSize(this._width, this._height);\n  }\n  /**\n   * Frees internal resources. Should be called when the node is no longer in use.\n   */\n  dispose() {\n    this.renderTarget.dispose();\n  }\n}\nRt.COLOR = \"color\";\nRt.DEPTH = \"depth\";\nconst DN = (o, e, t) => E(new Rt(Rt.COLOR, o, e, t)), IN = (o, e) => E(new ff(o, e)), LN = (o, e, t) => E(new Rt(Rt.DEPTH, o, e, t));\nclass VN extends Rt {\n  static get type() {\n    return \"ToonOutlinePassNode\";\n  }\n  /**\n   * Constructs a new outline pass node.\n   *\n   * @param {Scene} scene - A reference to the scene.\n   * @param {Camera} camera - A reference to the camera.\n   * @param {Node} colorNode - Defines the outline's color.\n   * @param {Node} thicknessNode - Defines the outline's thickness.\n   * @param {Node} alphaNode - Defines the outline's alpha.\n   */\n  constructor(e, t, s, n, r) {\n    super(Rt.COLOR, e, t), this.colorNode = s, this.thicknessNode = n, this.alphaNode = r, this._materialCache = /* @__PURE__ */ new WeakMap();\n  }\n  updateBefore(e) {\n    const { renderer: t } = e, s = t.getRenderObjectFunction();\n    t.setRenderObjectFunction((n, r, i, a, u, c, l, d) => {\n      if ((u.isMeshToonMaterial || u.isMeshToonNodeMaterial) && u.wireframe === !1) {\n        const h = this._getOutlineMaterial(u);\n        t.renderObject(n, r, i, a, h, c, l, d);\n      }\n      t.renderObject(n, r, i, a, u, c, l, d);\n    }), super.updateBefore(e), t.setRenderObjectFunction(s);\n  }\n  /**\n   * Creates the material used for outline rendering.\n   *\n   * @private\n   * @return {NodeMaterial} The outline material.\n   */\n  _createMaterial() {\n    const e = new ge();\n    e.isMeshToonOutlineMaterial = !0, e.name = \"Toon_Outline\", e.side = Tt;\n    const t = We.negate(), s = _s.mul(rn), n = g(1), r = s.mul(I(pe, 1)), i = s.mul(I(pe.add(t), 1)), a = Gt(r.sub(i));\n    return e.vertexNode = r.add(a.mul(this.thicknessNode).mul(r.w).mul(n)), e.colorNode = I(this.colorNode, this.alphaNode), e;\n  }\n  /**\n   * For the given toon material, this method returns a corresponding\n   * outline material.\n   *\n   * @private\n   * @param {(MeshToonMaterial|MeshToonNodeMaterial)} originalMaterial - The toon material.\n   * @return {NodeMaterial} The outline material.\n   */\n  _getOutlineMaterial(e) {\n    let t = this._materialCache.get(e);\n    return t === void 0 && (t = this._createMaterial(), this._materialCache.set(e, t)), t;\n  }\n}\nconst GN = (o, e, t = new Ct(0, 0, 0), s = 3e-3, n = 1) => E(new VN(o, e, E(t), E(s), E(n))), gf = /* @__PURE__ */ b(([o, e]) => o.mul(e).clamp()).setLayout({\n  name: \"linearToneMapping\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" },\n    { name: \"exposure\", type: \"float\" }\n  ]\n}), mf = /* @__PURE__ */ b(([o, e]) => (o = o.mul(e), o.div(o.add(1)).clamp())).setLayout({\n  name: \"reinhardToneMapping\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" },\n    { name: \"exposure\", type: \"float\" }\n  ]\n}), yf = /* @__PURE__ */ b(([o, e]) => {\n  o = o.mul(e), o = o.sub(4e-3).max(0);\n  const t = o.mul(o.mul(6.2).add(0.5)), s = o.mul(o.mul(6.2).add(1.7)).add(0.06);\n  return t.div(s).pow(2.2);\n}).setLayout({\n  name: \"cineonToneMapping\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" },\n    { name: \"exposure\", type: \"float\" }\n  ]\n}), ON = /* @__PURE__ */ b(([o]) => {\n  const e = o.mul(o.add(0.0245786)).sub(90537e-9), t = o.mul(o.add(0.432951).mul(0.983729)).add(0.238081);\n  return e.div(t);\n}), xf = /* @__PURE__ */ b(([o, e]) => {\n  const t = Le(\n    0.59719,\n    0.35458,\n    0.04823,\n    0.076,\n    0.90834,\n    0.01566,\n    0.0284,\n    0.13383,\n    0.83777\n  ), s = Le(\n    1.60475,\n    -0.53108,\n    -0.07367,\n    -0.10208,\n    1.10813,\n    -605e-5,\n    -327e-5,\n    -0.07276,\n    1.07602\n  );\n  return o = o.mul(e).div(0.6), o = t.mul(o), o = ON(o), o = s.mul(o), o.clamp();\n}).setLayout({\n  name: \"acesFilmicToneMapping\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" },\n    { name: \"exposure\", type: \"float\" }\n  ]\n}), kN = /* @__PURE__ */ Le(T(1.6605, -0.1246, -0.0182), T(-0.5876, 1.1329, -0.1006), T(-0.0728, -83e-4, 1.1187)), zN = /* @__PURE__ */ Le(T(0.6274, 0.0691, 0.0164), T(0.3293, 0.9195, 0.088), T(0.0433, 0.0113, 0.8956)), $N = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar(), t = T(e.mul(e)).toVar(), s = T(t.mul(t)).toVar();\n  return g(15.5).mul(s.mul(t)).sub($(40.14, s.mul(e))).add($(31.96, s).sub($(6.868, t.mul(e))).add($(0.4298, t).add($(0.1191, e).sub(232e-5))));\n}), Tf = /* @__PURE__ */ b(([o, e]) => {\n  const t = T(o).toVar(), s = Le(T(0.856627153315983, 0.137318972929847, 0.11189821299995), T(0.0951212405381588, 0.761241990602591, 0.0767994186031903), T(0.0482516061458583, 0.101439036467562, 0.811302368396859)), n = Le(T(1.1271005818144368, -0.1413297634984383, -0.14132976349843826), T(-0.11060664309660323, 1.157823702216272, -0.11060664309660294), T(-0.016493938717834573, -0.016493938717834257, 1.2519364065950405)), r = g(-12.47393), i = g(4.026069);\n  return t.mulAssign(e), t.assign(zN.mul(t)), t.assign(s.mul(t)), t.assign(fe(t, 1e-10)), t.assign(mt(t)), t.assign(t.sub(r).div(i.sub(r))), t.assign(_t(t, 0, 1)), t.assign($N(t)), t.assign(n.mul(t)), t.assign(ot(fe(T(0), t), T(2.2))), t.assign(kN.mul(t)), t.assign(_t(t, 0, 1)), t;\n}).setLayout({\n  name: \"agxToneMapping\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" },\n    { name: \"exposure\", type: \"float\" }\n  ]\n}), _f = /* @__PURE__ */ b(([o, e]) => {\n  const t = g(0.76), s = g(0.15);\n  o = o.mul(e);\n  const n = $e(o.r, $e(o.g, o.b)), r = Me(n.lessThan(0.08), n.sub($(6.25, n.mul(n))), 0.04);\n  o.subAssign(r);\n  const i = fe(o.r, fe(o.g, o.b));\n  H(i.lessThan(t), () => o);\n  const a = K(1, t), u = K(1, a.mul(a).div(i.add(a.sub(t))));\n  o.mulAssign(u.div(i));\n  const c = K(1, ut(1, s.mul(i.sub(u)).add(1)));\n  return Z(o, T(u), c);\n}).setLayout({\n  name: \"neutralToneMapping\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" },\n    { name: \"exposure\", type: \"float\" }\n  ]\n});\nclass be extends G {\n  static get type() {\n    return \"CodeNode\";\n  }\n  /**\n   * Constructs a new code node.\n   *\n   * @param {String} [code=''] - The native code.\n   * @param {Array<Node>} [includes=[]] - An array of includes.\n   * @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.\n   */\n  constructor(e = \"\", t = [], s = \"\") {\n    super(\"code\"), this.isCodeNode = !0, this.code = e, this.includes = t, this.language = s;\n  }\n  /**\n   * The method is overwritten so it always returns `true`.\n   *\n   * @return {Boolean} Whether this node is global or not.\n   */\n  isGlobal() {\n    return !0;\n  }\n  /**\n   * Sets the includes of this code node.\n   *\n   * @param {Array<Node>} includes - The includes to set.\n   * @return {CodeNode} A reference to this node.\n   */\n  setIncludes(e) {\n    return this.includes = e, this;\n  }\n  /**\n   * Returns the includes of this code node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Array<Node>} The includes.\n   */\n  getIncludes() {\n    return this.includes;\n  }\n  generate(e) {\n    const t = this.getIncludes(e);\n    for (const n of t)\n      n.build(e);\n    const s = e.getCodeFromNode(this, this.getNodeType(e));\n    return s.code = this.code, s.code;\n  }\n  serialize(e) {\n    super.serialize(e), e.code = this.code, e.language = this.language;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.code = e.code, this.language = e.language;\n  }\n}\nconst vi = /* @__PURE__ */ C(be), WN = (o, e) => vi(o, e, \"js\"), HN = (o, e) => vi(o, e, \"wgsl\"), qN = (o, e) => vi(o, e, \"glsl\");\nclass Nf extends be {\n  static get type() {\n    return \"FunctionNode\";\n  }\n  /**\n   * Constructs a new function node.\n   *\n   * @param {String} [code=''] - The native code.\n   * @param {Array<Node>} [includes=[]] - An array of includes.\n   * @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.\n   */\n  constructor(e = \"\", t = [], s = \"\") {\n    super(e, t, s);\n  }\n  getNodeType(e) {\n    return this.getNodeFunction(e).type;\n  }\n  /**\n   * Returns the inputs of this function node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Array<NodeFunctionInput>} The inputs.\n   */\n  getInputs(e) {\n    return this.getNodeFunction(e).inputs;\n  }\n  /**\n   * Returns the node function for this function node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {NodeFunction} The node function.\n   */\n  getNodeFunction(e) {\n    const t = e.getDataFromNode(this);\n    let s = t.nodeFunction;\n    return s === void 0 && (s = e.parser.parseFunction(this.code), t.nodeFunction = s), s;\n  }\n  generate(e, t) {\n    super.generate(e);\n    const s = this.getNodeFunction(e), n = s.name, r = s.type, i = e.getCodeFromNode(this, r);\n    n !== \"\" && (i.name = n);\n    const a = e.getPropertyName(i), u = this.getNodeFunction(e).getCode(a);\n    return i.code = u + `\n`, t === \"property\" ? a : e.format(`${a}()`, r, t);\n  }\n}\nconst bf = (o, e = [], t = \"\") => {\n  for (let r = 0; r < e.length; r++) {\n    const i = e[r];\n    typeof i == \"function\" && (e[r] = i.functionNode);\n  }\n  const s = E(new Nf(o, e, t)), n = (...r) => s.call(...r);\n  return n.functionNode = s, n;\n}, XN = (o, e) => bf(o, e, \"glsl\"), KN = (o, e) => bf(o, e, \"wgsl\");\nclass YN extends G {\n  static get type() {\n    return \"ScriptableValueNode\";\n  }\n  /**\n   * Constructs a new scriptable node.\n   *\n   * @param {Any} [value=null] - The value.\n   */\n  constructor(e = null) {\n    super(), this._value = e, this._cache = null, this.inputType = null, this.outputType = null, this.events = new zc(), this.isScriptableValueNode = !0;\n  }\n  /**\n   * Whether this node represents an output or not.\n   *\n   * @type {Boolean}\n   * @readonly\n   * @default true\n   */\n  get isScriptableOutputNode() {\n    return this.outputType !== null;\n  }\n  set value(e) {\n    this._value !== e && (this._cache && this.inputType === \"URL\" && this.value.value instanceof ArrayBuffer && (URL.revokeObjectURL(this._cache), this._cache = null), this._value = e, this.events.dispatchEvent({ type: \"change\" }), this.refresh());\n  }\n  /**\n   * The node's value.\n   *\n   * @type {Any}\n   */\n  get value() {\n    return this._value;\n  }\n  /**\n   * Dispatches the `refresh` event.\n   */\n  refresh() {\n    this.events.dispatchEvent({ type: \"refresh\" });\n  }\n  /**\n   * The `value` property usually represents a node or even binary data in form of array buffers.\n   * In this case, this method tries to return the actual value behind the complex type.\n   *\n   * @return {Any} The value.\n   */\n  getValue() {\n    const e = this.value;\n    if (e && this._cache === null && this.inputType === \"URL\" && e.value instanceof ArrayBuffer)\n      this._cache = URL.createObjectURL(new Blob([e.value]));\n    else if (e && e.value !== null && e.value !== void 0 && ((this.inputType === \"URL\" || this.inputType === \"String\") && typeof e.value == \"string\" || this.inputType === \"Number\" && typeof e.value == \"number\" || this.inputType === \"Vector2\" && e.value.isVector2 || this.inputType === \"Vector3\" && e.value.isVector3 || this.inputType === \"Vector4\" && e.value.isVector4 || this.inputType === \"Color\" && e.value.isColor || this.inputType === \"Matrix3\" && e.value.isMatrix3 || this.inputType === \"Matrix4\" && e.value.isMatrix4))\n      return e.value;\n    return this._cache || e;\n  }\n  /**\n   * Overwritten since the node type is inferred from the value.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.value && this.value.isNode ? this.value.getNodeType(e) : \"float\";\n  }\n  setup() {\n    return this.value && this.value.isNode ? this.value : g();\n  }\n  serialize(e) {\n    super.serialize(e), this.value !== null ? this.inputType === \"ArrayBuffer\" ? e.value = Il(this.value) : e.value = this.value ? this.value.toJSON(e.meta).uuid : null : e.value = null, e.inputType = this.inputType, e.outputType = this.outputType;\n  }\n  deserialize(e) {\n    super.deserialize(e);\n    let t = null;\n    e.value !== null && (e.inputType === \"ArrayBuffer\" ? t = Ll(e.value) : e.inputType === \"Texture\" ? t = e.meta.textures[e.value] : t = e.meta.nodes[e.value] || null), this.value = t, this.inputType = e.inputType, this.outputType = e.outputType;\n  }\n}\nconst Ur = /* @__PURE__ */ C(YN);\nclass Sf extends Map {\n  get(e, t = null, ...s) {\n    if (this.has(e)) return super.get(e);\n    if (t !== null) {\n      const n = t(...s);\n      return this.set(e, n), n;\n    }\n  }\n}\nclass jN {\n  constructor(e) {\n    this.scriptableNode = e;\n  }\n  get parameters() {\n    return this.scriptableNode.parameters;\n  }\n  get layout() {\n    return this.scriptableNode.getLayout();\n  }\n  getInputLayout(e) {\n    return this.scriptableNode.getInputLayout(e);\n  }\n  get(e) {\n    const t = this.parameters[e];\n    return t ? t.getValue() : null;\n  }\n}\nconst Pr = new Sf();\nclass QN extends G {\n  static get type() {\n    return \"ScriptableNode\";\n  }\n  /**\n   * Constructs a new scriptable node.\n   *\n   * @param {CodeNode?} [codeNode=null] - The code node.\n   * @param {Object} [parameters={}] - The parameters definition.\n   */\n  constructor(e = null, t = {}) {\n    super(), this.codeNode = e, this.parameters = t, this._local = new Sf(), this._output = Ur(), this._outputs = {}, this._source = this.source, this._method = null, this._object = null, this._value = null, this._needsOutputUpdate = !0, this.onRefresh = this.onRefresh.bind(this), this.isScriptableNode = !0;\n  }\n  /**\n   * The source code of the scriptable node.\n   *\n   * @type {String}\n   */\n  get source() {\n    return this.codeNode ? this.codeNode.code : \"\";\n  }\n  /**\n   * Sets the reference of a local script variable.\n   *\n   * @param {String} name - The variable name.\n   * @param {Object} value - The reference to set.\n   * @return {Resources} The resource map\n   */\n  setLocal(e, t) {\n    return this._local.set(e, t);\n  }\n  /**\n   * Gets the value of a local script variable.\n   *\n   * @param {String} name - The variable name.\n   * @return {Object} The value.\n   */\n  getLocal(e) {\n    return this._local.get(e);\n  }\n  /**\n   * Event listener for the `refresh` event.\n   */\n  onRefresh() {\n    this._refresh();\n  }\n  /**\n   * Returns an input from the layout with the given id/name.\n   *\n   * @param {String} id - The id/name of the input.\n   * @return {Object} The element entry.\n   */\n  getInputLayout(e) {\n    for (const t of this.getLayout())\n      if (t.inputType && (t.id === e || t.name === e))\n        return t;\n  }\n  /**\n   * Returns an output from the layout with the given id/name.\n   *\n   * @param {String} id - The id/name of the output.\n   * @return {Object} The element entry.\n   */\n  getOutputLayout(e) {\n    for (const t of this.getLayout())\n      if (t.outputType && (t.id === e || t.name === e))\n        return t;\n  }\n  /**\n   * Defines a script output for the given name and value.\n   *\n   * @param {String} name - The name of the output.\n   * @param {Node} value - The node value.\n   * @return {ScriptableNode} A reference to this node.\n   */\n  setOutput(e, t) {\n    const s = this._outputs;\n    return s[e] === void 0 ? s[e] = Ur(t) : s[e].value = t, this;\n  }\n  /**\n   * Returns a script output for the given name.\n   *\n   * @param {String} name - The name of the output.\n   * @return {ScriptableValueNode} The node value.\n   */\n  getOutput(e) {\n    return this._outputs[e];\n  }\n  /**\n   * Returns a paramater for the given name\n   *\n   * @param {String} name - The name of the parameter.\n   * @return {ScriptableValueNode} The node value.\n   */\n  getParameter(e) {\n    return this.parameters[e];\n  }\n  /**\n   * Sets a value for the given parameter name.\n   *\n   * @param {String} name - The parameter name.\n   * @param {Any} value - The parameter value.\n   * @return {ScriptableNode} A reference to this node.\n   */\n  setParameter(e, t) {\n    const s = this.parameters;\n    return t && t.isScriptableNode ? (this.deleteParameter(e), s[e] = t, s[e].getDefaultOutput().events.addEventListener(\"refresh\", this.onRefresh)) : t && t.isScriptableValueNode ? (this.deleteParameter(e), s[e] = t, s[e].events.addEventListener(\"refresh\", this.onRefresh)) : s[e] === void 0 ? (s[e] = Ur(t), s[e].events.addEventListener(\"refresh\", this.onRefresh)) : s[e].value = t, this;\n  }\n  /**\n   * Returns the value of this node which is the value of\n   * the default output.\n   *\n   * @return {Node} The value.\n   */\n  getValue() {\n    return this.getDefaultOutput().getValue();\n  }\n  /**\n   * Deletes a parameter from the script.\n   *\n   * @param {String} name - The parameter to remove.\n   * @return {ScriptableNode} A reference to this node.\n   */\n  deleteParameter(e) {\n    let t = this.parameters[e];\n    return t && (t.isScriptableNode && (t = t.getDefaultOutput()), t.events.removeEventListener(\"refresh\", this.onRefresh)), this;\n  }\n  /**\n   * Deletes all parameters from the script.\n   *\n   * @return {ScriptableNode} A reference to this node.\n   */\n  clearParameters() {\n    for (const e of Object.keys(this.parameters))\n      this.deleteParameter(e);\n    return this.needsUpdate = !0, this;\n  }\n  /**\n   * Calls a function from the script.\n   *\n   * @param {String} name - The function name.\n   * @param {...Any} params - A list of parameters.\n   * @return {Any} The result of the function call.\n   */\n  call(e, ...t) {\n    const n = this.getObject()[e];\n    if (typeof n == \"function\")\n      return n(...t);\n  }\n  /**\n   * Asynchronously calls a function from the script.\n   *\n   * @param {String} name - The function name.\n   * @param {...Any} params - A list of parameters.\n   * @return {Any} The result of the function call.\n   */\n  async callAsync(e, ...t) {\n    const n = this.getObject()[e];\n    if (typeof n == \"function\")\n      return n.constructor.name === \"AsyncFunction\" ? await n(...t) : n(...t);\n  }\n  /**\n   * Overwritten since the node types is inferred from the script's output.\n   *\n   * @param {NodeBuilder} builder - The current node builder\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.getDefaultOutputNode().getNodeType(e);\n  }\n  /**\n   * Refreshes the script node.\n   *\n   * @param {String?} [output=null] - An optional output.\n   */\n  refresh(e = null) {\n    e !== null ? this.getOutput(e).refresh() : this._refresh();\n  }\n  /**\n   * Returns an object representation of the script.\n   *\n   * @return {Object} The result object.\n   */\n  getObject() {\n    if (this.needsUpdate && this.dispose(), this._object !== null) return this._object;\n    const e = () => this.refresh(), t = (c, l) => this.setOutput(c, l), s = new jN(this), n = Pr.get(\"THREE\"), r = Pr.get(\"TSL\"), i = this.getMethod(), a = [s, this._local, Pr, e, t, n, r];\n    this._object = i(...a);\n    const u = this._object.layout;\n    if (u && (u.cache === !1 && this._local.clear(), this._output.outputType = u.outputType || null, Array.isArray(u.elements)))\n      for (const c of u.elements) {\n        const l = c.id || c.name;\n        c.inputType && (this.getParameter(l) === void 0 && this.setParameter(l, null), this.getParameter(l).inputType = c.inputType), c.outputType && (this.getOutput(l) === void 0 && this.setOutput(l, null), this.getOutput(l).outputType = c.outputType);\n      }\n    return this._object;\n  }\n  deserialize(e) {\n    super.deserialize(e);\n    for (const t in this.parameters) {\n      let s = this.parameters[t];\n      s.isScriptableNode && (s = s.getDefaultOutput()), s.events.addEventListener(\"refresh\", this.onRefresh);\n    }\n  }\n  /**\n   * Returns the layout of the script.\n   *\n   * @return {Object} The script's layout.\n   */\n  getLayout() {\n    return this.getObject().layout;\n  }\n  /**\n   * Returns default node output of the script.\n   *\n   * @return {Node} The default node output.\n   */\n  getDefaultOutputNode() {\n    const e = this.getDefaultOutput().value;\n    return e && e.isNode ? e : g();\n  }\n  /**\n   * Returns default output of the script.\n   *\n   * @return {ScriptableValueNode} The default output.\n   */\n  getDefaultOutput() {\n    return this._exec()._output;\n  }\n  /**\n   * Returns a function created from the node's script.\n   *\n   * @return {Function} The function representing the node's code.\n   */\n  getMethod() {\n    if (this.needsUpdate && this.dispose(), this._method !== null) return this._method;\n    const e = [\"parameters\", \"local\", \"global\", \"refresh\", \"setOutput\", \"THREE\", \"TSL\"], s = [\"layout\", \"init\", \"main\", \"dispose\"].join(\", \"), n = \"var \" + s + `; var output = {};\n`, r = `\nreturn { ...output, ` + s + \" };\", i = n + this.codeNode.code + r;\n    return this._method = new Function(...e, i), this._method;\n  }\n  /**\n   * Frees all internal resources.\n   */\n  dispose() {\n    this._method !== null && (this._object && typeof this._object.dispose == \"function\" && this._object.dispose(), this._method = null, this._object = null, this._source = null, this._value = null, this._needsOutputUpdate = !0, this._output.value = null, this._outputs = {});\n  }\n  setup() {\n    return this.getDefaultOutputNode();\n  }\n  getCacheKey(e) {\n    const t = [wl(this.source), this.getDefaultOutputNode().getCacheKey(e)];\n    for (const s in this.parameters)\n      t.push(this.parameters[s].getCacheKey(e));\n    return ni(t);\n  }\n  set needsUpdate(e) {\n    e === !0 && this.dispose();\n  }\n  get needsUpdate() {\n    return this.source !== this._source;\n  }\n  /**\n   * Executes the `main` function of the script.\n   *\n   * @private\n   * @return {ScriptableNode} A reference to this node.\n   */\n  _exec() {\n    return this.codeNode === null ? this : (this._needsOutputUpdate === !0 && (this._value = this.call(\"main\"), this._needsOutputUpdate = !1), this._output.value = this._value, this);\n  }\n  /**\n   * Executes the refresh.\n   *\n   * @private\n   */\n  _refresh() {\n    this.needsUpdate = !0, this._exec(), this._output.refresh();\n  }\n}\nconst ZN = /* @__PURE__ */ C(QN);\nfunction vf(o) {\n  let e;\n  const t = o.context.getViewZ;\n  return t !== void 0 && (e = t(this)), (e || xe.z).negate();\n}\nconst ou = b(([o, e], t) => {\n  const s = vf(t);\n  return Ot(o, e, s);\n}), au = b(([o], e) => {\n  const t = vf(e);\n  return o.mul(o, t, t).negate().exp().oneMinus();\n}), zn = b(([o, e]) => I(e.toFloat().mix(Gn.rgb, o.toVec3()), Gn.a));\nfunction JN(o, e, t) {\n  return console.warn('THREE.TSL: \"rangeFog( color, near, far )\" is deprecated. Use \"fog( color, rangeFogFactor( near, far ) )\" instead.'), zn(o, ou(e, t));\n}\nfunction eb(o, e) {\n  return console.warn('THREE.TSL: \"densityFog( color, density )\" is deprecated. Use \"fog( color, densityFogFactor( density ) )\" instead.'), zn(o, au(e));\n}\nlet ts = null, ss = null;\nclass tb extends G {\n  static get type() {\n    return \"RangeNode\";\n  }\n  /**\n   * Constructs a new range node.\n   *\n   * @param {Node<any>} [minNode=float()] - A node defining the lower bound of the range.\n   * @param {Node<any>} [maxNode=float()] - A node defining the upper bound of the range.\n   */\n  constructor(e = g(), t = g()) {\n    super(), this.minNode = e, this.maxNode = t;\n  }\n  /**\n   * Returns the vector length which is computed based on the range definition.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {Number} The vector length.\n   */\n  getVectorLength(e) {\n    const t = e.getTypeLength(Yt(this.minNode.value)), s = e.getTypeLength(Yt(this.maxNode.value));\n    return t > s ? t : s;\n  }\n  /**\n   * This method is overwritten since the node type is inferred from range definition.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return e.object.count > 1 ? e.getTypeFromLength(this.getVectorLength(e)) : \"float\";\n  }\n  setup(e) {\n    const t = e.object;\n    let s = null;\n    if (t.count > 1) {\n      const n = this.minNode.value, r = this.maxNode.value, i = e.getTypeLength(Yt(n)), a = e.getTypeLength(Yt(r));\n      ts = ts || new Ce(), ss = ss || new Ce(), ts.setScalar(0), ss.setScalar(0), i === 1 ? ts.setScalar(n) : n.isColor ? ts.set(n.r, n.g, n.b, 1) : ts.set(n.x, n.y, n.z || 0, n.w || 0), a === 1 ? ss.setScalar(r) : r.isColor ? ss.set(r.r, r.g, r.b, 1) : ss.set(r.x, r.y, r.z || 0, r.w || 0);\n      const u = 4, c = u * t.count, l = new Float32Array(c);\n      for (let h = 0; h < c; h++) {\n        const p = h % u, f = ts.getComponent(p), m = ss.getComponent(p);\n        l[h] = $c.lerp(f, m, Math.random());\n      }\n      const d = this.getNodeType(e);\n      if (t.count <= 4096)\n        s = Zn(l, \"vec4\", t.count).element(sr).convert(d);\n      else {\n        const h = new oa(l, 4);\n        e.geometry.setAttribute(\"__range\" + this.id, h), s = Wr(h).convert(d);\n      }\n    } else\n      s = g(0);\n    return s;\n  }\n}\nconst sb = /* @__PURE__ */ C(tb);\nclass nb extends G {\n  static get type() {\n    return \"ComputeBuiltinNode\";\n  }\n  /**\n   * Constructs a new compute builtin node.\n   *\n   * @param {String} builtinName - The built-in name.\n   * @param {String} nodeType - The node type.\n   */\n  constructor(e, t) {\n    super(t), this._builtinName = e;\n  }\n  /**\n   * This method is overwritten since hash is derived from the built-in name.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The hash.\n   */\n  getHash(e) {\n    return this.getBuiltinName(e);\n  }\n  /**\n   * This method is overwritten since the node type is simply derived from `nodeType`..\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType() {\n    return this.nodeType;\n  }\n  /**\n   * Sets the builtin name.\n   *\n   * @param {String} builtinName - The built-in name.\n   * @return {ComputeBuiltinNode} A reference to this node.\n   */\n  setBuiltinName(e) {\n    return this._builtinName = e, this;\n  }\n  /**\n   * Returns the builtin name.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The builtin name.\n   */\n  getBuiltinName() {\n    return this._builtinName;\n  }\n  /**\n   * Whether the current node builder has the builtin or not.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  hasBuiltin(e) {\n    e.hasBuiltin(this._builtinName);\n  }\n  generate(e, t) {\n    const s = this.getBuiltinName(e), n = this.getNodeType(e);\n    return e.shaderStage === \"compute\" ? e.format(s, n, t) : (console.warn(`ComputeBuiltinNode: Compute built-in value ${s} can not be accessed in the ${e.shaderStage} stage`), e.generateConst(n));\n  }\n  serialize(e) {\n    super.serialize(e), e.global = this.global, e._builtinName = this._builtinName;\n  }\n  deserialize(e) {\n    super.deserialize(e), this.global = e.global, this._builtinName = e._builtinName;\n  }\n}\nconst Ai = (o, e) => E(new nb(o, e)), rb = /* @__PURE__ */ Ai(\"numWorkgroups\", \"uvec3\"), ib = /* @__PURE__ */ Ai(\"workgroupId\", \"uvec3\"), ob = /* @__PURE__ */ Ai(\"localId\", \"uvec3\"), ab = /* @__PURE__ */ Ai(\"subgroupSize\", \"uint\");\nclass ub extends G {\n  /**\n   * Constructs a new barrier node.\n   *\n   * @param {String} scope - The scope defines the behavior of the node.\n   */\n  constructor(e) {\n    super(), this.scope = e;\n  }\n  generate(e) {\n    const { scope: t } = this, { renderer: s } = e;\n    s.backend.isWebGLBackend === !0 ? e.addFlowCode(`\t// ${t}Barrier \n`) : e.addLineFlowCode(`${t}Barrier()`, this);\n  }\n}\nconst uu = C(ub), cb = () => uu(\"workgroup\").append(), lb = () => uu(\"storage\").append(), db = () => uu(\"texture\").append();\nclass hb extends Ts {\n  /**\n   * Constructs a new workgroup info element node.\n   *\n   * @param {Node} workgroupInfoNode - The workgroup info node.\n   * @param {Node} indexNode - The index node that defines the element access.\n   */\n  constructor(e, t) {\n    super(e, t), this.isWorkgroupInfoElementNode = !0;\n  }\n  generate(e, t) {\n    let s;\n    const n = e.context.assign;\n    if (s = super.generate(e), n !== !0) {\n      const r = this.getNodeType(e);\n      s = e.format(s, r, t);\n    }\n    return s;\n  }\n}\nclass pb extends G {\n  /**\n   * Constructs a new buffer scoped to type scope.\n   *\n   * @param {String} scope - TODO.\n   * @param {String} bufferType - The data type of a 'workgroup' scoped buffer element.\n   * @param {Number} [bufferCount=0] - The number of elements in the buffer.\n   */\n  constructor(e, t, s = 0) {\n    super(t), this.bufferType = t, this.bufferCount = s, this.isWorkgroupInfoNode = !0, this.elementType = t, this.scope = e;\n  }\n  /**\n   * Sets the name/label of this node.\n   *\n   * @param {String} name - The name to set.\n   * @return {WorkgroupInfoNode} A reference to this node.\n   */\n  label(e) {\n    return this.name = e, this;\n  }\n  /**\n   * Sets the scope of this node.\n   *\n   * @param {String} scope - The scope to set.\n   * @return {WorkgroupInfoNode} A reference to this node.\n   */\n  setScope(e) {\n    return this.scope = e, this;\n  }\n  /**\n   * The data type of the array buffer.\n   *\n   * @return {String} The element type.\n   */\n  getElementType() {\n    return this.elementType;\n  }\n  /**\n   * Overwrites the default implementation since the input type\n   * is inferred from the scope.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType() {\n    return `${this.scope}Array`;\n  }\n  /**\n   * This method can be used to access elements via an index node.\n   *\n   * @param {IndexNode} indexNode - indexNode.\n   * @return {WorkgroupInfoElementNode} A reference to an element.\n   */\n  element(e) {\n    return E(new hb(this, e));\n  }\n  generate(e) {\n    return e.getScopedArray(this.name || `${this.scope}Array_${this.id}`, this.scope.toLowerCase(), this.bufferType, this.bufferCount);\n  }\n}\nconst fb = (o, e) => E(new pb(\"Workgroup\", o, e));\nclass Ee extends Ne {\n  static get type() {\n    return \"AtomicFunctionNode\";\n  }\n  /**\n   * Constructs a new atomic function node.\n   *\n   * @param {String} method - The signature of the atomic function to construct.\n   * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.\n   * @param {Node} valueNode - The value that mutates the atomic variable.\n   * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.\n   */\n  constructor(e, t, s, n = null) {\n    super(\"uint\"), this.method = e, this.pointerNode = t, this.valueNode = s, this.storeNode = n;\n  }\n  /**\n   * Overwrites the default implementation to return the type of\n   * the pointer node.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The input type.\n   */\n  getInputType(e) {\n    return this.pointerNode.getNodeType(e);\n  }\n  /**\n   * Overwritten since the node type is inferred from the input type.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   * @return {String} The node type.\n   */\n  getNodeType(e) {\n    return this.getInputType(e);\n  }\n  generate(e) {\n    const t = this.method, s = this.getNodeType(e), n = this.getInputType(e), r = this.pointerNode, i = this.valueNode, a = [];\n    a.push(`&${r.build(e, n)}`), a.push(i.build(e, n));\n    const u = `${e.getMethod(t, s)}( ${a.join(\", \")} )`;\n    if (this.storeNode !== null) {\n      const c = this.storeNode.build(e, n);\n      e.addLineFlowCode(`${c} = ${u}`, this);\n    } else\n      e.addLineFlowCode(u, this);\n  }\n}\nEe.ATOMIC_LOAD = \"atomicLoad\";\nEe.ATOMIC_STORE = \"atomicStore\";\nEe.ATOMIC_ADD = \"atomicAdd\";\nEe.ATOMIC_SUB = \"atomicSub\";\nEe.ATOMIC_MAX = \"atomicMax\";\nEe.ATOMIC_MIN = \"atomicMin\";\nEe.ATOMIC_AND = \"atomicAnd\";\nEe.ATOMIC_OR = \"atomicOr\";\nEe.ATOMIC_XOR = \"atomicXor\";\nconst gb = C(Ee), zt = (o, e, t, s = null) => {\n  const n = gb(o, e, t, s);\n  return n.append(), n;\n}, mb = (o, e, t = null) => zt(Ee.ATOMIC_STORE, o, e, t), yb = (o, e, t = null) => zt(Ee.ATOMIC_ADD, o, e, t), xb = (o, e, t = null) => zt(Ee.ATOMIC_SUB, o, e, t), Tb = (o, e, t = null) => zt(Ee.ATOMIC_MAX, o, e, t), _b = (o, e, t = null) => zt(Ee.ATOMIC_MIN, o, e, t), Nb = (o, e, t = null) => zt(Ee.ATOMIC_AND, o, e, t), bb = (o, e, t = null) => zt(Ee.ATOMIC_OR, o, e, t), Sb = (o, e, t = null) => zt(Ee.ATOMIC_XOR, o, e, t);\nlet fr;\nfunction rr(o) {\n  fr = fr || /* @__PURE__ */ new WeakMap();\n  let e = fr.get(o);\n  return e === void 0 && fr.set(o, e = {}), e;\n}\nfunction cu(o) {\n  const e = rr(o);\n  return e.shadowMatrix || (e.shadowMatrix = L(\"mat4\").setGroup(O).onRenderUpdate(() => (o.castShadow !== !0 && o.shadow.updateMatrices(o), o.shadow.matrix)));\n}\nfunction Af(o) {\n  const e = rr(o);\n  if (e.projectionUV === void 0) {\n    const t = cu(o).mul(It);\n    e.projectionUV = t.xyz.div(t.w);\n  }\n  return e.projectionUV;\n}\nfunction lu(o) {\n  const e = rr(o);\n  return e.position || (e.position = L(new Y()).setGroup(O).onRenderUpdate((t, s) => s.value.setFromMatrixPosition(o.matrixWorld)));\n}\nfunction Rf(o) {\n  const e = rr(o);\n  return e.targetPosition || (e.targetPosition = L(new Y()).setGroup(O).onRenderUpdate((t, s) => s.value.setFromMatrixPosition(o.target.matrixWorld)));\n}\nfunction Ri(o) {\n  const e = rr(o);\n  return e.viewPosition || (e.viewPosition = L(new Y()).setGroup(O).onRenderUpdate(({ camera: t }, s) => {\n    s.value = s.value || new Y(), s.value.setFromMatrixPosition(o.matrixWorld), s.value.applyMatrix4(t.matrixWorldInverse);\n  }));\n}\nconst du = (o) => Xe.transformDirection(lu(o).sub(Rf(o))), vb = (o) => o.sort((e, t) => e.id - t.id), Ab = (o, e) => {\n  for (const t of e)\n    if (t.isAnalyticLightNode && t.light.id === o)\n      return t;\n  return null;\n}, Hi = /* @__PURE__ */ new WeakMap();\nclass hu extends G {\n  static get type() {\n    return \"LightsNode\";\n  }\n  /**\n   * Constructs a new lights node.\n   */\n  constructor() {\n    super(\"vec3\"), this.totalDiffuseNode = T().toVar(\"totalDiffuse\"), this.totalSpecularNode = T().toVar(\"totalSpecular\"), this.outgoingLightNode = T().toVar(\"outgoingLight\"), this._lights = [], this._lightNodes = null, this._lightNodesHash = null, this.global = !0;\n  }\n  /**\n   * Overwrites the default {@link Node#customCacheKey} implementation by including the\n   * light IDs into the cache key.\n   *\n   * @return {Number} The custom cache key.\n   */\n  customCacheKey() {\n    const e = [], t = this._lights;\n    for (let s = 0; s < t.length; s++)\n      e.push(t[s].id);\n    return ni(e);\n  }\n  /**\n   * Computes a hash value for identifying the current light nodes setup.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @return {String} The computed hash.\n   */\n  getHash(e) {\n    if (this._lightNodesHash === null) {\n      this._lightNodes === null && this.setupLightsNode(e);\n      const t = [];\n      for (const s of this._lightNodes)\n        t.push(s.getSelf().getHash());\n      this._lightNodesHash = \"lights-\" + t.join(\",\");\n    }\n    return this._lightNodesHash;\n  }\n  analyze(e) {\n    const t = e.getDataFromNode(this);\n    for (const s of t.nodes)\n      s.build(e);\n  }\n  /**\n   * Creates lighting nodes for each scene light. This makes it possible to further\n   * process lights in the node system.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   */\n  setupLightsNode(e) {\n    const t = [], s = this._lightNodes, n = vb(this._lights), r = e.renderer.library;\n    for (const i of n)\n      if (i.isNode)\n        t.push(E(i));\n      else {\n        let a = null;\n        if (s !== null && (a = Ab(i.id, s)), a === null) {\n          const u = r.getLightNodeClass(i.constructor);\n          if (u === null) {\n            console.warn(`LightsNode.setupNodeLights: Light node not found for ${i.constructor.name}`);\n            continue;\n          }\n          let c = null;\n          Hi.has(i) ? c = Hi.get(i) : (c = E(new u(i)), Hi.set(i, c)), t.push(c);\n        }\n      }\n    this._lightNodes = t;\n  }\n  /**\n   * Setups the internal lights by building all respective\n   * light nodes.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @param {Array<LightingNode>} lightNodes - An array of lighting nodes.\n   */\n  setupLights(e, t) {\n    for (const s of t)\n      s.build(e);\n  }\n  /**\n   * The implementation makes sure that for each light in the scene\n   * there is a corresponding light node. By building the light nodes\n   * and evaluating the lighting model the outgoing light is computed.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @return {Node<vec3>} A node representing the outgoing light.\n   */\n  setup(e) {\n    this._lightNodes === null && this.setupLightsNode(e);\n    const t = e.context, s = t.lightingModel;\n    let n = this.outgoingLightNode;\n    if (s) {\n      const { _lightNodes: r, totalDiffuseNode: i, totalSpecularNode: a } = this;\n      t.outgoingLight = n;\n      const u = e.addStack(), c = e.getDataFromNode(this);\n      c.nodes = u.nodes, s.start(t, u, e), this.setupLights(e, r), s.indirect(t, u, e);\n      const { backdrop: l, backdropAlpha: d } = t, { directDiffuse: h, directSpecular: p, indirectDiffuse: f, indirectSpecular: m } = t.reflectedLight;\n      let _ = h.add(f);\n      l !== null && (d !== null ? _ = T(d.mix(_, l)) : _ = T(l), t.material.transparent = !0), i.assign(_), a.assign(p.add(m)), n.assign(i.add(a)), s.finish(t, u, e), n = n.bypass(e.removeStack());\n    }\n    return n;\n  }\n  /**\n   * Configures this node with an array of lights.\n   *\n   * @param {Array<Light>} lights - An array of lights.\n   * @return {LightsNode} A reference to this node.\n   */\n  setLights(e) {\n    return this._lights = e, this._lightNodes = null, this._lightNodesHash = null, this;\n  }\n  /**\n   * Returns an array of the scene's lights.\n   *\n   * @return {Array<Light>} The scene's lights.\n   */\n  getLights() {\n    return this._lights;\n  }\n  /**\n   * Whether the scene has lights or not.\n   *\n   * @type {Boolean}\n   */\n  get hasLights() {\n    return this._lights.length > 0;\n  }\n}\nconst Rb = (o = []) => E(new hu()).setLights(o);\nclass Cb extends G {\n  static get type() {\n    return \"ShadowBaseNode\";\n  }\n  /**\n   * Constructs a new shadow base node.\n   *\n   * @param {Light} light - The shadow casting light.\n   */\n  constructor(e) {\n    super(), this.light = e, this.updateBeforeType = z.RENDER, this.isShadowBaseNode = !0;\n  }\n  /**\n   * Setups the shadow position node which is by default the predefined TSL node object `shadowPositionWorld`.\n   *\n   * @param {(NodeBuilder|{Material})} object - A configuration object that must at least hold a material reference.\n   */\n  setupShadowPosition({ material: e }) {\n    pu.assign(e.shadowPositionNode || It);\n  }\n  /**\n   * Can be called when the shadow isn't required anymore. That can happen when\n   * a lighting node stops casting shadows by setting {@link Object3D#castShadow}\n   * to `false`.\n   */\n  dispose() {\n    this.updateBeforeType = z.NONE;\n  }\n}\nconst pu = /* @__PURE__ */ T().toVar(\"shadowPositionWorld\");\nfunction Eb(o, e = {}) {\n  return e.toneMapping = o.toneMapping, e.toneMappingExposure = o.toneMappingExposure, e.outputColorSpace = o.outputColorSpace, e.renderTarget = o.getRenderTarget(), e.activeCubeFace = o.getActiveCubeFace(), e.activeMipmapLevel = o.getActiveMipmapLevel(), e.renderObjectFunction = o.getRenderObjectFunction(), e.pixelRatio = o.getPixelRatio(), e.mrt = o.getMRT(), e.clearColor = o.getClearColor(e.clearColor || new Ct()), e.clearAlpha = o.getClearAlpha(), e.autoClear = o.autoClear, e.scissorTest = o.getScissorTest(), e;\n}\nfunction wb(o, e) {\n  return e = Eb(o, e), o.setMRT(null), o.setRenderObjectFunction(null), o.setClearColor(0, 1), o.autoClear = !0, e;\n}\nfunction Mb(o, e) {\n  o.toneMapping = e.toneMapping, o.toneMappingExposure = e.toneMappingExposure, o.outputColorSpace = e.outputColorSpace, o.setRenderTarget(e.renderTarget, e.activeCubeFace, e.activeMipmapLevel), o.setRenderObjectFunction(e.renderObjectFunction), o.setPixelRatio(e.pixelRatio), o.setMRT(e.mrt), o.setClearColor(e.clearColor, e.clearAlpha), o.autoClear = e.autoClear, o.setScissorTest(e.scissorTest);\n}\nfunction Bb(o, e = {}) {\n  return e.background = o.background, e.backgroundNode = o.backgroundNode, e.overrideMaterial = o.overrideMaterial, e;\n}\nfunction Fb(o, e) {\n  return e = Bb(o, e), o.background = null, o.backgroundNode = null, o.overrideMaterial = null, e;\n}\nfunction Ub(o, e) {\n  o.background = e.background, o.backgroundNode = e.backgroundNode, o.overrideMaterial = e.overrideMaterial;\n}\nfunction Pb(o, e, t) {\n  return t = wb(o, t), t = Fb(e, t), t;\n}\nfunction Db(o, e, t) {\n  Mb(o, t), Ub(e, t);\n}\nconst hc = /* @__PURE__ */ new WeakMap(), Ib = /* @__PURE__ */ b(([o, e, t]) => {\n  let s = It.sub(o).length();\n  return s = s.sub(e).div(t.sub(e)), s = s.saturate(), s;\n}), Lb = (o) => {\n  const e = o.shadow.camera, t = te(\"near\", \"float\", e).setGroup(O), s = te(\"far\", \"float\", e).setGroup(O), n = Nh(o);\n  return Ib(n, t, s);\n}, Vb = (o) => {\n  let e = hc.get(o);\n  if (e === void 0) {\n    const t = o.isPointLight ? Lb(o) : null;\n    e = new ge(), e.colorNode = I(0, 0, 0, 1), e.depthNode = t, e.isShadowNodeMaterial = !0, e.name = \"ShadowMaterial\", e.fog = !1, hc.set(o, e);\n  }\n  return e;\n}, Cf = /* @__PURE__ */ b(({ depthTexture: o, shadowCoord: e }) => X(o, e.xy).compare(e.z)), Ef = /* @__PURE__ */ b(({ depthTexture: o, shadowCoord: e, shadow: t }) => {\n  const s = (m, _) => X(o, m).compare(_), n = te(\"mapSize\", \"vec2\", t).setGroup(O), r = te(\"radius\", \"float\", t).setGroup(O), i = w(1).div(n), a = i.x.negate().mul(r), u = i.y.negate().mul(r), c = i.x.mul(r), l = i.y.mul(r), d = a.div(2), h = u.div(2), p = c.div(2), f = l.div(2);\n  return _e(\n    s(e.xy.add(w(a, u)), e.z),\n    s(e.xy.add(w(0, u)), e.z),\n    s(e.xy.add(w(c, u)), e.z),\n    s(e.xy.add(w(d, h)), e.z),\n    s(e.xy.add(w(0, h)), e.z),\n    s(e.xy.add(w(p, h)), e.z),\n    s(e.xy.add(w(a, 0)), e.z),\n    s(e.xy.add(w(d, 0)), e.z),\n    s(e.xy, e.z),\n    s(e.xy.add(w(p, 0)), e.z),\n    s(e.xy.add(w(c, 0)), e.z),\n    s(e.xy.add(w(d, f)), e.z),\n    s(e.xy.add(w(0, f)), e.z),\n    s(e.xy.add(w(p, f)), e.z),\n    s(e.xy.add(w(a, l)), e.z),\n    s(e.xy.add(w(0, l)), e.z),\n    s(e.xy.add(w(c, l)), e.z)\n  ).mul(1 / 17);\n}), wf = /* @__PURE__ */ b(({ depthTexture: o, shadowCoord: e, shadow: t }) => {\n  const s = (l, d) => X(o, l).compare(d), n = te(\"mapSize\", \"vec2\", t).setGroup(O), r = w(1).div(n), i = r.x, a = r.y, u = e.xy, c = kt(u.mul(n).add(0.5));\n  return u.subAssign(c.mul(r)), _e(\n    s(u, e.z),\n    s(u.add(w(i, 0)), e.z),\n    s(u.add(w(0, a)), e.z),\n    s(u.add(r), e.z),\n    Z(\n      s(u.add(w(i.negate(), 0)), e.z),\n      s(u.add(w(i.mul(2), 0)), e.z),\n      c.x\n    ),\n    Z(\n      s(u.add(w(i.negate(), a)), e.z),\n      s(u.add(w(i.mul(2), a)), e.z),\n      c.x\n    ),\n    Z(\n      s(u.add(w(0, a.negate())), e.z),\n      s(u.add(w(0, a.mul(2))), e.z),\n      c.y\n    ),\n    Z(\n      s(u.add(w(i, a.negate())), e.z),\n      s(u.add(w(i, a.mul(2))), e.z),\n      c.y\n    ),\n    Z(\n      Z(\n        s(u.add(w(i.negate(), a.negate())), e.z),\n        s(u.add(w(i.mul(2), a.negate())), e.z),\n        c.x\n      ),\n      Z(\n        s(u.add(w(i.negate(), a.mul(2))), e.z),\n        s(u.add(w(i.mul(2), a.mul(2))), e.z),\n        c.x\n      ),\n      c.y\n    )\n  ).mul(1 / 9);\n}), Mf = /* @__PURE__ */ b(({ depthTexture: o, shadowCoord: e }) => {\n  const t = g(1).toVar(), s = X(o).sample(e.xy).rg, n = di(e.z, s.x);\n  return H(n.notEqual(g(1)), () => {\n    const r = e.z.sub(s.x), i = fe(0, s.y.mul(s.y));\n    let a = i.div(i.add(r.mul(r)));\n    a = _t(K(a, 0.3).div(0.95 - 0.3)), t.assign(_t(fe(n, a)));\n  }), t;\n}), Gb = /* @__PURE__ */ b(({ samples: o, radius: e, size: t, shadowPass: s }) => {\n  const n = g(0).toVar(), r = g(0).toVar(), i = o.lessThanEqual(g(1)).select(g(0), g(2).div(o.sub(1))), a = o.lessThanEqual(g(1)).select(g(0), g(-1));\n  J({ start: y(0), end: y(o), type: \"int\", condition: \"<\" }, ({ i: c }) => {\n    const l = a.add(g(c).mul(i)), d = s.sample(_e(nr.xy, w(0, l).mul(e)).div(t)).x;\n    n.addAssign(d), r.addAssign(d.mul(d));\n  }), n.divAssign(o), r.divAssign(o);\n  const u = Et(r.sub(n.mul(n)));\n  return w(n, u);\n}), Ob = /* @__PURE__ */ b(({ samples: o, radius: e, size: t, shadowPass: s }) => {\n  const n = g(0).toVar(), r = g(0).toVar(), i = o.lessThanEqual(g(1)).select(g(0), g(2).div(o.sub(1))), a = o.lessThanEqual(g(1)).select(g(0), g(-1));\n  J({ start: y(0), end: y(o), type: \"int\", condition: \"<\" }, ({ i: c }) => {\n    const l = a.add(g(c).mul(i)), d = s.sample(_e(nr.xy, w(l, 0).mul(e)).div(t));\n    n.addAssign(d.x), r.addAssign(_e(d.y.mul(d.y), d.x.mul(d.x)));\n  }), n.divAssign(o), r.divAssign(o);\n  const u = Et(r.sub(n.mul(n)));\n  return w(n, u);\n}), kb = [Cf, Ef, wf, Mf];\nlet qi;\nconst gr = /* @__PURE__ */ new ru();\nclass Bf extends Cb {\n  static get type() {\n    return \"ShadowNode\";\n  }\n  /**\n   * Constructs a new shadow node.\n   *\n   * @param {Light} light - The shadow casting light.\n   * @param {LightShadow?} [shadow=null] - An optional light shadow.\n   */\n  constructor(e, t = null) {\n    super(e), this.shadow = t || e.shadow, this.shadowMap = null, this.vsmShadowMapVertical = null, this.vsmShadowMapHorizontal = null, this.vsmMaterialVertical = null, this.vsmMaterialHorizontal = null, this._node = null, this.isShadowNode = !0;\n  }\n  /**\n   * Setups the shadow filtering.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @param {Object} inputs - A configuration object that defines the shadow filtering.\n   * @param {Function} inputs.filterFn - This function defines the filtering type of the shadow map e.g. PCF.\n   * @param {DepthTexture} inputs.depthTexture - A reference to the shadow map's texture data.\n   * @param {Node<vec3>} inputs.shadowCoord - Shadow coordinates which are used to sample from the shadow map.\n   * @param {LightShadow} inputs.shadow - The light shadow.\n   * @return {Node<float>} The result node of the shadow filtering.\n   */\n  setupShadowFilter(e, { filterFn: t, depthTexture: s, shadowCoord: n, shadow: r }) {\n    const i = n.x.greaterThanEqual(0).and(n.x.lessThanEqual(1)).and(n.y.greaterThanEqual(0)).and(n.y.lessThanEqual(1)).and(n.z.lessThanEqual(1)), a = t({ depthTexture: s, shadowCoord: n, shadow: r });\n    return i.select(a, g(1));\n  }\n  /**\n   * Setups the shadow coordinates.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @param {Node<vec3>} shadowPosition - A node representing the shadow position.\n   * @return {Node<vec3>} The shadow coordinates.\n   */\n  setupShadowCoord(e, t) {\n    const { shadow: s } = this, { renderer: n } = e, r = te(\"bias\", \"float\", s).setGroup(O);\n    let i = t, a;\n    if (s.camera.isOrthographicCamera || n.logarithmicDepthBuffer !== !0)\n      i = i.xyz.div(i.w), a = i.z, n.coordinateSystem === sn && (a = a.mul(2).sub(1));\n    else {\n      const u = i.w;\n      i = i.xy.div(u);\n      const c = te(\"near\", \"float\", s.camera).setGroup(O), l = te(\"far\", \"float\", s.camera).setGroup(O);\n      a = Ka(u.negate(), c, l);\n    }\n    return i = T(\n      i.x,\n      i.y.oneMinus(),\n      // follow webgpu standards\n      a.add(r)\n    ), i;\n  }\n  /**\n   * Returns the shadow filtering function for the given shadow type.\n   *\n   * @param {Number} type - The shadow type.\n   * @return {Function} The filtering function.\n   */\n  getShadowFilterFn(e) {\n    return kb[e];\n  }\n  /**\n   * Setups the shadow output node.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @return {Node<vec3>} The shadow output node.\n   */\n  setupShadow(e) {\n    const { renderer: t } = e, { light: s, shadow: n } = this, r = t.shadowMap.type, i = new ys(n.mapSize.width, n.mapSize.height);\n    i.compareFunction = ia;\n    const a = e.createRenderTarget(n.mapSize.width, n.mapSize.height);\n    if (a.depthTexture = i, n.camera.updateProjectionMatrix(), r === or) {\n      i.compareFunction = null, this.vsmShadowMapVertical = e.createRenderTarget(n.mapSize.width, n.mapSize.height, { format: Bn, type: at }), this.vsmShadowMapHorizontal = e.createRenderTarget(n.mapSize.width, n.mapSize.height, { format: Bn, type: at });\n      const S = X(i), A = X(this.vsmShadowMapVertical.texture), M = te(\"blurSamples\", \"float\", n).setGroup(O), F = te(\"radius\", \"float\", n).setGroup(O), D = te(\"mapSize\", \"vec2\", n).setGroup(O);\n      let P = this.vsmMaterialVertical || (this.vsmMaterialVertical = new ge());\n      P.fragmentNode = Gb({ samples: M, radius: F, size: D, shadowPass: S }).context(e.getSharedContext()), P.name = \"VSMVertical\", P = this.vsmMaterialHorizontal || (this.vsmMaterialHorizontal = new ge()), P.fragmentNode = Ob({ samples: M, radius: F, size: D, shadowPass: A }).context(e.getSharedContext()), P.name = \"VSMHorizontal\";\n    }\n    const u = te(\"intensity\", \"float\", n).setGroup(O), c = te(\"normalBias\", \"float\", n).setGroup(O), l = cu(s).mul(pu.add(yi.mul(c))), d = this.setupShadowCoord(e, l), h = n.filterNode || this.getShadowFilterFn(t.shadowMap.type) || null;\n    if (h === null)\n      throw new Error(\"THREE.WebGPURenderer: Shadow map type not supported yet.\");\n    const p = r === or ? this.vsmShadowMapHorizontal.texture : i, f = this.setupShadowFilter(e, { filterFn: h, shadowTexture: a.texture, depthTexture: p, shadowCoord: d, shadow: n }), m = X(a.texture, d), _ = Z(1, f.rgb.mix(m, 1), u.mul(m.a)).toVar();\n    return this.shadowMap = a, this.shadow.map = a, _;\n  }\n  /**\n   * The implementation performs the setup of the output node. An output is only\n   * produces if shadow mapping is globally enabled in the renderer.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @return {ShaderCallNodeInternal} The output node.\n   */\n  setup(e) {\n    if (e.renderer.shadowMap.enabled !== !1)\n      return b(() => {\n        let t = this._node;\n        return this.setupShadowPosition(e), t === null && (this._node = t = this.setupShadow(e)), e.material.shadowNode && console.warn('THREE.NodeMaterial: \".shadowNode\" is deprecated. Use \".castShadowNode\" instead.'), e.material.receivedShadowNode && (t = e.material.receivedShadowNode(t)), t;\n      })();\n  }\n  /**\n   * Renders the shadow. The logic of this function could be included\n   * into {@link ShadowNode#updateShadow} however more specialized shadow\n   * nodes might require a custom shadow map rendering. By having a\n   * dedicated method, it's easier to overwrite the default behavior.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  renderShadow(e) {\n    const { shadow: t, shadowMap: s, light: n } = this, { renderer: r, scene: i } = e;\n    t.updateMatrices(n), s.setSize(t.mapSize.width, t.mapSize.height), r.render(i, t.camera);\n  }\n  /**\n   * Updates the shadow.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  updateShadow(e) {\n    const { shadowMap: t, light: s, shadow: n } = this, { renderer: r, scene: i, camera: a } = e, u = r.shadowMap.type, c = t.depthTexture.version;\n    this._depthVersionCached = c, n.camera.layers.mask = a.layers.mask;\n    const l = r.getRenderObjectFunction(), d = r.getMRT(), h = d ? d.has(\"velocity\") : !1;\n    qi = Pb(r, i, qi), i.overrideMaterial = Vb(s), r.setRenderObjectFunction((p, f, m, _, S, A, ...M) => {\n      (p.castShadow === !0 || p.receiveShadow && u === or) && (h && (Dl(p).useVelocity = !0), p.onBeforeShadow(r, p, a, n.camera, _, f.overrideMaterial, A), r.renderObject(p, f, m, _, S, A, ...M), p.onAfterShadow(r, p, a, n.camera, _, f.overrideMaterial, A));\n    }), r.setRenderTarget(t), this.renderShadow(e), r.setRenderObjectFunction(l), s.isPointLight !== !0 && u === or && this.vsmPass(r), Db(r, i, qi);\n  }\n  /**\n   * For VSM additional render passes are required.\n   *\n   * @param {Renderer} renderer - A reference to the current renderer.\n   */\n  vsmPass(e) {\n    const { shadow: t } = this;\n    this.vsmShadowMapVertical.setSize(t.mapSize.width, t.mapSize.height), this.vsmShadowMapHorizontal.setSize(t.mapSize.width, t.mapSize.height), e.setRenderTarget(this.vsmShadowMapVertical), gr.material = this.vsmMaterialVertical, gr.render(e), e.setRenderTarget(this.vsmShadowMapHorizontal), gr.material = this.vsmMaterialHorizontal, gr.render(e);\n  }\n  /**\n   * Frees the internal resources of this shadow node.\n   */\n  dispose() {\n    this.shadowMap.dispose(), this.shadowMap = null, this.vsmShadowMapVertical !== null && (this.vsmShadowMapVertical.dispose(), this.vsmShadowMapVertical = null, this.vsmMaterialVertical.dispose(), this.vsmMaterialVertical = null), this.vsmShadowMapHorizontal !== null && (this.vsmShadowMapHorizontal.dispose(), this.vsmShadowMapHorizontal = null, this.vsmMaterialHorizontal.dispose(), this.vsmMaterialHorizontal = null), super.dispose();\n  }\n  /**\n   * The implementation performs the update of the shadow map if necessary.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  updateBefore(e) {\n    const { shadow: t } = this;\n    (t.needsUpdate || t.autoUpdate) && (this.updateShadow(e), this.shadowMap.depthTexture.version === this._depthVersionCached && (t.needsUpdate = !1));\n  }\n}\nconst Ff = (o, e) => E(new Bf(o, e));\nclass bs extends on {\n  static get type() {\n    return \"AnalyticLightNode\";\n  }\n  /**\n   * Constructs a new analytic light node.\n   *\n   * @param {Light?} [light=null] - The light source.\n   */\n  constructor(e = null) {\n    super(), this.light = e, this.color = new Ct(), this.colorNode = e && e.colorNode || L(this.color).setGroup(O), this.baseColorNode = null, this.shadowNode = null, this.shadowColorNode = null, this.isAnalyticLightNode = !0, this.updateType = z.FRAME;\n  }\n  /**\n   * Overwrites the default {@link Node#customCacheKey} implementation by including the\n   * `light.id` and `light.castShadow` into the cache key.\n   *\n   * @return {Number} The custom cache key.\n   */\n  customCacheKey() {\n    return aa(this.light.id, this.light.castShadow ? 1 : 0);\n  }\n  getHash() {\n    return this.light.uuid;\n  }\n  /**\n   * Setups the shadow node for this light. The method exists so concrete light classes\n   * can setup different types of shadow nodes.\n   *\n   * @return {ShadowNode} The created shadow node.\n   */\n  setupShadowNode() {\n    return Ff(this.light);\n  }\n  /**\n   * Setups the shadow for this light. This method is only executed if the light\n   * cast shadows and the current build object receives shadows. It incorporates\n   * shadows into the lighting computation.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setupShadow(e) {\n    const { renderer: t } = e;\n    if (t.shadowMap.enabled === !1) return;\n    let s = this.shadowColorNode;\n    if (s === null) {\n      const n = this.light.shadow.shadowNode;\n      let r;\n      n !== void 0 ? r = E(n) : r = this.setupShadowNode(e), this.shadowNode = r, this.shadowColorNode = s = this.colorNode.mul(r), this.baseColorNode = this.colorNode;\n    }\n    this.colorNode = s;\n  }\n  /**\n   * Unlike most other nodes, lighting nodes do not return a output node in {@link Node#setup}.\n   * The main purpose of lighting nodes is to configure the current {@link LightingModel} and/or\n   * invocate the respective interface methods.\n   *\n   * @param {NodeBuilder} builder - The current node builder.\n   */\n  setup(e) {\n    this.colorNode = this.baseColorNode || this.colorNode, this.light.castShadow ? e.object.receiveShadow && this.setupShadow(e) : this.shadowNode !== null && (this.shadowNode.dispose(), this.shadowNode = null, this.shadowColorNode = null);\n  }\n  /**\n   * The update method is used to update light uniforms per frame.\n   * Potentially overwritten in concrete light nodes to update light\n   * specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update() {\n    const { light: e } = this;\n    this.color.copy(e.color).multiplyScalar(e.intensity);\n  }\n}\nconst fu = /* @__PURE__ */ b((o) => {\n  const { lightDistance: e, cutoffDistance: t, decayExponent: s } = o, n = e.pow(s).max(0.01).reciprocal();\n  return t.greaterThan(0).select(\n    n.mul(e.div(t).pow4().oneMinus().clamp().pow2()),\n    n\n  );\n}), zb = /* @__PURE__ */ new Ct(), dt = /* @__PURE__ */ b(([o, e]) => {\n  const t = o.toVar(), s = re(t), n = ut(1, fe(s.x, fe(s.y, s.z)));\n  s.mulAssign(n), t.mulAssign(n.mul(e.mul(2).oneMinus()));\n  const r = w(t.xy).toVar(), a = e.mul(1.5).oneMinus();\n  return H(s.z.greaterThanEqual(a), () => {\n    H(t.z.greaterThan(0), () => {\n      r.x.assign(K(4, t.x));\n    });\n  }).ElseIf(s.x.greaterThanEqual(a), () => {\n    const u = On(t.x);\n    r.x.assign(t.z.mul(u).add(u.mul(2)));\n  }).ElseIf(s.y.greaterThanEqual(a), () => {\n    const u = On(t.y);\n    r.x.assign(t.x.add(u.mul(2)).add(2)), r.y.assign(t.z.mul(u).sub(2));\n  }), w(0.125, 0.25).mul(r).add(w(0.375, 0.75)).flipY();\n}).setLayout({\n  name: \"cubeToUV\",\n  type: \"vec2\",\n  inputs: [\n    { name: \"pos\", type: \"vec3\" },\n    { name: \"texelSizeY\", type: \"float\" }\n  ]\n}), $b = /* @__PURE__ */ b(({ depthTexture: o, bd3D: e, dp: t, texelSize: s }) => X(o, dt(e, s.y)).compare(t)), Wb = /* @__PURE__ */ b(({ depthTexture: o, bd3D: e, dp: t, texelSize: s, shadow: n }) => {\n  const r = te(\"radius\", \"float\", n).setGroup(O), i = w(-1, 1).mul(r).mul(s.y);\n  return X(o, dt(e.add(i.xyy), s.y)).compare(t).add(X(o, dt(e.add(i.yyy), s.y)).compare(t)).add(X(o, dt(e.add(i.xyx), s.y)).compare(t)).add(X(o, dt(e.add(i.yyx), s.y)).compare(t)).add(X(o, dt(e, s.y)).compare(t)).add(X(o, dt(e.add(i.xxy), s.y)).compare(t)).add(X(o, dt(e.add(i.yxy), s.y)).compare(t)).add(X(o, dt(e.add(i.xxx), s.y)).compare(t)).add(X(o, dt(e.add(i.yxx), s.y)).compare(t)).mul(1 / 9);\n}), Hb = /* @__PURE__ */ b(({ filterFn: o, depthTexture: e, shadowCoord: t, shadow: s }) => {\n  const n = t.xyz.toVar(), r = n.length(), i = L(\"float\").setGroup(O).onRenderUpdate(() => s.camera.near), a = L(\"float\").setGroup(O).onRenderUpdate(() => s.camera.far), u = te(\"bias\", \"float\", s).setGroup(O), c = L(s.mapSize).setGroup(O), l = g(1).toVar();\n  return H(r.sub(a).lessThanEqual(0).and(r.sub(i).greaterThanEqual(0)), () => {\n    const d = r.sub(i).div(a.sub(i)).toVar();\n    d.addAssign(u);\n    const h = n.normalize(), p = w(1).div(c.mul(w(4, 2)));\n    l.assign(o({ depthTexture: e, bd3D: h, dp: d, texelSize: p, shadow: s }));\n  }), l;\n}), pc = /* @__PURE__ */ new Ce(), Es = /* @__PURE__ */ new He(), gn = /* @__PURE__ */ new He();\nclass qb extends Bf {\n  static get type() {\n    return \"PointShadowNode\";\n  }\n  /**\n   * Constructs a new point shadow node.\n   *\n   * @param {PointLight} light - The shadow casting point light.\n   * @param {PointLightShadow?} [shadow=null] - An optional point light shadow.\n   */\n  constructor(e, t = null) {\n    super(e, t);\n  }\n  /**\n   * Overwrites the default implementation to return point light shadow specific\n   * filtering functions.\n   *\n   * @param {Number} type - The shadow type.\n   * @return {Function} The filtering function.\n   */\n  getShadowFilterFn(e) {\n    return e === Am ? $b : Wb;\n  }\n  /**\n   * Overwrites the default implementation so the unaltered shadow position is used.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @param {Node<vec3>} shadowPosition - A node representing the shadow position.\n   * @return {Node<vec3>} The shadow coordinates.\n   */\n  setupShadowCoord(e, t) {\n    return t;\n  }\n  /**\n   * Overwrites the default implementation to only use point light specific\n   * shadow filter functions.\n   *\n   * @param {NodeBuilder} builder - A reference to the current node builder.\n   * @param {Object} inputs - A configuration object that defines the shadow filtering.\n   * @param {Function} inputs.filterFn - This function defines the filtering type of the shadow map e.g. PCF.\n   * @param {Texture} inputs.shadowTexture - A reference to the shadow map's texture.\n   * @param {DepthTexture} inputs.depthTexture - A reference to the shadow map's texture data.\n   * @param {Node<vec3>} inputs.shadowCoord - Shadow coordinates which are used to sample from the shadow map.\n   * @param {LightShadow} inputs.shadow - The light shadow.\n   * @return {Node<float>} The result node of the shadow filtering.\n   */\n  setupShadowFilter(e, { filterFn: t, shadowTexture: s, depthTexture: n, shadowCoord: r, shadow: i }) {\n    return Hb({ filterFn: t, shadowTexture: s, depthTexture: n, shadowCoord: r, shadow: i });\n  }\n  /**\n   * Overwrites the default implementation with point light specific\n   * rendering code.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  renderShadow(e) {\n    const { shadow: t, shadowMap: s, light: n } = this, { renderer: r, scene: i } = e, a = t.getFrameExtents();\n    gn.copy(t.mapSize), gn.multiply(a), s.setSize(gn.width, gn.height), Es.copy(t.mapSize);\n    const u = r.autoClear, c = r.getClearColor(zb), l = r.getClearAlpha();\n    r.autoClear = !1, r.setClearColor(t.clearColor, t.clearAlpha), r.clear();\n    const d = t.getViewportCount();\n    for (let h = 0; h < d; h++) {\n      const p = t.getViewport(h), f = Es.x * p.x, m = gn.y - Es.y - Es.y * p.y;\n      pc.set(\n        f,\n        m,\n        Es.x * p.z,\n        Es.y * p.w\n      ), s.viewport.copy(pc), t.updateMatrices(n, h), r.render(i, t.camera);\n    }\n    r.autoClear = u, r.setClearColor(c, l);\n  }\n}\nconst Xb = (o, e) => E(new qb(o, e)), Uf = b(({ color: o, lightViewPosition: e, cutoffDistance: t, decayExponent: s }, n) => {\n  const r = n.context.lightingModel, i = e.sub(xe), a = i.normalize(), u = i.length(), c = fu({\n    lightDistance: u,\n    cutoffDistance: t,\n    decayExponent: s\n  }), l = o.mul(c), d = n.context.reflectedLight;\n  r.direct({\n    lightDirection: a,\n    lightColor: l,\n    reflectedLight: d\n  }, n.stack, n);\n});\nclass Kb extends bs {\n  static get type() {\n    return \"PointLightNode\";\n  }\n  /**\n   * Constructs a new point light node.\n   *\n   * @param {PointLight?} [light=null] - The point light source.\n   */\n  constructor(e = null) {\n    super(e), this.cutoffDistanceNode = L(0).setGroup(O), this.decayExponentNode = L(2).setGroup(O);\n  }\n  /**\n   * Overwritten to updated point light specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update(e) {\n    const { light: t } = this;\n    super.update(e), this.cutoffDistanceNode.value = t.distance, this.decayExponentNode.value = t.decay;\n  }\n  /**\n   * Overwritten to setup point light specific shadow.\n   *\n   * @return {PointShadowNode}\n   */\n  setupShadowNode() {\n    return Xb(this.light);\n  }\n  setup(e) {\n    super.setup(e), Uf({\n      color: this.colorNode,\n      lightViewPosition: Ri(this.light),\n      cutoffDistance: this.cutoffDistanceNode,\n      decayExponent: this.decayExponentNode\n    }).append();\n  }\n}\nconst Yb = /* @__PURE__ */ b(([o = le()]) => {\n  const e = o.mul(2), t = e.x.floor(), s = e.y.floor();\n  return t.add(s).mod(2).sign();\n}), Cn = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = g(t).toVar(), n = g(e).toVar(), r = Vt(o).toVar();\n  return Me(r, n, s);\n}).setLayout({\n  name: \"mx_select\",\n  type: \"float\",\n  inputs: [\n    { name: \"b\", type: \"bool\" },\n    { name: \"t\", type: \"float\" },\n    { name: \"f\", type: \"float\" }\n  ]\n}), Yr = /* @__PURE__ */ b(([o, e]) => {\n  const t = Vt(e).toVar(), s = g(o).toVar();\n  return Me(t, s.negate(), s);\n}).setLayout({\n  name: \"mx_negate_if\",\n  type: \"float\",\n  inputs: [\n    { name: \"val\", type: \"float\" },\n    { name: \"b\", type: \"bool\" }\n  ]\n}), Te = /* @__PURE__ */ b(([o]) => {\n  const e = g(o).toVar();\n  return y(yt(e));\n}).setLayout({\n  name: \"mx_floor\",\n  type: \"int\",\n  inputs: [\n    { name: \"x\", type: \"float\" }\n  ]\n}), ue = /* @__PURE__ */ b(([o, e]) => {\n  const t = g(o).toVar();\n  return e.assign(Te(t)), t.sub(g(e));\n}), jb = /* @__PURE__ */ b(([o, e, t, s, n, r]) => {\n  const i = g(r).toVar(), a = g(n).toVar(), u = g(s).toVar(), c = g(t).toVar(), l = g(e).toVar(), d = g(o).toVar(), h = g(K(1, a)).toVar();\n  return K(1, i).mul(d.mul(h).add(l.mul(a))).add(i.mul(c.mul(h).add(u.mul(a))));\n}).setLayout({\n  name: \"mx_bilerp_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"v0\", type: \"float\" },\n    { name: \"v1\", type: \"float\" },\n    { name: \"v2\", type: \"float\" },\n    { name: \"v3\", type: \"float\" },\n    { name: \"s\", type: \"float\" },\n    { name: \"t\", type: \"float\" }\n  ]\n}), Qb = /* @__PURE__ */ b(([o, e, t, s, n, r]) => {\n  const i = g(r).toVar(), a = g(n).toVar(), u = T(s).toVar(), c = T(t).toVar(), l = T(e).toVar(), d = T(o).toVar(), h = g(K(1, a)).toVar();\n  return K(1, i).mul(d.mul(h).add(l.mul(a))).add(i.mul(c.mul(h).add(u.mul(a))));\n}).setLayout({\n  name: \"mx_bilerp_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"v0\", type: \"vec3\" },\n    { name: \"v1\", type: \"vec3\" },\n    { name: \"v2\", type: \"vec3\" },\n    { name: \"v3\", type: \"vec3\" },\n    { name: \"s\", type: \"float\" },\n    { name: \"t\", type: \"float\" }\n  ]\n}), Pf = /* @__PURE__ */ Be([jb, Qb]), Zb = /* @__PURE__ */ b(([o, e, t, s, n, r, i, a, u, c, l]) => {\n  const d = g(l).toVar(), h = g(c).toVar(), p = g(u).toVar(), f = g(a).toVar(), m = g(i).toVar(), _ = g(r).toVar(), S = g(n).toVar(), A = g(s).toVar(), M = g(t).toVar(), F = g(e).toVar(), D = g(o).toVar(), P = g(K(1, p)).toVar(), V = g(K(1, h)).toVar();\n  return g(K(1, d)).toVar().mul(V.mul(D.mul(P).add(F.mul(p))).add(h.mul(M.mul(P).add(A.mul(p))))).add(d.mul(V.mul(S.mul(P).add(_.mul(p))).add(h.mul(m.mul(P).add(f.mul(p))))));\n}).setLayout({\n  name: \"mx_trilerp_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"v0\", type: \"float\" },\n    { name: \"v1\", type: \"float\" },\n    { name: \"v2\", type: \"float\" },\n    { name: \"v3\", type: \"float\" },\n    { name: \"v4\", type: \"float\" },\n    { name: \"v5\", type: \"float\" },\n    { name: \"v6\", type: \"float\" },\n    { name: \"v7\", type: \"float\" },\n    { name: \"s\", type: \"float\" },\n    { name: \"t\", type: \"float\" },\n    { name: \"r\", type: \"float\" }\n  ]\n}), Jb = /* @__PURE__ */ b(([o, e, t, s, n, r, i, a, u, c, l]) => {\n  const d = g(l).toVar(), h = g(c).toVar(), p = g(u).toVar(), f = T(a).toVar(), m = T(i).toVar(), _ = T(r).toVar(), S = T(n).toVar(), A = T(s).toVar(), M = T(t).toVar(), F = T(e).toVar(), D = T(o).toVar(), P = g(K(1, p)).toVar(), V = g(K(1, h)).toVar();\n  return g(K(1, d)).toVar().mul(V.mul(D.mul(P).add(F.mul(p))).add(h.mul(M.mul(P).add(A.mul(p))))).add(d.mul(V.mul(S.mul(P).add(_.mul(p))).add(h.mul(m.mul(P).add(f.mul(p))))));\n}).setLayout({\n  name: \"mx_trilerp_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"v0\", type: \"vec3\" },\n    { name: \"v1\", type: \"vec3\" },\n    { name: \"v2\", type: \"vec3\" },\n    { name: \"v3\", type: \"vec3\" },\n    { name: \"v4\", type: \"vec3\" },\n    { name: \"v5\", type: \"vec3\" },\n    { name: \"v6\", type: \"vec3\" },\n    { name: \"v7\", type: \"vec3\" },\n    { name: \"s\", type: \"float\" },\n    { name: \"t\", type: \"float\" },\n    { name: \"r\", type: \"float\" }\n  ]\n}), Df = /* @__PURE__ */ Be([Zb, Jb]), eS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = g(t).toVar(), n = g(e).toVar(), r = U(o).toVar(), i = U(r.bitAnd(U(7))).toVar(), a = g(Cn(i.lessThan(U(4)), n, s)).toVar(), u = g($(2, Cn(i.lessThan(U(4)), s, n))).toVar();\n  return Yr(a, Vt(i.bitAnd(U(1)))).add(Yr(u, Vt(i.bitAnd(U(2)))));\n}).setLayout({\n  name: \"mx_gradient_float_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"hash\", type: \"uint\" },\n    { name: \"x\", type: \"float\" },\n    { name: \"y\", type: \"float\" }\n  ]\n}), tS = /* @__PURE__ */ b(([o, e, t, s]) => {\n  const n = g(s).toVar(), r = g(t).toVar(), i = g(e).toVar(), a = U(o).toVar(), u = U(a.bitAnd(U(15))).toVar(), c = g(Cn(u.lessThan(U(8)), i, r)).toVar(), l = g(Cn(u.lessThan(U(4)), r, Cn(u.equal(U(12)).or(u.equal(U(14))), i, n))).toVar();\n  return Yr(c, Vt(u.bitAnd(U(1)))).add(Yr(l, Vt(u.bitAnd(U(2)))));\n}).setLayout({\n  name: \"mx_gradient_float_1\",\n  type: \"float\",\n  inputs: [\n    { name: \"hash\", type: \"uint\" },\n    { name: \"x\", type: \"float\" },\n    { name: \"y\", type: \"float\" },\n    { name: \"z\", type: \"float\" }\n  ]\n}), Re = /* @__PURE__ */ Be([eS, tS]), sS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = g(t).toVar(), n = g(e).toVar(), r = nn(o).toVar();\n  return T(Re(r.x, n, s), Re(r.y, n, s), Re(r.z, n, s));\n}).setLayout({\n  name: \"mx_gradient_vec3_0\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"hash\", type: \"uvec3\" },\n    { name: \"x\", type: \"float\" },\n    { name: \"y\", type: \"float\" }\n  ]\n}), nS = /* @__PURE__ */ b(([o, e, t, s]) => {\n  const n = g(s).toVar(), r = g(t).toVar(), i = g(e).toVar(), a = nn(o).toVar();\n  return T(Re(a.x, i, r, n), Re(a.y, i, r, n), Re(a.z, i, r, n));\n}).setLayout({\n  name: \"mx_gradient_vec3_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"hash\", type: \"uvec3\" },\n    { name: \"x\", type: \"float\" },\n    { name: \"y\", type: \"float\" },\n    { name: \"z\", type: \"float\" }\n  ]\n}), Je = /* @__PURE__ */ Be([sS, nS]), rS = /* @__PURE__ */ b(([o]) => {\n  const e = g(o).toVar();\n  return $(0.6616, e);\n}).setLayout({\n  name: \"mx_gradient_scale2d_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"v\", type: \"float\" }\n  ]\n}), iS = /* @__PURE__ */ b(([o]) => {\n  const e = g(o).toVar();\n  return $(0.982, e);\n}).setLayout({\n  name: \"mx_gradient_scale3d_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"v\", type: \"float\" }\n  ]\n}), oS = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar();\n  return $(0.6616, e);\n}).setLayout({\n  name: \"mx_gradient_scale2d_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"v\", type: \"vec3\" }\n  ]\n}), If = /* @__PURE__ */ Be([rS, oS]), aS = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar();\n  return $(0.982, e);\n}).setLayout({\n  name: \"mx_gradient_scale3d_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"v\", type: \"vec3\" }\n  ]\n}), Lf = /* @__PURE__ */ Be([iS, aS]), Qe = /* @__PURE__ */ b(([o, e]) => {\n  const t = y(e).toVar(), s = U(o).toVar();\n  return s.shiftLeft(t).bitOr(s.shiftRight(y(32).sub(t)));\n}).setLayout({\n  name: \"mx_rotl32\",\n  type: \"uint\",\n  inputs: [\n    { name: \"x\", type: \"uint\" },\n    { name: \"k\", type: \"int\" }\n  ]\n}), Vf = /* @__PURE__ */ b(([o, e, t]) => {\n  o.subAssign(t), o.bitXorAssign(Qe(t, y(4))), t.addAssign(e), e.subAssign(o), e.bitXorAssign(Qe(o, y(6))), o.addAssign(t), t.subAssign(e), t.bitXorAssign(Qe(e, y(8))), e.addAssign(o), o.subAssign(t), o.bitXorAssign(Qe(t, y(16))), t.addAssign(e), e.subAssign(o), e.bitXorAssign(Qe(o, y(19))), o.addAssign(t), t.subAssign(e), t.bitXorAssign(Qe(e, y(4))), e.addAssign(o);\n}), ir = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = U(t).toVar(), n = U(e).toVar(), r = U(o).toVar();\n  return s.bitXorAssign(n), s.subAssign(Qe(n, y(14))), r.bitXorAssign(s), r.subAssign(Qe(s, y(11))), n.bitXorAssign(r), n.subAssign(Qe(r, y(25))), s.bitXorAssign(n), s.subAssign(Qe(n, y(16))), r.bitXorAssign(s), r.subAssign(Qe(s, y(4))), n.bitXorAssign(r), n.subAssign(Qe(r, y(14))), s.bitXorAssign(n), s.subAssign(Qe(n, y(24))), s;\n}).setLayout({\n  name: \"mx_bjfinal\",\n  type: \"uint\",\n  inputs: [\n    { name: \"a\", type: \"uint\" },\n    { name: \"b\", type: \"uint\" },\n    { name: \"c\", type: \"uint\" }\n  ]\n}), Ie = /* @__PURE__ */ b(([o]) => {\n  const e = U(o).toVar();\n  return g(e).div(g(U(y(4294967295))));\n}).setLayout({\n  name: \"mx_bits_to_01\",\n  type: \"float\",\n  inputs: [\n    { name: \"bits\", type: \"uint\" }\n  ]\n}), xt = /* @__PURE__ */ b(([o]) => {\n  const e = g(o).toVar();\n  return e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10));\n}).setLayout({\n  name: \"mx_fade\",\n  type: \"float\",\n  inputs: [\n    { name: \"t\", type: \"float\" }\n  ]\n}), uS = /* @__PURE__ */ b(([o]) => {\n  const e = y(o).toVar(), t = U(U(1)).toVar(), s = U(U(y(3735928559)).add(t.shiftLeft(U(2))).add(U(13))).toVar();\n  return ir(s.add(U(e)), s, s);\n}).setLayout({\n  name: \"mx_hash_int_0\",\n  type: \"uint\",\n  inputs: [\n    { name: \"x\", type: \"int\" }\n  ]\n}), cS = /* @__PURE__ */ b(([o, e]) => {\n  const t = y(e).toVar(), s = y(o).toVar(), n = U(U(2)).toVar(), r = U().toVar(), i = U().toVar(), a = U().toVar();\n  return r.assign(i.assign(a.assign(U(y(3735928559)).add(n.shiftLeft(U(2))).add(U(13))))), r.addAssign(U(s)), i.addAssign(U(t)), ir(r, i, a);\n}).setLayout({\n  name: \"mx_hash_int_1\",\n  type: \"uint\",\n  inputs: [\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" }\n  ]\n}), lS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = y(e).toVar(), r = y(o).toVar(), i = U(U(3)).toVar(), a = U().toVar(), u = U().toVar(), c = U().toVar();\n  return a.assign(u.assign(c.assign(U(y(3735928559)).add(i.shiftLeft(U(2))).add(U(13))))), a.addAssign(U(r)), u.addAssign(U(n)), c.addAssign(U(s)), ir(a, u, c);\n}).setLayout({\n  name: \"mx_hash_int_2\",\n  type: \"uint\",\n  inputs: [\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" },\n    { name: \"z\", type: \"int\" }\n  ]\n}), dS = /* @__PURE__ */ b(([o, e, t, s]) => {\n  const n = y(s).toVar(), r = y(t).toVar(), i = y(e).toVar(), a = y(o).toVar(), u = U(U(4)).toVar(), c = U().toVar(), l = U().toVar(), d = U().toVar();\n  return c.assign(l.assign(d.assign(U(y(3735928559)).add(u.shiftLeft(U(2))).add(U(13))))), c.addAssign(U(a)), l.addAssign(U(i)), d.addAssign(U(r)), Vf(c, l, d), c.addAssign(U(n)), ir(c, l, d);\n}).setLayout({\n  name: \"mx_hash_int_3\",\n  type: \"uint\",\n  inputs: [\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" },\n    { name: \"z\", type: \"int\" },\n    { name: \"xx\", type: \"int\" }\n  ]\n}), hS = /* @__PURE__ */ b(([o, e, t, s, n]) => {\n  const r = y(n).toVar(), i = y(s).toVar(), a = y(t).toVar(), u = y(e).toVar(), c = y(o).toVar(), l = U(U(5)).toVar(), d = U().toVar(), h = U().toVar(), p = U().toVar();\n  return d.assign(h.assign(p.assign(U(y(3735928559)).add(l.shiftLeft(U(2))).add(U(13))))), d.addAssign(U(c)), h.addAssign(U(u)), p.addAssign(U(a)), Vf(d, h, p), d.addAssign(U(i)), h.addAssign(U(r)), ir(d, h, p);\n}).setLayout({\n  name: \"mx_hash_int_4\",\n  type: \"uint\",\n  inputs: [\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" },\n    { name: \"z\", type: \"int\" },\n    { name: \"xx\", type: \"int\" },\n    { name: \"yy\", type: \"int\" }\n  ]\n}), se = /* @__PURE__ */ Be([uS, cS, lS, dS, hS]), pS = /* @__PURE__ */ b(([o, e]) => {\n  const t = y(e).toVar(), s = y(o).toVar(), n = U(se(s, t)).toVar(), r = nn().toVar();\n  return r.x.assign(n.bitAnd(y(255))), r.y.assign(n.shiftRight(y(8)).bitAnd(y(255))), r.z.assign(n.shiftRight(y(16)).bitAnd(y(255))), r;\n}).setLayout({\n  name: \"mx_hash_vec3_0\",\n  type: \"uvec3\",\n  inputs: [\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" }\n  ]\n}), fS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = y(e).toVar(), r = y(o).toVar(), i = U(se(r, n, s)).toVar(), a = nn().toVar();\n  return a.x.assign(i.bitAnd(y(255))), a.y.assign(i.shiftRight(y(8)).bitAnd(y(255))), a.z.assign(i.shiftRight(y(16)).bitAnd(y(255))), a;\n}).setLayout({\n  name: \"mx_hash_vec3_1\",\n  type: \"uvec3\",\n  inputs: [\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" },\n    { name: \"z\", type: \"int\" }\n  ]\n}), et = /* @__PURE__ */ Be([pS, fS]), gS = /* @__PURE__ */ b(([o]) => {\n  const e = w(o).toVar(), t = y().toVar(), s = y().toVar(), n = g(ue(e.x, t)).toVar(), r = g(ue(e.y, s)).toVar(), i = g(xt(n)).toVar(), a = g(xt(r)).toVar(), u = g(Pf(Re(se(t, s), n, r), Re(se(t.add(y(1)), s), n.sub(1), r), Re(se(t, s.add(y(1))), n, r.sub(1)), Re(se(t.add(y(1)), s.add(y(1))), n.sub(1), r.sub(1)), i, a)).toVar();\n  return If(u);\n}).setLayout({\n  name: \"mx_perlin_noise_float_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" }\n  ]\n}), mS = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar(), t = y().toVar(), s = y().toVar(), n = y().toVar(), r = g(ue(e.x, t)).toVar(), i = g(ue(e.y, s)).toVar(), a = g(ue(e.z, n)).toVar(), u = g(xt(r)).toVar(), c = g(xt(i)).toVar(), l = g(xt(a)).toVar(), d = g(Df(Re(se(t, s, n), r, i, a), Re(se(t.add(y(1)), s, n), r.sub(1), i, a), Re(se(t, s.add(y(1)), n), r, i.sub(1), a), Re(se(t.add(y(1)), s.add(y(1)), n), r.sub(1), i.sub(1), a), Re(se(t, s, n.add(y(1))), r, i, a.sub(1)), Re(se(t.add(y(1)), s, n.add(y(1))), r.sub(1), i, a.sub(1)), Re(se(t, s.add(y(1)), n.add(y(1))), r, i.sub(1), a.sub(1)), Re(se(t.add(y(1)), s.add(y(1)), n.add(y(1))), r.sub(1), i.sub(1), a.sub(1)), u, c, l)).toVar();\n  return Lf(d);\n}).setLayout({\n  name: \"mx_perlin_noise_float_1\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" }\n  ]\n}), gu = /* @__PURE__ */ Be([gS, mS]), yS = /* @__PURE__ */ b(([o]) => {\n  const e = w(o).toVar(), t = y().toVar(), s = y().toVar(), n = g(ue(e.x, t)).toVar(), r = g(ue(e.y, s)).toVar(), i = g(xt(n)).toVar(), a = g(xt(r)).toVar(), u = T(Pf(Je(et(t, s), n, r), Je(et(t.add(y(1)), s), n.sub(1), r), Je(et(t, s.add(y(1))), n, r.sub(1)), Je(et(t.add(y(1)), s.add(y(1))), n.sub(1), r.sub(1)), i, a)).toVar();\n  return If(u);\n}).setLayout({\n  name: \"mx_perlin_noise_vec3_0\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" }\n  ]\n}), xS = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar(), t = y().toVar(), s = y().toVar(), n = y().toVar(), r = g(ue(e.x, t)).toVar(), i = g(ue(e.y, s)).toVar(), a = g(ue(e.z, n)).toVar(), u = g(xt(r)).toVar(), c = g(xt(i)).toVar(), l = g(xt(a)).toVar(), d = T(Df(Je(et(t, s, n), r, i, a), Je(et(t.add(y(1)), s, n), r.sub(1), i, a), Je(et(t, s.add(y(1)), n), r, i.sub(1), a), Je(et(t.add(y(1)), s.add(y(1)), n), r.sub(1), i.sub(1), a), Je(et(t, s, n.add(y(1))), r, i, a.sub(1)), Je(et(t.add(y(1)), s, n.add(y(1))), r.sub(1), i, a.sub(1)), Je(et(t, s.add(y(1)), n.add(y(1))), r, i.sub(1), a.sub(1)), Je(et(t.add(y(1)), s.add(y(1)), n.add(y(1))), r.sub(1), i.sub(1), a.sub(1)), u, c, l)).toVar();\n  return Lf(d);\n}).setLayout({\n  name: \"mx_perlin_noise_vec3_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" }\n  ]\n}), mu = /* @__PURE__ */ Be([yS, xS]), TS = /* @__PURE__ */ b(([o]) => {\n  const e = g(o).toVar(), t = y(Te(e)).toVar();\n  return Ie(se(t));\n}).setLayout({\n  name: \"mx_cell_noise_float_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"float\" }\n  ]\n}), _S = /* @__PURE__ */ b(([o]) => {\n  const e = w(o).toVar(), t = y(Te(e.x)).toVar(), s = y(Te(e.y)).toVar();\n  return Ie(se(t, s));\n}).setLayout({\n  name: \"mx_cell_noise_float_1\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" }\n  ]\n}), NS = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar(), t = y(Te(e.x)).toVar(), s = y(Te(e.y)).toVar(), n = y(Te(e.z)).toVar();\n  return Ie(se(t, s, n));\n}).setLayout({\n  name: \"mx_cell_noise_float_2\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" }\n  ]\n}), bS = /* @__PURE__ */ b(([o]) => {\n  const e = I(o).toVar(), t = y(Te(e.x)).toVar(), s = y(Te(e.y)).toVar(), n = y(Te(e.z)).toVar(), r = y(Te(e.w)).toVar();\n  return Ie(se(t, s, n, r));\n}).setLayout({\n  name: \"mx_cell_noise_float_3\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec4\" }\n  ]\n}), SS = /* @__PURE__ */ Be([TS, _S, NS, bS]), vS = /* @__PURE__ */ b(([o]) => {\n  const e = g(o).toVar(), t = y(Te(e)).toVar();\n  return T(Ie(se(t, y(0))), Ie(se(t, y(1))), Ie(se(t, y(2))));\n}).setLayout({\n  name: \"mx_cell_noise_vec3_0\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"float\" }\n  ]\n}), AS = /* @__PURE__ */ b(([o]) => {\n  const e = w(o).toVar(), t = y(Te(e.x)).toVar(), s = y(Te(e.y)).toVar();\n  return T(Ie(se(t, s, y(0))), Ie(se(t, s, y(1))), Ie(se(t, s, y(2))));\n}).setLayout({\n  name: \"mx_cell_noise_vec3_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" }\n  ]\n}), RS = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar(), t = y(Te(e.x)).toVar(), s = y(Te(e.y)).toVar(), n = y(Te(e.z)).toVar();\n  return T(Ie(se(t, s, n, y(0))), Ie(se(t, s, n, y(1))), Ie(se(t, s, n, y(2))));\n}).setLayout({\n  name: \"mx_cell_noise_vec3_2\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" }\n  ]\n}), CS = /* @__PURE__ */ b(([o]) => {\n  const e = I(o).toVar(), t = y(Te(e.x)).toVar(), s = y(Te(e.y)).toVar(), n = y(Te(e.z)).toVar(), r = y(Te(e.w)).toVar();\n  return T(Ie(se(t, s, n, r, y(0))), Ie(se(t, s, n, r, y(1))), Ie(se(t, s, n, r, y(2))));\n}).setLayout({\n  name: \"mx_cell_noise_vec3_3\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec4\" }\n  ]\n}), Gf = /* @__PURE__ */ Be([vS, AS, RS, CS]), jr = /* @__PURE__ */ b(([o, e, t, s]) => {\n  const n = g(s).toVar(), r = g(t).toVar(), i = y(e).toVar(), a = T(o).toVar(), u = g(0).toVar(), c = g(1).toVar();\n  return J(i, () => {\n    u.addAssign(c.mul(gu(a))), c.mulAssign(n), a.mulAssign(r);\n  }), u;\n}).setLayout({\n  name: \"mx_fractal_noise_float\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"octaves\", type: \"int\" },\n    { name: \"lacunarity\", type: \"float\" },\n    { name: \"diminish\", type: \"float\" }\n  ]\n}), Of = /* @__PURE__ */ b(([o, e, t, s]) => {\n  const n = g(s).toVar(), r = g(t).toVar(), i = y(e).toVar(), a = T(o).toVar(), u = T(0).toVar(), c = g(1).toVar();\n  return J(i, () => {\n    u.addAssign(c.mul(mu(a))), c.mulAssign(n), a.mulAssign(r);\n  }), u;\n}).setLayout({\n  name: \"mx_fractal_noise_vec3\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"octaves\", type: \"int\" },\n    { name: \"lacunarity\", type: \"float\" },\n    { name: \"diminish\", type: \"float\" }\n  ]\n}), ES = /* @__PURE__ */ b(([o, e, t, s]) => {\n  const n = g(s).toVar(), r = g(t).toVar(), i = y(e).toVar(), a = T(o).toVar();\n  return w(jr(a, i, r, n), jr(a.add(T(y(19), y(193), y(17))), i, r, n));\n}).setLayout({\n  name: \"mx_fractal_noise_vec2\",\n  type: \"vec2\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"octaves\", type: \"int\" },\n    { name: \"lacunarity\", type: \"float\" },\n    { name: \"diminish\", type: \"float\" }\n  ]\n}), wS = /* @__PURE__ */ b(([o, e, t, s]) => {\n  const n = g(s).toVar(), r = g(t).toVar(), i = y(e).toVar(), a = T(o).toVar(), u = T(Of(a, i, r, n)).toVar(), c = g(jr(a.add(T(y(19), y(193), y(17))), i, r, n)).toVar();\n  return I(u, c);\n}).setLayout({\n  name: \"mx_fractal_noise_vec4\",\n  type: \"vec4\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"octaves\", type: \"int\" },\n    { name: \"lacunarity\", type: \"float\" },\n    { name: \"diminish\", type: \"float\" }\n  ]\n}), MS = /* @__PURE__ */ b(([o, e, t, s, n, r, i]) => {\n  const a = y(i).toVar(), u = g(r).toVar(), c = y(n).toVar(), l = y(s).toVar(), d = y(t).toVar(), h = y(e).toVar(), p = w(o).toVar(), f = T(Gf(w(h.add(l), d.add(c)))).toVar(), m = w(f.x, f.y).toVar();\n  m.subAssign(0.5), m.mulAssign(u), m.addAssign(0.5);\n  const _ = w(w(g(h), g(d)).add(m)).toVar(), S = w(_.sub(p)).toVar();\n  return H(a.equal(y(2)), () => re(S.x).add(re(S.y))), H(a.equal(y(3)), () => fe(re(S.x), re(S.y))), Zt(S, S);\n}).setLayout({\n  name: \"mx_worley_distance_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" },\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" },\n    { name: \"xoff\", type: \"int\" },\n    { name: \"yoff\", type: \"int\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), BS = /* @__PURE__ */ b(([o, e, t, s, n, r, i, a, u]) => {\n  const c = y(u).toVar(), l = g(a).toVar(), d = y(i).toVar(), h = y(r).toVar(), p = y(n).toVar(), f = y(s).toVar(), m = y(t).toVar(), _ = y(e).toVar(), S = T(o).toVar(), A = T(Gf(T(_.add(p), m.add(h), f.add(d)))).toVar();\n  A.subAssign(0.5), A.mulAssign(l), A.addAssign(0.5);\n  const M = T(T(g(_), g(m), g(f)).add(A)).toVar(), F = T(M.sub(S)).toVar();\n  return H(c.equal(y(2)), () => re(F.x).add(re(F.y)).add(re(F.z))), H(c.equal(y(3)), () => fe(fe(re(F.x), re(F.y)), re(F.z))), Zt(F, F);\n}).setLayout({\n  name: \"mx_worley_distance_1\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"x\", type: \"int\" },\n    { name: \"y\", type: \"int\" },\n    { name: \"z\", type: \"int\" },\n    { name: \"xoff\", type: \"int\" },\n    { name: \"yoff\", type: \"int\" },\n    { name: \"zoff\", type: \"int\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), an = /* @__PURE__ */ Be([MS, BS]), FS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = g(e).toVar(), r = w(o).toVar(), i = y().toVar(), a = y().toVar(), u = w(ue(r.x, i), ue(r.y, a)).toVar(), c = g(1e6).toVar();\n  return J({ start: -1, end: y(1), name: \"x\", condition: \"<=\" }, ({ x: l }) => {\n    J({ start: -1, end: y(1), name: \"y\", condition: \"<=\" }, ({ y: d }) => {\n      const h = g(an(u, l, d, i, a, n, s)).toVar();\n      c.assign($e(c, h));\n    });\n  }), H(s.equal(y(0)), () => {\n    c.assign(Et(c));\n  }), c;\n}).setLayout({\n  name: \"mx_worley_noise_float_0\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), US = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = g(e).toVar(), r = w(o).toVar(), i = y().toVar(), a = y().toVar(), u = w(ue(r.x, i), ue(r.y, a)).toVar(), c = w(1e6, 1e6).toVar();\n  return J({ start: -1, end: y(1), name: \"x\", condition: \"<=\" }, ({ x: l }) => {\n    J({ start: -1, end: y(1), name: \"y\", condition: \"<=\" }, ({ y: d }) => {\n      const h = g(an(u, l, d, i, a, n, s)).toVar();\n      H(h.lessThan(c.x), () => {\n        c.y.assign(c.x), c.x.assign(h);\n      }).ElseIf(h.lessThan(c.y), () => {\n        c.y.assign(h);\n      });\n    });\n  }), H(s.equal(y(0)), () => {\n    c.assign(Et(c));\n  }), c;\n}).setLayout({\n  name: \"mx_worley_noise_vec2_0\",\n  type: \"vec2\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), PS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = g(e).toVar(), r = w(o).toVar(), i = y().toVar(), a = y().toVar(), u = w(ue(r.x, i), ue(r.y, a)).toVar(), c = T(1e6, 1e6, 1e6).toVar();\n  return J({ start: -1, end: y(1), name: \"x\", condition: \"<=\" }, ({ x: l }) => {\n    J({ start: -1, end: y(1), name: \"y\", condition: \"<=\" }, ({ y: d }) => {\n      const h = g(an(u, l, d, i, a, n, s)).toVar();\n      H(h.lessThan(c.x), () => {\n        c.z.assign(c.y), c.y.assign(c.x), c.x.assign(h);\n      }).ElseIf(h.lessThan(c.y), () => {\n        c.z.assign(c.y), c.y.assign(h);\n      }).ElseIf(h.lessThan(c.z), () => {\n        c.z.assign(h);\n      });\n    });\n  }), H(s.equal(y(0)), () => {\n    c.assign(Et(c));\n  }), c;\n}).setLayout({\n  name: \"mx_worley_noise_vec3_0\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec2\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), DS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = g(e).toVar(), r = T(o).toVar(), i = y().toVar(), a = y().toVar(), u = y().toVar(), c = T(ue(r.x, i), ue(r.y, a), ue(r.z, u)).toVar(), l = g(1e6).toVar();\n  return J({ start: -1, end: y(1), name: \"x\", condition: \"<=\" }, ({ x: d }) => {\n    J({ start: -1, end: y(1), name: \"y\", condition: \"<=\" }, ({ y: h }) => {\n      J({ start: -1, end: y(1), name: \"z\", condition: \"<=\" }, ({ z: p }) => {\n        const f = g(an(c, d, h, p, i, a, u, n, s)).toVar();\n        l.assign($e(l, f));\n      });\n    });\n  }), H(s.equal(y(0)), () => {\n    l.assign(Et(l));\n  }), l;\n}).setLayout({\n  name: \"mx_worley_noise_float_1\",\n  type: \"float\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), IS = /* @__PURE__ */ Be([FS, DS]), LS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = g(e).toVar(), r = T(o).toVar(), i = y().toVar(), a = y().toVar(), u = y().toVar(), c = T(ue(r.x, i), ue(r.y, a), ue(r.z, u)).toVar(), l = w(1e6, 1e6).toVar();\n  return J({ start: -1, end: y(1), name: \"x\", condition: \"<=\" }, ({ x: d }) => {\n    J({ start: -1, end: y(1), name: \"y\", condition: \"<=\" }, ({ y: h }) => {\n      J({ start: -1, end: y(1), name: \"z\", condition: \"<=\" }, ({ z: p }) => {\n        const f = g(an(c, d, h, p, i, a, u, n, s)).toVar();\n        H(f.lessThan(l.x), () => {\n          l.y.assign(l.x), l.x.assign(f);\n        }).ElseIf(f.lessThan(l.y), () => {\n          l.y.assign(f);\n        });\n      });\n    });\n  }), H(s.equal(y(0)), () => {\n    l.assign(Et(l));\n  }), l;\n}).setLayout({\n  name: \"mx_worley_noise_vec2_1\",\n  type: \"vec2\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), VS = /* @__PURE__ */ Be([US, LS]), GS = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = y(t).toVar(), n = g(e).toVar(), r = T(o).toVar(), i = y().toVar(), a = y().toVar(), u = y().toVar(), c = T(ue(r.x, i), ue(r.y, a), ue(r.z, u)).toVar(), l = T(1e6, 1e6, 1e6).toVar();\n  return J({ start: -1, end: y(1), name: \"x\", condition: \"<=\" }, ({ x: d }) => {\n    J({ start: -1, end: y(1), name: \"y\", condition: \"<=\" }, ({ y: h }) => {\n      J({ start: -1, end: y(1), name: \"z\", condition: \"<=\" }, ({ z: p }) => {\n        const f = g(an(c, d, h, p, i, a, u, n, s)).toVar();\n        H(f.lessThan(l.x), () => {\n          l.z.assign(l.y), l.y.assign(l.x), l.x.assign(f);\n        }).ElseIf(f.lessThan(l.y), () => {\n          l.z.assign(l.y), l.y.assign(f);\n        }).ElseIf(f.lessThan(l.z), () => {\n          l.z.assign(f);\n        });\n      });\n    });\n  }), H(s.equal(y(0)), () => {\n    l.assign(Et(l));\n  }), l;\n}).setLayout({\n  name: \"mx_worley_noise_vec3_1\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"p\", type: \"vec3\" },\n    { name: \"jitter\", type: \"float\" },\n    { name: \"metric\", type: \"int\" }\n  ]\n}), OS = /* @__PURE__ */ Be([PS, GS]), kS = /* @__PURE__ */ b(([o]) => {\n  const e = o.y, t = o.z, s = T().toVar();\n  return H(e.lessThan(1e-4), () => {\n    s.assign(T(t, t, t));\n  }).Else(() => {\n    let n = o.x;\n    n = n.sub(yt(n)).mul(6).toVar();\n    const r = y(Ma(n)), i = n.sub(g(r)), a = t.mul(e.oneMinus()), u = t.mul(e.mul(i).oneMinus()), c = t.mul(e.mul(i.oneMinus()).oneMinus());\n    H(r.equal(y(0)), () => {\n      s.assign(T(t, c, a));\n    }).ElseIf(r.equal(y(1)), () => {\n      s.assign(T(u, t, a));\n    }).ElseIf(r.equal(y(2)), () => {\n      s.assign(T(a, t, c));\n    }).ElseIf(r.equal(y(3)), () => {\n      s.assign(T(a, u, t));\n    }).ElseIf(r.equal(y(4)), () => {\n      s.assign(T(c, a, t));\n    }).Else(() => {\n      s.assign(T(t, a, u));\n    });\n  }), s;\n}).setLayout({\n  name: \"mx_hsvtorgb\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"hsv\", type: \"vec3\" }\n  ]\n}), zS = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar(), t = g(e.x).toVar(), s = g(e.y).toVar(), n = g(e.z).toVar(), r = g($e(t, $e(s, n))).toVar(), i = g(fe(t, fe(s, n))).toVar(), a = g(i.sub(r)).toVar(), u = g().toVar(), c = g().toVar(), l = g().toVar();\n  return l.assign(i), H(i.greaterThan(0), () => {\n    c.assign(a.div(i));\n  }).Else(() => {\n    c.assign(0);\n  }), H(c.lessThanEqual(0), () => {\n    u.assign(0);\n  }).Else(() => {\n    H(t.greaterThanEqual(i), () => {\n      u.assign(s.sub(n).div(a));\n    }).ElseIf(s.greaterThanEqual(i), () => {\n      u.assign(_e(2, n.sub(t).div(a)));\n    }).Else(() => {\n      u.assign(_e(4, t.sub(s).div(a)));\n    }), u.mulAssign(1 / 6), H(u.lessThan(0), () => {\n      u.addAssign(1);\n    });\n  }), T(u, c, l);\n}).setLayout({\n  name: \"mx_rgbtohsv\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"c\", type: \"vec3\" }\n  ]\n}), $S = /* @__PURE__ */ b(([o]) => {\n  const e = T(o).toVar(), t = pa(Sa(e, T(0.04045))).toVar(), s = T(e.div(12.92)).toVar(), n = T(ot(fe(e.add(T(0.055)), T(0)).div(1.055), T(2.4))).toVar();\n  return Z(s, n, t);\n}).setLayout({\n  name: \"mx_srgb_texture_to_lin_rec709\",\n  type: \"vec3\",\n  inputs: [\n    { name: \"color\", type: \"vec3\" }\n  ]\n}), kf = (o, e) => {\n  o = g(o), e = g(e);\n  const t = w(e.dFdx(), e.dFdy()).length().mul(0.7071067811865476);\n  return Ot(o.sub(t), o.add(t), e);\n}, zf = (o, e, t, s) => Z(o, e, t[s].clamp()), WS = (o, e, t = le()) => zf(o, e, t, \"x\"), HS = (o, e, t = le()) => zf(o, e, t, \"y\"), $f = (o, e, t, s, n) => Z(o, e, kf(t, s[n])), qS = (o, e, t, s = le()) => $f(o, e, t, s, \"x\"), XS = (o, e, t, s = le()) => $f(o, e, t, s, \"y\"), KS = (o = 1, e = 0, t = le()) => t.mul(o).add(e), YS = (o, e = 1) => (o = g(o), o.abs().pow(e).mul(o.sign())), jS = (o, e = 1, t = 0.5) => g(o).sub(t).mul(e).add(t), QS = (o = le(), e = 1, t = 0) => gu(o.convert(\"vec2|vec3\")).mul(e).add(t), ZS = (o = le(), e = 1, t = 0) => mu(o.convert(\"vec2|vec3\")).mul(e).add(t), JS = (o = le(), e = 1, t = 0) => (o = o.convert(\"vec2|vec3\"), I(mu(o), gu(o.add(w(19, 73)))).mul(e).add(t)), ev = (o = le(), e = 1) => IS(o.convert(\"vec2|vec3\"), e, y(1)), tv = (o = le(), e = 1) => VS(o.convert(\"vec2|vec3\"), e, y(1)), sv = (o = le(), e = 1) => OS(o.convert(\"vec2|vec3\"), e, y(1)), nv = (o = le()) => SS(o.convert(\"vec2|vec3\")), rv = (o = le(), e = 3, t = 2, s = 0.5, n = 1) => jr(o, y(e), t, s).mul(n), iv = (o = le(), e = 3, t = 2, s = 0.5, n = 1) => ES(o, y(e), t, s).mul(n), ov = (o = le(), e = 3, t = 2, s = 0.5, n = 1) => Of(o, y(e), t, s).mul(n), av = (o = le(), e = 3, t = 2, s = 0.5, n = 1) => wS(o, y(e), t, s).mul(n), uv = /* @__PURE__ */ b(([o, e, t]) => {\n  const s = Gt(o).toVar(\"nDir\"), n = K(g(0.5).mul(e.sub(t)), It).div(s).toVar(\"rbmax\"), r = K(g(-0.5).mul(e.sub(t)), It).div(s).toVar(\"rbmin\"), i = T().toVar(\"rbminmax\");\n  i.x = s.x.greaterThan(g(0)).select(n.x, r.x), i.y = s.y.greaterThan(g(0)).select(n.y, r.y), i.z = s.z.greaterThan(g(0)).select(n.z, r.z);\n  const a = $e($e(i.x, i.y), i.z).toVar(\"correction\");\n  return It.add(s.mul(a)).toVar(\"boxIntersection\").sub(t);\n}), Wf = /* @__PURE__ */ b(([o, e]) => {\n  const t = o.x, s = o.y, n = o.z;\n  let r = e.element(0).mul(0.886227);\n  return r = r.add(e.element(1).mul(2 * 0.511664).mul(s)), r = r.add(e.element(2).mul(2 * 0.511664).mul(n)), r = r.add(e.element(3).mul(2 * 0.511664).mul(t)), r = r.add(e.element(4).mul(2 * 0.429043).mul(t).mul(s)), r = r.add(e.element(5).mul(2 * 0.429043).mul(s).mul(n)), r = r.add(e.element(6).mul(n.mul(n).mul(0.743125).sub(0.247708))), r = r.add(e.element(7).mul(2 * 0.429043).mul(t).mul(n)), r = r.add(e.element(8).mul(0.429043).mul($(t, t).sub($(s, s)))), r;\n});\nvar QA = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  BRDF_GGX: $o,\n  BRDF_Lambert: gs,\n  BasicShadowFilter: Cf,\n  Break: bp,\n  Continue: cx,\n  DFGApprox: Ja,\n  D_GGX: Lp,\n  Discard: mh,\n  EPSILON: bd,\n  F_Schlick: en,\n  Fn: b,\n  INFINITY: ey,\n  If: H,\n  Loop: J,\n  NodeAccess: De,\n  NodeShaderStage: Fo,\n  NodeType: Mm,\n  NodeUpdateType: z,\n  PCFShadowFilter: Ef,\n  PCFSoftShadowFilter: wf,\n  PI: $r,\n  PI2: ty,\n  Return: my,\n  Schlick_to_F0: Gp,\n  ScriptableNodeResources: Pr,\n  ShaderNode: Nn,\n  TBNViewMatrix: us,\n  VSMShadowFilter: Mf,\n  V_GGX_SmithCorrelated: Ip,\n  abs: re,\n  acesFilmicToneMapping: xf,\n  acos: Ed,\n  add: _e,\n  addMethodChaining: R,\n  addNodeElement: xy,\n  agxToneMapping: Tf,\n  all: va,\n  alphaT: Or,\n  and: dd,\n  anisotropy: Ht,\n  anisotropyB: fs,\n  anisotropyT: bn,\n  any: Sd,\n  append: Wl,\n  arrayBuffer: Ym,\n  asin: Cd,\n  assign: rd,\n  atan: Ca,\n  atan2: Kd,\n  atomicAdd: yb,\n  atomicAnd: Nb,\n  atomicFunc: zt,\n  atomicMax: Tb,\n  atomicMin: _b,\n  atomicOr: bb,\n  atomicStore: mb,\n  atomicSub: xb,\n  atomicXor: Sb,\n  attenuationColor: _a,\n  attenuationDistance: Ta,\n  attribute: Nt,\n  attributeArray: lN,\n  backgroundBlurriness: of,\n  backgroundIntensity: Yo,\n  backgroundRotation: af,\n  batch: Tp,\n  billboarding: z_,\n  bitAnd: gd,\n  bitNot: md,\n  bitOr: yd,\n  bitXor: xd,\n  bitangentGeometry: $y,\n  bitangentLocal: Wy,\n  bitangentView: Ph,\n  bitangentWorld: Hy,\n  bitcast: sy,\n  blendBurn: lf,\n  blendColor: bN,\n  blendDodge: df,\n  blendOverlay: pf,\n  blendScreen: hf,\n  blur: qp,\n  bool: Vt,\n  buffer: Zn,\n  bufferAttribute: jn,\n  bumpMap: Vh,\n  burn: SN,\n  bvec2: Xl,\n  bvec3: pa,\n  bvec4: Ql,\n  bypass: hh,\n  cache: vn,\n  call: id,\n  cameraFar: Xt,\n  cameraNear: qt,\n  cameraNormalMatrix: vy,\n  cameraPosition: _h,\n  cameraProjectionMatrix: _s,\n  cameraProjectionMatrixInverse: by,\n  cameraViewMatrix: Xe,\n  cameraWorldMatrix: Sy,\n  cbrt: zd,\n  cdl: BN,\n  ceil: li,\n  checker: Yb,\n  cineonToneMapping: yf,\n  clamp: _t,\n  clearcoat: Gr,\n  clearcoatRoughness: Ln,\n  code: vi,\n  color: Hl,\n  colorSpaceToWorking: Ia,\n  colorToDirection: Vx,\n  compute: dh,\n  cond: Yd,\n  context: pi,\n  convert: Jl,\n  convertColorSpace: ay,\n  convertToTexture: tN,\n  cos: Bt,\n  cross: hi,\n  cubeTexture: Js,\n  dFdx: Ea,\n  dFdy: wa,\n  dashSize: Er,\n  defaultBuildStages: Uo,\n  defaultShaderStages: Vl,\n  defined: Un,\n  degrees: Ad,\n  deltaTime: sf,\n  densityFog: eb,\n  densityFogFactor: au,\n  depth: Ya,\n  depthPass: LN,\n  difference: Vd,\n  diffuseColor: Q,\n  directPointLight: Uf,\n  directionToColor: wp,\n  dispersion: Na,\n  distance: Ld,\n  div: ut,\n  dodge: vN,\n  dot: Zt,\n  drawIndex: mp,\n  dynamicBufferAttribute: lh,\n  element: Zl,\n  emissive: Lo,\n  equal: od,\n  equals: Dd,\n  equirectUV: ja,\n  exp: Aa,\n  exp2: Zs,\n  expression: Qt,\n  faceDirection: Qn,\n  faceForward: Pa,\n  faceforward: ny,\n  float: g,\n  floor: yt,\n  fog: zn,\n  fract: kt,\n  frameGroup: sd,\n  frameId: F_,\n  frontFacing: vh,\n  fwidth: Ud,\n  gain: A_,\n  gapSize: Vo,\n  getConstNodeType: $l,\n  getCurrentStack: ha,\n  getDirection: Wp,\n  getDistanceAttenuation: fu,\n  getGeometryRoughness: Dp,\n  getNormalFromDepth: nN,\n  getParallaxCorrectNormal: uv,\n  getRoughness: Za,\n  getScreenPosition: sN,\n  getShIrradianceAt: Wf,\n  getTextureIndex: ef,\n  getViewPosition: Ds,\n  glsl: qN,\n  glslFn: XN,\n  grayscale: CN,\n  greaterThan: Sa,\n  greaterThanEqual: ld,\n  hash: v_,\n  highpModelNormalViewMatrix: Dy,\n  highpModelViewMatrix: Py,\n  hue: MN,\n  instance: rx,\n  instanceIndex: sr,\n  instancedArray: dN,\n  instancedBufferAttribute: Wr,\n  instancedDynamicBufferAttribute: Go,\n  instancedMesh: xp,\n  int: y,\n  inverseSqrt: Ra,\n  inversesqrt: ry,\n  invocationLocalIndex: nx,\n  invocationSubgroupIndex: sx,\n  ior: Sn,\n  iridescence: ui,\n  iridescenceIOR: ma,\n  iridescenceThickness: ya,\n  ivec2: Ae,\n  ivec3: Kl,\n  ivec4: Yl,\n  js: WN,\n  label: Qd,\n  length: Dt,\n  lengthSq: $d,\n  lessThan: ud,\n  lessThanEqual: cd,\n  lightPosition: lu,\n  lightProjectionUV: Af,\n  lightShadowMatrix: cu,\n  lightTargetDirection: du,\n  lightTargetPosition: Rf,\n  lightViewPosition: Ri,\n  lightingContext: vp,\n  lights: Rb,\n  linearDepth: qr,\n  linearToneMapping: gf,\n  localId: ob,\n  log: ci,\n  log2: mt,\n  logarithmicDepthToViewZ: Sx,\n  loop: lx,\n  luminance: iu,\n  mat2: oi,\n  mat3: Le,\n  mat4: ps,\n  matcapUV: Kp,\n  materialAO: fp,\n  materialAlphaTest: Gh,\n  materialAnisotropy: ep,\n  materialAnisotropyVector: Ps,\n  materialAttenuationColor: up,\n  materialAttenuationDistance: ap,\n  materialClearcoat: Kh,\n  materialClearcoatNormal: jh,\n  materialClearcoatRoughness: Yh,\n  materialColor: Oh,\n  materialDispersion: pp,\n  materialEmissive: zh,\n  materialIOR: op,\n  materialIridescence: tp,\n  materialIridescenceIOR: sp,\n  materialIridescenceThickness: np,\n  materialLightMap: za,\n  materialLineDashOffset: hp,\n  materialLineDashSize: lp,\n  materialLineGapSize: dp,\n  materialLineScale: cp,\n  materialLineWidth: Jy,\n  materialMetalness: qh,\n  materialNormal: Xh,\n  materialOpacity: ka,\n  materialPointWidth: ex,\n  materialReference: Pt,\n  materialReflectivity: Br,\n  materialRefractionRatio: Ch,\n  materialRotation: Qh,\n  materialRoughness: Hh,\n  materialSheen: Zh,\n  materialSheenRoughness: Jh,\n  materialShininess: kh,\n  materialSpecular: $h,\n  materialSpecularColor: Wh,\n  materialSpecularIntensity: zo,\n  materialSpecularStrength: An,\n  materialThickness: ip,\n  materialTransmission: rp,\n  max: fe,\n  maxMipLevel: Th,\n  mediumpModelViewMatrix: Sh,\n  metalness: In,\n  min: $e,\n  mix: Z,\n  mixElement: qd,\n  mod: Ba,\n  modInt: ba,\n  modelDirection: wy,\n  modelNormalMatrix: bh,\n  modelPosition: My,\n  modelScale: By,\n  modelViewMatrix: rn,\n  modelViewPosition: Fy,\n  modelViewProjection: $a,\n  modelWorldMatrix: nt,\n  modelWorldMatrixInverse: Uy,\n  morphReference: Sp,\n  mrt: tf,\n  mul: $,\n  mx_aastep: kf,\n  mx_cell_noise_float: nv,\n  mx_contrast: jS,\n  mx_fractal_noise_float: rv,\n  mx_fractal_noise_vec2: iv,\n  mx_fractal_noise_vec3: ov,\n  mx_fractal_noise_vec4: av,\n  mx_hsvtorgb: kS,\n  mx_noise_float: QS,\n  mx_noise_vec3: ZS,\n  mx_noise_vec4: JS,\n  mx_ramplr: WS,\n  mx_ramptb: HS,\n  mx_rgbtohsv: zS,\n  mx_safepower: YS,\n  mx_splitlr: qS,\n  mx_splittb: XS,\n  mx_srgb_texture_to_lin_rec709: $S,\n  mx_transform_uv: KS,\n  mx_worley_noise_float: ev,\n  mx_worley_noise_vec2: tv,\n  mx_worley_noise_vec3: sv,\n  negate: wd,\n  neutralToneMapping: _f,\n  nodeArray: hs,\n  nodeImmutable: B,\n  nodeObject: E,\n  nodeObjects: qn,\n  nodeProxy: C,\n  normalFlat: Ah,\n  normalGeometry: gi,\n  normalLocal: We,\n  normalMap: ko,\n  normalView: it,\n  normalWorld: mi,\n  normalize: Gt,\n  not: pd,\n  notEqual: ad,\n  numWorkgroups: rb,\n  objectDirection: Ay,\n  objectGroup: ga,\n  objectPosition: Nh,\n  objectScale: Cy,\n  objectViewPosition: Ey,\n  objectWorldMatrix: Ry,\n  oneMinus: Md,\n  or: hd,\n  orthographicDepthToViewZ: bx,\n  oscSawtooth: G_,\n  oscSine: I_,\n  oscSquare: L_,\n  oscTriangle: V_,\n  output: Gn,\n  outputStruct: b_,\n  overlay: RN,\n  overloadingFn: Be,\n  parabola: Ko,\n  parallaxDirection: Ih,\n  parallaxUV: Xy,\n  parameter: __,\n  pass: DN,\n  passTexture: IN,\n  pcurve: R_,\n  perspectiveDepthToViewZ: Xa,\n  pmremTexture: eu,\n  pointUV: gN,\n  pointWidth: Qm,\n  positionGeometry: fi,\n  positionLocal: pe,\n  positionPrevious: Hr,\n  positionView: xe,\n  positionViewDirection: oe,\n  positionWorld: It,\n  positionWorldDirection: La,\n  posterize: UN,\n  pow: ot,\n  pow2: Fa,\n  pow3: Gd,\n  pow4: Od,\n  property: nd,\n  radians: vd,\n  rand: Hd,\n  range: sb,\n  rangeFog: JN,\n  rangeFogFactor: ou,\n  reciprocal: Fd,\n  reference: te,\n  referenceBuffer: Oo,\n  reflect: Id,\n  reflectVector: Mh,\n  reflectView: Eh,\n  reflector: j_,\n  refract: Ua,\n  refractVector: Bh,\n  refractView: wh,\n  reinhardToneMapping: mf,\n  remainder: Nd,\n  remap: fh,\n  remapClamp: gh,\n  renderGroup: O,\n  renderOutput: yh,\n  rendererReference: ah,\n  rotate: tu,\n  rotateUV: O_,\n  roughness: ft,\n  round: Bd,\n  rtt: rf,\n  sRGBTransferEOTF: th,\n  sRGBTransferOETF: sh,\n  sampler: Ny,\n  saturate: Wd,\n  saturation: EN,\n  screen: AN,\n  screenCoordinate: nr,\n  screenSize: kn,\n  screenUV: vt,\n  scriptable: ZN,\n  scriptableValue: Ur,\n  select: Me,\n  setCurrentStack: Pn,\n  shaderStages: Po,\n  shadow: Ff,\n  shadowPositionWorld: pu,\n  sharedUniformGroup: fa,\n  sheen: as,\n  sheenRoughness: ai,\n  shiftLeft: Td,\n  shiftRight: _d,\n  shininess: kr,\n  sign: On,\n  sin: Ze,\n  sinc: C_,\n  skinning: ax,\n  skinningReference: Np,\n  smoothstep: Ot,\n  smoothstepElement: Xd,\n  specularColor: Ge,\n  specularF90: Vn,\n  spherizeUV: k_,\n  split: jm,\n  spritesheetUV: H_,\n  sqrt: Et,\n  stack: Fr,\n  step: di,\n  storage: Si,\n  storageBarrier: lb,\n  storageObject: cN,\n  storageTexture: uf,\n  string: Km,\n  sub: K,\n  subgroupIndex: tx,\n  subgroupSize: ab,\n  tan: Rd,\n  tangentGeometry: Ti,\n  tangentLocal: Jn,\n  tangentView: er,\n  tangentWorld: Uh,\n  temp: Jd,\n  texture: X,\n  texture3D: YT,\n  textureBarrier: db,\n  textureBicubic: zp,\n  textureCubeUV: Hp,\n  textureLoad: de,\n  textureSize: jt,\n  textureStore: yN,\n  thickness: xa,\n  time: Ns,\n  timerDelta: D_,\n  timerGlobal: P_,\n  timerLocal: U_,\n  toOutputColorSpace: nh,\n  toWorkingColorSpace: rh,\n  toneMapping: uh,\n  toneMappingExposure: ch,\n  toonOutlinePass: GN,\n  transformDirection: kd,\n  transformNormal: Rh,\n  transformNormalToView: Va,\n  transformedBentNormalView: Lh,\n  transformedBitangentView: Dh,\n  transformedBitangentWorld: qy,\n  transformedClearcoatNormalView: Gs,\n  transformedNormalView: he,\n  transformedNormalWorld: yi,\n  transformedTangentView: Oa,\n  transformedTangentWorld: zy,\n  transmission: zr,\n  transpose: Pd,\n  triNoise3D: w_,\n  triplanarTexture: X_,\n  triplanarTextures: nf,\n  trunc: Ma,\n  tslFn: Xm,\n  uint: U,\n  uniform: L,\n  uniformArray: Ut,\n  uniformGroup: td,\n  uniforms: Gy,\n  userData: TN,\n  uv: le,\n  uvec2: ql,\n  uvec3: nn,\n  uvec4: jl,\n  varying: qe,\n  varyingProperty: Dn,\n  vec2: w,\n  vec3: T,\n  vec4: I,\n  vectorComponents: xs,\n  velocity: NN,\n  vertexColor: pN,\n  vertexIndex: gp,\n  vertexStage: eh,\n  vibrance: wN,\n  viewZToLogarithmicDepth: Ka,\n  viewZToOrthographicDepth: qs,\n  viewZToPerspectiveDepth: Cp,\n  viewport: Wa,\n  viewportBottomLeft: Tx,\n  viewportCoordinate: Rp,\n  viewportDepthTexture: qa,\n  viewportLinearDepth: vx,\n  viewportMipTexture: Ha,\n  viewportResolution: yx,\n  viewportSafeUV: $_,\n  viewportSharedTexture: Lx,\n  viewportSize: Ap,\n  viewportTexture: _x,\n  viewportTopLeft: xx,\n  viewportUV: mx,\n  wgsl: HN,\n  wgslFn: KN,\n  workgroupArray: fb,\n  workgroupBarrier: cb,\n  workgroupId: ib,\n  workingToColorSpace: ih,\n  xor: fd\n});\nconst Mt = /* @__PURE__ */ new su();\nclass cv extends Jt {\n  /**\n   * Constructs a new background management component.\n   *\n   * @param {Renderer} renderer - The renderer.\n   * @param {Nodes} nodes - Renderer component for managing nodes related logic.\n   */\n  constructor(e, t) {\n    super(), this.renderer = e, this.nodes = t;\n  }\n  /**\n   * Updates the background for the given scene. Depending on how `Scene.background`\n   * or `Scene.backgroundNode` are configured, this method might configure a simple clear\n   * or add a mesh to the render list for rendering the background as a textured plane\n   * or skybox.\n   *\n   * @param {Scene} scene - The scene.\n   * @param {RenderList} renderList - The current render list.\n   * @param {RenderContext} renderContext - The current render context.\n   */\n  update(e, t, s) {\n    const n = this.renderer, r = this.nodes.getBackgroundNode(e) || e.background;\n    let i = !1;\n    if (r === null)\n      n._clearColor.getRGB(Mt, cs), Mt.a = n._clearColor.a;\n    else if (r.isColor === !0)\n      r.getRGB(Mt, cs), Mt.a = 1, i = !0;\n    else if (r.isNode === !0) {\n      const a = this.get(e), u = r;\n      Mt.copy(n._clearColor);\n      let c = a.backgroundMesh;\n      if (c === void 0) {\n        const d = pi(I(u).mul(Yo), {\n          // @TODO: Add Texture2D support using node context\n          getUV: () => af.mul(mi),\n          getTextureLevel: () => of\n        });\n        let h = $a;\n        h = h.setZ(h.w);\n        const p = new ge();\n        p.name = \"Background.material\", p.side = Tt, p.depthTest = !1, p.depthWrite = !1, p.fog = !1, p.lights = !1, p.vertexNode = h, p.colorNode = d, a.backgroundMeshNode = d, a.backgroundMesh = c = new js(new Sg(1, 32, 32), p), c.frustumCulled = !1, c.name = \"Background.mesh\", c.onBeforeRender = function(f, m, _) {\n          this.matrixWorld.copyPosition(_.matrixWorld);\n        };\n      }\n      const l = u.getCacheKey();\n      a.backgroundCacheKey !== l && (a.backgroundMeshNode.node = I(u).mul(Yo), a.backgroundMeshNode.needsUpdate = !0, c.material.needsUpdate = !0, a.backgroundCacheKey = l), t.unshift(c, c.geometry, c.material, 0, 0, null, null);\n    } else\n      console.error(\"THREE.Renderer: Unsupported background configuration.\", r);\n    if (n.autoClear === !0 || i === !0) {\n      const a = s.clearColorValue;\n      a.r = Mt.r, a.g = Mt.g, a.b = Mt.b, a.a = Mt.a, (n.backend.isWebGLBackend === !0 || n.alpha === !0) && (a.r *= a.a, a.g *= a.a, a.b *= a.a), s.depthClearValue = n._clearDepth, s.stencilClearValue = n._clearStencil, s.clearColor = n.autoClearColor === !0, s.clearDepth = n.autoClearDepth === !0, s.clearStencil = n.autoClearStencil === !0;\n    } else\n      s.clearColor = !1, s.clearDepth = !1, s.clearStencil = !1;\n  }\n}\nlet lv = 0;\nclass jo {\n  /**\n   * Constructs a new bind group.\n   *\n   * @param {String} name - The bind group's name.\n   * @param {Array<Binding>} bindings - An array of bindings.\n   * @param {Number} index - The group index.\n   * @param {Array<Binding>} bindingsReference - An array of reference bindings.\n   */\n  constructor(e = \"\", t = [], s = 0, n = []) {\n    this.name = e, this.bindings = t, this.index = s, this.bindingsReference = n, this.id = lv++;\n  }\n}\nclass dv {\n  /**\n   * Constructs a new node builder state.\n   *\n   * @param {String?} vertexShader - The native vertex shader code.\n   * @param {String?} fragmentShader - The native fragment shader code.\n   * @param {String?} computeShader - The native compute shader code.\n   * @param {Array<NodeAttribute>} nodeAttributes - An array of node attributes.\n   * @param {Array<BindGroup>} bindings - An array of bind groups.\n   * @param {Array<Node>} updateNodes - An array of nodes that implement their `update()` method.\n   * @param {Array<Node>} updateBeforeNodes - An array of nodes that implement their `updateBefore()` method.\n   * @param {Array<Node>} updateAfterNodes - An array of nodes that implement their `updateAfter()` method.\n   * @param {NodeMaterialObserver} monitor - A node material observer.\n   * @param {Array<Object>} transforms - An array with transform attribute objects. Only relevant when using compute shaders with WebGL 2.\n   */\n  constructor(e, t, s, n, r, i, a, u, c, l = []) {\n    this.vertexShader = e, this.fragmentShader = t, this.computeShader = s, this.transforms = l, this.nodeAttributes = n, this.bindings = r, this.updateNodes = i, this.updateBeforeNodes = a, this.updateAfterNodes = u, this.monitor = c, this.usedTimes = 0;\n  }\n  /**\n   * This method is used to create a array of bind groups based\n   * on the existing bind groups of this state. Shared groups are\n   * not cloned.\n   *\n   * @return {Array<BindGroup>} A array of bind groups.\n   */\n  createBindings() {\n    const e = [];\n    for (const t of this.bindings)\n      if (t.bindings[0].groupNode.shared !== !0) {\n        const n = new jo(t.name, [], t.index, t);\n        e.push(n);\n        for (const r of t.bindings)\n          n.bindings.push(r.clone());\n      } else\n        e.push(t);\n    return e;\n  }\n}\nclass fc {\n  /**\n   * Constructs a new node attribute.\n   *\n   * @param {String} name - The name of the attribute.\n   * @param {String} type - The type of the attribute.\n   * @param {Node?} node - An optional reference to the node.\n   */\n  constructor(e, t, s = null) {\n    this.isNodeAttribute = !0, this.name = e, this.type = t, this.node = s;\n  }\n}\nclass hv {\n  /**\n   * Constructs a new node uniform.\n   *\n   * @param {String} name - The name of the uniform.\n   * @param {String} type - The type of the uniform.\n   * @param {UniformNode} node - An reference to the node.\n   */\n  constructor(e, t, s) {\n    this.isNodeUniform = !0, this.name = e, this.type = t, this.node = s.getSelf();\n  }\n  /**\n   * The value of the uniform node.\n   *\n   * @type {Any}\n   */\n  get value() {\n    return this.node.value;\n  }\n  set value(e) {\n    this.node.value = e;\n  }\n  /**\n   * The id of the uniform node.\n   *\n   * @type {Number}\n   */\n  get id() {\n    return this.node.id;\n  }\n  /**\n   * The uniform node's group.\n   *\n   * @type {UniformGroupNode}\n   */\n  get groupNode() {\n    return this.node.groupNode;\n  }\n}\nclass Hf {\n  /**\n   * Constructs a new node variable.\n   *\n   * @param {String} name - The name of the variable.\n   * @param {String} type - The type of the variable.\n   */\n  constructor(e, t) {\n    this.isNodeVar = !0, this.name = e, this.type = t;\n  }\n}\nclass pv extends Hf {\n  /**\n   * Constructs a new node varying.\n   *\n   * @param {String} name - The name of the varying.\n   * @param {String} type - The type of the varying.\n   */\n  constructor(e, t) {\n    super(e, t), this.needsInterpolation = !1, this.isNodeVarying = !0;\n  }\n}\nclass fv {\n  /**\n   * Constructs a new code node.\n   *\n   * @param {String} name - The name of the code.\n   * @param {String} type - The node type.\n   * @param {String} [code=''] - The native shader code.\n   */\n  constructor(e, t, s = \"\") {\n    this.name = e, this.type = t, this.code = s, Object.defineProperty(this, \"isNodeCode\", { value: !0 });\n  }\n}\nlet gv = 0;\nclass Xi {\n  /**\n   * Constructs a new node cache.\n   *\n   * @param {NodeCache?} parent - A reference to a parent cache.\n   */\n  constructor(e = null) {\n    this.id = gv++, this.nodesData = /* @__PURE__ */ new WeakMap(), this.parent = e;\n  }\n  /**\n   * Returns the data for the given node.\n   *\n   * @param {Node} node - The node.\n   * @return {Object?} The data for the node.\n   */\n  getData(e) {\n    let t = this.nodesData.get(e);\n    return t === void 0 && this.parent !== null && (t = this.parent.getData(e)), t;\n  }\n  /**\n   * Sets the data for a given node.\n   *\n   * @param {Node} node - The node.\n   * @param {Object} data - The data that should be cached.\n   */\n  setData(e, t) {\n    this.nodesData.set(e, t);\n  }\n}\nclass mv extends G {\n  static get type() {\n    return \"StructTypeNode\";\n  }\n  /**\n   * Constructs a new struct type node.\n   *\n   * @param {String} name - The name of the struct.\n   * @param {Array<String>} types - An array of types.\n   */\n  constructor(e, t) {\n    super(), this.name = e, this.types = t, this.isStructTypeNode = !0;\n  }\n  /**\n   * Returns the member types.\n   *\n   * @return {Array<String>} The types.\n   */\n  getMemberTypes() {\n    return this.types;\n  }\n}\nclass Ss {\n  /**\n   * Constructs a new uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Any} value - The uniform's value.\n   */\n  constructor(e, t) {\n    this.name = e, this.value = t, this.boundary = 0, this.itemSize = 0, this.offset = 0;\n  }\n  /**\n   * Sets the uniform's value.\n   *\n   * @param {Any} value - The value to set.\n   */\n  setValue(e) {\n    this.value = e;\n  }\n  /**\n   * Returns the uniform's value.\n   *\n   * @return {Any} The value.\n   */\n  getValue() {\n    return this.value;\n  }\n}\nclass yv extends Ss {\n  /**\n   * Constructs a new Number uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Number} value - The uniform's value.\n   */\n  constructor(e, t = 0) {\n    super(e, t), this.isNumberUniform = !0, this.boundary = 4, this.itemSize = 1;\n  }\n}\nclass xv extends Ss {\n  /**\n   * Constructs a new Number uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Vector2} value - The uniform's value.\n   */\n  constructor(e, t = new He()) {\n    super(e, t), this.isVector2Uniform = !0, this.boundary = 8, this.itemSize = 2;\n  }\n}\nclass Tv extends Ss {\n  /**\n   * Constructs a new Number uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Vector3} value - The uniform's value.\n   */\n  constructor(e, t = new Y()) {\n    super(e, t), this.isVector3Uniform = !0, this.boundary = 16, this.itemSize = 3;\n  }\n}\nclass _v extends Ss {\n  /**\n   * Constructs a new Number uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Vector4} value - The uniform's value.\n   */\n  constructor(e, t = new Ce()) {\n    super(e, t), this.isVector4Uniform = !0, this.boundary = 16, this.itemSize = 4;\n  }\n}\nclass Nv extends Ss {\n  /**\n   * Constructs a new Number uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Color} value - The uniform's value.\n   */\n  constructor(e, t = new Ct()) {\n    super(e, t), this.isColorUniform = !0, this.boundary = 16, this.itemSize = 3;\n  }\n}\nclass bv extends Ss {\n  /**\n   * Constructs a new Number uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Matrix3} value - The uniform's value.\n   */\n  constructor(e, t = new $n()) {\n    super(e, t), this.isMatrix3Uniform = !0, this.boundary = 48, this.itemSize = 12;\n  }\n}\nclass Sv extends Ss {\n  /**\n   * Constructs a new Number uniform.\n   *\n   * @param {String} name - The uniform's name.\n   * @param {Matrix4} value - The uniform's value.\n   */\n  constructor(e, t = new Ue()) {\n    super(e, t), this.isMatrix4Uniform = !0, this.boundary = 64, this.itemSize = 16;\n  }\n}\nclass vv extends yv {\n  /**\n   * Constructs a new node-based Number uniform.\n   *\n   * @param {NodeUniform} nodeUniform - The node uniform.\n   */\n  constructor(e) {\n    super(e.name, e.value), this.nodeUniform = e;\n  }\n  /**\n   * Overwritten to return the value of the node uniform.\n   *\n   * @return {Number} The value.\n   */\n  getValue() {\n    return this.nodeUniform.value;\n  }\n  /**\n   * Returns the node uniform data type.\n   *\n   * @return {String} The data type.\n   */\n  getType() {\n    return this.nodeUniform.type;\n  }\n}\nclass Av extends xv {\n  /**\n   * Constructs a new node-based Vector2 uniform.\n   *\n   * @param {NodeUniform} nodeUniform - The node uniform.\n   */\n  constructor(e) {\n    super(e.name, e.value), this.nodeUniform = e;\n  }\n  /**\n   * Overwritten to return the value of the node uniform.\n   *\n   * @return {Vector2} The value.\n   */\n  getValue() {\n    return this.nodeUniform.value;\n  }\n  /**\n   * Returns the node uniform data type.\n   *\n   * @return {String} The data type.\n   */\n  getType() {\n    return this.nodeUniform.type;\n  }\n}\nclass Rv extends Tv {\n  /**\n   * Constructs a new node-based Vector3 uniform.\n   *\n   * @param {NodeUniform} nodeUniform - The node uniform.\n   */\n  constructor(e) {\n    super(e.name, e.value), this.nodeUniform = e;\n  }\n  /**\n   * Overwritten to return the value of the node uniform.\n   *\n   * @return {Vector3} The value.\n   */\n  getValue() {\n    return this.nodeUniform.value;\n  }\n  /**\n   * Returns the node uniform data type.\n   *\n   * @return {String} The data type.\n   */\n  getType() {\n    return this.nodeUniform.type;\n  }\n}\nclass Cv extends _v {\n  /**\n   * Constructs a new node-based Vector4 uniform.\n   *\n   * @param {NodeUniform} nodeUniform - The node uniform.\n   */\n  constructor(e) {\n    super(e.name, e.value), this.nodeUniform = e;\n  }\n  /**\n   * Overwritten to return the value of the node uniform.\n   *\n   * @return {Vector4} The value.\n   */\n  getValue() {\n    return this.nodeUniform.value;\n  }\n  /**\n   * Returns the node uniform data type.\n   *\n   * @return {String} The data type.\n   */\n  getType() {\n    return this.nodeUniform.type;\n  }\n}\nclass Ev extends Nv {\n  /**\n   * Constructs a new node-based Color uniform.\n   *\n   * @param {NodeUniform} nodeUniform - The node uniform.\n   */\n  constructor(e) {\n    super(e.name, e.value), this.nodeUniform = e;\n  }\n  /**\n   * Overwritten to return the value of the node uniform.\n   *\n   * @return {Color} The value.\n   */\n  getValue() {\n    return this.nodeUniform.value;\n  }\n  /**\n   * Returns the node uniform data type.\n   *\n   * @return {String} The data type.\n   */\n  getType() {\n    return this.nodeUniform.type;\n  }\n}\nclass wv extends bv {\n  /**\n   * Constructs a new node-based Matrix3 uniform.\n   *\n   * @param {NodeUniform} nodeUniform - The node uniform.\n   */\n  constructor(e) {\n    super(e.name, e.value), this.nodeUniform = e;\n  }\n  /**\n   * Overwritten to return the value of the node uniform.\n   *\n   * @return {Matrix3} The value.\n   */\n  getValue() {\n    return this.nodeUniform.value;\n  }\n  /**\n   * Returns the node uniform data type.\n   *\n   * @return {String} The data type.\n   */\n  getType() {\n    return this.nodeUniform.type;\n  }\n}\nclass Mv extends Sv {\n  /**\n   * Constructs a new node-based Matrix4 uniform.\n   *\n   * @param {NodeUniform} nodeUniform - The node uniform.\n   */\n  constructor(e) {\n    super(e.name, e.value), this.nodeUniform = e;\n  }\n  /**\n   * Overwritten to return the value of the node uniform.\n   *\n   * @return {Matrix4} The value.\n   */\n  getValue() {\n    return this.nodeUniform.value;\n  }\n  /**\n   * Returns the node uniform data type.\n   *\n   * @return {String} The data type.\n   */\n  getType() {\n    return this.nodeUniform.type;\n  }\n}\nconst Os = 4, gc = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582], is = 20, Ki = /* @__PURE__ */ new Al(-1, 1, 1, -1, 0, 1), Bv = /* @__PURE__ */ new Rm(90, 1), mc = /* @__PURE__ */ new Ct();\nlet Yi = null, ji = 0, Qi = 0;\nconst rs = (1 + Math.sqrt(5)) / 2, ws = 1 / rs, yc = [\n  /* @__PURE__ */ new Y(-rs, ws, 0),\n  /* @__PURE__ */ new Y(rs, ws, 0),\n  /* @__PURE__ */ new Y(-ws, 0, rs),\n  /* @__PURE__ */ new Y(ws, 0, rs),\n  /* @__PURE__ */ new Y(0, rs, -ws),\n  /* @__PURE__ */ new Y(0, rs, ws),\n  /* @__PURE__ */ new Y(-1, 1, -1),\n  /* @__PURE__ */ new Y(1, 1, -1),\n  /* @__PURE__ */ new Y(-1, 1, 1),\n  /* @__PURE__ */ new Y(1, 1, 1)\n], Fv = [\n  3,\n  1,\n  5,\n  0,\n  4,\n  2\n], Zi = Wp(le(), Nt(\"faceIndex\")).normalize(), yu = T(Zi.x, Zi.y, Zi.z);\nclass Uv {\n  constructor(e) {\n    this._renderer = e, this._pingPongRenderTarget = null, this._lodMax = 0, this._cubeSize = 0, this._lodPlanes = [], this._sizeLods = [], this._sigmas = [], this._lodMeshes = [], this._blurMaterial = null, this._cubemapMaterial = null, this._equirectMaterial = null, this._backgroundBox = null;\n  }\n  get _hasInitialized() {\n    return this._renderer.hasInitialized();\n  }\n  /**\n   * Generates a PMREM from a supplied Scene, which can be faster than using an\n   * image if networking bandwidth is low. Optional sigma specifies a blur radius\n   * in radians to be applied to the scene before PMREM generation. Optional near\n   * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n   * is placed at the origin).\n   *\n   * @param {Scene} scene - The scene to be captured.\n   * @param {Number} [sigma=0] - The blur radius in radians.\n   * @param {Number} [near=0.1] - The near plane distance.\n   * @param {Number} [far=100] - The far plane distance.\n   * @param {RenderTarget?} [renderTarget=null] - The render target to use.\n   * @return {RenderTarget} The resulting PMREM.\n   */\n  fromScene(e, t = 0, s = 0.1, n = 100, r = null) {\n    if (this._setSize(256), this._hasInitialized === !1) {\n      console.warn(\"THREE.PMREMGenerator: .fromScene() called before the backend is initialized. Try using .fromSceneAsync() instead.\");\n      const a = r || this._allocateTargets();\n      return this.fromSceneAsync(e, t, s, n, a), a;\n    }\n    Yi = this._renderer.getRenderTarget(), ji = this._renderer.getActiveCubeFace(), Qi = this._renderer.getActiveMipmapLevel();\n    const i = r || this._allocateTargets();\n    return i.depthBuffer = !0, this._sceneToCubeUV(e, s, n, i), t > 0 && this._blur(i, 0, 0, t), this._applyPMREM(i), this._cleanup(i), i;\n  }\n  async fromSceneAsync(e, t = 0, s = 0.1, n = 100, r = null) {\n    return this._hasInitialized === !1 && await this._renderer.init(), this.fromScene(e, t, s, n, r);\n  }\n  /**\n   * Generates a PMREM from an equirectangular texture, which can be either LDR\n   * or HDR. The ideal input image size is 1k (1024 x 512),\n   * as this matches best with the 256 x 256 cubemap output.\n   *\n   * @param {Texture} equirectangular - The equirectangular texture to be converted.\n   * @param {RenderTarget?} [renderTarget=null] - The render target to use.\n   * @return {RenderTarget} The resulting PMREM.\n   */\n  fromEquirectangular(e, t = null) {\n    if (this._hasInitialized === !1) {\n      console.warn(\"THREE.PMREMGenerator: .fromEquirectangular() called before the backend is initialized. Try using .fromEquirectangularAsync() instead.\"), this._setSizeFromTexture(e);\n      const s = t || this._allocateTargets();\n      return this.fromEquirectangularAsync(e, s), s;\n    }\n    return this._fromTexture(e, t);\n  }\n  async fromEquirectangularAsync(e, t = null) {\n    return this._hasInitialized === !1 && await this._renderer.init(), this._fromTexture(e, t);\n  }\n  /**\n   * Generates a PMREM from an cubemap texture, which can be either LDR\n   * or HDR. The ideal input cube size is 256 x 256,\n   * as this matches best with the 256 x 256 cubemap output.\n   *\n   * @param {Texture} cubemap - The cubemap texture to be converted.\n   * @param {RenderTarget?} [renderTarget=null] - The render target to use.\n   * @return {RenderTarget} The resulting PMREM.\n   */\n  fromCubemap(e, t = null) {\n    if (this._hasInitialized === !1) {\n      console.warn(\"THREE.PMREMGenerator: .fromCubemap() called before the backend is initialized. Try using .fromCubemapAsync() instead.\"), this._setSizeFromTexture(e);\n      const s = t || this._allocateTargets();\n      return this.fromCubemapAsync(e, t), s;\n    }\n    return this._fromTexture(e, t);\n  }\n  async fromCubemapAsync(e, t = null) {\n    return this._hasInitialized === !1 && await this._renderer.init(), this._fromTexture(e, t);\n  }\n  /**\n   * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n   * your texture's network fetch for increased concurrency.\n   */\n  async compileCubemapShader() {\n    this._cubemapMaterial === null && (this._cubemapMaterial = Tc(), await this._compileMaterial(this._cubemapMaterial));\n  }\n  /**\n   * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n   * your texture's network fetch for increased concurrency.\n   */\n  async compileEquirectangularShader() {\n    this._equirectMaterial === null && (this._equirectMaterial = _c(), await this._compileMaterial(this._equirectMaterial));\n  }\n  /**\n   * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n   * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n   * one of them will cause any others to also become unusable.\n   */\n  dispose() {\n    this._dispose(), this._cubemapMaterial !== null && this._cubemapMaterial.dispose(), this._equirectMaterial !== null && this._equirectMaterial.dispose(), this._backgroundBox !== null && (this._backgroundBox.geometry.dispose(), this._backgroundBox.material.dispose());\n  }\n  // private interface\n  _setSizeFromTexture(e) {\n    e.mapping === Ks || e.mapping === Ys ? this._setSize(e.image.length === 0 ? 16 : e.image[0].width || e.image[0].image.width) : this._setSize(e.image.width / 4);\n  }\n  _setSize(e) {\n    this._lodMax = Math.floor(Math.log2(e)), this._cubeSize = Math.pow(2, this._lodMax);\n  }\n  _dispose() {\n    this._blurMaterial !== null && this._blurMaterial.dispose(), this._pingPongRenderTarget !== null && this._pingPongRenderTarget.dispose();\n    for (let e = 0; e < this._lodPlanes.length; e++)\n      this._lodPlanes[e].dispose();\n  }\n  _cleanup(e) {\n    this._renderer.setRenderTarget(Yi, ji, Qi), e.scissorTest = !1, mr(e, 0, 0, e.width, e.height);\n  }\n  _fromTexture(e, t) {\n    this._setSizeFromTexture(e), Yi = this._renderer.getRenderTarget(), ji = this._renderer.getActiveCubeFace(), Qi = this._renderer.getActiveMipmapLevel();\n    const s = t || this._allocateTargets();\n    return this._textureToCubeUV(e, s), this._applyPMREM(s), this._cleanup(s), s;\n  }\n  _allocateTargets() {\n    const e = 3 * Math.max(this._cubeSize, 112), t = 4 * this._cubeSize, s = {\n      magFilter: Lt,\n      minFilter: Lt,\n      generateMipmaps: !1,\n      type: at,\n      format: Xs,\n      colorSpace: cs\n      //depthBuffer: false\n    }, n = xc(e, t, s);\n    if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== e || this._pingPongRenderTarget.height !== t) {\n      this._pingPongRenderTarget !== null && this._dispose(), this._pingPongRenderTarget = xc(e, t, s);\n      const { _lodMax: r } = this;\n      ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas, lodMeshes: this._lodMeshes } = Pv(r)), this._blurMaterial = Dv(r, e, t);\n    }\n    return n;\n  }\n  async _compileMaterial(e) {\n    const t = new js(this._lodPlanes[0], e);\n    await this._renderer.compile(t, Ki);\n  }\n  _sceneToCubeUV(e, t, s, n) {\n    const r = Bv;\n    r.near = t, r.far = s;\n    const i = [1, 1, 1, 1, -1, 1], a = [1, -1, 1, -1, 1, -1], u = this._renderer, c = u.autoClear;\n    u.getClearColor(mc), u.autoClear = !1;\n    let l = this._backgroundBox;\n    if (l === null) {\n      const p = new Gc({\n        name: \"PMREM.Background\",\n        side: Tt,\n        depthWrite: !1,\n        depthTest: !1\n      });\n      l = new js(new Cl(), p);\n    }\n    let d = !1;\n    const h = e.background;\n    h ? h.isColor && (l.material.color.copy(h), e.background = null, d = !0) : (l.material.color.copy(mc), d = !0), u.setRenderTarget(n), u.clear(), d && u.render(l, r);\n    for (let p = 0; p < 6; p++) {\n      const f = p % 3;\n      f === 0 ? (r.up.set(0, i[p], 0), r.lookAt(a[p], 0, 0)) : f === 1 ? (r.up.set(0, 0, i[p]), r.lookAt(0, a[p], 0)) : (r.up.set(0, i[p], 0), r.lookAt(0, 0, a[p]));\n      const m = this._cubeSize;\n      mr(n, f * m, p > 2 ? m : 0, m, m), u.render(e, r);\n    }\n    u.autoClear = c, e.background = h;\n  }\n  _textureToCubeUV(e, t) {\n    const s = this._renderer, n = e.mapping === Ks || e.mapping === Ys;\n    n ? this._cubemapMaterial === null && (this._cubemapMaterial = Tc(e)) : this._equirectMaterial === null && (this._equirectMaterial = _c(e));\n    const r = n ? this._cubemapMaterial : this._equirectMaterial;\n    r.fragmentNode.value = e;\n    const i = this._lodMeshes[0];\n    i.material = r;\n    const a = this._cubeSize;\n    mr(t, 0, 0, 3 * a, 2 * a), s.setRenderTarget(t), s.render(i, Ki);\n  }\n  _applyPMREM(e) {\n    const t = this._renderer, s = t.autoClear;\n    t.autoClear = !1;\n    const n = this._lodPlanes.length;\n    for (let r = 1; r < n; r++) {\n      const i = Math.sqrt(this._sigmas[r] * this._sigmas[r] - this._sigmas[r - 1] * this._sigmas[r - 1]), a = yc[(n - r - 1) % yc.length];\n      this._blur(e, r - 1, r, i, a);\n    }\n    t.autoClear = s;\n  }\n  /**\n   * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n   * vertically and horizontally, but this breaks down on a cube. Here we apply\n   * the blur latitudinally (around the poles), and then longitudinally (towards\n   * the poles) to approximate the orthogonally-separable blur. It is least\n   * accurate at the poles, but still does a decent job.\n   *\n   * @param {RenderTarget} cubeUVRenderTarget - The cubemap render target.\n   * @param {Number} lodIn - The input level-of-detail.\n   * @param {Number} lodOut - The output level-of-detail.\n   * @param {Number} sigma - The blur radius in radians.\n   * @param {Vector3} [poleAxis] - The pole axis.\n   */\n  _blur(e, t, s, n, r) {\n    const i = this._pingPongRenderTarget;\n    this._halfBlur(\n      e,\n      i,\n      t,\n      s,\n      n,\n      \"latitudinal\",\n      r\n    ), this._halfBlur(\n      i,\n      e,\n      s,\n      s,\n      n,\n      \"longitudinal\",\n      r\n    );\n  }\n  _halfBlur(e, t, s, n, r, i, a) {\n    const u = this._renderer, c = this._blurMaterial;\n    i !== \"latitudinal\" && i !== \"longitudinal\" && console.error(\"blur direction must be either latitudinal or longitudinal!\");\n    const l = 3, d = this._lodMeshes[n];\n    d.material = c;\n    const h = c.uniforms, p = this._sizeLods[s] - 1, f = isFinite(r) ? Math.PI / (2 * p) : 2 * Math.PI / (2 * is - 1), m = r / f, _ = isFinite(r) ? 1 + Math.floor(l * m) : is;\n    _ > is && console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${_} samples when the maximum is set to ${is}`);\n    const S = [];\n    let A = 0;\n    for (let V = 0; V < is; ++V) {\n      const k = V / m, ie = Math.exp(-k * k / 2);\n      S.push(ie), V === 0 ? A += ie : V < _ && (A += 2 * ie);\n    }\n    for (let V = 0; V < S.length; V++)\n      S[V] = S[V] / A;\n    e.texture.frame = (e.texture.frame || 0) + 1, h.envMap.value = e.texture, h.samples.value = _, h.weights.array = S, h.latitudinal.value = i === \"latitudinal\" ? 1 : 0, a && (h.poleAxis.value = a);\n    const { _lodMax: M } = this;\n    h.dTheta.value = f, h.mipInt.value = M - s;\n    const F = this._sizeLods[n], D = 3 * F * (n > M - Os ? n - M + Os : 0), P = 4 * (this._cubeSize - F);\n    mr(t, D, P, 3 * F, 2 * F), u.setRenderTarget(t), u.render(d, Ki);\n  }\n}\nfunction Pv(o) {\n  const e = [], t = [], s = [], n = [];\n  let r = o;\n  const i = o - Os + 1 + gc.length;\n  for (let a = 0; a < i; a++) {\n    const u = Math.pow(2, r);\n    t.push(u);\n    let c = 1 / u;\n    a > o - Os ? c = gc[a - o + Os - 1] : a === 0 && (c = 0), s.push(c);\n    const l = 1 / (u - 2), d = -l, h = 1 + l, p = [d, d, h, d, h, h, d, d, h, h, d, h], f = 6, m = 6, _ = 3, S = 2, A = 1, M = new Float32Array(_ * m * f), F = new Float32Array(S * m * f), D = new Float32Array(A * m * f);\n    for (let V = 0; V < f; V++) {\n      const k = V % 3 * 2 / 3 - 1, ie = V > 2 ? 0 : -1, me = [\n        k,\n        ie,\n        0,\n        k + 2 / 3,\n        ie,\n        0,\n        k + 2 / 3,\n        ie + 1,\n        0,\n        k,\n        ie,\n        0,\n        k + 2 / 3,\n        ie + 1,\n        0,\n        k,\n        ie + 1,\n        0\n      ], ne = Fv[V];\n      M.set(me, _ * m * ne), F.set(p, S * m * ne);\n      const Ke = [ne, ne, ne, ne, ne, ne];\n      D.set(Ke, A * m * ne);\n    }\n    const P = new El();\n    P.setAttribute(\"position\", new Cr(M, _)), P.setAttribute(\"uv\", new Cr(F, S)), P.setAttribute(\"faceIndex\", new Cr(D, A)), e.push(P), n.push(new js(P, null)), r > Os && r--;\n  }\n  return { lodPlanes: e, sizeLods: t, sigmas: s, lodMeshes: n };\n}\nfunction xc(o, e, t) {\n  const s = new ms(o, e, t);\n  return s.texture.mapping = po, s.texture.name = \"PMREM.cubeUv\", s.texture.isPMREMTexture = !0, s.scissorTest = !0, s;\n}\nfunction mr(o, e, t, s, n) {\n  o.viewport.set(e, t, s, n), o.scissor.set(e, t, s, n);\n}\nfunction xu(o) {\n  const e = new ge();\n  return e.depthTest = !1, e.depthWrite = !1, e.blending = Mn, e.name = `PMREM_${o}`, e;\n}\nfunction Dv(o, e, t) {\n  const s = Ut(new Array(is).fill(0)), n = L(new Y(0, 1, 0)), r = L(0), i = g(is), a = L(0), u = L(1), c = X(null), l = L(0), d = g(1 / e), h = g(1 / t), p = g(o), f = {\n    n: i,\n    latitudinal: a,\n    weights: s,\n    poleAxis: n,\n    outputDirection: yu,\n    dTheta: r,\n    samples: u,\n    envMap: c,\n    mipInt: l,\n    CUBEUV_TEXEL_WIDTH: d,\n    CUBEUV_TEXEL_HEIGHT: h,\n    CUBEUV_MAX_MIP: p\n  }, m = xu(\"blur\");\n  return m.uniforms = f, m.fragmentNode = qp({ ...f, latitudinal: a.equal(1) }), m;\n}\nfunction Tc(o) {\n  const e = xu(\"cubemap\");\n  return e.fragmentNode = Js(o, yu), e;\n}\nfunction _c(o) {\n  const e = xu(\"equirect\");\n  return e.fragmentNode = X(o, ja(yu), 0), e;\n}\nconst Nc = /* @__PURE__ */ new WeakMap(), Iv = /* @__PURE__ */ new Map([\n  [Int8Array, \"int\"],\n  [Int16Array, \"int\"],\n  [Int32Array, \"int\"],\n  [Uint8Array, \"uint\"],\n  [Uint16Array, \"uint\"],\n  [Uint32Array, \"uint\"],\n  [Float32Array, \"float\"]\n]), yr = (o) => /e/g.test(o) ? String(o).replace(/\\+/g, \"\") : (o = Number(o), o + (o % 1 ? \"\" : \".0\"));\nclass qf {\n  /**\n   * Constructs a new node builder.\n   *\n   * @param {Object3D} object - The 3D object.\n   * @param {Renderer} renderer - The current renderer.\n   * @param {NodeParser} parser - A reference to a node parser.\n   */\n  constructor(e, t, s) {\n    this.object = e, this.material = e && e.material || null, this.geometry = e && e.geometry || null, this.renderer = t, this.parser = s, this.scene = null, this.camera = null, this.nodes = [], this.sequentialNodes = [], this.updateNodes = [], this.updateBeforeNodes = [], this.updateAfterNodes = [], this.hashNodes = {}, this.monitor = null, this.lightsNode = null, this.environmentNode = null, this.fogNode = null, this.clippingContext = null, this.vertexShader = null, this.fragmentShader = null, this.computeShader = null, this.flowNodes = { vertex: [], fragment: [], compute: [] }, this.flowCode = { vertex: \"\", fragment: \"\", compute: \"\" }, this.uniforms = { vertex: [], fragment: [], compute: [], index: 0 }, this.structs = { vertex: [], fragment: [], compute: [], index: 0 }, this.bindings = { vertex: {}, fragment: {}, compute: {} }, this.bindingsIndexes = {}, this.bindGroups = null, this.attributes = [], this.bufferAttributes = [], this.varyings = [], this.codes = {}, this.vars = {}, this.flow = { code: \"\" }, this.chaining = [], this.stack = Fr(), this.stacks = [], this.tab = \"\t\", this.currentFunctionNode = null, this.context = {\n      material: this.material\n    }, this.cache = new Xi(), this.globalCache = this.cache, this.flowsData = /* @__PURE__ */ new WeakMap(), this.shaderStage = null, this.buildStage = null, this.useComparisonMethod = !1;\n  }\n  /**\n   * Returns the bind groups of the current renderer.\n   *\n   * @return {ChainMap} The cache.\n   */\n  getBindGroupsCache() {\n    let e = Nc.get(this.renderer);\n    return e === void 0 && (e = new At(), Nc.set(this.renderer, e)), e;\n  }\n  /**\n   * Factory method for creating an instance of {@link RenderTarget} with the given\n   * dimensions and options.\n   *\n   * @param {Number} width - The width of the render target.\n   * @param {Number} height - The height of the render target.\n   * @param {Object} options - The options of the render target.\n   * @return {RenderTarget} The render target.\n   */\n  createRenderTarget(e, t, s) {\n    return new ms(e, t, s);\n  }\n  /**\n   * Factory method for creating an instance of {@link CubeRenderTarget} with the given\n   * dimensions and options.\n   *\n   * @param {Number} size - The size of the cube render target.\n   * @param {Object} options - The options of the cube render target.\n   * @return {CubeRenderTarget} The cube render target.\n   */\n  createCubeRenderTarget(e, t) {\n    return new Mp(e, t);\n  }\n  /**\n   * Factory method for creating an instance of {@link PMREMGenerator}.\n   *\n   * @return {PMREMGenerator} The PMREM generator.\n   */\n  createPMREMGenerator() {\n    return new Uv(this.renderer);\n  }\n  /**\n   * Whether the given node is included in the internal array of nodes or not.\n   *\n   * @param {Node} node - The node to test.\n   * @return {Boolean} Whether the given node is included in the internal array of nodes or not.\n   */\n  includes(e) {\n    return this.nodes.includes(e);\n  }\n  /**\n   * Returns a bind group for the given group name and binding.\n   *\n   * @private\n   * @param {String} groupName - The group name.\n   * @param {Array<NodeUniformsGroup>} bindings - List of bindings.\n   * @return {BindGroup} The bind group\n   */\n  _getBindGroup(e, t) {\n    const s = this.getBindGroupsCache(), n = [];\n    let r = !0;\n    for (const a of t)\n      n.push(a), r = r && a.groupNode.shared !== !0;\n    let i;\n    return r ? (i = s.get(n), i === void 0 && (i = new jo(e, n, this.bindingsIndexes[e].group, n), s.set(n, i))) : i = new jo(e, n, this.bindingsIndexes[e].group, n), i;\n  }\n  /**\n   * Returns an array of node uniform groups for the given group name and shader stage.\n   *\n   * @param {String} groupName - The group name.\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {Array<NodeUniformsGroup>} The array of node uniform groups.\n   */\n  getBindGroupArray(e, t) {\n    const s = this.bindings[t];\n    let n = s[e];\n    return n === void 0 && (this.bindingsIndexes[e] === void 0 && (this.bindingsIndexes[e] = { binding: 0, group: Object.keys(this.bindingsIndexes).length }), s[e] = n = []), n;\n  }\n  /**\n   * Returns a list bindings of all shader stages separated by groups.\n   *\n   * @return {Array<BindGroup>} The list of bindings.\n   */\n  getBindings() {\n    let e = this.bindGroups;\n    if (e === null) {\n      const t = {}, s = this.bindings;\n      for (const n of Po)\n        for (const r in s[n]) {\n          const i = s[n][r];\n          (t[r] || (t[r] = [])).push(...i);\n        }\n      e = [];\n      for (const n in t) {\n        const r = t[n], i = this._getBindGroup(n, r);\n        e.push(i);\n      }\n      this.bindGroups = e;\n    }\n    return e;\n  }\n  /**\n   * Sorts the bind groups and updates {@link NodeBuilder#bindingsIndexes}.\n   */\n  sortBindingGroups() {\n    const e = this.getBindings();\n    e.sort((t, s) => t.bindings[0].groupNode.order - s.bindings[0].groupNode.order);\n    for (let t = 0; t < e.length; t++) {\n      const s = e[t];\n      this.bindingsIndexes[s.name].group = t, s.index = t;\n    }\n  }\n  /**\n   * The builder maintains each node in a hash-based dictionary.\n   * This method sets the given node (value) with the given hash (key) into this dictionary.\n   *\n   * @param {Node} node - The node to add.\n   * @param {Number} hash - The hash of the node.\n   */\n  setHashNode(e, t) {\n    this.hashNodes[t] = e;\n  }\n  /**\n   * Adds a node to this builder.\n   *\n   * @param {Node} node - The node to add.\n   */\n  addNode(e) {\n    this.nodes.includes(e) === !1 && (this.nodes.push(e), this.setHashNode(e, e.getHash(this)));\n  }\n  /**\n   * It is used to add Nodes that will be used as FRAME and RENDER events,\n   * and need to follow a certain sequence in the calls to work correctly.\n   * This function should be called after 'setup()' in the 'build()' process to ensure that the child nodes are processed first.\n   *\n   * @param {Node} node - The node to add.\n   */\n  addSequentialNode(e) {\n    this.sequentialNodes.includes(e) === !1 && this.sequentialNodes.push(e);\n  }\n  /**\n   * Checks the update types of nodes\n   */\n  buildUpdateNodes() {\n    for (const e of this.nodes)\n      e.getUpdateType() !== z.NONE && this.updateNodes.push(e.getSelf());\n    for (const e of this.sequentialNodes) {\n      const t = e.getUpdateBeforeType(), s = e.getUpdateAfterType();\n      t !== z.NONE && this.updateBeforeNodes.push(e.getSelf()), s !== z.NONE && this.updateAfterNodes.push(e.getSelf());\n    }\n  }\n  /**\n   * A reference the current node which is the\n   * last node in the chain of nodes.\n   *\n   * @type {Node}\n   */\n  get currentNode() {\n    return this.chaining[this.chaining.length - 1];\n  }\n  /**\n   * Whether the given texture is filtered or not.\n   *\n   * @param {Texture} texture - The texture to check.\n   * @return {Boolean} Whether the given texture is filtered or not.\n   */\n  isFilteredTexture(e) {\n    return e.magFilter === Lt || e.magFilter === Bo || e.magFilter === Hs || e.magFilter === ds || e.minFilter === Lt || e.minFilter === Bo || e.minFilter === Hs || e.minFilter === ds;\n  }\n  /**\n   * Adds the given node to the internal node chain.\n   * This is used to check recursive calls in node-graph.\n   *\n   * @param {Node} node - The node to add.\n   */\n  addChain(e) {\n    this.chaining.push(e);\n  }\n  /**\n   * Removes the given node from the internal node chain.\n   *\n   * @param {Node} node - The node to remove.\n   */\n  removeChain(e) {\n    if (this.chaining.pop() !== e)\n      throw new Error(\"NodeBuilder: Invalid node chaining!\");\n  }\n  /**\n   * Returns the native shader method name for a given generic name. E.g.\n   * the method name `textureDimensions` matches the WGSL name but must be\n   * resolved to `textureSize` in GLSL.\n   *\n   * @abstract\n   * @param {String} method - The method name to resolve.\n   * @return {String} The resolved method name.\n   */\n  getMethod(e) {\n    return e;\n  }\n  /**\n   * Returns a node for the given hash, see {@link NodeBuilder#setHashNode}.\n   *\n   * @param {Number} hash - The hash of the node.\n   * @return {Node} The found node.\n   */\n  getNodeFromHash(e) {\n    return this.hashNodes[e];\n  }\n  /**\n   * Adds the Node to a target flow so that it can generate code in the 'generate' process.\n   *\n   * @param {('vertex'|'fragment'|'compute')} shaderStage - The shader stage.\n   * @param {Node} node - The node to add.\n   * @return {Node} The node.\n   */\n  addFlow(e, t) {\n    return this.flowNodes[e].push(t), t;\n  }\n  /**\n   * Sets builder's context.\n   *\n   * @param {Object} context - The context to set.\n   */\n  setContext(e) {\n    this.context = e;\n  }\n  /**\n   * Returns the builder's current context.\n   *\n   * @return {Object} The builder's current context.\n   */\n  getContext() {\n    return this.context;\n  }\n  /**\n   * Gets a context used in shader construction that can be shared across different materials.\n   * This is necessary since the renderer cache can reuse shaders generated in one material and use them in another.\n   *\n   * @return {Object} The builder's current context without material.\n   */\n  getSharedContext() {\n    return { ...this.context }, this.context;\n  }\n  /**\n   * Sets builder's cache.\n   *\n   * @param {NodeCache} cache - The cache to set.\n   */\n  setCache(e) {\n    this.cache = e;\n  }\n  /**\n   * Returns the builder's current cache.\n   *\n   * @return {NodeCache} The builder's current cache.\n   */\n  getCache() {\n    return this.cache;\n  }\n  /**\n   * Returns a cache for the given node.\n   *\n   * @param {Node} node - The node.\n   * @param {Boolean} [parent=true] - Whether this node refers to a shared parent cache or not.\n   * @return {NodeCache} The cache.\n   */\n  getCacheFromNode(e, t = !0) {\n    const s = this.getDataFromNode(e);\n    return s.cache === void 0 && (s.cache = new Xi(t ? this.getCache() : null)), s.cache;\n  }\n  /**\n   * Whether the requested feature is available or not.\n   *\n   * @abstract\n   * @param {String} name - The requested feature.\n   * @return {Boolean} Whether the requested feature is supported or not.\n   */\n  isAvailable() {\n    return !1;\n  }\n  /**\n   * Returns the vertexIndex input variable as a native shader string.\n   *\n   * @abstract\n   * @return {String} The instanceIndex shader string.\n   */\n  getVertexIndex() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Returns the instanceIndex input variable as a native shader string.\n   *\n   * @abstract\n   * @return {String} The instanceIndex shader string.\n   */\n  getInstanceIndex() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Returns the drawIndex input variable as a native shader string.\n   * Only relevant for WebGL and its `WEBGL_multi_draw` extension.\n   *\n   * @abstract\n   * @return {String} The drawIndex shader string.\n   */\n  getDrawIndex() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Returns the frontFacing input variable as a native shader string.\n   *\n   * @abstract\n   * @return {String} The frontFacing shader string.\n   */\n  getFrontFacing() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Returns the fragCoord input variable as a native shader string.\n   *\n   * @abstract\n   * @return {String} The fragCoord shader string.\n   */\n  getFragCoord() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Whether to flip texture data along its vertical axis or not. WebGL needs\n   * this method evaluate to `true`, WebGPU to `false`.\n   *\n   * @abstract\n   * @return {Boolean} Whether to flip texture data along its vertical axis or not.\n   */\n  isFlipY() {\n    return !1;\n  }\n  /**\n   * Calling this method increases the usage count for the given node by one.\n   *\n   * @param {Node} node - The node to increase the usage count for.\n   * @return {Number} The updated usage count.\n   */\n  increaseUsage(e) {\n    const t = this.getDataFromNode(e);\n    return t.usageCount = t.usageCount === void 0 ? 1 : t.usageCount + 1, t.usageCount;\n  }\n  /**\n   * Generates a texture sample shader string for the given texture data.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture.\n   * @param {String} textureProperty - The texture property name.\n   * @param {String} uvSnippet - Snippet defining the texture coordinates.\n   * @return {String} The generated shader string.\n   */\n  generateTexture() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Generates a texture LOD shader string for the given texture data.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture.\n   * @param {String} textureProperty - The texture property name.\n   * @param {String} uvSnippet - Snippet defining the texture coordinates.\n   * @param {String} levelSnippet - Snippet defining the mip level.\n   * @return {String} The generated shader string.\n   */\n  generateTextureLod() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Generates the shader string for the given type and value.\n   *\n   * @param {String} type - The type.\n   * @param {Any?} [value=null] - The value.\n   * @return {String} The generated value as a shader string.\n   */\n  generateConst(e, t = null) {\n    if (t === null && (e === \"float\" || e === \"int\" || e === \"uint\" ? t = 0 : e === \"bool\" ? t = !1 : e === \"color\" ? t = new Ct() : e === \"vec2\" ? t = new He() : e === \"vec3\" ? t = new Y() : e === \"vec4\" && (t = new Ce())), e === \"float\") return yr(t);\n    if (e === \"int\") return `${Math.round(t)}`;\n    if (e === \"uint\") return t >= 0 ? `${Math.round(t)}u` : \"0u\";\n    if (e === \"bool\") return t ? \"true\" : \"false\";\n    if (e === \"color\") return `${this.getType(\"vec3\")}( ${yr(t.r)}, ${yr(t.g)}, ${yr(t.b)} )`;\n    const s = this.getTypeLength(e), n = this.getComponentType(e), r = (i) => this.generateConst(n, i);\n    if (s === 2)\n      return `${this.getType(e)}( ${r(t.x)}, ${r(t.y)} )`;\n    if (s === 3)\n      return `${this.getType(e)}( ${r(t.x)}, ${r(t.y)}, ${r(t.z)} )`;\n    if (s === 4)\n      return `${this.getType(e)}( ${r(t.x)}, ${r(t.y)}, ${r(t.z)}, ${r(t.w)} )`;\n    if (s > 4 && t && (t.isMatrix3 || t.isMatrix4))\n      return `${this.getType(e)}( ${t.elements.map(r).join(\", \")} )`;\n    if (s > 4)\n      return `${this.getType(e)}()`;\n    throw new Error(`NodeBuilder: Type '${e}' not found in generate constant attempt.`);\n  }\n  /**\n   * It might be necessary to convert certain data types to different ones\n   * so this method can be used to hide the conversion.\n   *\n   * @param {String} type - The type.\n   * @return {String} The updated type.\n   */\n  getType(e) {\n    return e === \"color\" ? \"vec3\" : e;\n  }\n  /**\n   * Whether the given attribute name is defined in the geometry or not.\n   *\n   * @param {String} name - The attribute name.\n   * @return {Boolean} Whether the given attribute name is defined in the geometry.\n   */\n  hasGeometryAttribute(e) {\n    return this.geometry && this.geometry.getAttribute(e) !== void 0;\n  }\n  /**\n   * Returns a node attribute for the given name and type.\n   *\n   * @param {String} name - The attribute's name.\n   * @param {String} type - The attribute's type.\n   * @return {NodeAttribute} The node attribute.\n   */\n  getAttribute(e, t) {\n    const s = this.attributes;\n    for (const r of s)\n      if (r.name === e)\n        return r;\n    const n = new fc(e, t);\n    return s.push(n), n;\n  }\n  /**\n   * Returns for the given node and shader stage the property name for the shader.\n   *\n   * @param {Node} node - The node.\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {String} The property name.\n   */\n  getPropertyName(e) {\n    return e.name;\n  }\n  /**\n   * Whether the given type is a vector type or not.\n   *\n   * @param {String} type - The type to check.\n   * @return {Boolean} Whether the given type is a vector type or not.\n   */\n  isVector(e) {\n    return /vec\\d/.test(e);\n  }\n  /**\n   * Whether the given type is a matrix type or not.\n   *\n   * @param {String} type - The type to check.\n   * @return {Boolean} Whether the given type is a matrix type or not.\n   */\n  isMatrix(e) {\n    return /mat\\d/.test(e);\n  }\n  /**\n   * Whether the given type is a reference type or not.\n   *\n   * @param {String} type - The type to check.\n   * @return {Boolean} Whether the given type is a reference type or not.\n   */\n  isReference(e) {\n    return e === \"void\" || e === \"property\" || e === \"sampler\" || e === \"texture\" || e === \"cubeTexture\" || e === \"storageTexture\" || e === \"depthTexture\" || e === \"texture3D\";\n  }\n  /**\n   * Whether the given texture needs a conversion to working color space.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture to check.\n   * @return {Boolean} Whether a color space conversion is required or not.\n   */\n  needsToWorkingColorSpace() {\n    return !1;\n  }\n  /**\n   * Returns the component type of a given texture.\n   *\n   * @param {Texture} texture - The texture.\n   * @return {String} The component type.\n   */\n  getComponentTypeFromTexture(e) {\n    const t = e.type;\n    if (e.isDataTexture) {\n      if (t === Ve) return \"int\";\n      if (t === Pe) return \"uint\";\n    }\n    return \"float\";\n  }\n  /**\n   * Returns the element type for a given type.\n   *\n   * @param {String} type - The type.\n   * @return {String} The element type.\n   */\n  getElementType(e) {\n    return e === \"mat2\" ? \"vec2\" : e === \"mat3\" ? \"vec3\" : e === \"mat4\" ? \"vec4\" : this.getComponentType(e);\n  }\n  /**\n   * Returns the component type for a given type.\n   *\n   * @param {String} type - The type.\n   * @return {String} The component type.\n   */\n  getComponentType(e) {\n    if (e = this.getVectorType(e), e === \"float\" || e === \"bool\" || e === \"int\" || e === \"uint\") return e;\n    const t = /(b|i|u|)(vec|mat)([2-4])/.exec(e);\n    return t === null ? null : t[1] === \"b\" ? \"bool\" : t[1] === \"i\" ? \"int\" : t[1] === \"u\" ? \"uint\" : \"float\";\n  }\n  /**\n   * Returns the vector type for a given type.\n   *\n   * @param {String} type - The type.\n   * @return {String} The vector type.\n   */\n  getVectorType(e) {\n    return e === \"color\" ? \"vec3\" : e === \"texture\" || e === \"cubeTexture\" || e === \"storageTexture\" || e === \"texture3D\" ? \"vec4\" : e;\n  }\n  /**\n   * Returns the data type for the given the length and component type.\n   *\n   * @param {Number} length - The length.\n   * @param {String} [componentType='float'] - The component type.\n   * @return {String} The type.\n   */\n  getTypeFromLength(e, t = \"float\") {\n    if (e === 1) return t;\n    const s = Bl(e);\n    return (t === \"float\" ? \"\" : t[0]) + s;\n  }\n  /**\n   * Returns the type for a given typed array.\n   *\n   * @param {TypedArray} array - The typed array.\n   * @return {String} The type.\n   */\n  getTypeFromArray(e) {\n    return Iv.get(e.constructor);\n  }\n  /**\n   * Returns the type for a given buffer attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   * @return {String} The type.\n   */\n  getTypeFromAttribute(e) {\n    let t = e;\n    e.isInterleavedBufferAttribute && (t = e.data);\n    const s = t.array, n = e.itemSize, r = e.normalized;\n    let i;\n    return !(e instanceof Rl) && r !== !0 && (i = this.getTypeFromArray(s)), this.getTypeFromLength(n, i);\n  }\n  /**\n   * Returns the length for the given data type.\n   *\n   * @param {String} type - The data type.\n   * @return {Number} The length.\n   */\n  getTypeLength(e) {\n    const t = this.getVectorType(e), s = /vec([2-4])/.exec(t);\n    return s !== null ? Number(s[1]) : t === \"float\" || t === \"bool\" || t === \"int\" || t === \"uint\" ? 1 : /mat2/.test(e) === !0 ? 4 : /mat3/.test(e) === !0 ? 9 : /mat4/.test(e) === !0 ? 16 : 0;\n  }\n  /**\n   * Returns the vector type for a given matrix type.\n   *\n   * @param {String} type - The matrix type.\n   * @return {String} The vector type.\n   */\n  getVectorFromMatrix(e) {\n    return e.replace(\"mat\", \"vec\");\n  }\n  /**\n   * For a given type this method changes the component type to the\n   * given value. E.g. `vec4` should be changed to the new component type\n   * `uint` which results in `uvec4`.\n   *\n   * @param {String} type - The type.\n   * @param {String} newComponentType - The new component type.\n   * @return {String} The new type.\n   */\n  changeComponentType(e, t) {\n    return this.getTypeFromLength(this.getTypeLength(e), t);\n  }\n  /**\n   * Returns the integer type pendant for the given type.\n   *\n   * @param {String} type - The type.\n   * @return {String} The integer type.\n   */\n  getIntegerType(e) {\n    const t = this.getComponentType(e);\n    return t === \"int\" || t === \"uint\" ? e : this.changeComponentType(e, \"int\");\n  }\n  /**\n   * Adds a stack node to the internal stack.\n   *\n   * @return {StackNode} The added stack node.\n   */\n  addStack() {\n    return this.stack = Fr(this.stack), this.stacks.push(ha() || this.stack), Pn(this.stack), this.stack;\n  }\n  /**\n   * Removes the last stack node from the internal stack.\n   *\n   * @return {StackNode} The removed stack node.\n   */\n  removeStack() {\n    const e = this.stack;\n    return this.stack = e.parent, Pn(this.stacks.pop()), e;\n  }\n  /**\n   * The builder maintains (cached) data for each node during the building process. This method\n   * can be used to get these data for a specific shader stage and cache.\n   *\n   * @param {Node} node - The node to get the data for.\n   * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.\n   * @param {NodeCache?} cache - An optional cache.\n   * @return {Object} The node data.\n   */\n  getDataFromNode(e, t = this.shaderStage, s = null) {\n    s = s === null ? e.isGlobal(this) ? this.globalCache : this.cache : s;\n    let n = s.getData(e);\n    return n === void 0 && (n = {}, s.setData(e, n)), n[t] === void 0 && (n[t] = {}), n[t];\n  }\n  /**\n   * Returns the properties for the given node and shader stage.\n   *\n   * @param {Node} node - The node to get the properties for.\n   * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage='any'] - The shader stage.\n   * @return {Object} The node properties.\n   */\n  getNodeProperties(e, t = \"any\") {\n    const s = this.getDataFromNode(e, t);\n    return s.properties || (s.properties = { outputNode: null });\n  }\n  /**\n   * Returns an instance of {@link NodeAttribute} for the given buffer attribute node.\n   *\n   * @param {BufferAttributeNode} node - The buffer attribute node.\n   * @param {String} type - The node type.\n   * @return {NodeAttribute} The node attribute.\n   */\n  getBufferAttributeFromNode(e, t) {\n    const s = this.getDataFromNode(e);\n    let n = s.bufferAttribute;\n    if (n === void 0) {\n      const r = this.uniforms.index++;\n      n = new fc(\"nodeAttribute\" + r, t, e), this.bufferAttributes.push(n), s.bufferAttribute = n;\n    }\n    return n;\n  }\n  /**\n   * Returns an instance of {@link StructTypeNode} for the given output struct node.\n   *\n   * @param {OutputStructNode} node - The output struct node.\n   * @param {Array<String>} types - The output struct types.\n   * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.\n   * @return {StructTypeNode} The struct type attribute.\n   */\n  getStructTypeFromNode(e, t, s = this.shaderStage) {\n    const n = this.getDataFromNode(e, s);\n    let r = n.structType;\n    if (r === void 0) {\n      const i = this.structs.index++;\n      r = new mv(\"StructType\" + i, t), this.structs[s].push(r), n.structType = r;\n    }\n    return r;\n  }\n  /**\n   * Returns an instance of {@link NodeUniform} for the given uniform node.\n   *\n   * @param {UniformNode} node - The uniform node.\n   * @param {String} type - The uniform type.\n   * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.\n   * @param {String?} name - The name of the uniform.\n   * @return {NodeUniform} The node uniform.\n   */\n  getUniformFromNode(e, t, s = this.shaderStage, n = null) {\n    const r = this.getDataFromNode(e, s, this.globalCache);\n    let i = r.uniform;\n    if (i === void 0) {\n      const a = this.uniforms.index++;\n      i = new hv(n || \"nodeUniform\" + a, t, e), this.uniforms[s].push(i), r.uniform = i;\n    }\n    return i;\n  }\n  /**\n   * Returns an instance of {@link NodeVar} for the given variable node.\n   *\n   * @param {VarNode} node - The variable node.\n   * @param {String?} name - The variable's name.\n   * @param {String} [type=node.getNodeType( this )] - The variable's type.\n   * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.\n   * @return {NodeVar} The node variable.\n   */\n  getVarFromNode(e, t = null, s = e.getNodeType(this), n = this.shaderStage) {\n    const r = this.getDataFromNode(e, n);\n    let i = r.variable;\n    if (i === void 0) {\n      const a = this.vars[n] || (this.vars[n] = []);\n      t === null && (t = \"nodeVar\" + a.length), i = new Hf(t, s), a.push(i), r.variable = i;\n    }\n    return i;\n  }\n  /**\n   * Returns an instance of {@link NodeVarying} for the given varying node.\n   *\n   * @param {(VaryingNode|PropertyNode)} node - The varying node.\n   * @param {String?} name - The varying's name.\n   * @param {String} [type=node.getNodeType( this )] - The varying's type.\n   * @return {NodeVar} The node varying.\n   */\n  getVaryingFromNode(e, t = null, s = e.getNodeType(this)) {\n    const n = this.getDataFromNode(e, \"any\");\n    let r = n.varying;\n    if (r === void 0) {\n      const i = this.varyings, a = i.length;\n      t === null && (t = \"nodeVarying\" + a), r = new pv(t, s), i.push(r), n.varying = r;\n    }\n    return r;\n  }\n  /**\n   * Returns an instance of {@link NodeCode} for the given code node.\n   *\n   * @param {CodeNode} node - The code node.\n   * @param {String} type - The node type.\n   * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.\n   * @return {NodeCode} The node code.\n   */\n  getCodeFromNode(e, t, s = this.shaderStage) {\n    const n = this.getDataFromNode(e);\n    let r = n.code;\n    if (r === void 0) {\n      const i = this.codes[s] || (this.codes[s] = []), a = i.length;\n      r = new fv(\"nodeCode\" + a, t), i.push(r), n.code = r;\n    }\n    return r;\n  }\n  /**\n  \t * Adds a code flow based on the code-block hierarchy.\n  \n  \t * This is used so that code-blocks like If,Else create their variables locally if the Node\n  \t * is only used inside one of these conditionals in the current shader stage.\n  \t *\n  \t * @param {Node} node - The node to add.\n  \t * @param {Node} nodeBlock - Node-based code-block. Usually 'ConditionalNode'.\n  \t */\n  addFlowCodeHierarchy(e, t) {\n    const { flowCodes: s, flowCodeBlock: n } = this.getDataFromNode(e);\n    let r = !0, i = t;\n    for (; i; ) {\n      if (n.get(i) === !0) {\n        r = !1;\n        break;\n      }\n      i = this.getDataFromNode(i).parentNodeBlock;\n    }\n    if (r)\n      for (const a of s)\n        this.addLineFlowCode(a);\n  }\n  /**\n   * Add a inline-code to the current flow code-block.\n   *\n   * @param {Node} node - The node to add.\n   * @param {String} code - The code to add.\n   * @param {Node} nodeBlock - Current ConditionalNode\n   */\n  addLineFlowCodeBlock(e, t, s) {\n    const n = this.getDataFromNode(e), r = n.flowCodes || (n.flowCodes = []), i = n.flowCodeBlock || (n.flowCodeBlock = /* @__PURE__ */ new WeakMap());\n    r.push(t), i.set(s, !0);\n  }\n  /**\n   * Add a inline-code to the current flow.\n   *\n   * @param {String} code - The code to add.\n   * @param {Node?} [node= null] - Optional Node, can help the system understand if the Node is part of a code-block.\n   * @return {NodeBuilder} A reference to this node builder.\n   */\n  addLineFlowCode(e, t = null) {\n    return e === \"\" ? this : (t !== null && this.context.nodeBlock && this.addLineFlowCodeBlock(t, e, this.context.nodeBlock), e = this.tab + e, /;\\s*$/.test(e) || (e = e + `;\n`), this.flow.code += e, this);\n  }\n  /**\n   * Adds a code to the current code flow.\n   *\n   * @param {String} code - Shader code.\n   * @return {NodeBuilder} A reference to this node builder.\n   */\n  addFlowCode(e) {\n    return this.flow.code += e, this;\n  }\n  /**\n   * Add tab in the code that will be generated so that other snippets respect the current tabulation.\n   * Typically used in codes with If,Else.\n   *\n   * @return {NodeBuilder} A reference to this node builder.\n   */\n  addFlowTab() {\n    return this.tab += \"\t\", this;\n  }\n  /**\n   * Removes a tab.\n   *\n   * @return {NodeBuilder} A reference to this node builder.\n   */\n  removeFlowTab() {\n    return this.tab = this.tab.slice(0, -1), this;\n  }\n  /**\n   * Gets the current flow data based on a Node.\n   *\n   * @param {Node} node - Node that the flow was started.\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {Object} The flow data.\n   */\n  getFlowData(e) {\n    return this.flowsData.get(e);\n  }\n  /**\n   * Executes the node flow based on a root node to generate the final shader code.\n   *\n   * @param {Node} node - The node to execute.\n   * @return {Object} The code flow.\n   */\n  flowNode(e) {\n    const t = e.getNodeType(this), s = this.flowChildNode(e, t);\n    return this.flowsData.set(e, s), s;\n  }\n  /**\n   * Returns the native shader operator name for a given generic name.\n   * It is a similar type of method like {@link NodeBuilder#getMethod}.\n   *\n   * @param {ShaderNodeInternal} shaderNode - The shader node to build the function node with.\n   * @return {FunctionNode} The build function node.\n   */\n  buildFunctionNode(e) {\n    const t = new Nf(), s = this.currentFunctionNode;\n    return this.currentFunctionNode = t, t.code = this.buildFunctionCode(e), this.currentFunctionNode = s, t;\n  }\n  /**\n   * Generates a code flow based on a TSL function: Fn().\n   *\n   * @param {ShaderNodeInternal} shaderNode - A function code will be generated based on the input.\n   * @return {Object}\n   */\n  flowShaderNode(e) {\n    const t = e.layout, s = {\n      [Symbol.iterator]() {\n        let i = 0;\n        const a = Object.values(this);\n        return {\n          next: () => ({\n            value: a[i],\n            done: i++ >= a.length\n          })\n        };\n      }\n    };\n    for (const i of t.inputs)\n      s[i.name] = new Zp(i.type, i.name);\n    e.layout = null;\n    const n = e.call(s), r = this.flowStagesNode(n, t.type);\n    return e.layout = t, r;\n  }\n  /**\n   * Runs the node flow through all the steps of creation, 'setup', 'analyze', 'generate'.\n   *\n   * @param {Node} node - The node to execute.\n   * @param {String?} output - Expected output type. For example 'vec3'.\n   * @return {Object}\n   */\n  flowStagesNode(e, t = null) {\n    const s = this.flow, n = this.vars, r = this.cache, i = this.buildStage, a = this.stack, u = {\n      code: \"\"\n    };\n    this.flow = u, this.vars = {}, this.cache = new Xi(), this.stack = Fr();\n    for (const c of Uo)\n      this.setBuildStage(c), u.result = e.build(this, t);\n    return u.vars = this.getVars(this.shaderStage), this.flow = s, this.vars = n, this.cache = r, this.stack = a, this.setBuildStage(i), u;\n  }\n  /**\n   * Returns the native shader operator name for a given generic name.\n   * It is a similar type of method like {@link NodeBuilder#getMethod}.\n   *\n   * @abstract\n   * @param {String} op - The operator name to resolve.\n   * @return {String} The resolved operator name.\n   */\n  getFunctionOperator() {\n    return null;\n  }\n  /**\n   * Generates a code flow based on a child Node.\n   *\n   * @param {Node} node - The node to execute.\n   * @param {String?} output - Expected output type. For example 'vec3'.\n   * @return {Object} The code flow.\n   */\n  flowChildNode(e, t = null) {\n    const s = this.flow, n = {\n      code: \"\"\n    };\n    return this.flow = n, n.result = e.build(this, t), this.flow = s, n;\n  }\n  /**\n   * Executes a flow of code in a different stage.\n   *\n   * Some nodes like `varying()` have the ability to compute code in vertex-stage and\n   * return the value in fragment-stage even if it is being executed in an input fragment.\n   *\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @param {Node} node - The node to execute.\n   * @param {String?} output - Expected output type. For example 'vec3'.\n   * @param {String?} propertyName - The property name to assign the result.\n   * @return {Object}\n   */\n  flowNodeFromShaderStage(e, t, s = null, n = null) {\n    const r = this.shaderStage;\n    this.setShaderStage(e);\n    const i = this.flowChildNode(t, s);\n    return n !== null && (i.code += `${this.tab + n} = ${i.result};\n`), this.flowCode[e] = this.flowCode[e] + i.code, this.setShaderStage(r), i;\n  }\n  /**\n   * Returns an array holding all node attributes of this node builder.\n   *\n   * @return {Array<NodeAttribute>} The node attributes of this builder.\n   */\n  getAttributesArray() {\n    return this.attributes.concat(this.bufferAttributes);\n  }\n  /**\n   * Returns the attribute definitions as a shader string for the given shader stage.\n   *\n   * @abstract\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {String} The attribute code section.\n   */\n  getAttributes() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Returns the varying definitions as a shader string for the given shader stage.\n   *\n   * @abstract\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {String} The varying code section.\n   */\n  getVaryings() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Returns a single variable definition as a shader string for the given variable type and name.\n   *\n   * @param {String} type - The variable's type.\n   * @param {String} name - The variable's name.\n   * @return {String} The shader string.\n   */\n  getVar(e, t) {\n    return `${this.getType(e)} ${t}`;\n  }\n  /**\n   * Returns the variable definitions as a shader string for the given shader stage.\n   *\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {String} The variable code section.\n   */\n  getVars(e) {\n    let t = \"\";\n    const s = this.vars[e];\n    if (s !== void 0)\n      for (const n of s)\n        t += `${this.getVar(n.type, n.name)}; `;\n    return t;\n  }\n  /**\n   * Returns the uniform definitions as a shader string for the given shader stage.\n   *\n   * @abstract\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {String} The uniform code section.\n   */\n  getUniforms() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Returns the native code definitions as a shader string for the given shader stage.\n   *\n   * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.\n   * @return {String} The native code section.\n   */\n  getCodes(e) {\n    const t = this.codes[e];\n    let s = \"\";\n    if (t !== void 0)\n      for (const n of t)\n        s += n.code + `\n`;\n    return s;\n  }\n  /**\n   * Returns the hash of this node builder.\n   *\n   * @return {String} The hash.\n   */\n  getHash() {\n    return this.vertexShader + this.fragmentShader + this.computeShader;\n  }\n  /**\n   * Sets the current shader stage.\n   *\n   * @param {('vertex'|'fragment'|'compute'|'any')?} shaderStage - The shader stage to set.\n   */\n  setShaderStage(e) {\n    this.shaderStage = e;\n  }\n  /**\n   * Returns the current shader stage.\n   *\n   * @return {('vertex'|'fragment'|'compute'|'any')?} The current shader stage.\n   */\n  getShaderStage() {\n    return this.shaderStage;\n  }\n  /**\n   * Sets the current build stage.\n   *\n   * @param {('setup'|'analyze'|'generate')?} buildStage - The build stage to set.\n   */\n  setBuildStage(e) {\n    this.buildStage = e;\n  }\n  /**\n   * Returns the current build stage.\n   *\n   * @return {('setup'|'analyze'|'generate')?} The current build stage.\n   */\n  getBuildStage() {\n    return this.buildStage;\n  }\n  /**\n   * Controls the code build of the shader stages.\n   *\n   * @abstract\n   */\n  buildCode() {\n    console.warn(\"Abstract function.\");\n  }\n  /**\n   * Central build method which controls the build for the given object.\n   *\n   * @return {NodeBuilder} A reference to this node builder.\n   */\n  build() {\n    const { object: e, material: t, renderer: s } = this;\n    if (t !== null) {\n      let n = s.library.fromMaterial(t);\n      n === null && (console.error(`NodeMaterial: Material \"${t.type}\" is not compatible.`), n = new ge()), n.build(this);\n    } else\n      this.addFlow(\"compute\", e);\n    for (const n of Uo) {\n      this.setBuildStage(n), this.context.vertex && this.context.vertex.isNode && this.flowNodeFromShaderStage(\"vertex\", this.context.vertex);\n      for (const r of Po) {\n        this.setShaderStage(r);\n        const i = this.flowNodes[r];\n        for (const a of i)\n          n === \"generate\" ? this.flowNode(a) : a.build(this);\n      }\n    }\n    return this.setBuildStage(null), this.setShaderStage(null), this.buildCode(), this.buildUpdateNodes(), this;\n  }\n  /**\n   * Returns a uniform representation which is later used for UBO generation and rendering.\n   *\n   * @param {NodeUniform} uniformNode - The uniform node.\n   * @param {String} type - The requested type.\n   * @return {Uniform} The uniform.\n   */\n  getNodeUniform(e, t) {\n    if (t === \"float\" || t === \"int\" || t === \"uint\") return new vv(e);\n    if (t === \"vec2\" || t === \"ivec2\" || t === \"uvec2\") return new Av(e);\n    if (t === \"vec3\" || t === \"ivec3\" || t === \"uvec3\") return new Rv(e);\n    if (t === \"vec4\" || t === \"ivec4\" || t === \"uvec4\") return new Cv(e);\n    if (t === \"color\") return new Ev(e);\n    if (t === \"mat3\") return new wv(e);\n    if (t === \"mat4\") return new Mv(e);\n    throw new Error(`Uniform \"${t}\" not declared.`);\n  }\n  /**\n   * Formats the given shader snippet from a given type into another one. E.g.\n   * this method might be used to convert a simple float string `\"1.0\"` into a\n   * `vec3` representation: `\"vec3<f32>( 1.0 )\"`.\n   *\n   * @param {String} snippet - The shader snippet.\n   * @param {String} fromType - The source type.\n   * @param {String} toType - The target type.\n   * @return {String} The updated shader string.\n   */\n  format(e, t, s) {\n    if (t = this.getVectorType(t), s = this.getVectorType(s), t === s || s === null || this.isReference(s))\n      return e;\n    const n = this.getTypeLength(t), r = this.getTypeLength(s);\n    return n === 16 && r === 9 ? `${this.getType(s)}(${e}[0].xyz, ${e}[1].xyz, ${e}[2].xyz)` : n === 9 && r === 4 ? `${this.getType(s)}(${e}[0].xy, ${e}[1].xy)` : n > 4 || r > 4 || r === 0 ? e : n === r ? `${this.getType(s)}( ${e} )` : n > r ? this.format(`${e}.${\"xyz\".slice(0, r)}`, this.getTypeFromLength(r, this.getComponentType(t)), s) : r === 4 && n > 1 ? `${this.getType(s)}( ${this.format(e, t, \"vec3\")}, 1.0 )` : n === 2 ? `${this.getType(s)}( ${this.format(e, t, \"vec2\")}, 0.0 )` : (n === 1 && r > 1 && t !== this.getComponentType(s) && (e = `${this.getType(this.getComponentType(s))}( ${e} )`), `${this.getType(s)}( ${e} )`);\n  }\n  /**\n   * Returns a signature with the engine's current revision.\n   *\n   * @return {String} The signature.\n   */\n  getSignature() {\n    return `// Three.js r${Hc} - Node System\n`;\n  }\n  // deprecated\n  createNodeMaterial(e = \"NodeMaterial\") {\n    throw new Error(`THREE.NodeBuilder: createNodeMaterial() was deprecated. Use new ${e}() instead.`);\n  }\n}\nclass bc {\n  /**\n   * Constructs a new node fame.\n   */\n  constructor() {\n    this.time = 0, this.deltaTime = 0, this.frameId = 0, this.renderId = 0, this.updateMap = /* @__PURE__ */ new WeakMap(), this.updateBeforeMap = /* @__PURE__ */ new WeakMap(), this.updateAfterMap = /* @__PURE__ */ new WeakMap(), this.renderer = null, this.material = null, this.camera = null, this.object = null, this.scene = null;\n  }\n  /**\n   * Returns a dictionary for a given node and update map which\n   * is used to correctly call node update methods per frame or render.\n   *\n   * @private\n   * @param {WeakMap<Node, Object>} referenceMap - The reference weak map.\n   * @param {Node} nodeRef - The reference to the current node.\n   * @return {Object<String,WeakMap>} The dictionary.\n   */\n  _getMaps(e, t) {\n    let s = e.get(t);\n    return s === void 0 && (s = {\n      renderMap: /* @__PURE__ */ new WeakMap(),\n      frameMap: /* @__PURE__ */ new WeakMap()\n    }, e.set(t, s)), s;\n  }\n  /**\n   * This method executes the {@link Node#updateBefore} for the given node.\n   * It makes sure {@link Node#updateBeforeType} is honored meaning the update\n   * is only executed once per frame, render or object depending on the update\n   * type.\n   *\n   * @param {Node} node - The node that should be updated.\n   */\n  updateBeforeNode(e) {\n    const t = e.getUpdateBeforeType(), s = e.updateReference(this);\n    if (t === z.FRAME) {\n      const { frameMap: n } = this._getMaps(this.updateBeforeMap, s);\n      n.get(s) !== this.frameId && e.updateBefore(this) !== !1 && n.set(s, this.frameId);\n    } else if (t === z.RENDER) {\n      const { renderMap: n } = this._getMaps(this.updateBeforeMap, s);\n      n.get(s) !== this.renderId && e.updateBefore(this) !== !1 && n.set(s, this.renderId);\n    } else t === z.OBJECT && e.updateBefore(this);\n  }\n  /**\n   * This method executes the {@link Node#updateAfter} for the given node.\n   * It makes sure {@link Node#updateAfterType} is honored meaning the update\n   * is only executed once per frame, render or object depending on the update\n   * type.\n   *\n   * @param {Node} node - The node that should be updated.\n   */\n  updateAfterNode(e) {\n    const t = e.getUpdateAfterType(), s = e.updateReference(this);\n    if (t === z.FRAME) {\n      const { frameMap: n } = this._getMaps(this.updateAfterMap, s);\n      n.get(s) !== this.frameId && e.updateAfter(this) !== !1 && n.set(s, this.frameId);\n    } else if (t === z.RENDER) {\n      const { renderMap: n } = this._getMaps(this.updateAfterMap, s);\n      n.get(s) !== this.renderId && e.updateAfter(this) !== !1 && n.set(s, this.renderId);\n    } else t === z.OBJECT && e.updateAfter(this);\n  }\n  /**\n   * This method executes the {@link Node#update} for the given node.\n   * It makes sure {@link Node#updateType} is honored meaning the update\n   * is only executed once per frame, render or object depending on the update\n   * type.\n   *\n   * @param {Node} node - The node that should be updated.\n   */\n  updateNode(e) {\n    const t = e.getUpdateType(), s = e.updateReference(this);\n    if (t === z.FRAME) {\n      const { frameMap: n } = this._getMaps(this.updateMap, s);\n      n.get(s) !== this.frameId && e.update(this) !== !1 && n.set(s, this.frameId);\n    } else if (t === z.RENDER) {\n      const { renderMap: n } = this._getMaps(this.updateMap, s);\n      n.get(s) !== this.renderId && e.update(this) !== !1 && n.set(s, this.renderId);\n    } else t === z.OBJECT && e.update(this);\n  }\n  /**\n   * Updates the internal state of the node frame. This method is\n   * called by the renderer in its internal animation loop.\n   */\n  update() {\n    this.frameId++, this.lastTime === void 0 && (this.lastTime = performance.now()), this.deltaTime = (performance.now() - this.lastTime) / 1e3, this.lastTime = performance.now(), this.time += this.deltaTime;\n  }\n}\nclass Tu {\n  /**\n   * Constructs a new node function input.\n   *\n   * @param {String} type - The input type.\n   * @param {String} name - The input name.\n   * @param {Number?} [count=null] - If the input is an Array, count will be the length.\n   * @param {('in'|'out'|'inout')} [qualifier=''] - The parameter qualifier (only relevant for GLSL).\n   * @param {Boolean} [isConst=false] - Whether the input uses a const qualifier or not (only relevant for GLSL).\n   */\n  constructor(e, t, s = null, n = \"\", r = !1) {\n    this.type = e, this.name = t, this.count = s, this.qualifier = n, this.isConst = r;\n  }\n}\nTu.isNodeFunctionInput = !0;\nclass Lv extends bs {\n  static get type() {\n    return \"DirectionalLightNode\";\n  }\n  /**\n   * Constructs a new directional light node.\n   *\n   * @param {DirectionalLight?} [light=null] - The directional light source.\n   */\n  constructor(e = null) {\n    super(e);\n  }\n  setup(e) {\n    super.setup(e);\n    const t = e.context.lightingModel, s = this.colorNode, n = du(this.light), r = e.context.reflectedLight;\n    t.direct({\n      lightDirection: n,\n      lightColor: s,\n      reflectedLight: r\n    }, e.stack, e);\n  }\n}\nconst Ji = /* @__PURE__ */ new Ue(), xr = /* @__PURE__ */ new Ue();\nlet mn = null;\nclass Vv extends bs {\n  static get type() {\n    return \"RectAreaLightNode\";\n  }\n  /**\n   * Constructs a new rect area light node.\n   *\n   * @param {RectAreaLight?} [light=null] - The rect area light source.\n   */\n  constructor(e = null) {\n    super(e), this.halfHeight = L(new Y()).setGroup(O), this.halfWidth = L(new Y()).setGroup(O), this.updateType = z.RENDER;\n  }\n  /**\n   * Overwritten to updated rect area light specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update(e) {\n    super.update(e);\n    const { light: t } = this, s = e.camera.matrixWorldInverse;\n    xr.identity(), Ji.copy(t.matrixWorld), Ji.premultiply(s), xr.extractRotation(Ji), this.halfWidth.value.set(t.width * 0.5, 0, 0), this.halfHeight.value.set(0, t.height * 0.5, 0), this.halfWidth.value.applyMatrix4(xr), this.halfHeight.value.applyMatrix4(xr);\n  }\n  setup(e) {\n    super.setup(e);\n    let t, s;\n    e.isAvailable(\"float32Filterable\") ? (t = X(mn.LTC_FLOAT_1), s = X(mn.LTC_FLOAT_2)) : (t = X(mn.LTC_HALF_1), s = X(mn.LTC_HALF_2));\n    const { colorNode: n, light: r } = this, i = e.context.lightingModel, a = Ri(r), u = e.context.reflectedLight;\n    i.directRectArea({\n      lightColor: n,\n      lightPosition: a,\n      halfWidth: this.halfWidth,\n      halfHeight: this.halfHeight,\n      reflectedLight: u,\n      ltc_1: t,\n      ltc_2: s\n    }, e.stack, e);\n  }\n  /**\n   * Used to configure the internal BRDF approximation texture data.\n   *\n   * @param {RectAreaLightTexturesLib} ltc - The BRDF approximation texture data.\n   */\n  static setLTC(e) {\n    mn = e;\n  }\n}\nclass Xf extends bs {\n  static get type() {\n    return \"SpotLightNode\";\n  }\n  /**\n   * Constructs a new spot light node.\n   *\n   * @param {SpotLight?} [light=null] - The spot light source.\n   */\n  constructor(e = null) {\n    super(e), this.coneCosNode = L(0).setGroup(O), this.penumbraCosNode = L(0).setGroup(O), this.cutoffDistanceNode = L(0).setGroup(O), this.decayExponentNode = L(0).setGroup(O);\n  }\n  /**\n   * Overwritten to updated spot light specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update(e) {\n    super.update(e);\n    const { light: t } = this;\n    this.coneCosNode.value = Math.cos(t.angle), this.penumbraCosNode.value = Math.cos(t.angle * (1 - t.penumbra)), this.cutoffDistanceNode.value = t.distance, this.decayExponentNode.value = t.decay;\n  }\n  /**\n   * Computes the spot attenuation for the given angle.\n   *\n   * @param {Node<float>} angleCosine - The angle to compute the spot attenuation for.\n   * @return {Node<float>} The spot attenuation.\n   */\n  getSpotAttenuation(e) {\n    const { coneCosNode: t, penumbraCosNode: s } = this;\n    return Ot(t, s, e);\n  }\n  setup(e) {\n    super.setup(e);\n    const t = e.context.lightingModel, { colorNode: s, cutoffDistanceNode: n, decayExponentNode: r, light: i } = this, a = Ri(i).sub(xe), u = a.normalize(), c = u.dot(du(i)), l = this.getSpotAttenuation(c), d = a.length(), h = fu({\n      lightDistance: d,\n      cutoffDistance: n,\n      decayExponent: r\n    });\n    let p = s.mul(l).mul(h);\n    if (i.map) {\n      const m = Af(i), _ = X(i.map, m.xy).onRenderUpdate(() => i.map);\n      p = m.mul(2).sub(1).abs().lessThan(1).all().select(p.mul(_), p);\n    }\n    const f = e.context.reflectedLight;\n    t.direct({\n      lightDirection: u,\n      lightColor: p,\n      reflectedLight: f\n    }, e.stack, e);\n  }\n}\nclass Gv extends Xf {\n  static get type() {\n    return \"IESSpotLightNode\";\n  }\n  /**\n   * Overwrites the default implementation to compute an IES conform spot attenuation.\n   *\n   * @param {Node<float>} angleCosine - The angle to compute the spot attenuation for.\n   * @return {Node<float>} The spot attenuation.\n   */\n  getSpotAttenuation(e) {\n    const t = this.light.iesMap;\n    let s = null;\n    if (t && t.isTexture === !0) {\n      const n = e.acos().mul(1 / Math.PI);\n      s = X(t, w(n, 0), 0).r;\n    } else\n      s = super.getSpotAttenuation(e);\n    return s;\n  }\n}\nclass Ov extends bs {\n  static get type() {\n    return \"AmbientLightNode\";\n  }\n  /**\n   * Constructs a new ambient light node.\n   *\n   * @param {AmbientLight?} [light=null] - The ambient light source.\n   */\n  constructor(e = null) {\n    super(e);\n  }\n  setup({ context: e }) {\n    e.irradiance.addAssign(this.colorNode);\n  }\n}\nclass kv extends bs {\n  static get type() {\n    return \"HemisphereLightNode\";\n  }\n  /**\n   * Constructs a new hemisphere light node.\n   *\n   * @param {HemisphereLight?} [light=null] - The hemisphere light source.\n   */\n  constructor(e = null) {\n    super(e), this.lightPositionNode = lu(e), this.lightDirectionNode = this.lightPositionNode.normalize(), this.groundColorNode = L(new Ct()).setGroup(O);\n  }\n  /**\n   * Overwritten to updated hemisphere light specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update(e) {\n    const { light: t } = this;\n    super.update(e), this.lightPositionNode.object3d = t, this.groundColorNode.value.copy(t.groundColor).multiplyScalar(t.intensity);\n  }\n  setup(e) {\n    const { colorNode: t, groundColorNode: s, lightDirectionNode: n } = this, i = it.dot(n).mul(0.5).add(0.5), a = Z(s, t, i);\n    e.context.irradiance.addAssign(a);\n  }\n}\nclass zv extends bs {\n  static get type() {\n    return \"LightProbeNode\";\n  }\n  /**\n   * Constructs a new light probe node.\n   *\n   * @param {LightProbe?} [light=null] - The light probe.\n   */\n  constructor(e = null) {\n    super(e);\n    const t = [];\n    for (let s = 0; s < 9; s++) t.push(new Y());\n    this.lightProbe = Ut(t);\n  }\n  /**\n   * Overwritten to updated light probe specific uniforms.\n   *\n   * @param {NodeFrame} frame - A reference to the current node frame.\n   */\n  update(e) {\n    const { light: t } = this;\n    super.update(e);\n    for (let s = 0; s < 9; s++)\n      this.lightProbe.array[s].copy(t.sh.coefficients[s]).multiplyScalar(t.intensity);\n  }\n  setup(e) {\n    const t = Wf(mi, this.lightProbe);\n    e.context.irradiance.addAssign(t);\n  }\n}\nclass Kf {\n  /**\n   * The method parses the given native code an returns a node function.\n   *\n   * @abstract\n   * @param {String} source - The native shader code.\n   * @return {NodeFunction} A node function.\n   */\n  parseFunction() {\n    console.warn(\"Abstract function.\");\n  }\n}\nclass _u {\n  /**\n   * Constructs a new node function.\n   *\n   * @param {String} type - The node type. This type is the return type of the node function.\n   * @param {Array<NodeFunctionInput>} inputs - The function's inputs.\n   * @param {String} [name=''] - The function's name.\n   * @param {String} [precision=''] - The precision qualifier.\n   */\n  constructor(e, t, s = \"\", n = \"\") {\n    this.type = e, this.inputs = t, this.name = s, this.precision = n;\n  }\n  /**\n   * This method returns the native code of the node function.\n   *\n   * @abstract\n   * @param {String} name - The function's name.\n   * @return {String} A shader code.\n   */\n  getCode() {\n    console.warn(\"Abstract function.\");\n  }\n}\n_u.isNodeFunction = !0;\nconst $v = /^\\s*(highp|mediump|lowp)?\\s*([a-z_0-9]+)\\s*([a-z_0-9]+)?\\s*\\(([\\s\\S]*?)\\)/i, Wv = /[a-z_0-9]+/ig, Sc = \"#pragma main\", Hv = (o) => {\n  o = o.trim();\n  const e = o.indexOf(Sc), t = e !== -1 ? o.slice(e + Sc.length) : o, s = t.match($v);\n  if (s !== null && s.length === 5) {\n    const n = s[4], r = [];\n    let i = null;\n    for (; (i = Wv.exec(n)) !== null; )\n      r.push(i);\n    const a = [];\n    let u = 0;\n    for (; u < r.length; ) {\n      const f = r[u][0] === \"const\";\n      f === !0 && u++;\n      let m = r[u][0];\n      m === \"in\" || m === \"out\" || m === \"inout\" ? u++ : m = \"\";\n      const _ = r[u++][0];\n      let S = Number.parseInt(r[u][0]);\n      Number.isNaN(S) === !1 ? u++ : S = null;\n      const A = r[u++][0];\n      a.push(new Tu(_, A, S, m, f));\n    }\n    const c = t.substring(s[0].length), l = s[3] !== void 0 ? s[3] : \"\", d = s[2], h = s[1] !== void 0 ? s[1] : \"\", p = e !== -1 ? o.slice(0, e) : \"\";\n    return {\n      type: d,\n      inputs: a,\n      name: l,\n      precision: h,\n      inputsCode: n,\n      blockCode: c,\n      headerCode: p\n    };\n  } else\n    throw new Error(\"FunctionNode: Function is not a GLSL code.\");\n};\nclass qv extends _u {\n  /**\n   * Constructs a new GLSL node function.\n   *\n   * @param {String} source - The GLSL source.\n   */\n  constructor(e) {\n    const { type: t, inputs: s, name: n, precision: r, inputsCode: i, blockCode: a, headerCode: u } = Hv(e);\n    super(t, s, n, r), this.inputsCode = i, this.blockCode = a, this.headerCode = u;\n  }\n  /**\n   * This method returns the GLSL code of the node function.\n   *\n   * @param {String} [name=this.name] - The function's name.\n   * @return {String} The shader code.\n   */\n  getCode(e = this.name) {\n    let t;\n    const s = this.blockCode;\n    if (s !== \"\") {\n      const { type: n, inputsCode: r, headerCode: i, precision: a } = this;\n      let u = `${n} ${e} ( ${r.trim()} )`;\n      a !== \"\" && (u = `${a} ${u}`), t = i + u + s;\n    } else\n      t = \"\";\n    return t;\n  }\n}\nclass Xv extends Kf {\n  /**\n   * The method parses the given GLSL code an returns a node function.\n   *\n   * @param {String} source - The GLSL code.\n   * @return {GLSLNodeFunction} A node function.\n   */\n  parseFunction(e) {\n    return new qv(e);\n  }\n}\nconst vc = /* @__PURE__ */ new WeakMap();\nclass Kv extends Jt {\n  /**\n   * Constructs a new nodes management component.\n   *\n   * @param {Renderer} renderer - The renderer.\n   * @param {Backend} backend - The renderer's backend.\n   */\n  constructor(e, t) {\n    super(), this.renderer = e, this.backend = t, this.nodeFrame = new bc(), this.nodeBuilderCache = /* @__PURE__ */ new Map(), this.callHashCache = new At(), this.groupsData = new At(), this.cacheLib = {};\n  }\n  /**\n   * Returns `true` if the given node uniforms group must be updated or not.\n   *\n   * @param {NodeUniformsGroup} nodeUniformsGroup - The node uniforms group.\n   * @return {Boolean} Whether the node uniforms group requires an update or not.\n   */\n  updateGroup(e) {\n    const t = e.groupNode, s = t.name;\n    if (s === ga.name) return !0;\n    if (s === O.name) {\n      const i = this.get(e), a = this.nodeFrame.renderId;\n      return i.renderId !== a ? (i.renderId = a, !0) : !1;\n    }\n    if (s === sd.name) {\n      const i = this.get(e), a = this.nodeFrame.frameId;\n      return i.frameId !== a ? (i.frameId = a, !0) : !1;\n    }\n    const n = [t, e];\n    let r = this.groupsData.get(n);\n    return r === void 0 && this.groupsData.set(n, r = {}), r.version !== t.version ? (r.version = t.version, !0) : !1;\n  }\n  /**\n   * Returns the cache key for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Number} The cache key.\n   */\n  getForRenderCacheKey(e) {\n    return e.initialCacheKey;\n  }\n  /**\n   * Returns a node builder state for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {NodeBuilderState} The node builder state.\n   */\n  getForRender(e) {\n    const t = this.get(e);\n    let s = t.nodeBuilderState;\n    if (s === void 0) {\n      const { nodeBuilderCache: n } = this, r = this.getForRenderCacheKey(e);\n      if (s = n.get(r), s === void 0) {\n        const i = this.backend.createNodeBuilder(e.object, this.renderer);\n        i.scene = e.scene, i.material = e.material, i.camera = e.camera, i.context.material = e.material, i.lightsNode = e.lightsNode, i.environmentNode = this.getEnvironmentNode(e.scene), i.fogNode = this.getFogNode(e.scene), i.clippingContext = e.clippingContext, i.build(), s = this._createNodeBuilderState(i), n.set(r, s);\n      }\n      s.usedTimes++, t.nodeBuilderState = s;\n    }\n    return s;\n  }\n  /**\n   * Deletes the given object from the internal data map\n   *\n   * @param {Any} object - The object to delete.\n   * @return {Object?} The deleted dictionary.\n   */\n  delete(e) {\n    if (e.isRenderObject) {\n      const t = this.get(e).nodeBuilderState;\n      t.usedTimes--, t.usedTimes === 0 && this.nodeBuilderCache.delete(this.getForRenderCacheKey(e));\n    }\n    return super.delete(e);\n  }\n  /**\n   * Returns a node builder state for the given compute node.\n   *\n   * @param {Node} computeNode - The compute node.\n   * @return {NodeBuilderState} The node builder state.\n   */\n  getForCompute(e) {\n    const t = this.get(e);\n    let s = t.nodeBuilderState;\n    if (s === void 0) {\n      const n = this.backend.createNodeBuilder(e, this.renderer);\n      n.build(), s = this._createNodeBuilderState(n), t.nodeBuilderState = s;\n    }\n    return s;\n  }\n  /**\n   * Creates a node builder state for the given node builder.\n   *\n   * @private\n   * @param {NodeBuilder} nodeBuilder - The node builder.\n   * @return {NodeBuilderState} The node builder state.\n   */\n  _createNodeBuilderState(e) {\n    return new dv(\n      e.vertexShader,\n      e.fragmentShader,\n      e.computeShader,\n      e.getAttributesArray(),\n      e.getBindings(),\n      e.updateNodes,\n      e.updateBeforeNodes,\n      e.updateAfterNodes,\n      e.monitor,\n      e.transforms\n    );\n  }\n  /**\n   * Returns an environment node for the current configured\n   * scene environment.\n   *\n   * @param {Scene} scene - The scene.\n   * @return {Node} A node representing the current scene environment.\n   */\n  getEnvironmentNode(e) {\n    this.updateEnvironment(e);\n    let t = null;\n    if (e.environmentNode && e.environmentNode.isNode)\n      t = e.environmentNode;\n    else {\n      const s = this.get(e);\n      s.environmentNode && (t = s.environmentNode);\n    }\n    return t;\n  }\n  /**\n   * Returns a background node for the current configured\n   * scene background.\n   *\n   * @param {Scene} scene - The scene.\n   * @return {Node} A node representing the current scene background.\n   */\n  getBackgroundNode(e) {\n    this.updateBackground(e);\n    let t = null;\n    if (e.backgroundNode && e.backgroundNode.isNode)\n      t = e.backgroundNode;\n    else {\n      const s = this.get(e);\n      s.backgroundNode && (t = s.backgroundNode);\n    }\n    return t;\n  }\n  /**\n   * Returns a fog node for the current configured scene fog.\n   *\n   * @param {Scene} scene - The scene.\n   * @return {Node} A node representing the current scene fog.\n   */\n  getFogNode(e) {\n    return this.updateFog(e), e.fogNode || this.get(e).fogNode || null;\n  }\n  /**\n   * Returns a cache key for the given scene and lights node.\n   * This key is used by `RenderObject` as a part of the dynamic\n   * cache key (a key that must be checked every time the render\n   * objects is drawn).\n   *\n   * @param {Scene} scene - The scene.\n   * @param {LightsNode} lightsNode - The lights node.\n   * @return {Number} The cache key.\n   */\n  getCacheKey(e, t) {\n    const s = [e, t], n = this.renderer.info.calls;\n    let r = this.callHashCache.get(s);\n    if (r === void 0 || r.callId !== n) {\n      const i = this.getEnvironmentNode(e), a = this.getFogNode(e), u = [];\n      t && u.push(t.getCacheKey(!0)), i && u.push(i.getCacheKey()), a && u.push(a.getCacheKey()), u.push(this.renderer.shadowMap.enabled ? 1 : 0), r = {\n        callId: n,\n        cacheKey: ni(u)\n      }, this.callHashCache.set(s, r);\n    }\n    return r.cacheKey;\n  }\n  /**\n   * A boolean that indicates whether tone mapping should be enabled\n   * or not.\n   *\n   * @type {Boolean}\n   */\n  get isToneMappingState() {\n    return !this.renderer.getRenderTarget();\n  }\n  /**\n   * If a scene background is configured, this method makes sure to\n   * represent the background with a corresponding node-based implementation.\n   *\n   * @param {Scene} scene - The scene.\n   */\n  updateBackground(e) {\n    const t = this.get(e), s = e.background;\n    if (s) {\n      const n = e.backgroundBlurriness === 0 && t.backgroundBlurriness > 0 || e.backgroundBlurriness > 0 && t.backgroundBlurriness === 0;\n      if (t.background !== s || n) {\n        const r = this.getCacheNode(\"background\", s, () => {\n          if (s.isCubeTexture === !0 || s.mapping === Wn || s.mapping === Hn || s.mapping === po) {\n            if (e.backgroundBlurriness > 0 || s.mapping === po)\n              return eu(s);\n            {\n              let i;\n              return s.isCubeTexture === !0 ? i = Js(s) : i = X(s), Fp(i);\n            }\n          } else {\n            if (s.isTexture === !0)\n              return X(s, vt.flipY()).setUpdateMatrix(!0);\n            s.isColor !== !0 && console.error(\"WebGPUNodes: Unsupported background configuration.\", s);\n          }\n        }, n);\n        t.backgroundNode = r, t.background = s, t.backgroundBlurriness = e.backgroundBlurriness;\n      }\n    } else t.backgroundNode && (delete t.backgroundNode, delete t.background);\n  }\n  /**\n   * This method is part of the caching of nodes which are used to represents the\n   * scene's background, fog or environment.\n   *\n   * @param {String} type - The type of object to cache.\n   * @param {Object} object - The object.\n   * @param {Function} callback - A callback that produces a node representation for the given object.\n   * @param {Boolean} [forceUpdate=false] - Whether an update should be enforced or not.\n   * @return {Node} The node representation.\n   */\n  getCacheNode(e, t, s, n = !1) {\n    const r = this.cacheLib[e] || (this.cacheLib[e] = /* @__PURE__ */ new WeakMap());\n    let i = r.get(t);\n    return (i === void 0 || n) && (i = s(), r.set(t, i)), i;\n  }\n  /**\n   * If a scene fog is configured, this method makes sure to\n   * represent the fog with a corresponding node-based implementation.\n   *\n   * @param {Scene} scene - The scene.\n   */\n  updateFog(e) {\n    const t = this.get(e), s = e.fog;\n    if (s) {\n      if (t.fog !== s) {\n        const n = this.getCacheNode(\"fog\", s, () => {\n          if (s.isFogExp2) {\n            const r = te(\"color\", \"color\", s).setGroup(O), i = te(\"density\", \"float\", s).setGroup(O);\n            return zn(r, au(i));\n          } else if (s.isFog) {\n            const r = te(\"color\", \"color\", s).setGroup(O), i = te(\"near\", \"float\", s).setGroup(O), a = te(\"far\", \"float\", s).setGroup(O);\n            return zn(r, ou(i, a));\n          } else\n            console.error(\"THREE.Renderer: Unsupported fog configuration.\", s);\n        });\n        t.fogNode = n, t.fog = s;\n      }\n    } else\n      delete t.fogNode, delete t.fog;\n  }\n  /**\n   * If a scene environment is configured, this method makes sure to\n   * represent the environment with a corresponding node-based implementation.\n   *\n   * @param {Scene} scene - The scene.\n   */\n  updateEnvironment(e) {\n    const t = this.get(e), s = e.environment;\n    if (s) {\n      if (t.environment !== s) {\n        const n = this.getCacheNode(\"environment\", s, () => {\n          if (s.isCubeTexture === !0)\n            return Js(s);\n          if (s.isTexture === !0)\n            return X(s);\n          console.error(\"Nodes: Unsupported environment configuration.\", s);\n        });\n        t.environmentNode = n, t.environment = s;\n      }\n    } else t.environmentNode && (delete t.environmentNode, delete t.environment);\n  }\n  getNodeFrame(e = this.renderer, t = null, s = null, n = null, r = null) {\n    const i = this.nodeFrame;\n    return i.renderer = e, i.scene = t, i.object = s, i.camera = n, i.material = r, i;\n  }\n  getNodeFrameForRender(e) {\n    return this.getNodeFrame(e.renderer, e.scene, e.object, e.camera, e.material);\n  }\n  /**\n   * Returns the current output cache key.\n   *\n   * @return {String} The output cache key.\n   */\n  getOutputCacheKey() {\n    const e = this.renderer;\n    return e.toneMapping + \",\" + e.currentColorSpace;\n  }\n  /**\n   * Checks if the output configuration (tone mapping and color space) for\n   * the given target has changed.\n   *\n   * @param {Texture} outputTarget - The output target.\n   * @return {Boolean} Whether the output configuration has changed or not.\n   */\n  hasOutputChange(e) {\n    return vc.get(e) !== this.getOutputCacheKey();\n  }\n  /**\n   * Returns a node that represents the output configuration (tone mapping and\n   * color space) for the current target.\n   *\n   * @param {Texture} outputTarget - The output target.\n   * @return {Node} The output node.\n   */\n  getOutputNode(e) {\n    const t = this.renderer, s = this.getOutputCacheKey(), n = X(e, vt).renderOutput(t.toneMapping, t.currentColorSpace);\n    return vc.set(e, s), n;\n  }\n  /**\n   * Triggers the call of `updateBefore()` methods\n   * for all nodes of the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  updateBefore(e) {\n    const t = e.getNodeBuilderState();\n    for (const s of t.updateBeforeNodes)\n      this.getNodeFrameForRender(e).updateBeforeNode(s);\n  }\n  /**\n   * Triggers the call of `updateAfter()` methods\n   * for all nodes of the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  updateAfter(e) {\n    const t = e.getNodeBuilderState();\n    for (const s of t.updateAfterNodes)\n      this.getNodeFrameForRender(e).updateAfterNode(s);\n  }\n  /**\n   * Triggers the call of `update()` methods\n   * for all nodes of the given compute node.\n   *\n   * @param {Node} computeNode - The compute node.\n   */\n  updateForCompute(e) {\n    const t = this.getNodeFrame(), s = this.getForCompute(e);\n    for (const n of s.updateNodes)\n      t.updateNode(n);\n  }\n  /**\n   * Triggers the call of `update()` methods\n   * for all nodes of the given compute node.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   */\n  updateForRender(e) {\n    const t = this.getNodeFrameForRender(e), s = e.getNodeBuilderState();\n    for (const n of s.updateNodes)\n      t.updateNode(n);\n  }\n  /**\n   * Returns `true` if the given render object requires a refresh.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether the given render object requires a refresh or not.\n   */\n  needsRefresh(e) {\n    const t = this.getNodeFrameForRender(e);\n    return e.getMonitor().needsRefresh(e, t);\n  }\n  /**\n   * Frees the intenral resources.\n   */\n  dispose() {\n    super.dispose(), this.nodeFrame = new bc(), this.nodeBuilderCache = /* @__PURE__ */ new Map(), this.cacheLib = {};\n  }\n}\nconst eo = /* @__PURE__ */ new Oc();\nclass Qr {\n  /**\n   * Constructs a new clipping context.\n   *\n   * @param {ClippingContext?} [parentContext=null] - A reference to the parent clipping context.\n   */\n  constructor(e = null) {\n    this.version = 0, this.clipIntersection = null, this.cacheKey = \"\", this.shadowPass = !1, this.viewNormalMatrix = new $n(), this.clippingGroupContexts = /* @__PURE__ */ new WeakMap(), this.intersectionPlanes = [], this.unionPlanes = [], this.parentVersion = null, e !== null && (this.viewNormalMatrix = e.viewNormalMatrix, this.clippingGroupContexts = e.clippingGroupContexts, this.shadowPass = e.shadowPass, this.viewMatrix = e.viewMatrix);\n  }\n  /**\n   * Projects the given source clipping planes and writes the result into the\n   * destination array.\n   *\n   * @param {Array<Plane>} source - The source clipping planes.\n   * @param {Array<Vector4>} destination - The destination.\n   * @param {Number} offset - The offset.\n   */\n  projectPlanes(e, t, s) {\n    const n = e.length;\n    for (let r = 0; r < n; r++) {\n      eo.copy(e[r]).applyMatrix4(this.viewMatrix, this.viewNormalMatrix);\n      const i = t[s + r], a = eo.normal;\n      i.x = -a.x, i.y = -a.y, i.z = -a.z, i.w = eo.constant;\n    }\n  }\n  /**\n   * Updates the root clipping context of a scene.\n   *\n   * @param {Scene} scene - The scene.\n   * @param {Camera} camera - The camera that is used to render the scene.\n   */\n  updateGlobal(e, t) {\n    this.shadowPass = e.overrideMaterial !== null && e.overrideMaterial.isShadowNodeMaterial, this.viewMatrix = t.matrixWorldInverse, this.viewNormalMatrix.getNormalMatrix(this.viewMatrix);\n  }\n  /**\n   * Updates the clipping context.\n   *\n   * @param {ClippingContext} parentContext - The parent context.\n   * @param {ClippingGroup} clippingGroup - The clipping group this context belongs to.\n   */\n  update(e, t) {\n    let s = !1;\n    e.version !== this.parentVersion && (this.intersectionPlanes = Array.from(e.intersectionPlanes), this.unionPlanes = Array.from(e.unionPlanes), this.parentVersion = e.version), this.clipIntersection !== t.clipIntersection && (this.clipIntersection = t.clipIntersection, this.clipIntersection ? this.unionPlanes.length = e.unionPlanes.length : this.intersectionPlanes.length = e.intersectionPlanes.length);\n    const n = t.clippingPlanes, r = n.length;\n    let i, a;\n    if (this.clipIntersection ? (i = this.intersectionPlanes, a = e.intersectionPlanes.length) : (i = this.unionPlanes, a = e.unionPlanes.length), i.length !== a + r) {\n      i.length = a + r;\n      for (let u = 0; u < r; u++)\n        i[a + u] = new Ce();\n      s = !0;\n    }\n    this.projectPlanes(n, i, a), s && (this.version++, this.cacheKey = `${this.intersectionPlanes.length}:${this.unionPlanes.length}`);\n  }\n  /**\n   * Returns a clipping context for the given clipping group.\n   *\n   * @param {ClippingGroup} clippingGroup - The clipping group.\n   * @return {ClippingContext} The clipping context.\n   */\n  getGroupContext(e) {\n    if (this.shadowPass && !e.clipShadows) return this;\n    let t = this.clippingGroupContexts.get(e);\n    return t === void 0 && (t = new Qr(this), this.clippingGroupContexts.set(e, t)), t.update(this, e), t;\n  }\n  /**\n   * The count of union clipping planes.\n   *\n   * @type {Number}\n   * @readonly\n   */\n  get unionClippingCount() {\n    return this.unionPlanes.length;\n  }\n}\nclass Yv {\n  /**\n   * Constructs a new bundle group.\n   *\n   * @param {BundleGroup} bundleGroup - The bundle group.\n   * @param {Camera} camera - The camera the bundle group is rendered with.\n   */\n  constructor(e, t) {\n    this.bundleGroup = e, this.camera = t;\n  }\n}\nclass jv {\n  /**\n   * Constructs a new render bundle management component.\n   */\n  constructor() {\n    this.bundles = new At();\n  }\n  /**\n   * Returns a render bundle for the given bundle group and camera.\n   *\n   * @param {BundleGroup} bundleGroup - The bundle group.\n   * @param {Camera} camera - The camera the bundle group is rendered with.\n   * @return {RenderBundle} The render bundle.\n   */\n  get(e, t) {\n    const s = this.bundles, n = [e, t];\n    let r = s.get(n);\n    return r === void 0 && (r = new Yv(e, t), s.set(n, r)), r;\n  }\n  /**\n   * Frees all internal resources.\n   */\n  dispose() {\n    this.bundles = new At();\n  }\n}\nclass Yf {\n  /**\n   * Constructs a new node library.\n   */\n  constructor() {\n    this.lightNodes = /* @__PURE__ */ new WeakMap(), this.materialNodes = /* @__PURE__ */ new Map(), this.toneMappingNodes = /* @__PURE__ */ new Map();\n  }\n  /**\n   * Returns a matching node material instance for the given material object.\n   *\n   * This method also assigns/copies the properties of the given material object\n   * to the node material. This is done to make sure the current material\n   * configuration carries over to the node version.\n   *\n   * @param {Material} material - A material.\n   * @return {NodeMaterial} The corresponding node material.\n   */\n  fromMaterial(e) {\n    if (e.isNodeMaterial) return e;\n    let t = null;\n    const s = this.getMaterialNodeClass(e.type);\n    if (s !== null) {\n      t = new s();\n      for (const n in e)\n        t[n] = e[n];\n    }\n    return t;\n  }\n  /**\n   * Adds a tone mapping node function for a tone mapping technique (constant).\n   *\n   * @param {Function} toneMappingNode - The tone mapping node function.\n   * @param {Number} toneMapping - The tone mapping.\n   */\n  addToneMapping(e, t) {\n    this.addType(e, t, this.toneMappingNodes);\n  }\n  /**\n   * Returns a tone mapping node function for a tone mapping technique (constant).\n   *\n   * @param {Number} toneMapping - The tone mapping.\n   * @return {Function?} The tone mapping node function. Returns `null` if no node function is found.\n   */\n  getToneMappingFunction(e) {\n    return this.toneMappingNodes.get(e) || null;\n  }\n  /**\n   * Returns a node material class definition for a material type.\n   *\n   * @param {Sring} materialType - The material type.\n   * @return {NodeMaterial.constructor?} The node material class definition. Returns `null` if no node material is found.\n   */\n  getMaterialNodeClass(e) {\n    return this.materialNodes.get(e) || null;\n  }\n  /**\n   * Adds a node material class definition for a given material type.\n   *\n   * @param {NodeMaterial.constructor} materialNodeClass - The node material class definition.\n   * @param {Sring} materialClassType - The material type.\n   */\n  addMaterial(e, t) {\n    this.addType(e, t, this.materialNodes);\n  }\n  /**\n   * Returns a light node class definition for a light class definition.\n   *\n   * @param {Light.constructor} light - The light class definition.\n   * @return {AnalyticLightNode.constructor?} The light node class definition. Returns `null` if no light node is found.\n   */\n  getLightNodeClass(e) {\n    return this.lightNodes.get(e) || null;\n  }\n  /**\n   * Adds a light node class definition for a given light class definition.\n   *\n   * @param {AnalyticLightNode.constructor} lightNodeClass - The light node class definition.\n   * @param {Light.constructor} lightClass - The light class definition.\n   */\n  addLight(e, t) {\n    this.addClass(e, t, this.lightNodes);\n  }\n  /**\n   * Adds a node class definition for the given type to the provided type library.\n   *\n   * @param {Any} nodeClass - The node class definition.\n   * @param {String} type - The object type.\n   * @param {Map} library - The type library.\n   */\n  addType(e, t, s) {\n    if (s.has(t)) {\n      console.warn(`Redefinition of node ${t}`);\n      return;\n    }\n    if (typeof e != \"function\") throw new Error(`Node class ${e.name} is not a class.`);\n    if (typeof t == \"function\" || typeof t == \"object\") throw new Error(`Base class ${t} is not a class.`);\n    s.set(t, e);\n  }\n  /**\n   * Adds a node class definition for the given class definition to the provided type library.\n   *\n   * @param {Any} nodeClass - The node class definition.\n   * @param {Any} baseClass - The class definition.\n   * @param {WeakMap} library - The type library.\n   */\n  addClass(e, t, s) {\n    if (s.has(t)) {\n      console.warn(`Redefinition of node ${t.name}`);\n      return;\n    }\n    if (typeof e != \"function\") throw new Error(`Node class ${e.name} is not a class.`);\n    if (typeof t != \"function\") throw new Error(`Base class ${t.name} is not a class.`);\n    s.set(t, e);\n  }\n}\nconst Qv = /* @__PURE__ */ new hu();\nclass Zv extends At {\n  /**\n   * Constructs a lighting management component.\n   */\n  constructor() {\n    super();\n  }\n  /**\n   * Creates a new lights node for the given array of lights.\n   *\n   * @param {Array<Light>} lights - The render object.\n   * @return {Boolean} Whether if the given render object has an initialized geometry or not.\n   */\n  createNode(e = []) {\n    return new hu().setLights(e);\n  }\n  /**\n   * Returns a lights node for the given scene and camera.\n   *\n   * @param {Scene} scene - The scene.\n   * @param {Camera} camera - The camera.\n   * @return {LightsNode} The lights node.\n   */\n  getNode(e, t) {\n    if (e.isQuadMesh) return Qv;\n    const s = [e, t];\n    let n = this.get(s);\n    return n === void 0 && (n = this.createNode(), this.set(s, n)), n;\n  }\n}\nconst Ac = /* @__PURE__ */ new Wc(), Tr = /* @__PURE__ */ new He(), to = /* @__PURE__ */ new Ce(), so = /* @__PURE__ */ new vg(), _r = /* @__PURE__ */ new Ue(), $t = /* @__PURE__ */ new Ce();\nclass Jv {\n  /**\n   * Constructs a new renderer.\n   *\n   * @param {Backend} backend - The backend the renderer is targeting (e.g. WebGPU or WebGL 2).\n   * @param {Object} parameters - The configuration parameter.\n   * @param {Boolean} [parameters.logarithmicDepthBuffer=false] - Whether logarithmic depth buffer is enabled or not.\n   * @param {Boolean} [parameters.alpha=true] - Whether the default framebuffer (which represents the final contents of the canvas) should be transparent or opaque.\n   * @param {Boolean} [parameters.depth=true] - Whether the default framebuffer should have a depth buffer or not.\n   * @param {Boolean} [parameters.stencil=false] - Whether the default framebuffer should have a stencil buffer or not.\n   * @param {Boolean} [parameters.antialias=false] - Whether MSAA as the default anti-aliasing should be enabled or not.\n   * @param {Number} [parameters.samples=0] - When `antialias` is `true`, `4` samples are used by default. This parameter can set to any other integer value than 0\n   * to overwrite the default.\n   * @param {Function?} [parameters.getFallback=null] - This callback function can be used to provide a fallback backend, if the primary backend can't be targeted.\n   */\n  constructor(e, t = {}) {\n    this.isRenderer = !0;\n    const {\n      logarithmicDepthBuffer: s = !1,\n      alpha: n = !0,\n      depth: r = !0,\n      stencil: i = !1,\n      antialias: a = !1,\n      samples: u = 0,\n      getFallback: c = null\n    } = t;\n    this.domElement = e.getDomElement(), this.backend = e, this.samples = u || a === !0 ? 4 : 0, this.autoClear = !0, this.autoClearColor = !0, this.autoClearDepth = !0, this.autoClearStencil = !0, this.alpha = n, this.logarithmicDepthBuffer = s, this.outputColorSpace = q, this.toneMapping = $s, this.toneMappingExposure = 1, this.sortObjects = !0, this.depth = r, this.stencil = i, this.info = new o_(), this.nodes = {\n      modelViewMatrix: null,\n      modelNormalViewMatrix: null\n    }, this.library = new Yf(), this.lighting = new Zv(), this._getFallback = c, this._pixelRatio = 1, this._width = this.domElement.width, this._height = this.domElement.height, this._viewport = new Ce(0, 0, this._width, this._height), this._scissor = new Ce(0, 0, this._width, this._height), this._scissorTest = !1, this._attributes = null, this._geometries = null, this._nodes = null, this._animation = null, this._bindings = null, this._objects = null, this._pipelines = null, this._bundles = null, this._renderLists = null, this._renderContexts = null, this._textures = null, this._background = null, this._quad = new ru(new ge()), this._quad.material.name = \"Renderer_output\", this._currentRenderContext = null, this._opaqueSort = null, this._transparentSort = null, this._frameBufferTarget = null;\n    const l = this.alpha === !0 ? 0 : 1;\n    this._clearColor = new su(0, 0, 0, l), this._clearDepth = 1, this._clearStencil = 0, this._renderTarget = null, this._activeCubeFace = 0, this._activeMipmapLevel = 0, this._mrt = null, this._renderObjectFunction = null, this._currentRenderObjectFunction = null, this._currentRenderBundle = null, this._handleObjectFunction = this._renderObjectDirect, this._isDeviceLost = !1, this.onDeviceLost = this._onDeviceLost, this._initialized = !1, this._initPromise = null, this._compilationPromises = null, this.transparent = !0, this.opaque = !0, this.shadowMap = {\n      enabled: !1,\n      type: ug\n    }, this.xr = {\n      enabled: !1\n    }, this.debug = {\n      checkShaderErrors: !0,\n      onShaderError: null,\n      getShaderAsync: async (d, h, p) => {\n        await this.compileAsync(d, h);\n        const f = this._renderLists.get(d, h), m = this._renderContexts.get(d, h, this._renderTarget), _ = d.overrideMaterial || p.material, S = this._objects.get(p, _, d, h, f.lightsNode, m, m.clippingContext), { fragmentShader: A, vertexShader: M } = S.getNodeBuilderState();\n        return { fragmentShader: A, vertexShader: M };\n      }\n    };\n  }\n  /**\n   * Initializes the renderer so it is ready for usage.\n   *\n   * @async\n   * @return {Promise} A Promise that resolves when the renderer has been initialized.\n   */\n  async init() {\n    if (this._initialized)\n      throw new Error(\"Renderer: Backend has already been initialized.\");\n    return this._initPromise !== null ? this._initPromise : (this._initPromise = new Promise(async (e, t) => {\n      let s = this.backend;\n      try {\n        await s.init(this);\n      } catch (n) {\n        if (this._getFallback !== null)\n          try {\n            this.backend = s = this._getFallback(n), await s.init(this);\n          } catch (r) {\n            t(r);\n            return;\n          }\n        else {\n          t(n);\n          return;\n        }\n      }\n      this._nodes = new Kv(this, s), this._animation = new jT(this._nodes, this.info), this._attributes = new n_(s), this._background = new cv(this, this._nodes), this._geometries = new i_(this._attributes, this.info), this._textures = new T_(this, s, this.info), this._pipelines = new l_(s, this._nodes), this._bindings = new d_(s, this._nodes, this._textures, this._attributes, this._pipelines, this.info), this._objects = new e_(this, this._nodes, this._geometries, this._pipelines, this._bindings, this.info), this._renderLists = new f_(this.lighting), this._bundles = new jv(), this._renderContexts = new y_(), this._animation.start(), this._initialized = !0, e();\n    }), this._initPromise);\n  }\n  /**\n   * The coordinate system of the renderer. The value of this property\n   * depends on the selected backend. Either `THREE.WebGLCoordinateSystem` or\n   * `THREE.WebGPUCoordinateSystem`.\n   *\n   * @readonly\n   * @type {Number}\n   */\n  get coordinateSystem() {\n    return this.backend.coordinateSystem;\n  }\n  /**\n   * Compiles all materials in the given scene. This can be useful to avoid a\n   * phenomenon which is called \"shader compilation stutter\", which occurs when\n   * rendering an object with a new shader for the first time.\n   *\n   * If you want to add a 3D object to an existing scene, use the third optional\n   * parameter for applying the target scene. Note that the (target) scene's lighting\n   * and environment must be configured before calling this method.\n   *\n   * @async\n   * @param {Object3D} scene - The scene or 3D object to precompile.\n   * @param {Camera} camera - The camera that is used to render the scene.\n   * @param {Scene} targetScene - If the first argument is a 3D object, this parameter must represent the scene the 3D object is going to be added.\n   * @return {Promise} A Promise that resolves when the compile has been finished.\n   */\n  async compileAsync(e, t, s = null) {\n    if (this._isDeviceLost === !0) return;\n    this._initialized === !1 && await this.init();\n    const n = this._nodes.nodeFrame, r = n.renderId, i = this._currentRenderContext, a = this._currentRenderObjectFunction, u = this._compilationPromises, c = e.isScene === !0 ? e : Ac;\n    s === null && (s = e);\n    const l = this._renderTarget, d = this._renderContexts.get(s, t, l), h = this._activeMipmapLevel, p = [];\n    this._currentRenderContext = d, this._currentRenderObjectFunction = this.renderObject, this._handleObjectFunction = this._createObjectPipeline, this._compilationPromises = p, n.renderId++, n.update(), d.depth = this.depth, d.stencil = this.stencil, d.clippingContext || (d.clippingContext = new Qr()), d.clippingContext.updateGlobal(c, t), c.onBeforeRender(this, e, t, l);\n    const f = this._renderLists.get(e, t);\n    if (f.begin(), this._projectObject(e, t, 0, f, d.clippingContext), s !== e && s.traverseVisible(function(M) {\n      M.isLight && M.layers.test(t.layers) && f.pushLight(M);\n    }), f.finish(), l !== null) {\n      this._textures.updateRenderTarget(l, h);\n      const M = this._textures.get(l);\n      d.textures = M.textures, d.depthTexture = M.depthTexture;\n    } else\n      d.textures = null, d.depthTexture = null;\n    this._background.update(c, f, d);\n    const m = f.opaque, _ = f.transparent, S = f.transparentDoublePass, A = f.lightsNode;\n    this.opaque === !0 && m.length > 0 && this._renderObjects(m, t, c, A), this.transparent === !0 && _.length > 0 && this._renderTransparents(_, S, t, c, A), n.renderId = r, this._currentRenderContext = i, this._currentRenderObjectFunction = a, this._compilationPromises = u, this._handleObjectFunction = this._renderObjectDirect, await Promise.all(p);\n  }\n  /**\n   * Renders the scene in an async fashion.\n   *\n   * @async\n   * @param {Object3D} scene - The scene or 3D object to render.\n   * @param {Camera} camera - The camera.\n   * @return {Promise} A Promise that resolves when the render has been finished.\n   */\n  async renderAsync(e, t) {\n    this._initialized === !1 && await this.init();\n    const s = this._renderScene(e, t);\n    await this.backend.resolveTimestampAsync(s, \"render\");\n  }\n  /**\n   * Can be used to synchronize CPU operations with GPU tasks. So when this method is called,\n   * the CPU waits for the GPU to complete its operation (e.g. a compute task).\n   *\n   * @async\n   * @return {Promise} A Promise that resolves when synchronization has been finished.\n   */\n  async waitForGPU() {\n    await this.backend.waitForGPU();\n  }\n  /**\n   * Sets the given MRT configuration.\n   *\n   * @param {MRTNode} mrt - The MRT node to set.\n   * @return {Renderer} A reference to this renderer.\n   */\n  setMRT(e) {\n    return this._mrt = e, this;\n  }\n  /**\n   * Returns the MRT configuration.\n   *\n   * @return {MRTNode} The MRT configuration.\n   */\n  getMRT() {\n    return this._mrt;\n  }\n  /**\n   * Default implementation of the device lost callback.\n   *\n   * @private\n   * @param {Object} info - Information about the context lost.\n   */\n  _onDeviceLost(e) {\n    let t = `THREE.WebGPURenderer: ${e.api} Device Lost:\n\nMessage: ${e.message}`;\n    e.reason && (t += `\nReason: ${e.reason}`), console.error(t), this._isDeviceLost = !0;\n  }\n  /**\n   * Renders the given render bundle.\n   *\n   * @private\n   * @param {Object} bundle - Render bundle data.\n   * @param {Scene} sceneRef - The scene the render bundle belongs to.\n   * @param {LightsNode} lightsNode - The current lights node.\n   */\n  _renderBundle(e, t, s) {\n    const { bundleGroup: n, camera: r, renderList: i } = e, a = this._currentRenderContext, u = this._bundles.get(n, r), c = this.backend.get(u);\n    c.renderContexts === void 0 && (c.renderContexts = /* @__PURE__ */ new Set());\n    const l = n.version !== c.version, d = c.renderContexts.has(a) === !1 || l;\n    if (c.renderContexts.add(a), d) {\n      this.backend.beginBundle(a), (c.renderObjects === void 0 || l) && (c.renderObjects = []), this._currentRenderBundle = u;\n      const h = i.opaque;\n      this.opaque === !0 && h.length > 0 && this._renderObjects(h, r, t, s), this._currentRenderBundle = null, this.backend.finishBundle(a, u), c.version = n.version;\n    } else {\n      const { renderObjects: h } = c;\n      for (let p = 0, f = h.length; p < f; p++) {\n        const m = h[p];\n        this._nodes.needsRefresh(m) && (this._nodes.updateBefore(m), this._nodes.updateForRender(m), this._bindings.updateForRender(m), this._nodes.updateAfter(m));\n      }\n    }\n    this.backend.addBundle(a, u);\n  }\n  /**\n   * Renders the scene or 3D object with the given camera. This method can only be called\n   * if the renderer has been initialized.\n   *\n   * The target of the method is the default framebuffer (meaning the canvas)\n   * or alternatively a render target when specified via `setRenderTarget()`.\n   *\n   * @param {Object3D} scene - The scene or 3D object to render.\n   * @param {Camera} camera - The camera to render the scene with.\n   * @return {Promise?} A Promise that resolve when the scene has been rendered.\n   * Only returned when the renderer has not been initialized.\n   */\n  render(e, t) {\n    if (this._initialized === !1)\n      return console.warn(\"THREE.Renderer: .render() called before the backend is initialized. Try using .renderAsync() instead.\"), this.renderAsync(e, t);\n    this._renderScene(e, t);\n  }\n  /**\n   * Returns an internal render target which is used when computing the output tone mapping\n   * and color space conversion. Unlike in `WebGLRenderer`, this is done in a separate render\n   * pass and not inline to achieve more correct results.\n   *\n   * @private\n   * @return {RenderTarget?} The render target. The method returns `null` if no output conversion should be applied.\n   */\n  _getFrameBufferTarget() {\n    const { currentToneMapping: e, currentColorSpace: t } = this;\n    if (e !== $s === !1 && t !== cs === !1) return null;\n    const { width: r, height: i } = this.getDrawingBufferSize(Tr), { depth: a, stencil: u } = this;\n    let c = this._frameBufferTarget;\n    return c === null && (c = new ms(r, i, {\n      depthBuffer: a,\n      stencilBuffer: u,\n      type: at,\n      // FloatType\n      format: Xs,\n      colorSpace: cs,\n      generateMipmaps: !1,\n      minFilter: Lt,\n      magFilter: Lt,\n      samples: this.samples\n    }), c.isPostProcessingRenderTarget = !0, this._frameBufferTarget = c), c.depthBuffer = a, c.stencilBuffer = u, c.setSize(r, i), c.viewport.copy(this._viewport), c.scissor.copy(this._scissor), c.viewport.multiplyScalar(this._pixelRatio), c.scissor.multiplyScalar(this._pixelRatio), c.scissorTest = this._scissorTest, c;\n  }\n  /**\n   * Renders the scene or 3D object with the given camera.\n   *\n   * @private\n   * @param {Object3D} scene - The scene or 3D object to render.\n   * @param {Camera} camera - The camera to render the scene with.\n   * @param {Boolean} [useFrameBufferTarget=true] - Whether to use a framebuffer target or not.\n   * @return {RenderContext} The current render context.\n   */\n  _renderScene(e, t, s = !0) {\n    if (this._isDeviceLost === !0) return;\n    const n = s ? this._getFrameBufferTarget() : null, r = this._nodes.nodeFrame, i = r.renderId, a = this._currentRenderContext, u = this._currentRenderObjectFunction, c = e.isScene === !0 ? e : Ac, l = this._renderTarget, d = this._activeCubeFace, h = this._activeMipmapLevel;\n    let p;\n    n !== null ? (p = n, this.setRenderTarget(p)) : p = l;\n    const f = this._renderContexts.get(e, t, p);\n    this._currentRenderContext = f, this._currentRenderObjectFunction = this._renderObjectFunction || this.renderObject, this.info.calls++, this.info.render.calls++, this.info.render.frameCalls++, r.renderId = this.info.calls;\n    const m = this.coordinateSystem;\n    t.coordinateSystem !== m && (t.coordinateSystem = m, t.updateProjectionMatrix()), e.matrixWorldAutoUpdate === !0 && e.updateMatrixWorld(), t.parent === null && t.matrixWorldAutoUpdate === !0 && t.updateMatrixWorld();\n    let _ = this._viewport, S = this._scissor, A = this._pixelRatio;\n    p !== null && (_ = p.viewport, S = p.scissor, A = 1), this.getDrawingBufferSize(Tr), to.set(0, 0, Tr.width, Tr.height);\n    const M = _.minDepth === void 0 ? 0 : _.minDepth, F = _.maxDepth === void 0 ? 1 : _.maxDepth;\n    f.viewportValue.copy(_).multiplyScalar(A).floor(), f.viewportValue.width >>= h, f.viewportValue.height >>= h, f.viewportValue.minDepth = M, f.viewportValue.maxDepth = F, f.viewport = f.viewportValue.equals(to) === !1, f.scissorValue.copy(S).multiplyScalar(A).floor(), f.scissor = this._scissorTest && f.scissorValue.equals(to) === !1, f.scissorValue.width >>= h, f.scissorValue.height >>= h, f.clippingContext || (f.clippingContext = new Qr()), f.clippingContext.updateGlobal(c, t), c.onBeforeRender(this, e, t, p), _r.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), so.setFromProjectionMatrix(_r, m);\n    const D = this._renderLists.get(e, t);\n    if (D.begin(), this._projectObject(e, t, 0, D, f.clippingContext), D.finish(), this.sortObjects === !0 && D.sort(this._opaqueSort, this._transparentSort), p !== null) {\n      this._textures.updateRenderTarget(p, h);\n      const ne = this._textures.get(p);\n      f.textures = ne.textures, f.depthTexture = ne.depthTexture, f.width = ne.width, f.height = ne.height, f.renderTarget = p, f.depth = p.depthBuffer, f.stencil = p.stencilBuffer;\n    } else\n      f.textures = null, f.depthTexture = null, f.width = this.domElement.width, f.height = this.domElement.height, f.depth = this.depth, f.stencil = this.stencil;\n    f.width >>= h, f.height >>= h, f.activeCubeFace = d, f.activeMipmapLevel = h, f.occlusionQueryCount = D.occlusionQueryCount, this._background.update(c, D, f), this.backend.beginRender(f);\n    const {\n      bundles: P,\n      lightsNode: V,\n      transparentDoublePass: k,\n      transparent: ie,\n      opaque: me\n    } = D;\n    if (P.length > 0 && this._renderBundles(P, c, V), this.opaque === !0 && me.length > 0 && this._renderObjects(me, t, c, V), this.transparent === !0 && ie.length > 0 && this._renderTransparents(ie, k, t, c, V), this.backend.finishRender(f), r.renderId = i, this._currentRenderContext = a, this._currentRenderObjectFunction = u, n !== null) {\n      this.setRenderTarget(l, d, h);\n      const ne = this._quad;\n      this._nodes.hasOutputChange(p.texture) && (ne.material.fragmentNode = this._nodes.getOutputNode(p.texture), ne.material.needsUpdate = !0), this._renderScene(ne, ne.camera, !1);\n    }\n    return c.onAfterRender(this, e, t, p), f;\n  }\n  /**\n   * Returns the maximum available anisotropy for texture filtering.\n   *\n   * @return {Number} The maximum available anisotropy.\n   */\n  getMaxAnisotropy() {\n    return this.backend.getMaxAnisotropy();\n  }\n  /**\n   * Returns the active cube face.\n   *\n   * @return {Number} The active cube face.\n   */\n  getActiveCubeFace() {\n    return this._activeCubeFace;\n  }\n  /**\n   * Returns the active mipmap level.\n   *\n   * @return {Number} The active mipmap level.\n   */\n  getActiveMipmapLevel() {\n    return this._activeMipmapLevel;\n  }\n  /**\n   * Applications are advised to always define the animation loop\n   * with this method and not manually with `requestAnimationFrame()`\n   * for best compatibility.\n   *\n   * @async\n   * @param {Function} callback - The application's animation loop.\n   * @return {Promise} A Promise that resolves when the set has been exeucted.\n   */\n  async setAnimationLoop(e) {\n    this._initialized === !1 && await this.init(), this._animation.setAnimationLoop(e);\n  }\n  /**\n   * Can be used to transfer buffer data from a storage buffer attribute\n   * from the GPU to the CPU in context of compute shaders.\n   *\n   * @async\n   * @param {StorageBufferAttribute} attribute - The storage buffer attribute.\n   * @return {Promise<ArrayBuffer>} A promise that resolves with the buffer data when the data are ready.\n   */\n  async getArrayBufferAsync(e) {\n    return await this.backend.getArrayBufferAsync(e);\n  }\n  /**\n   * Returns the rendering context.\n   *\n   * @return {GPUCanvasContext|WebGL2RenderingContext} The rendering context.\n   */\n  getContext() {\n    return this.backend.getContext();\n  }\n  /**\n   * Returns the pixel ratio.\n   *\n   * @return {Number} The pixel ratio.\n   */\n  getPixelRatio() {\n    return this._pixelRatio;\n  }\n  /**\n   * Returns the drawing buffer size in physical pixels. This method honors the pixel ratio.\n   *\n   * @param {Vector2} target - The method writes the result in this target object.\n   * @return {Vector2} The drawing buffer size.\n   */\n  getDrawingBufferSize(e) {\n    return e.set(this._width * this._pixelRatio, this._height * this._pixelRatio).floor();\n  }\n  /**\n   * Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.\n   *\n   * @param {Vector2} target - The method writes the result in this target object.\n   * @return {Vector2} The drawing buffer size.\n   */\n  getSize(e) {\n    return e.set(this._width, this._height);\n  }\n  /**\n   * Sets the given pixel ration and resizes the canvas if necessary.\n   *\n   * @param {Number} [value=1] - The pixel ratio.\n   */\n  setPixelRatio(e = 1) {\n    this._pixelRatio !== e && (this._pixelRatio = e, this.setSize(this._width, this._height, !1));\n  }\n  /**\n   * This method allows to define the drawing buffer size by specifying\n   * width, height and pixel ratio all at once. The size of the drawing\n   * buffer is computed with this formula:\n   * ````\n   * size.x = width * pixelRatio;\n   * size.y = height * pixelRatio;\n   *```\n   *\n   * @param {Number} width - The width in logical pixels.\n   * @param {Number} height - The height in logical pixels.\n   * @param {Number} pixelRatio - The pixel ratio.\n   */\n  setDrawingBufferSize(e, t, s) {\n    this._width = e, this._height = t, this._pixelRatio = s, this.domElement.width = Math.floor(e * s), this.domElement.height = Math.floor(t * s), this.setViewport(0, 0, e, t), this._initialized && this.backend.updateSize();\n  }\n  /**\n   * Sets the size of the renderer.\n   *\n   * @param {Number} width - The width in logical pixels.\n   * @param {Number} height - The height in logical pixels.\n   * @param {Boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not.\n   */\n  setSize(e, t, s = !0) {\n    this._width = e, this._height = t, this.domElement.width = Math.floor(e * this._pixelRatio), this.domElement.height = Math.floor(t * this._pixelRatio), s === !0 && (this.domElement.style.width = e + \"px\", this.domElement.style.height = t + \"px\"), this.setViewport(0, 0, e, t), this._initialized && this.backend.updateSize();\n  }\n  /**\n   * Defines a manual sort function for the opaque render list.\n   * Pass `null` to use the default sort.\n   *\n   * @param {Function} method - The sort function.\n   */\n  setOpaqueSort(e) {\n    this._opaqueSort = e;\n  }\n  /**\n   * Defines a manual sort function for the transparent render list.\n   * Pass `null` to use the default sort.\n   *\n   * @param {Function} method - The sort function.\n   */\n  setTransparentSort(e) {\n    this._transparentSort = e;\n  }\n  /**\n   * Returns the scissor rectangle.\n   *\n   * @param {Vector4} target - The method writes the result in this target object.\n   * @return {Vector4} The scissor rectangle.\n   */\n  getScissor(e) {\n    const t = this._scissor;\n    return e.x = t.x, e.y = t.y, e.width = t.width, e.height = t.height, e;\n  }\n  /**\n   * Defines the scissor rectangle.\n   *\n   * @param {Number | Vector4} x - The horizontal coordinate for the lower left corner of the box in logical pixel unit.\n   * Instead of passing four arguments, the method also works with a single four-dimensional vector.\n   * @param {Number} y - The vertical coordinate for the lower left corner of the box in logical pixel unit.\n   * @param {Number} width - The width of the scissor box in logical pixel unit.\n   * @param {Number} height - The height of the scissor box in logical pixel unit.\n   */\n  setScissor(e, t, s, n) {\n    const r = this._scissor;\n    e.isVector4 ? r.copy(e) : r.set(e, t, s, n);\n  }\n  /**\n   * Returns the scissor test value.\n   *\n   * @return {Boolean} Whether the scissor test should be enabled or not.\n   */\n  getScissorTest() {\n    return this._scissorTest;\n  }\n  /**\n   * Defines the scissor test.\n   *\n   * @param {Boolean} boolean - Whether the scissor test should be enabled or not.\n   */\n  setScissorTest(e) {\n    this._scissorTest = e, this.backend.setScissorTest(e);\n  }\n  /**\n   * Returns the viewport definition.\n   *\n   * @param {Vector4} target - The method writes the result in this target object.\n   * @return {Vector4} The viewport definition.\n   */\n  getViewport(e) {\n    return e.copy(this._viewport);\n  }\n  /**\n   * Defines the viewport.\n   *\n   * @param {Number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.\n   * @param {Number} y - The vertical coordinate for the lower left corner of the viewport origin  in logical pixel unit.\n   * @param {Number} width - The width of the viewport in logical pixel unit.\n   * @param {Number} height - The height of the viewport in logical pixel unit.\n   * @param {Number} minDepth - The minimum depth value of the viewport. WebGPU only.\n   * @param {Number} maxDepth - The maximum depth value of the viewport. WebGPU only.\n   */\n  setViewport(e, t, s, n, r = 0, i = 1) {\n    const a = this._viewport;\n    e.isVector4 ? a.copy(e) : a.set(e, t, s, n), a.minDepth = r, a.maxDepth = i;\n  }\n  /**\n   * Returns the clear color.\n   *\n   * @param {Color} target - The method writes the result in this target object.\n   * @return {Color} The clear color.\n   */\n  getClearColor(e) {\n    return e.copy(this._clearColor);\n  }\n  /**\n   * Defines the clear color and optionally the clear alpha.\n   *\n   * @param {Color} color - The clear color.\n   * @param {Number} [alpha=1] - The clear alpha.\n   */\n  setClearColor(e, t = 1) {\n    this._clearColor.set(e), this._clearColor.a = t;\n  }\n  /**\n   * Returns the clear alpha.\n   *\n   * @return {Number} The clear alpha.\n   */\n  getClearAlpha() {\n    return this._clearColor.a;\n  }\n  /**\n   * Defines the clear alpha.\n   *\n   * @param {Number} alpha - The clear alpha.\n   */\n  setClearAlpha(e) {\n    this._clearColor.a = e;\n  }\n  /**\n   * Returns the clear depth.\n   *\n   * @return {Number} The clear depth.\n   */\n  getClearDepth() {\n    return this._clearDepth;\n  }\n  /**\n   * Defines the clear depth.\n   *\n   * @param {Number} depth - The clear depth.\n   */\n  setClearDepth(e) {\n    this._clearDepth = e;\n  }\n  /**\n   * Returns the clear stencil.\n   *\n   * @return {Number} The clear stencil.\n   */\n  getClearStencil() {\n    return this._clearStencil;\n  }\n  /**\n   * Defines the clear stencil.\n   *\n   * @param {Number} stencil - The clear stencil.\n   */\n  setClearStencil(e) {\n    this._clearStencil = e;\n  }\n  /**\n   * This method performs an occlusion query for the given 3D object.\n   * It returns `true` if the given 3D object is fully occluded by other\n   * 3D objects in the scene.\n   *\n   * @param {Object3D} object - The 3D object to test.\n   * @return {Boolean} Whether the 3D object is fully occluded or not.\n   */\n  isOccluded(e) {\n    const t = this._currentRenderContext;\n    return t && this.backend.isOccluded(t, e);\n  }\n  /**\n   * Performs a manual clear operation. This method ignores `autoClear` properties.\n   *\n   * @param {Boolean} [color=true] - Whether the color buffer should be cleared or not.\n   * @param {Boolean} [depth=true] - Whether the depth buffer should be cleared or not.\n   * @param {Boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   * Only returned when the renderer has not been initialized.\n   */\n  clear(e = !0, t = !0, s = !0) {\n    if (this._initialized === !1)\n      return console.warn(\"THREE.Renderer: .clear() called before the backend is initialized. Try using .clearAsync() instead.\"), this.clearAsync(e, t, s);\n    const n = this._renderTarget || this._getFrameBufferTarget();\n    let r = null;\n    if (n !== null) {\n      this._textures.updateRenderTarget(n);\n      const i = this._textures.get(n);\n      r = this._renderContexts.get(null, null, n), r.textures = i.textures, r.depthTexture = i.depthTexture, r.width = i.width, r.height = i.height, r.renderTarget = n, r.depth = n.depthBuffer, r.stencil = n.stencilBuffer;\n    }\n    if (this.backend.clear(e, t, s, r), n !== null && this._renderTarget === null) {\n      const i = this._quad;\n      this._nodes.hasOutputChange(n.texture) && (i.material.fragmentNode = this._nodes.getOutputNode(n.texture), i.material.needsUpdate = !0), this._renderScene(i, i.camera, !1);\n    }\n  }\n  /**\n   * Performs a manual clear operation of the color buffer. This method ignores `autoClear` properties.\n   *\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   * Only returned when the renderer has not been initialized.\n   */\n  clearColor() {\n    return this.clear(!0, !1, !1);\n  }\n  /**\n   * Performs a manual clear operation of the depth buffer. This method ignores `autoClear` properties.\n   *\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   * Only returned when the renderer has not been initialized.\n   */\n  clearDepth() {\n    return this.clear(!1, !0, !1);\n  }\n  /**\n   * Performs a manual clear operation of the stencil buffer. This method ignores `autoClear` properties.\n   *\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   * Only returned when the renderer has not been initialized.\n   */\n  clearStencil() {\n    return this.clear(!1, !1, !0);\n  }\n  /**\n   * Async version of {@link module:Renderer~Renderer#clear}.\n   *\n   * @async\n   * @param {Boolean} [color=true] - Whether the color buffer should be cleared or not.\n   * @param {Boolean} [depth=true] - Whether the depth buffer should be cleared or not.\n   * @param {Boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   */\n  async clearAsync(e = !0, t = !0, s = !0) {\n    this._initialized === !1 && await this.init(), this.clear(e, t, s);\n  }\n  /**\n   * Async version of {@link module:Renderer~Renderer#clearColor}.\n   *\n   * @async\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   */\n  async clearColorAsync() {\n    this.clearAsync(!0, !1, !1);\n  }\n  /**\n   * Async version of {@link module:Renderer~Renderer#clearDepth}.\n   *\n   * @async\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   */\n  async clearDepthAsync() {\n    this.clearAsync(!1, !0, !1);\n  }\n  /**\n   * Async version of {@link module:Renderer~Renderer#clearStencil}.\n   *\n   * @async\n   * @return {Promise} A Promise that resolves when the clear operation has been executed.\n   */\n  async clearStencilAsync() {\n    this.clearAsync(!1, !1, !0);\n  }\n  /**\n   * The current output tone mapping of the renderer. When a render target is set,\n   * the output tone mapping is always `NoToneMapping`.\n   *\n   * @type {Number}\n   */\n  get currentToneMapping() {\n    return this._renderTarget !== null ? $s : this.toneMapping;\n  }\n  /**\n   * The current output color space of the renderer. When a render target is set,\n   * the output color space is always `LinearSRGBColorSpace`.\n   *\n   * @type {String}\n   */\n  get currentColorSpace() {\n    return this._renderTarget !== null ? cs : this.outputColorSpace;\n  }\n  /**\n   * Frees all internal resources of the renderer. Call this method if the renderer\n   * is no longer in use by your app.\n   */\n  dispose() {\n    this.info.dispose(), this.backend.dispose(), this._animation.dispose(), this._objects.dispose(), this._pipelines.dispose(), this._nodes.dispose(), this._bindings.dispose(), this._renderLists.dispose(), this._renderContexts.dispose(), this._textures.dispose(), this.setRenderTarget(null), this.setAnimationLoop(null);\n  }\n  /**\n   * Sets the given render target. Calling this method means the renderer does not\n   * target the default framebuffer (meaning the canvas) anymore but a custom framebuffer.\n   * Use `null` as the first argument to reset the state.\n   *\n   * @param {RenderTarget?} renderTarget - The render target to set.\n   * @param {Number} [activeCubeFace=0] - The active cube face.\n   * @param {Number} [activeMipmapLevel=0] - The active mipmap level.\n   */\n  setRenderTarget(e, t = 0, s = 0) {\n    this._renderTarget = e, this._activeCubeFace = t, this._activeMipmapLevel = s;\n  }\n  /**\n   * Returns the current render target.\n   *\n   * @return {RenderTarget?} The render target. Returns `null` if no render target is set.\n   */\n  getRenderTarget() {\n    return this._renderTarget;\n  }\n  /**\n   * Callback for {@link module:Renderer~Renderer#setRenderObjectFunction}.\n   *\n   * @callback renderObjectFunction\n   * @param {Object3D} object - The 3D object.\n   * @param {Scene} scene - The scene the 3D object belongs to.\n   * @param {Camera} camera - The camera the object should be rendered with.\n   * @param {BufferGeometry} geometry - The object's geometry.\n   * @param {Material} material - The object's material.\n   * @param {Object?} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.\n   * @param {LightsNode} lightsNode - The current lights node.\n   * @param {ClippingContext} clippingContext - The clipping context.\n   * @param {String?} [passId=null] - An optional ID for identifying the pass.\n   */\n  /**\n   * Sets the given render object function. Calling this method overwrites the default implementation\n   * which is {@link module:Renderer~Renderer#renderObject}. Defining a custom function can be useful\n   * if you want to modify the way objects are rendered. For example you can define things like \"every\n   * object that has material of a certain type should perform a pre-pass with a special overwrite material\".\n   * The custom function must always call `renderObject()` in its implementation.\n   *\n   * Use `null` as the first argument to reset the state.\n   *\n   * @param {module:Renderer~renderObjectFunction?} renderObjectFunction - The render object function.\n   */\n  setRenderObjectFunction(e) {\n    this._renderObjectFunction = e;\n  }\n  /**\n   * Returns the current render object function.\n   *\n   * @return {Function?} The current render object function. Returns `null` if no function is set.\n   */\n  getRenderObjectFunction() {\n    return this._renderObjectFunction;\n  }\n  /**\n   * Execute a single or an array of compute nodes. This method can only be called\n   * if the renderer has been initialized.\n   *\n   * @param {Node|Array<Node>} computeNodes - The compute node(s).\n   * @return {Promise?} A Promise that resolve when the compute has finished. Only returned when the renderer has not been initialized.\n   */\n  compute(e) {\n    if (this.isDeviceLost === !0) return;\n    if (this._initialized === !1)\n      return console.warn(\"THREE.Renderer: .compute() called before the backend is initialized. Try using .computeAsync() instead.\"), this.computeAsync(e);\n    const t = this._nodes.nodeFrame, s = t.renderId;\n    this.info.calls++, this.info.compute.calls++, this.info.compute.frameCalls++, t.renderId = this.info.calls;\n    const n = this.backend, r = this._pipelines, i = this._bindings, a = this._nodes, u = Array.isArray(e) ? e : [e];\n    if (u[0] === void 0 || u[0].isComputeNode !== !0)\n      throw new Error(\"THREE.Renderer: .compute() expects a ComputeNode.\");\n    n.beginCompute(e);\n    for (const c of u) {\n      if (r.has(c) === !1) {\n        const h = () => {\n          c.removeEventListener(\"dispose\", h), r.delete(c), i.delete(c), a.delete(c);\n        };\n        c.addEventListener(\"dispose\", h);\n        const p = c.onInitFunction;\n        p !== null && p.call(c, { renderer: this });\n      }\n      a.updateForCompute(c), i.updateForCompute(c);\n      const l = i.getForCompute(c), d = r.getForCompute(c, l);\n      n.compute(e, c, l, d);\n    }\n    n.finishCompute(e), t.renderId = s;\n  }\n  /**\n   * Execute a single or an array of compute nodes.\n   *\n   * @async\n   * @param {Node|Array<Node>} computeNodes - The compute node(s).\n   * @return {Promise?} A Promise that resolve when the compute has finished.\n   */\n  async computeAsync(e) {\n    this._initialized === !1 && await this.init(), this.compute(e), await this.backend.resolveTimestampAsync(e, \"compute\");\n  }\n  /**\n   * Checks if the given feature is supported by the selected backend.\n   *\n   * @async\n   * @param {String} name - The feature's name.\n   * @return {Promise<Boolean>} A Promise that resolves with a bool that indicates whether the feature is supported or not.\n   */\n  async hasFeatureAsync(e) {\n    return this._initialized === !1 && await this.init(), this.backend.hasFeature(e);\n  }\n  /**\n   * Checks if the given feature is supported by the selected backend. If the\n   * renderer has not been initialized, this method always returns `false`.\n   *\n   * @param {String} name - The feature's name.\n   * @return {Boolean} Whether the feature is supported or not.\n   */\n  hasFeature(e) {\n    return this._initialized === !1 ? (console.warn(\"THREE.Renderer: .hasFeature() called before the backend is initialized. Try using .hasFeatureAsync() instead.\"), !1) : this.backend.hasFeature(e);\n  }\n  /**\n   * Returns `true` when the renderer has been initialized.\n   *\n   * @return {Boolean} Whether the renderer has been initialized or not.\n   */\n  hasInitialized() {\n    return this._initialized;\n  }\n  /**\n   * Initializes the given textures. Useful for preloading a texture rather than waiting until first render\n   * (which can cause noticeable lags due to decode and GPU upload overhead).\n   *\n   * @async\n   * @param {Texture} texture - The texture.\n   * @return {Promise} A Promise that resolves when the texture has been initialized.\n   */\n  async initTextureAsync(e) {\n    this._initialized === !1 && await this.init(), this._textures.updateTexture(e);\n  }\n  /**\n   * Initializes the given textures. Useful for preloading a texture rather than waiting until first render\n   * (which can cause noticeable lags due to decode and GPU upload overhead).\n   *\n   * This method can only be used if the renderer has been initialized.\n   *\n   * @param {Texture} texture - The texture.\n   */\n  initTexture(e) {\n    this._initialized === !1 && console.warn(\"THREE.Renderer: .initTexture() called before the backend is initialized. Try using .initTextureAsync() instead.\"), this._textures.updateTexture(e);\n  }\n  /**\n   * Copies the current bound framebuffer into the given texture.\n   *\n   * @param {FramebufferTexture} framebufferTexture - The texture.\n   * @param {Vector2|Vector4} rectangle - A two or four dimensional vector that defines the rectangular portion of the framebuffer that should be copied.\n   */\n  copyFramebufferToTexture(e, t = null) {\n    if (t !== null)\n      if (t.isVector2)\n        t = $t.set(t.x, t.y, e.image.width, e.image.height).floor();\n      else if (t.isVector4)\n        t = $t.copy(t).floor();\n      else {\n        console.error(\"THREE.Renderer.copyFramebufferToTexture: Invalid rectangle.\");\n        return;\n      }\n    else\n      t = $t.set(0, 0, e.image.width, e.image.height);\n    let s = this._currentRenderContext, n;\n    s !== null ? n = s.renderTarget : (n = this._renderTarget || this._getFrameBufferTarget(), n !== null && (this._textures.updateRenderTarget(n), s = this._textures.get(n))), this._textures.updateTexture(e, { renderTarget: n }), this.backend.copyFramebufferToTexture(e, s, t);\n  }\n  /**\n   * Copies data of source texture into a destination texture.\n   *\n   * @param {Texture} srcTexture - The source texture.\n   * @param {Texture} dstTexture - The destination texture.\n   * @param {Box2|Box3} [srcRegion=null] - A bounding box which describes the source region. Can be two or three-dimensional.\n   * @param {Vector2|Vector3} [dstPosition=null] - A vector that represents the origin of the destination region. Can be two or three-dimensional.\n   * @param {Number} level - The mipmap level to copy.\n   */\n  copyTextureToTexture(e, t, s = null, n = null, r = 0) {\n    this._textures.updateTexture(e), this._textures.updateTexture(t), this.backend.copyTextureToTexture(e, t, s, n, r);\n  }\n  /**\n   * Reads pixel data from the given render target.\n   *\n   * @async\n   * @param {RenderTarget} renderTarget - The render target to read from.\n   * @param {Number} x - The `x` coordinate of the copy region's origin.\n   * @param {Number} y - The `y` coordinate of the copy region's origin.\n   * @param {Number} width - The width of the copy region.\n   * @param {Number} height - The height of the copy region.\n   * @param {Number} [textureIndex=0] - The texture index of a MRT render target.\n   * @param {Number} [faceIndex=0] - The active cube face index.\n   * @return {Promise<TypedArray>} A Promise that resolves when the read has been finished. The resolve provides the read data as a typed array.\n   */\n  async readRenderTargetPixelsAsync(e, t, s, n, r, i = 0, a = 0) {\n    return this.backend.copyTextureToBuffer(e.textures[i], t, s, n, r, a);\n  }\n  /**\n   * Analyzes the given 3D object's hierarchy and builds render lists from the\n   * processed hierarchy.\n   *\n   * @param {Object3D} object - The 3D object to process (usually a scene).\n   * @param {Camera} camera - The camera the object is rendered with.\n   * @param {Number} groupOrder - The group order is derived from the `renderOrder` of groups and is used to group 3D objects within groups.\n   * @param {RenderList} renderList - The current render list.\n   * @param {ClippingContext} clippingContext - The current clipping context.\n   */\n  _projectObject(e, t, s, n, r) {\n    if (e.visible === !1) return;\n    if (e.layers.test(t.layers)) {\n      if (e.isGroup)\n        s = e.renderOrder, e.isClippingGroup && e.enabled && (r = r.getGroupContext(e));\n      else if (e.isLOD)\n        e.autoUpdate === !0 && e.update(t);\n      else if (e.isLight)\n        n.pushLight(e);\n      else if (e.isSprite) {\n        if (!e.frustumCulled || so.intersectsSprite(e)) {\n          this.sortObjects === !0 && $t.setFromMatrixPosition(e.matrixWorld).applyMatrix4(_r);\n          const { geometry: u, material: c } = e;\n          c.visible && n.push(e, u, c, s, $t.z, null, r);\n        }\n      } else if (e.isLineLoop)\n        console.error(\"THREE.Renderer: Objects of type THREE.LineLoop are not supported. Please use THREE.Line or THREE.LineSegments.\");\n      else if ((e.isMesh || e.isLine || e.isPoints) && (!e.frustumCulled || so.intersectsObject(e))) {\n        const { geometry: u, material: c } = e;\n        if (this.sortObjects === !0 && (u.boundingSphere === null && u.computeBoundingSphere(), $t.copy(u.boundingSphere.center).applyMatrix4(e.matrixWorld).applyMatrix4(_r)), Array.isArray(c)) {\n          const l = u.groups;\n          for (let d = 0, h = l.length; d < h; d++) {\n            const p = l[d], f = c[p.materialIndex];\n            f && f.visible && n.push(e, u, f, s, $t.z, p, r);\n          }\n        } else c.visible && n.push(e, u, c, s, $t.z, null, r);\n      }\n    }\n    if (e.isBundleGroup === !0 && this.backend.beginBundle !== void 0) {\n      const u = n;\n      n = this._renderLists.get(e, t), n.begin(), u.pushBundle({\n        bundleGroup: e,\n        camera: t,\n        renderList: n\n      }), n.finish();\n    }\n    const a = e.children;\n    for (let u = 0, c = a.length; u < c; u++)\n      this._projectObject(a[u], t, s, n, r);\n  }\n  /**\n   * Renders the given render bundles.\n   *\n   * @private\n   * @param {Array<Object>} bundles - Array with render bundle data.\n   * @param {Scene} sceneRef - The scene the render bundles belong to.\n   * @param {LightsNode} lightsNode - The current lights node.\n   */\n  _renderBundles(e, t, s) {\n    for (const n of e)\n      this._renderBundle(n, t, s);\n  }\n  /**\n   * Renders the transparent objects from the given render lists.\n   *\n   * @private\n   * @param {Array<Object>} renderList - The transparent render list.\n   * @param {Array<Object>} doublePassList - The list of transparent objects which require a double pass (e.g. because of transmission).\n   * @param {Camera} camera - The camera the render list should be rendered with.\n   * @param {Scene} scene - The scene the render list belongs to.\n   * @param {LightsNode} lightsNode - The current lights node.\n   */\n  _renderTransparents(e, t, s, n, r) {\n    if (t.length > 0) {\n      for (const { material: i } of t)\n        i.side = Tt;\n      this._renderObjects(t, s, n, r, \"backSide\");\n      for (const { material: i } of t)\n        i.side = ho;\n      this._renderObjects(e, s, n, r);\n      for (const { material: i } of t)\n        i.side = Ws;\n    } else\n      this._renderObjects(e, s, n, r);\n  }\n  /**\n   * Renders the objects from the given render list.\n   *\n   * @private\n   * @param {Array<Object>} renderList - The render list.\n   * @param {Camera} camera - The camera the render list should be rendered with.\n   * @param {Scene} scene - The scene the render list belongs to.\n   * @param {LightsNode} lightsNode - The current lights node.\n   * @param {String?} [passId=null] - An optional ID for identifying the pass.\n   */\n  _renderObjects(e, t, s, n, r = null) {\n    for (let i = 0, a = e.length; i < a; i++) {\n      const u = e[i], { object: c, geometry: l, material: d, group: h, clippingContext: p } = u;\n      if (t.isArrayCamera) {\n        const f = t.cameras;\n        for (let m = 0, _ = f.length; m < _; m++) {\n          const S = f[m];\n          if (c.layers.test(S.layers)) {\n            const A = S.viewport, M = A.minDepth === void 0 ? 0 : A.minDepth, F = A.maxDepth === void 0 ? 1 : A.maxDepth, D = this._currentRenderContext.viewportValue;\n            D.copy(A).multiplyScalar(this._pixelRatio).floor(), D.minDepth = M, D.maxDepth = F, this.backend.updateViewport(this._currentRenderContext), this._currentRenderObjectFunction(c, s, S, l, d, h, n, p, r);\n          }\n        }\n      } else\n        this._currentRenderObjectFunction(c, s, t, l, d, h, n, p, r);\n    }\n  }\n  /**\n   * This method represents the default render object function that manages the render lifecycle\n   * of the object.\n   *\n   * @param {Object3D} object - The 3D object.\n   * @param {Scene} scene - The scene the 3D object belongs to.\n   * @param {Camera} camera - The camera the object should be rendered with.\n   * @param {BufferGeometry} geometry - The object's geometry.\n   * @param {Material} material - The object's material.\n   * @param {Object?} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.\n   * @param {LightsNode} lightsNode - The current lights node.\n   * @param {ClippingContext} clippingContext - The clipping context.\n   * @param {String?} [passId=null] - An optional ID for identifying the pass.\n   */\n  renderObject(e, t, s, n, r, i, a, u = null, c = null) {\n    let l, d, h;\n    if (e.onBeforeRender(this, t, s, n, r, i), t.overrideMaterial !== null) {\n      const p = t.overrideMaterial;\n      r.positionNode && r.positionNode.isNode && (l = p.positionNode, p.positionNode = r.positionNode), p.alphaTest = r.alphaTest, p.alphaMap = r.alphaMap, p.transparent = r.transparent || r.transmission > 0, p.isShadowNodeMaterial && (p.side = r.shadowSide === null ? r.side : r.shadowSide, r.depthNode && r.depthNode.isNode && (h = p.depthNode, p.depthNode = r.depthNode), r.castShadowNode && r.castShadowNode.isNode && (d = p.colorNode, p.colorNode = r.castShadowNode)), r = p;\n    }\n    r.transparent === !0 && r.side === Ws && r.forceSinglePass === !1 ? (r.side = Tt, this._handleObjectFunction(e, r, t, s, a, i, u, \"backSide\"), r.side = ho, this._handleObjectFunction(e, r, t, s, a, i, u, c), r.side = Ws) : this._handleObjectFunction(e, r, t, s, a, i, u, c), l !== void 0 && (t.overrideMaterial.positionNode = l), h !== void 0 && (t.overrideMaterial.depthNode = h), d !== void 0 && (t.overrideMaterial.colorNode = d), e.onAfterRender(this, t, s, n, r, i);\n  }\n  /**\n   * This method represents the default `_handleObjectFunction` implementation which creates\n   * a render object from the given data and performs the draw command with the selected backend.\n   *\n   * @private\n   * @param {Object3D} object - The 3D object.\n   * @param {Material} material - The object's material.\n   * @param {Scene} scene - The scene the 3D object belongs to.\n   * @param {Camera} camera - The camera the object should be rendered with.\n   * @param {LightsNode} lightsNode - The current lights node.\n   * @param {Object?} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.\n   * @param {ClippingContext} clippingContext - The clipping context.\n   * @param {String?} [passId=null] - An optional ID for identifying the pass.\n   */\n  _renderObjectDirect(e, t, s, n, r, i, a, u) {\n    const c = this._objects.get(e, t, s, n, r, this._currentRenderContext, a, u);\n    c.drawRange = e.geometry.drawRange, c.group = i;\n    const l = this._nodes.needsRefresh(c);\n    l && (this._nodes.updateBefore(c), this._geometries.updateForRender(c), this._nodes.updateForRender(c), this._bindings.updateForRender(c)), this._pipelines.updateForRender(c), this._currentRenderBundle !== null && (this.backend.get(this._currentRenderBundle).renderObjects.push(c), c.bundle = this._currentRenderBundle.bundleGroup), this.backend.draw(c, this.info), l && this._nodes.updateAfter(c);\n  }\n  /**\n   * A different implementation for `_handleObjectFunction` which only makes sure the object is ready for rendering.\n   * Used in `compileAsync()`.\n   *\n   * @private\n   * @param {Object3D} object - The 3D object.\n   * @param {Material} material - The object's material.\n   * @param {Scene} scene - The scene the 3D object belongs to.\n   * @param {Camera} camera - The camera the object should be rendered with.\n   * @param {LightsNode} lightsNode - The current lights node.\n   * @param {Object?} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.\n   * @param {ClippingContext} clippingContext - The clipping context.\n   * @param {String?} [passId=null] - An optional ID for identifying the pass.\n   */\n  _createObjectPipeline(e, t, s, n, r, i, a, u) {\n    const c = this._objects.get(e, t, s, n, r, this._currentRenderContext, a, u);\n    c.drawRange = e.geometry.drawRange, c.group = i, this._nodes.updateBefore(c), this._geometries.updateForRender(c), this._nodes.updateForRender(c), this._bindings.updateForRender(c), this._pipelines.getForRender(c, this._compilationPromises), this._nodes.updateAfter(c);\n  }\n  /**\n   * Alias for `compileAsync()`.\n   *\n   * @method\n   * @param {Object3D} scene - The scene or 3D object to precompile.\n   * @param {Camera} camera - The camera that is used to render the scene.\n   * @param {Scene} targetScene - If the first argument is a 3D object, this parameter must represent the scene the 3D object is going to be added.\n   * @return {Promise} A Promise that resolves when the compile has been finished.\n   */\n  get compile() {\n    return this.compileAsync;\n  }\n}\nclass Nu {\n  /**\n   * Constructs a new binding.\n   *\n   * @param {String} [name=''] - The binding's name.\n   */\n  constructor(e = \"\") {\n    this.name = e, this.visibility = 0;\n  }\n  /**\n   * Makes sure binding's resource is visible for the given shader stage.\n   *\n   * @param {Number} visibility - The shader stage.\n   */\n  setVisibility(e) {\n    this.visibility |= e;\n  }\n  /**\n   * Clones the binding.\n   *\n   * @return {Binding} The cloned binding.\n   */\n  clone() {\n    return Object.assign(new this.constructor(), this);\n  }\n}\nfunction eA(o) {\n  return o + (Kt - o % Kt) % Kt;\n}\nclass jf extends Nu {\n  /**\n   * Constructs a new buffer.\n   *\n   * @param {String} name - The buffer's name.\n   * @param {TypedArray} [buffer=null] - The buffer.\n   */\n  constructor(e, t = null) {\n    super(e), this.isBuffer = !0, this.bytesPerElement = Float32Array.BYTES_PER_ELEMENT, this._buffer = t;\n  }\n  /**\n   * The buffer's byte length.\n   *\n   * @type {Number}\n   * @readonly\n   */\n  get byteLength() {\n    return eA(this._buffer.byteLength);\n  }\n  /**\n   * A reference to the internal buffer.\n   *\n   * @type {Float32Array}\n   * @readonly\n   */\n  get buffer() {\n    return this._buffer;\n  }\n  /**\n   * Updates the binding.\n   *\n   * @return {Boolean} Whether the buffer has been updated and must be\n   * uploaded to the GPU.\n   */\n  update() {\n    return !0;\n  }\n}\nclass Qf extends jf {\n  /**\n   * Constructs a new uniform buffer.\n   *\n   * @param {String} name - The buffer's name.\n   * @param {TypedArray} [buffer=null] - The buffer.\n   */\n  constructor(e, t = null) {\n    super(e, t), this.isUniformBuffer = !0;\n  }\n}\nlet tA = 0;\nclass Zf extends Qf {\n  /**\n   * Constructs a new node-based uniform buffer.\n   *\n   * @param {BufferNode} nodeUniform - The uniform buffer node.\n   * @param {UniformGroupNode} groupNode - The uniform group node.\n   */\n  constructor(e, t) {\n    super(\"UniformBuffer_\" + tA++, e ? e.value : null), this.nodeUniform = e, this.groupNode = t;\n  }\n  /**\n   * The uniform buffer.\n   *\n   * @type {Float32Array}\n   */\n  get buffer() {\n    return this.nodeUniform.value;\n  }\n}\nclass sA extends Qf {\n  /**\n   * Constructs a new uniforms group.\n   *\n   * @param {String} name - The group's name.\n   */\n  constructor(e) {\n    super(e), this.isUniformsGroup = !0, this._values = null, this.uniforms = [];\n  }\n  /**\n   * Adds a uniform to this group.\n   *\n   * @param {Uniform} uniform - The uniform to add.\n   * @return {UniformsGroup} A reference to this group.\n   */\n  addUniform(e) {\n    return this.uniforms.push(e), this;\n  }\n  /**\n   * Removes a uniform from this group.\n   *\n   * @param {Uniform} uniform - The uniform to remove.\n   * @return {UniformsGroup} A reference to this group.\n   */\n  removeUniform(e) {\n    const t = this.uniforms.indexOf(e);\n    return t !== -1 && this.uniforms.splice(t, 1), this;\n  }\n  /**\n   * An array with the raw uniform values.\n   *\n   * @type {Array<Number>}\n   */\n  get values() {\n    return this._values === null && (this._values = Array.from(this.buffer)), this._values;\n  }\n  /**\n   * A Float32 array buffer with the uniform values.\n   *\n   * @type {Float32Array}\n   */\n  get buffer() {\n    let e = this._buffer;\n    if (e === null) {\n      const t = this.byteLength;\n      e = new Float32Array(new ArrayBuffer(t)), this._buffer = e;\n    }\n    return e;\n  }\n  /**\n   * The byte length of the buffer with correct buffer alignment.\n   *\n   * @type {Number}\n   */\n  get byteLength() {\n    let e = 0;\n    for (let t = 0, s = this.uniforms.length; t < s; t++) {\n      const n = this.uniforms[t], { boundary: r, itemSize: i } = n, a = e % Kt, u = Kt - a;\n      a !== 0 && u - r < 0 ? e += Kt - a : a % r !== 0 && (e += a % r), n.offset = e / this.bytesPerElement, e += i * this.bytesPerElement;\n    }\n    return Math.ceil(e / Kt) * Kt;\n  }\n  /**\n   * Updates this group by updating each uniform object of\n   * the internal uniform list. The uniform objects check if their\n   * values has actually changed so this method only returns\n   * `true` if there is a real value change.\n   *\n   * @return {Boolean} Whether the uniforms have been updated and\n   * must be uploaded to the GPU.\n   */\n  update() {\n    let e = !1;\n    for (const t of this.uniforms)\n      this.updateByType(t) === !0 && (e = !0);\n    return e;\n  }\n  /**\n   * Updates a given uniform by calling an update method matching\n   * the uniforms type.\n   *\n   * @param {Uniform} uniform - The uniform to update.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateByType(e) {\n    if (e.isNumberUniform) return this.updateNumber(e);\n    if (e.isVector2Uniform) return this.updateVector2(e);\n    if (e.isVector3Uniform) return this.updateVector3(e);\n    if (e.isVector4Uniform) return this.updateVector4(e);\n    if (e.isColorUniform) return this.updateColor(e);\n    if (e.isMatrix3Uniform) return this.updateMatrix3(e);\n    if (e.isMatrix4Uniform) return this.updateMatrix4(e);\n    console.error(\"THREE.WebGPUUniformsGroup: Unsupported uniform type.\", e);\n  }\n  /**\n   * Updates a given Number uniform.\n   *\n   * @param {NumberUniform} uniform - The Number uniform.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateNumber(e) {\n    let t = !1;\n    const s = this.values, n = e.getValue(), r = e.offset, i = e.getType();\n    if (s[r] !== n) {\n      const a = this._getBufferForType(i);\n      a[r] = s[r] = n, t = !0;\n    }\n    return t;\n  }\n  /**\n   * Updates a given Vector2 uniform.\n   *\n   * @param {Vector2Uniform} uniform - The Vector2 uniform.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateVector2(e) {\n    let t = !1;\n    const s = this.values, n = e.getValue(), r = e.offset, i = e.getType();\n    if (s[r + 0] !== n.x || s[r + 1] !== n.y) {\n      const a = this._getBufferForType(i);\n      a[r + 0] = s[r + 0] = n.x, a[r + 1] = s[r + 1] = n.y, t = !0;\n    }\n    return t;\n  }\n  /**\n   * Updates a given Vector3 uniform.\n   *\n   * @param {Vector3Uniform} uniform - The Vector3 uniform.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateVector3(e) {\n    let t = !1;\n    const s = this.values, n = e.getValue(), r = e.offset, i = e.getType();\n    if (s[r + 0] !== n.x || s[r + 1] !== n.y || s[r + 2] !== n.z) {\n      const a = this._getBufferForType(i);\n      a[r + 0] = s[r + 0] = n.x, a[r + 1] = s[r + 1] = n.y, a[r + 2] = s[r + 2] = n.z, t = !0;\n    }\n    return t;\n  }\n  /**\n   * Updates a given Vector4 uniform.\n   *\n   * @param {Vector4Uniform} uniform - The Vector4 uniform.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateVector4(e) {\n    let t = !1;\n    const s = this.values, n = e.getValue(), r = e.offset, i = e.getType();\n    if (s[r + 0] !== n.x || s[r + 1] !== n.y || s[r + 2] !== n.z || s[r + 4] !== n.w) {\n      const a = this._getBufferForType(i);\n      a[r + 0] = s[r + 0] = n.x, a[r + 1] = s[r + 1] = n.y, a[r + 2] = s[r + 2] = n.z, a[r + 3] = s[r + 3] = n.w, t = !0;\n    }\n    return t;\n  }\n  /**\n   * Updates a given Color uniform.\n   *\n   * @param {ColorUniform} uniform - The Color uniform.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateColor(e) {\n    let t = !1;\n    const s = this.values, n = e.getValue(), r = e.offset;\n    if (s[r + 0] !== n.r || s[r + 1] !== n.g || s[r + 2] !== n.b) {\n      const i = this.buffer;\n      i[r + 0] = s[r + 0] = n.r, i[r + 1] = s[r + 1] = n.g, i[r + 2] = s[r + 2] = n.b, t = !0;\n    }\n    return t;\n  }\n  /**\n   * Updates a given Matrix3 uniform.\n   *\n   * @param {Matrix3Uniform} uniform - The Matrix3 uniform.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateMatrix3(e) {\n    let t = !1;\n    const s = this.values, n = e.getValue().elements, r = e.offset;\n    if (s[r + 0] !== n[0] || s[r + 1] !== n[1] || s[r + 2] !== n[2] || s[r + 4] !== n[3] || s[r + 5] !== n[4] || s[r + 6] !== n[5] || s[r + 8] !== n[6] || s[r + 9] !== n[7] || s[r + 10] !== n[8]) {\n      const i = this.buffer;\n      i[r + 0] = s[r + 0] = n[0], i[r + 1] = s[r + 1] = n[1], i[r + 2] = s[r + 2] = n[2], i[r + 4] = s[r + 4] = n[3], i[r + 5] = s[r + 5] = n[4], i[r + 6] = s[r + 6] = n[5], i[r + 8] = s[r + 8] = n[6], i[r + 9] = s[r + 9] = n[7], i[r + 10] = s[r + 10] = n[8], t = !0;\n    }\n    return t;\n  }\n  /**\n   * Updates a given Matrix4 uniform.\n   *\n   * @param {Matrix4Uniform} uniform - The Matrix4 uniform.\n   * @return {Boolean} Whether the uniform has been updated or not.\n   */\n  updateMatrix4(e) {\n    let t = !1;\n    const s = this.values, n = e.getValue().elements, r = e.offset;\n    return rA(s, n, r) === !1 && (this.buffer.set(n, r), nA(s, n, r), t = !0), t;\n  }\n  /**\n   * Returns a typed array that matches the given data type.\n   *\n   * @param {String} type - The data type.\n   * @return {TypedArray} The typed array.\n   */\n  _getBufferForType(e) {\n    return e === \"int\" || e === \"ivec2\" || e === \"ivec3\" || e === \"ivec4\" ? new Int32Array(this.buffer.buffer) : e === \"uint\" || e === \"uvec2\" || e === \"uvec3\" || e === \"uvec4\" ? new Uint32Array(this.buffer.buffer) : this.buffer;\n  }\n}\nfunction nA(o, e, t) {\n  for (let s = 0, n = e.length; s < n; s++)\n    o[t + s] = e[s];\n}\nfunction rA(o, e, t) {\n  for (let s = 0, n = e.length; s < n; s++)\n    if (o[t + s] !== e[s]) return !1;\n  return !0;\n}\nlet iA = 0;\nclass Jf extends sA {\n  /**\n   * Constructs a new node-based uniforms group.\n   *\n   * @param {String} name - The group's name.\n   * @param {UniformGroupNode} groupNode - The uniform group node.\n   */\n  constructor(e, t) {\n    super(e), this.id = iA++, this.groupNode = t, this.isNodeUniformsGroup = !0;\n  }\n}\nlet oA = 0;\nclass aA extends Nu {\n  /**\n   * Constructs a new sampled texture.\n   *\n   * @param {String} name - The sampled texture's name.\n   * @param {Texture?} texture - The texture this binding is referring to.\n   */\n  constructor(e, t) {\n    super(e), this.id = oA++, this.texture = t, this.version = t ? t.version : 0, this.store = !1, this.generation = null, this.isSampledTexture = !0;\n  }\n  /**\n   * Returns `true` whether this binding requires an update for the\n   * given generation.\n   *\n   * @param {Number} generation - The generation.\n   * @return {Boolean} Whether an update is required or not.\n   */\n  needsBindingsUpdate(e) {\n    const { texture: t } = this;\n    return e !== this.generation ? (this.generation = e, !0) : t.isVideoTexture;\n  }\n  /**\n   * Updates the binding.\n   *\n   * @param {Number} generation - The generation.\n   * @return {Boolean} Whether the texture has been updated and must be\n   * uploaded to the GPU.\n   */\n  update() {\n    const { texture: e, version: t } = this;\n    return t !== e.version ? (this.version = e.version, !0) : !1;\n  }\n}\nclass Ci extends aA {\n  /**\n   * Constructs a new node-based sampled texture.\n   *\n   * @param {String} name - The textures's name.\n   * @param {TextureNode} textureNode - The texture node.\n   * @param {UniformGroupNode} groupNode - The uniform group node.\n   * @param {String?} [access=null] - The access type.\n   */\n  constructor(e, t, s, n = null) {\n    super(e, t ? t.value : null), this.textureNode = t, this.groupNode = s, this.access = n;\n  }\n  /**\n   * Overwrites the default to additionally check if the node value has changed.\n   *\n   * @param {Number} generation - The generation.\n   * @return {Boolean} Whether an update is required or not.\n   */\n  needsBindingsUpdate(e) {\n    return this.textureNode.value !== this.texture || super.needsBindingsUpdate(e);\n  }\n  /**\n   * Updates the binding.\n   *\n   * @param {Number} generation - The generation.\n   * @return {Boolean} Whether the texture has been updated and must be\n   * uploaded to the GPU.\n   */\n  update() {\n    const { textureNode: e } = this;\n    return this.texture !== e.value ? (this.texture = e.value, !0) : super.update();\n  }\n}\nclass eg extends Ci {\n  /**\n   * Constructs a new node-based sampled cube texture.\n   *\n   * @param {String} name - The textures's name.\n   * @param {TextureNode} textureNode - The texture node.\n   * @param {UniformGroupNode} groupNode - The uniform group node.\n   * @param {String?} [access=null] - The access type.\n   */\n  constructor(e, t, s, n = null) {\n    super(e, t, s, n), this.isSampledCubeTexture = !0;\n  }\n}\nclass tg extends Ci {\n  /**\n   * Constructs a new node-based sampled 3D texture.\n   *\n   * @param {String} name - The textures's name.\n   * @param {TextureNode} textureNode - The texture node.\n   * @param {UniformGroupNode} groupNode - The uniform group node.\n   * @param {String?} [access=null] - The access type.\n   */\n  constructor(e, t, s, n = null) {\n    super(e, t, s, n), this.isSampledTexture3D = !0;\n  }\n}\nconst uA = {\n  textureDimensions: \"textureSize\",\n  equals: \"equal\"\n}, cA = {\n  low: \"lowp\",\n  medium: \"mediump\",\n  high: \"highp\"\n}, Rc = {\n  swizzleAssign: !0,\n  storageBuffer: !1\n}, Cc = `\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp sampler3D;\nprecision highp samplerCube;\nprecision highp sampler2DArray;\n\nprecision highp usampler2D;\nprecision highp usampler3D;\nprecision highp usamplerCube;\nprecision highp usampler2DArray;\n\nprecision highp isampler2D;\nprecision highp isampler3D;\nprecision highp isamplerCube;\nprecision highp isampler2DArray;\n\nprecision lowp sampler2DShadow;\n`;\nclass lA extends qf {\n  constructor(e, t) {\n    super(e, t, new Xv()), this.uniformGroups = {}, this.transforms = [], this.extensions = {}, this.builtins = { vertex: [], fragment: [], compute: [] }, this.useComparisonMethod = !0;\n  }\n  needsToWorkingColorSpace(e) {\n    return e.isVideoTexture === !0 && e.colorSpace !== wn;\n  }\n  getMethod(e) {\n    return uA[e] || e;\n  }\n  getOutputStructName() {\n    return \"\";\n  }\n  buildFunctionCode(e) {\n    const t = e.layout, s = this.flowShaderNode(e), n = [];\n    for (const i of t.inputs)\n      n.push(this.getType(i.type) + \" \" + i.name);\n    return `${this.getType(t.type)} ${t.name}( ${n.join(\", \")} ) {\n\n\t${s.vars}\n\n${s.code}\n\treturn ${s.result};\n\n}`;\n  }\n  setupPBO(e) {\n    const t = e.value;\n    if (t.pbo === void 0) {\n      const s = t.array, n = t.count * t.itemSize, { itemSize: r } = t, i = t.array.constructor.name.toLowerCase().includes(\"int\");\n      let a = i ? ta : ea;\n      r === 2 ? a = i ? sa : Bn : r === 3 ? a = i ? sm : Jo : r === 4 && (a = i ? na : Xs);\n      const u = {\n        Float32Array: st,\n        Uint8Array: ls,\n        Uint16Array: Ls,\n        Uint32Array: Pe,\n        Int8Array: Tn,\n        Int16Array: _n,\n        Int32Array: Ve,\n        Uint8ClampedArray: ls\n      }, c = Math.pow(2, Math.ceil(Math.log2(Math.sqrt(n / r))));\n      let l = Math.ceil(n / r / c);\n      c * l * r < n && l++;\n      const d = c * l * r, h = new s.constructor(d);\n      h.set(s, 0), t.array = h;\n      const p = new Ag(t.array, c, l, a, u[t.array.constructor.name] || st);\n      p.needsUpdate = !0, p.isPBOTexture = !0;\n      const f = new bt(p, null, null);\n      f.setPrecision(\"high\"), t.pboNode = f, t.pbo = f.value, this.getUniformFromNode(t.pboNode, \"texture\", this.shaderStage, this.context.label);\n    }\n  }\n  getPropertyName(e, t = this.shaderStage) {\n    return e.isNodeUniform && e.node.isTextureNode !== !0 && e.node.isBufferNode !== !0 ? t.charAt(0) + \"_\" + e.name : super.getPropertyName(e, t);\n  }\n  generatePBO(e) {\n    const { node: t, indexNode: s } = e, n = t.value;\n    if (this.renderer.backend.has(n)) {\n      const l = this.renderer.backend.get(n);\n      l.pbo = n.pbo;\n    }\n    const r = this.getUniformFromNode(n.pboNode, \"texture\", this.shaderStage, this.context.label), i = this.getPropertyName(r);\n    this.increaseUsage(s);\n    const a = s.build(this, \"uint\"), u = this.getDataFromNode(e);\n    let c = u.propertyName;\n    if (c === void 0) {\n      const l = this.getVarFromNode(e);\n      c = this.getPropertyName(l);\n      const d = this.getDataFromNode(t);\n      let h = d.propertySizeName;\n      h === void 0 && (h = c + \"Size\", this.getVarFromNode(t, h, \"uint\"), this.addLineFlowCode(`${h} = uint( textureSize( ${i}, 0 ).x )`, e), d.propertySizeName = h);\n      const { itemSize: p } = n, f = \".\" + xs.join(\"\").slice(0, p), m = `ivec2(${a} % ${h}, ${a} / ${h})`, _ = this.generateTextureLoad(null, i, m, null, \"0\");\n      let S = \"vec4\";\n      n.pbo.type === Pe ? S = \"uvec4\" : n.pbo.type === Ve && (S = \"ivec4\"), this.addLineFlowCode(`${c} = ${S}(${_})${f}`, e), u.propertyName = c;\n    }\n    return c;\n  }\n  generateTextureLoad(e, t, s, n, r = \"0\") {\n    return n ? `texelFetch( ${t}, ivec3( ${s}, ${n} ), ${r} )` : `texelFetch( ${t}, ${s}, ${r} )`;\n  }\n  generateTexture(e, t, s, n) {\n    return e.isDepthTexture ? `texture( ${t}, ${s} ).x` : (n && (s = `vec3( ${s}, ${n} )`), `texture( ${t}, ${s} )`);\n  }\n  generateTextureLevel(e, t, s, n) {\n    return `textureLod( ${t}, ${s}, ${n} )`;\n  }\n  generateTextureBias(e, t, s, n) {\n    return `texture( ${t}, ${s}, ${n} )`;\n  }\n  generateTextureGrad(e, t, s, n) {\n    return `textureGrad( ${t}, ${s}, ${n[0]}, ${n[1]} )`;\n  }\n  generateTextureCompare(e, t, s, n, r, i = this.shaderStage) {\n    if (i === \"fragment\")\n      return `texture( ${t}, vec3( ${s}, ${n} ) )`;\n    console.error(`WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${i} shader.`);\n  }\n  getVars(e) {\n    const t = [], s = this.vars[e];\n    if (s !== void 0)\n      for (const n of s)\n        t.push(`${this.getVar(n.type, n.name)};`);\n    return t.join(`\n\t`);\n  }\n  getUniforms(e) {\n    const t = this.uniforms[e], s = [], n = {};\n    for (const i of t) {\n      let a = null, u = !1;\n      if (i.type === \"texture\") {\n        const l = i.node.value;\n        let d = \"\";\n        l.isDataTexture === !0 && (l.type === Pe ? d = \"u\" : l.type === Ve && (d = \"i\")), l.compareFunction ? a = `sampler2DShadow ${i.name};` : l.isDataArrayTexture === !0 || l.isCompressedArrayTexture === !0 ? a = `${d}sampler2DArray ${i.name};` : a = `${d}sampler2D ${i.name};`;\n      } else if (i.type === \"cubeTexture\")\n        a = `samplerCube ${i.name};`;\n      else if (i.type === \"texture3D\")\n        a = `sampler3D ${i.name};`;\n      else if (i.type === \"buffer\") {\n        const l = i.node, d = this.getType(l.bufferType), h = l.bufferCount, p = h > 0 ? h : \"\";\n        a = `${l.name} {\n\t${d} ${i.name}[${p}];\n};\n`;\n      } else\n        a = `${this.getVectorType(i.type)} ${this.getPropertyName(i, e)};`, u = !0;\n      const c = i.node.precision;\n      if (c !== null && (a = cA[c] + \" \" + a), u) {\n        a = \"\t\" + a;\n        const l = i.groupNode.name;\n        (n[l] || (n[l] = [])).push(a);\n      } else\n        a = \"uniform \" + a, s.push(a);\n    }\n    let r = \"\";\n    for (const i in n) {\n      const a = n[i];\n      r += this._getGLSLUniformStruct(e + \"_\" + i, a.join(`\n`)) + `\n`;\n    }\n    return r += s.join(`\n`), r;\n  }\n  getTypeFromAttribute(e) {\n    let t = super.getTypeFromAttribute(e);\n    if (/^[iu]/.test(t) && e.gpuType !== Ve) {\n      let s = e;\n      e.isInterleavedBufferAttribute && (s = e.data);\n      const n = s.array;\n      n instanceof Uint32Array || n instanceof Int32Array || (t = t.slice(1));\n    }\n    return t;\n  }\n  getAttributes(e) {\n    let t = \"\";\n    if (e === \"vertex\" || e === \"compute\") {\n      const s = this.getAttributesArray();\n      let n = 0;\n      for (const r of s)\n        t += `layout( location = ${n++} ) in ${r.type} ${r.name};\n`;\n    }\n    return t;\n  }\n  getStructMembers(e) {\n    const t = [], s = e.getMemberTypes();\n    for (let n = 0; n < s.length; n++) {\n      const r = s[n];\n      t.push(`layout( location = ${n} ) out ${r} m${n};`);\n    }\n    return t.join(`\n`);\n  }\n  getStructs(e) {\n    const t = [], s = this.structs[e];\n    if (s.length === 0)\n      return `layout( location = 0 ) out vec4 fragColor;\n`;\n    for (let n = 0, r = s.length; n < r; n++) {\n      const i = s[n];\n      let a = `\n`;\n      a += this.getStructMembers(i), a += `\n`, t.push(a);\n    }\n    return t.join(`\n\n`);\n  }\n  getVaryings(e) {\n    let t = \"\";\n    const s = this.varyings;\n    if (e === \"vertex\" || e === \"compute\")\n      for (const n of s) {\n        e === \"compute\" && (n.needsInterpolation = !0);\n        const r = this.getType(n.type), i = r.includes(\"int\") || r.includes(\"uv\") || r.includes(\"iv\") ? \"flat \" : \"\";\n        t += `${i}${n.needsInterpolation ? \"out\" : \"/*out*/\"} ${r} ${n.name};\n`;\n      }\n    else if (e === \"fragment\") {\n      for (const n of s)\n        if (n.needsInterpolation) {\n          const r = this.getType(n.type), i = r.includes(\"int\") || r.includes(\"uv\") || r.includes(\"iv\") ? \"flat \" : \"\";\n          t += `${i}in ${r} ${n.name};\n`;\n        }\n    }\n    for (const n of this.builtins[e])\n      t += `${n};\n`;\n    return t;\n  }\n  getVertexIndex() {\n    return \"uint( gl_VertexID )\";\n  }\n  getInstanceIndex() {\n    return \"uint( gl_InstanceID )\";\n  }\n  getInvocationLocalIndex() {\n    return `uint( gl_InstanceID ) % ${this.object.workgroupSize.reduce((s, n) => s * n, 1)}u`;\n  }\n  getDrawIndex() {\n    return this.renderer.backend.extensions.has(\"WEBGL_multi_draw\") ? \"uint( gl_DrawID )\" : null;\n  }\n  getFrontFacing() {\n    return \"gl_FrontFacing\";\n  }\n  getFragCoord() {\n    return \"gl_FragCoord.xy\";\n  }\n  getFragDepth() {\n    return \"gl_FragDepth\";\n  }\n  enableExtension(e, t, s = this.shaderStage) {\n    const n = this.extensions[s] || (this.extensions[s] = /* @__PURE__ */ new Map());\n    n.has(e) === !1 && n.set(e, {\n      name: e,\n      behavior: t\n    });\n  }\n  getExtensions(e) {\n    const t = [];\n    if (e === \"vertex\") {\n      const n = this.renderer.backend.extensions;\n      this.object.isBatchedMesh && n.has(\"WEBGL_multi_draw\") && this.enableExtension(\"GL_ANGLE_multi_draw\", \"require\", e);\n    }\n    const s = this.extensions[e];\n    if (s !== void 0)\n      for (const { name: n, behavior: r } of s.values())\n        t.push(`#extension ${n} : ${r}`);\n    return t.join(`\n`);\n  }\n  getClipDistance() {\n    return \"gl_ClipDistance\";\n  }\n  isAvailable(e) {\n    let t = Rc[e];\n    if (t === void 0) {\n      let s;\n      switch (t = !1, e) {\n        case \"float32Filterable\":\n          s = \"OES_texture_float_linear\";\n          break;\n        case \"clipDistance\":\n          s = \"WEBGL_clip_cull_distance\";\n          break;\n      }\n      if (s !== void 0) {\n        const n = this.renderer.backend.extensions;\n        n.has(s) && (n.get(s), t = !0);\n      }\n      Rc[e] = t;\n    }\n    return t;\n  }\n  isFlipY() {\n    return !0;\n  }\n  enableHardwareClipping(e) {\n    this.enableExtension(\"GL_ANGLE_clip_cull_distance\", \"require\"), this.builtins.vertex.push(`out float gl_ClipDistance[ ${e} ]`);\n  }\n  registerTransform(e, t) {\n    this.transforms.push({ varyingName: e, attributeNode: t });\n  }\n  getTransforms() {\n    const e = this.transforms;\n    let t = \"\";\n    for (let s = 0; s < e.length; s++) {\n      const n = e[s], r = this.getPropertyName(n.attributeNode);\n      t += `${n.varyingName} = ${r};\n\t`;\n    }\n    return t;\n  }\n  _getGLSLUniformStruct(e, t) {\n    return `\nlayout( std140 ) uniform ${e} {\n${t}\n};`;\n  }\n  _getGLSLVertexCode(e) {\n    return `#version 300 es\n\n${this.getSignature()}\n\n// extensions \n${e.extensions}\n\n// precision\n${Cc}\n\n// uniforms\n${e.uniforms}\n\n// varyings\n${e.varyings}\n\n// attributes\n${e.attributes}\n\n// codes\n${e.codes}\n\nvoid main() {\n\n\t// vars\n\t${e.vars}\n\n\t// transforms\n\t${e.transforms}\n\n\t// flow\n\t${e.flow}\n\n\tgl_PointSize = 1.0;\n\n}\n`;\n  }\n  _getGLSLFragmentCode(e) {\n    return `#version 300 es\n\n${this.getSignature()}\n\n// precision\n${Cc}\n\n// uniforms\n${e.uniforms}\n\n// varyings\n${e.varyings}\n\n// codes\n${e.codes}\n\n${e.structs}\n\nvoid main() {\n\n\t// vars\n\t${e.vars}\n\n\t// flow\n\t${e.flow}\n\n}\n`;\n  }\n  buildCode() {\n    const e = this.material !== null ? { fragment: {}, vertex: {} } : { compute: {} };\n    this.sortBindingGroups();\n    for (const t in e) {\n      let s = `// code\n\n`;\n      s += this.flowCode[t];\n      const n = this.flowNodes[t], r = n[n.length - 1];\n      for (const a of n) {\n        const u = this.getFlowData(\n          a\n          /*, shaderStage*/\n        ), c = a.name;\n        c && (s.length > 0 && (s += `\n`), s += `\t// flow -> ${c}\n\t`), s += `${u.code}\n\t`, a === r && t !== \"compute\" && (s += `// result\n\t`, t === \"vertex\" ? (s += \"gl_Position = \", s += `${u.result};`) : t === \"fragment\" && (a.outputNode.isOutputStructNode || (s += \"fragColor = \", s += `${u.result};`)));\n      }\n      const i = e[t];\n      i.extensions = this.getExtensions(t), i.uniforms = this.getUniforms(t), i.attributes = this.getAttributes(t), i.varyings = this.getVaryings(t), i.vars = this.getVars(t), i.structs = this.getStructs(t), i.codes = this.getCodes(t), i.transforms = this.getTransforms(t), i.flow = s;\n    }\n    this.material !== null ? (this.vertexShader = this._getGLSLVertexCode(e.vertex), this.fragmentShader = this._getGLSLFragmentCode(e.fragment)) : this.computeShader = this._getGLSLVertexCode(e.compute);\n  }\n  getUniformFromNode(e, t, s, n = null) {\n    const r = super.getUniformFromNode(e, t, s, n), i = this.getDataFromNode(e, s, this.globalCache);\n    let a = i.uniformGPU;\n    if (a === void 0) {\n      const u = e.groupNode, c = u.name, l = this.getBindGroupArray(c, s);\n      if (t === \"texture\")\n        a = new Ci(r.name, r.node, u), l.push(a);\n      else if (t === \"cubeTexture\")\n        a = new eg(r.name, r.node, u), l.push(a);\n      else if (t === \"texture3D\")\n        a = new tg(r.name, r.node, u), l.push(a);\n      else if (t === \"buffer\") {\n        e.name = `NodeBuffer_${e.id}`, r.name = `buffer${e.id}`;\n        const d = new Zf(e, u);\n        d.name = e.name, l.push(d), a = d;\n      } else {\n        const d = this.uniformGroups[s] || (this.uniformGroups[s] = {});\n        let h = d[c];\n        h === void 0 && (h = new Jf(s + \"_\" + c, u), d[c] = h, l.push(h)), a = this.getNodeUniform(r, t), h.addUniform(a);\n      }\n      i.uniformGPU = a;\n    }\n    return r;\n  }\n}\nlet no = null, Ms = null;\nclass sg {\n  /**\n   * Constructs a new backend.\n   *\n   * @param {Object} parameters - An object holding parameters for the backend.\n   */\n  constructor(e = {}) {\n    this.parameters = Object.assign({}, e), this.data = /* @__PURE__ */ new WeakMap(), this.renderer = null, this.domElement = null;\n  }\n  /**\n   * Initializes the backend so it is ready for usage. Concrete backends\n   * are supposed to implement their rendering context creation and related\n   * operations in this method.\n   *\n   * @async\n   * @param {Renderer} renderer - The renderer.\n   * @return {Promise} A Promise that resolves when the backend has been initialized.\n   */\n  async init(e) {\n    this.renderer = e;\n  }\n  /**\n   * The coordinate system of the backend.\n   *\n   * @abstract\n   * @type {Number}\n   * @readonly\n   */\n  get coordinateSystem() {\n  }\n  // render context\n  /**\n   * This method is executed at the beginning of a render call and\n   * can be used by the backend to prepare the state for upcoming\n   * draw calls.\n   *\n   * @abstract\n   * @param {RenderContext} renderContext - The render context.\n   */\n  beginRender() {\n  }\n  /**\n   * This method is executed at the end of a render call and\n   * can be used by the backend to finalize work after draw\n   * calls.\n   *\n   * @abstract\n   * @param {RenderContext} renderContext - The render context.\n   */\n  finishRender() {\n  }\n  /**\n   * This method is executed at the beginning of a compute call and\n   * can be used by the backend to prepare the state for upcoming\n   * compute tasks.\n   *\n   * @abstract\n   * @param {Node|Array<Node>} computeGroup - The compute node(s).\n   */\n  beginCompute() {\n  }\n  /**\n   * This method is executed at the end of a compute call and\n   * can be used by the backend to finalize work after compute\n   * tasks.\n   *\n   * @abstract\n   * @param {Node|Array<Node>} computeGroup - The compute node(s).\n   */\n  finishCompute() {\n  }\n  // render object\n  /**\n   * Executes a draw command for the given render object.\n   *\n   * @abstract\n   * @param {RenderObject} renderObject - The render object to draw.\n   * @param {Info} info - Holds a series of statistical information about the GPU memory and the rendering process.\n   */\n  draw() {\n  }\n  // compute node\n  /**\n   * Executes a compute command for the given compute node.\n   *\n   * @abstract\n   * @param {Node|Array<Node>} computeGroup - The group of compute nodes of a compute call. Can be a single compute node.\n   * @param {Node} computeNode - The compute node.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   * @param {ComputePipeline} computePipeline - The compute pipeline.\n   */\n  compute() {\n  }\n  // program\n  /**\n   * Creates a shader program from the given programmable stage.\n   *\n   * @abstract\n   * @param {ProgrammableStage} program - The programmable stage.\n   */\n  createProgram() {\n  }\n  /**\n   * Destroys the shader program of the given programmable stage.\n   *\n   * @abstract\n   * @param {ProgrammableStage} program - The programmable stage.\n   */\n  destroyProgram() {\n  }\n  // bindings\n  /**\n   * Creates bindings from the given bind group definition.\n   *\n   * @abstract\n   * @param {BindGroup} bindGroup - The bind group.\n   * @param {Array<BindGroup>} bindings - Array of bind groups.\n   * @param {Number} cacheIndex - The cache index.\n   * @param {Number} version - The version.\n   */\n  createBindings() {\n  }\n  /**\n   * Updates the given bind group definition.\n   *\n   * @abstract\n   * @param {BindGroup} bindGroup - The bind group.\n   * @param {Array<BindGroup>} bindings - Array of bind groups.\n   * @param {Number} cacheIndex - The cache index.\n   * @param {Number} version - The version.\n   */\n  updateBindings() {\n  }\n  /**\n   * Updates a buffer binding.\n   *\n   * @abstract\n   * @param {Buffer} binding - The buffer binding to update.\n   */\n  updateBinding() {\n  }\n  // pipeline\n  /**\n   * Creates a render pipeline for the given render object.\n   *\n   * @abstract\n   * @param {RenderObject} renderObject - The render object.\n   * @param {Array<Promise>} promises - An array of compilation promises which are used in `compileAsync()`.\n   */\n  createRenderPipeline() {\n  }\n  /**\n   * Creates a compute pipeline for the given compute node.\n   *\n   * @abstract\n   * @param {ComputePipeline} computePipeline - The compute pipeline.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   */\n  createComputePipeline() {\n  }\n  // cache key\n  /**\n   * Returns `true` if the render pipeline requires an update.\n   *\n   * @abstract\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether the render pipeline requires an update or not.\n   */\n  needsRenderUpdate() {\n  }\n  /**\n   * Returns a cache key that is used to identify render pipelines.\n   *\n   * @abstract\n   * @param {RenderObject} renderObject - The render object.\n   * @return {String} The cache key.\n   */\n  getRenderCacheKey() {\n  }\n  // node builder\n  /**\n   * Returns a node builder for the given render object.\n   *\n   * @abstract\n   * @param {RenderObject} renderObject - The render object.\n   * @param {Renderer} renderer - The renderer.\n   * @return {NodeBuilder} The node builder.\n   */\n  createNodeBuilder() {\n  }\n  // textures\n  /**\n   * Creates a sampler for the given texture.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture to create the sampler for.\n   */\n  createSampler() {\n  }\n  /**\n   * Destroys the sampler for the given texture.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture to destroy the sampler for.\n   */\n  destroySampler() {\n  }\n  /**\n   * Creates a default texture for the given texture that can be used\n   * as a placeholder until the actual texture is ready for usage.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture to create a default texture for.\n   */\n  createDefaultTexture() {\n  }\n  /**\n   * Defines a texture on the GPU for the given texture object.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture.\n   * @param {Object} [options={}] - Optional configuration parameter.\n   */\n  createTexture() {\n  }\n  /**\n   * Uploads the updated texture data to the GPU.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture.\n   * @param {Object} [options={}] - Optional configuration parameter.\n   */\n  updateTexture() {\n  }\n  /**\n   * Generates mipmaps for the given texture\n   *\n   * @abstract\n   * @param {Texture} texture - The texture.\n   */\n  generateMipmaps() {\n  }\n  /**\n   * Destroys the GPU data for the given texture object.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture.\n   */\n  destroyTexture() {\n  }\n  /**\n   * Returns texture data as a typed array.\n   *\n   * @abstract\n   * @param {Texture} texture - The texture to copy.\n   * @param {Number} x - The x coordinate of the copy origin.\n   * @param {Number} y - The y coordinate of the copy origin.\n   * @param {Number} width - The width of the copy.\n   * @param {Number} height - The height of the copy.\n   * @param {Number} faceIndex - The face index.\n   * @return {TypedArray} The texture data as a typed array.\n   */\n  copyTextureToBuffer() {\n  }\n  /**\n   * Copies data of the given source texture to the given destination texture.\n   *\n   * @abstract\n   * @param {Texture} srcTexture - The source texture.\n   * @param {Texture} dstTexture - The destination texture.\n   * @param {Vector4?} [srcRegion=null] - The region of the source texture to copy.\n   * @param {(Vector2|Vector3)?} [dstPosition=null] - The destination position of the copy.\n   * @param {Number} [level=0] - The mip level to copy.\n   */\n  copyTextureToTexture() {\n  }\n  /**\n  * Copies the current bound framebuffer to the given texture.\n  *\n  * @abstract\n  * @param {Texture} texture - The destination texture.\n  * @param {RenderContext} renderContext - The render context.\n  * @param {Vector4} rectangle - A four dimensional vector defining the origin and dimension of the copy.\n  */\n  copyFramebufferToTexture() {\n  }\n  // attributes\n  /**\n   * Creates the buffer of a shader attribute.\n   *\n   * @abstract\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  createAttribute() {\n  }\n  /**\n   * Creates the buffer of an indexed shader attribute.\n   *\n   * @abstract\n   * @param {BufferAttribute} attribute - The indexed buffer attribute.\n   */\n  createIndexAttribute() {\n  }\n  /**\n   * Creates the buffer of a storage attribute.\n   *\n   * @abstract\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  createStorageAttribute() {\n  }\n  /**\n   * Updates the buffer of a shader attribute.\n   *\n   * @abstract\n   * @param {BufferAttribute} attribute - The buffer attribute to update.\n   */\n  updateAttribute() {\n  }\n  /**\n   * Destroys the buffer of a shader attribute.\n   *\n   * @abstract\n   * @param {BufferAttribute} attribute - The buffer attribute to destroy.\n   */\n  destroyAttribute() {\n  }\n  // canvas\n  /**\n   * Returns the backend's rendering context.\n   *\n   * @abstract\n   * @return {Object} The rendering context.\n   */\n  getContext() {\n  }\n  /**\n   * Backends can use this method if they have to run\n   * logic when the renderer gets resized.\n   *\n   * @abstract\n   */\n  updateSize() {\n  }\n  /**\n   * Updates the viewport with the values from the given render context.\n   *\n   * @abstract\n   * @param {RenderContext} renderContext - The render context.\n   */\n  updateViewport() {\n  }\n  // utils\n  /**\n   * Returns `true` if the given 3D object is fully occluded by other\n   * 3D objects in the scene. Backends must implement this method by using\n   * a Occlusion Query API.\n   *\n   * @abstract\n   * @param {RenderContext} renderContext - The render context.\n   * @param {Object3D} object - The 3D object to test.\n   * @return {Boolean} Whether the 3D object is fully occluded or not.\n   */\n  isOccluded() {\n  }\n  /**\n   * Resolves the time stamp for the given render context and type.\n   *\n   * @async\n   * @abstract\n   * @param {RenderContext} renderContext - The render context.\n   * @param {String} type - The render context.\n   * @return {Promise} A Promise that resolves when the time stamp has been computed.\n   */\n  async resolveTimestampAsync() {\n  }\n  /**\n   * Can be used to synchronize CPU operations with GPU tasks. So when this method is called,\n   * the CPU waits for the GPU to complete its operation (e.g. a compute task).\n   *\n   * @async\n   * @abstract\n   * @return {Promise} A Promise that resolves when synchronization has been finished.\n   */\n  async waitForGPU() {\n  }\n  /**\n   * Checks if the given feature is supported by the backend.\n   *\n   * @async\n   * @abstract\n   * @param {String} name - The feature's name.\n   * @return {Promise<Boolean>} A Promise that resolves with a bool that indicates whether the feature is supported or not.\n   */\n  async hasFeatureAsync() {\n  }\n  /**\n   * Checks if the given feature is supported  by the backend.\n   *\n   * @abstract\n   * @param {String} name - The feature's name.\n   * @return {Boolean} Whether the feature is supported or not.\n   */\n  hasFeature() {\n  }\n  /**\n   * Returns the maximum anisotropy texture filtering value.\n   *\n   * @abstract\n   * @return {Number} The maximum anisotropy texture filtering value.\n   */\n  getMaxAnisotropy() {\n  }\n  /**\n   * Returns the drawing buffer size.\n   *\n   * @return {Vector2} The drawing buffer size.\n   */\n  getDrawingBufferSize() {\n    return no = no || new He(), this.renderer.getDrawingBufferSize(no);\n  }\n  /**\n   * Defines the scissor test.\n   *\n   * @abstract\n   * @param {Boolean} boolean - Whether the scissor test should be enabled or not.\n   */\n  setScissorTest() {\n  }\n  /**\n   * Returns the clear color and alpha into a single\n   * color object.\n   *\n   * @return {Color4} The clear color.\n   */\n  getClearColor() {\n    const e = this.renderer;\n    return Ms = Ms || new su(), e.getClearColor(Ms), Ms.getRGB(Ms, this.renderer.currentColorSpace), Ms;\n  }\n  /**\n   * Returns the DOM element. If no DOM element exists, the backend\n   * creates a new one.\n   *\n   * @return {HTMLCanvasElement} The DOM element.\n   */\n  getDomElement() {\n    let e = this.domElement;\n    return e === null && (e = this.parameters.canvas !== void 0 ? this.parameters.canvas : Rg(), \"setAttribute\" in e && e.setAttribute(\"data-engine\", `three.js r${Hc} webgpu`), this.domElement = e), e;\n  }\n  /**\n   * Sets a dictionary for the given object into the\n   * internal data structure.\n   *\n   * @param {Object} object - The object.\n   * @param {Object} value - The dictionary to set.\n   */\n  set(e, t) {\n    this.data.set(e, t);\n  }\n  /**\n   * Returns the dictionary for the given object.\n   *\n   * @param {Object} object - The object.\n   * @return {Object} The object's dictionary.\n   */\n  get(e) {\n    let t = this.data.get(e);\n    return t === void 0 && (t = {}, this.data.set(e, t)), t;\n  }\n  /**\n   * Checks if the given object has a dictionary\n   * with data defined.\n   *\n   * @param {Object} object - The object.\n   * @return {Boolean} Whether a dictionary for the given object as been defined or not.\n   */\n  has(e) {\n    return this.data.has(e);\n  }\n  /**\n   * Deletes an object from the internal data structure.\n   *\n   * @param {Object} object - The object to delete.\n   */\n  delete(e) {\n    this.data.delete(e);\n  }\n  /**\n   * Frees internal resources.\n   *\n   * @abstract\n   */\n  dispose() {\n  }\n}\nlet dA = 0;\nclass hA {\n  constructor(e, t) {\n    this.buffers = [e.bufferGPU, t], this.type = e.type, this.bufferType = e.bufferType, this.pbo = e.pbo, this.byteLength = e.byteLength, this.bytesPerElement = e.BYTES_PER_ELEMENT, this.version = e.version, this.isInteger = e.isInteger, this.activeBufferIndex = 0, this.baseId = e.id;\n  }\n  get id() {\n    return `${this.baseId}|${this.activeBufferIndex}`;\n  }\n  get bufferGPU() {\n    return this.buffers[this.activeBufferIndex];\n  }\n  get transformBuffer() {\n    return this.buffers[this.activeBufferIndex ^ 1];\n  }\n  switchBuffers() {\n    this.activeBufferIndex ^= 1;\n  }\n}\nclass pA {\n  constructor(e) {\n    this.backend = e;\n  }\n  createAttribute(e, t) {\n    const s = this.backend, { gl: n } = s, r = e.array, i = e.usage || n.STATIC_DRAW, a = e.isInterleavedBufferAttribute ? e.data : e, u = s.get(a);\n    let c = u.bufferGPU;\n    c === void 0 && (c = this._createBuffer(n, t, r, i), u.bufferGPU = c, u.bufferType = t, u.version = a.version);\n    let l;\n    if (r instanceof Float32Array)\n      l = n.FLOAT;\n    else if (r instanceof Uint16Array)\n      e.isFloat16BufferAttribute ? l = n.HALF_FLOAT : l = n.UNSIGNED_SHORT;\n    else if (r instanceof Int16Array)\n      l = n.SHORT;\n    else if (r instanceof Uint32Array)\n      l = n.UNSIGNED_INT;\n    else if (r instanceof Int32Array)\n      l = n.INT;\n    else if (r instanceof Int8Array)\n      l = n.BYTE;\n    else if (r instanceof Uint8Array)\n      l = n.UNSIGNED_BYTE;\n    else if (r instanceof Uint8ClampedArray)\n      l = n.UNSIGNED_BYTE;\n    else\n      throw new Error(\"THREE.WebGLBackend: Unsupported buffer data format: \" + r);\n    let d = {\n      bufferGPU: c,\n      bufferType: t,\n      type: l,\n      byteLength: r.byteLength,\n      bytesPerElement: r.BYTES_PER_ELEMENT,\n      version: e.version,\n      pbo: e.pbo,\n      isInteger: l === n.INT || l === n.UNSIGNED_INT || e.gpuType === Ve,\n      id: dA++\n    };\n    if (e.isStorageBufferAttribute || e.isStorageInstancedBufferAttribute) {\n      const h = this._createBuffer(n, t, r, i);\n      d = new hA(d, h);\n    }\n    s.set(e, d);\n  }\n  updateAttribute(e) {\n    const t = this.backend, { gl: s } = t, n = e.array, r = e.isInterleavedBufferAttribute ? e.data : e, i = t.get(r), a = i.bufferType, u = e.isInterleavedBufferAttribute ? e.data.updateRanges : e.updateRanges;\n    if (s.bindBuffer(a, i.bufferGPU), u.length === 0)\n      s.bufferSubData(a, 0, n);\n    else {\n      for (let c = 0, l = u.length; c < l; c++) {\n        const d = u[c];\n        s.bufferSubData(\n          a,\n          d.start * n.BYTES_PER_ELEMENT,\n          n,\n          d.start,\n          d.count\n        );\n      }\n      r.clearUpdateRanges();\n    }\n    s.bindBuffer(a, null), i.version = r.version;\n  }\n  destroyAttribute(e) {\n    const t = this.backend, { gl: s } = t;\n    e.isInterleavedBufferAttribute && t.delete(e.data);\n    const n = t.get(e);\n    s.deleteBuffer(n.bufferGPU), t.delete(e);\n  }\n  async getArrayBufferAsync(e) {\n    const t = this.backend, { gl: s } = t, n = e.isInterleavedBufferAttribute ? e.data : e, { bufferGPU: r } = t.get(n), i = e.array, a = i.byteLength;\n    s.bindBuffer(s.COPY_READ_BUFFER, r);\n    const u = s.createBuffer();\n    s.bindBuffer(s.COPY_WRITE_BUFFER, u), s.bufferData(s.COPY_WRITE_BUFFER, a, s.STREAM_READ), s.copyBufferSubData(s.COPY_READ_BUFFER, s.COPY_WRITE_BUFFER, 0, 0, a), await t.utils._clientWaitAsync();\n    const c = new e.array.constructor(i.length);\n    return s.bindBuffer(s.COPY_WRITE_BUFFER, u), s.getBufferSubData(s.COPY_WRITE_BUFFER, 0, c), s.deleteBuffer(u), s.bindBuffer(s.COPY_READ_BUFFER, null), s.bindBuffer(s.COPY_WRITE_BUFFER, null), c.buffer;\n  }\n  _createBuffer(e, t, s, n) {\n    const r = e.createBuffer();\n    return e.bindBuffer(t, r), e.bufferData(t, s, n), e.bindBuffer(t, null), r;\n  }\n}\nlet Ec = !1, ro, yn;\nclass fA {\n  constructor(e) {\n    this.backend = e, this.gl = this.backend.gl, this.enabled = {}, this.currentFlipSided = null, this.currentCullFace = null, this.currentProgram = null, this.currentBlendingEnabled = !1, this.currentBlending = null, this.currentBlendSrc = null, this.currentBlendDst = null, this.currentBlendSrcAlpha = null, this.currentBlendDstAlpha = null, this.currentPremultipledAlpha = null, this.currentPolygonOffsetFactor = null, this.currentPolygonOffsetUnits = null, this.currentColorMask = null, this.currentDepthFunc = null, this.currentDepthMask = null, this.currentStencilFunc = null, this.currentStencilRef = null, this.currentStencilFuncMask = null, this.currentStencilFail = null, this.currentStencilZFail = null, this.currentStencilZPass = null, this.currentStencilMask = null, this.currentLineWidth = null, this.currentClippingPlanes = 0, this.currentBoundFramebuffers = {}, this.currentDrawbuffers = /* @__PURE__ */ new WeakMap(), this.maxTextures = this.gl.getParameter(this.gl.MAX_TEXTURE_IMAGE_UNITS), this.currentTextureSlot = null, this.currentBoundTextures = {}, this.currentBoundBufferBases = {}, Ec === !1 && (this._init(this.gl), Ec = !0);\n  }\n  _init(e) {\n    ro = {\n      [Us]: e.FUNC_ADD,\n      [qc]: e.FUNC_SUBTRACT,\n      [Xc]: e.FUNC_REVERSE_SUBTRACT\n    }, yn = {\n      [Kc]: e.ZERO,\n      [Yc]: e.ONE,\n      [jc]: e.SRC_COLOR,\n      [Qc]: e.SRC_ALPHA,\n      [Zc]: e.SRC_ALPHA_SATURATE,\n      [Jc]: e.DST_COLOR,\n      [el]: e.DST_ALPHA,\n      [tl]: e.ONE_MINUS_SRC_COLOR,\n      [sl]: e.ONE_MINUS_SRC_ALPHA,\n      [nl]: e.ONE_MINUS_DST_COLOR,\n      [rl]: e.ONE_MINUS_DST_ALPHA\n    };\n  }\n  enable(e) {\n    const { enabled: t } = this;\n    t[e] !== !0 && (this.gl.enable(e), t[e] = !0);\n  }\n  disable(e) {\n    const { enabled: t } = this;\n    t[e] !== !1 && (this.gl.disable(e), t[e] = !1);\n  }\n  setFlipSided(e) {\n    if (this.currentFlipSided !== e) {\n      const { gl: t } = this;\n      e ? t.frontFace(t.CW) : t.frontFace(t.CCW), this.currentFlipSided = e;\n    }\n  }\n  setCullFace(e) {\n    const { gl: t } = this;\n    e !== Cg ? (this.enable(t.CULL_FACE), e !== this.currentCullFace && (e === Eg ? t.cullFace(t.BACK) : e === wg ? t.cullFace(t.FRONT) : t.cullFace(t.FRONT_AND_BACK))) : this.disable(t.CULL_FACE), this.currentCullFace = e;\n  }\n  setLineWidth(e) {\n    const { currentLineWidth: t, gl: s } = this;\n    e !== t && (s.lineWidth(e), this.currentLineWidth = e);\n  }\n  setBlending(e, t, s, n, r, i, a, u) {\n    const { gl: c } = this;\n    if (e === Mn) {\n      this.currentBlendingEnabled === !0 && (this.disable(c.BLEND), this.currentBlendingEnabled = !1);\n      return;\n    }\n    if (this.currentBlendingEnabled === !1 && (this.enable(c.BLEND), this.currentBlendingEnabled = !0), e !== il) {\n      if (e !== this.currentBlending || u !== this.currentPremultipledAlpha) {\n        if ((this.currentBlendEquation !== Us || this.currentBlendEquationAlpha !== Us) && (c.blendEquation(c.FUNC_ADD), this.currentBlendEquation = Us, this.currentBlendEquationAlpha = Us), u)\n          switch (e) {\n            case zs:\n              c.blendFuncSeparate(c.ONE, c.ONE_MINUS_SRC_ALPHA, c.ONE, c.ONE_MINUS_SRC_ALPHA);\n              break;\n            case Lr:\n              c.blendFunc(c.ONE, c.ONE);\n              break;\n            case Ir:\n              c.blendFuncSeparate(c.ZERO, c.ONE_MINUS_SRC_COLOR, c.ZERO, c.ONE);\n              break;\n            case Dr:\n              c.blendFuncSeparate(c.ZERO, c.SRC_COLOR, c.ZERO, c.SRC_ALPHA);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", e);\n              break;\n          }\n        else\n          switch (e) {\n            case zs:\n              c.blendFuncSeparate(c.SRC_ALPHA, c.ONE_MINUS_SRC_ALPHA, c.ONE, c.ONE_MINUS_SRC_ALPHA);\n              break;\n            case Lr:\n              c.blendFunc(c.SRC_ALPHA, c.ONE);\n              break;\n            case Ir:\n              c.blendFuncSeparate(c.ZERO, c.ONE_MINUS_SRC_COLOR, c.ZERO, c.ONE);\n              break;\n            case Dr:\n              c.blendFunc(c.ZERO, c.SRC_COLOR);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", e);\n              break;\n          }\n        this.currentBlendSrc = null, this.currentBlendDst = null, this.currentBlendSrcAlpha = null, this.currentBlendDstAlpha = null, this.currentBlending = e, this.currentPremultipledAlpha = u;\n      }\n      return;\n    }\n    r = r || t, i = i || s, a = a || n, (t !== this.currentBlendEquation || r !== this.currentBlendEquationAlpha) && (c.blendEquationSeparate(ro[t], ro[r]), this.currentBlendEquation = t, this.currentBlendEquationAlpha = r), (s !== this.currentBlendSrc || n !== this.currentBlendDst || i !== this.currentBlendSrcAlpha || a !== this.currentBlendDstAlpha) && (c.blendFuncSeparate(yn[s], yn[n], yn[i], yn[a]), this.currentBlendSrc = s, this.currentBlendDst = n, this.currentBlendSrcAlpha = i, this.currentBlendDstAlpha = a), this.currentBlending = e, this.currentPremultipledAlpha = !1;\n  }\n  setColorMask(e) {\n    this.currentColorMask !== e && (this.gl.colorMask(e, e, e, e), this.currentColorMask = e);\n  }\n  setDepthTest(e) {\n    const { gl: t } = this;\n    e ? this.enable(t.DEPTH_TEST) : this.disable(t.DEPTH_TEST);\n  }\n  setDepthMask(e) {\n    this.currentDepthMask !== e && (this.gl.depthMask(e), this.currentDepthMask = e);\n  }\n  setDepthFunc(e) {\n    if (this.currentDepthFunc !== e) {\n      const { gl: t } = this;\n      switch (e) {\n        case pl:\n          t.depthFunc(t.NEVER);\n          break;\n        case hl:\n          t.depthFunc(t.ALWAYS);\n          break;\n        case dl:\n          t.depthFunc(t.LESS);\n          break;\n        case ll:\n          t.depthFunc(t.LEQUAL);\n          break;\n        case cl:\n          t.depthFunc(t.EQUAL);\n          break;\n        case ul:\n          t.depthFunc(t.GEQUAL);\n          break;\n        case al:\n          t.depthFunc(t.GREATER);\n          break;\n        case ol:\n          t.depthFunc(t.NOTEQUAL);\n          break;\n        default:\n          t.depthFunc(t.LEQUAL);\n      }\n      this.currentDepthFunc = e;\n    }\n  }\n  setStencilTest(e) {\n    const { gl: t } = this;\n    e ? this.enable(t.STENCIL_TEST) : this.disable(t.STENCIL_TEST);\n  }\n  setStencilMask(e) {\n    this.currentStencilMask !== e && (this.gl.stencilMask(e), this.currentStencilMask = e);\n  }\n  setStencilFunc(e, t, s) {\n    (this.currentStencilFunc !== e || this.currentStencilRef !== t || this.currentStencilFuncMask !== s) && (this.gl.stencilFunc(e, t, s), this.currentStencilFunc = e, this.currentStencilRef = t, this.currentStencilFuncMask = s);\n  }\n  setStencilOp(e, t, s) {\n    (this.currentStencilFail !== e || this.currentStencilZFail !== t || this.currentStencilZPass !== s) && (this.gl.stencilOp(e, t, s), this.currentStencilFail = e, this.currentStencilZFail = t, this.currentStencilZPass = s);\n  }\n  setMaterial(e, t, s) {\n    const { gl: n } = this;\n    e.side === Ws ? this.disable(n.CULL_FACE) : this.enable(n.CULL_FACE);\n    let r = e.side === Tt;\n    t && (r = !r), this.setFlipSided(r), e.blending === zs && e.transparent === !1 ? this.setBlending(Mn) : this.setBlending(e.blending, e.blendEquation, e.blendSrc, e.blendDst, e.blendEquationAlpha, e.blendSrcAlpha, e.blendDstAlpha, e.premultipliedAlpha), this.setDepthFunc(e.depthFunc), this.setDepthTest(e.depthTest), this.setDepthMask(e.depthWrite), this.setColorMask(e.colorWrite);\n    const i = e.stencilWrite;\n    if (this.setStencilTest(i), i && (this.setStencilMask(e.stencilWriteMask), this.setStencilFunc(e.stencilFunc, e.stencilRef, e.stencilFuncMask), this.setStencilOp(e.stencilFail, e.stencilZFail, e.stencilZPass)), this.setPolygonOffset(e.polygonOffset, e.polygonOffsetFactor, e.polygonOffsetUnits), e.alphaToCoverage === !0 && this.backend.renderer.samples > 1 ? this.enable(n.SAMPLE_ALPHA_TO_COVERAGE) : this.disable(n.SAMPLE_ALPHA_TO_COVERAGE), s > 0 && this.currentClippingPlanes !== s)\n      for (let u = 0; u < 8; u++)\n        u < s ? this.enable(12288 + u) : this.disable(12288 + u);\n  }\n  setPolygonOffset(e, t, s) {\n    const { gl: n } = this;\n    e ? (this.enable(n.POLYGON_OFFSET_FILL), (this.currentPolygonOffsetFactor !== t || this.currentPolygonOffsetUnits !== s) && (n.polygonOffset(t, s), this.currentPolygonOffsetFactor = t, this.currentPolygonOffsetUnits = s)) : this.disable(n.POLYGON_OFFSET_FILL);\n  }\n  useProgram(e) {\n    return this.currentProgram !== e ? (this.gl.useProgram(e), this.currentProgram = e, !0) : !1;\n  }\n  // framebuffer\n  bindFramebuffer(e, t) {\n    const { gl: s, currentBoundFramebuffers: n } = this;\n    return n[e] !== t ? (s.bindFramebuffer(e, t), n[e] = t, e === s.DRAW_FRAMEBUFFER && (n[s.FRAMEBUFFER] = t), e === s.FRAMEBUFFER && (n[s.DRAW_FRAMEBUFFER] = t), !0) : !1;\n  }\n  drawBuffers(e, t) {\n    const { gl: s } = this;\n    let n = [], r = !1;\n    if (e.textures !== null) {\n      n = this.currentDrawbuffers.get(t), n === void 0 && (n = [], this.currentDrawbuffers.set(t, n));\n      const i = e.textures;\n      if (n.length !== i.length || n[0] !== s.COLOR_ATTACHMENT0) {\n        for (let a = 0, u = i.length; a < u; a++)\n          n[a] = s.COLOR_ATTACHMENT0 + a;\n        n.length = i.length, r = !0;\n      }\n    } else\n      n[0] !== s.BACK && (n[0] = s.BACK, r = !0);\n    r && s.drawBuffers(n);\n  }\n  // texture\n  activeTexture(e) {\n    const { gl: t, currentTextureSlot: s, maxTextures: n } = this;\n    e === void 0 && (e = t.TEXTURE0 + n - 1), s !== e && (t.activeTexture(e), this.currentTextureSlot = e);\n  }\n  bindTexture(e, t, s) {\n    const { gl: n, currentTextureSlot: r, currentBoundTextures: i, maxTextures: a } = this;\n    s === void 0 && (r === null ? s = n.TEXTURE0 + a - 1 : s = r);\n    let u = i[s];\n    u === void 0 && (u = { type: void 0, texture: void 0 }, i[s] = u), (u.type !== e || u.texture !== t) && (r !== s && (n.activeTexture(s), this.currentTextureSlot = s), n.bindTexture(e, t), u.type = e, u.texture = t);\n  }\n  bindBufferBase(e, t, s) {\n    const { gl: n } = this, r = `${e}-${t}`;\n    return this.currentBoundBufferBases[r] !== s ? (n.bindBufferBase(e, t, s), this.currentBoundBufferBases[r] = s, !0) : !1;\n  }\n  unbindTexture() {\n    const { gl: e, currentTextureSlot: t, currentBoundTextures: s } = this, n = s[t];\n    n !== void 0 && n.type !== void 0 && (e.bindTexture(n.type, null), n.type = void 0, n.texture = void 0);\n  }\n}\nclass gA {\n  constructor(e) {\n    this.backend = e, this.gl = this.backend.gl, this.extensions = e.extensions;\n  }\n  convert(e, t = wn) {\n    const { gl: s, extensions: n } = this;\n    let r;\n    if (e === ls) return s.UNSIGNED_BYTE;\n    if (e === Mg) return s.UNSIGNED_SHORT_4_4_4_4;\n    if (e === Bg) return s.UNSIGNED_SHORT_5_5_5_1;\n    if (e === fl) return s.UNSIGNED_INT_5_9_9_9_REV;\n    if (e === Tn) return s.BYTE;\n    if (e === _n) return s.SHORT;\n    if (e === Ls) return s.UNSIGNED_SHORT;\n    if (e === Ve) return s.INT;\n    if (e === Pe) return s.UNSIGNED_INT;\n    if (e === st) return s.FLOAT;\n    if (e === at)\n      return s.HALF_FLOAT;\n    if (e === Fg) return s.ALPHA;\n    if (e === Jo) return s.RGB;\n    if (e === Xs) return s.RGBA;\n    if (e === Ug) return s.LUMINANCE;\n    if (e === Pg) return s.LUMINANCE_ALPHA;\n    if (e === Jr) return s.DEPTH_COMPONENT;\n    if (e === Zr) return s.DEPTH_STENCIL;\n    if (e === ea) return s.RED;\n    if (e === ta) return s.RED_INTEGER;\n    if (e === Bn) return s.RG;\n    if (e === sa) return s.RG_INTEGER;\n    if (e === na) return s.RGBA_INTEGER;\n    if (e === Ei || e === vr || e === Ar || e === Rr)\n      if (t === q)\n        if (r = n.get(\"WEBGL_compressed_texture_s3tc_srgb\"), r !== null) {\n          if (e === Ei) return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n          if (e === vr) return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n          if (e === Ar) return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n          if (e === Rr) return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n        } else\n          return null;\n      else if (r = n.get(\"WEBGL_compressed_texture_s3tc\"), r !== null) {\n        if (e === Ei) return r.COMPRESSED_RGB_S3TC_DXT1_EXT;\n        if (e === vr) return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n        if (e === Ar) return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n        if (e === Rr) return r.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n      } else\n        return null;\n    if (e === Su || e === vu || e === Au || e === Ru)\n      if (r = n.get(\"WEBGL_compressed_texture_pvrtc\"), r !== null) {\n        if (e === Su) return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n        if (e === vu) return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n        if (e === Au) return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n        if (e === Ru) return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n      } else\n        return null;\n    if (e === Cu || e === fo || e === go)\n      if (r = n.get(\"WEBGL_compressed_texture_etc\"), r !== null) {\n        if (e === Cu || e === fo) return t === q ? r.COMPRESSED_SRGB8_ETC2 : r.COMPRESSED_RGB8_ETC2;\n        if (e === go) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : r.COMPRESSED_RGBA8_ETC2_EAC;\n      } else\n        return null;\n    if (e === mo || e === yo || e === xo || e === To || e === _o || e === No || e === bo || e === So || e === vo || e === Ao || e === Ro || e === Co || e === Eo || e === wo)\n      if (r = n.get(\"WEBGL_compressed_texture_astc\"), r !== null) {\n        if (e === mo) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : r.COMPRESSED_RGBA_ASTC_4x4_KHR;\n        if (e === yo) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : r.COMPRESSED_RGBA_ASTC_5x4_KHR;\n        if (e === xo) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : r.COMPRESSED_RGBA_ASTC_5x5_KHR;\n        if (e === To) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : r.COMPRESSED_RGBA_ASTC_6x5_KHR;\n        if (e === _o) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : r.COMPRESSED_RGBA_ASTC_6x6_KHR;\n        if (e === No) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : r.COMPRESSED_RGBA_ASTC_8x5_KHR;\n        if (e === bo) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : r.COMPRESSED_RGBA_ASTC_8x6_KHR;\n        if (e === So) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : r.COMPRESSED_RGBA_ASTC_8x8_KHR;\n        if (e === vo) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : r.COMPRESSED_RGBA_ASTC_10x5_KHR;\n        if (e === Ao) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : r.COMPRESSED_RGBA_ASTC_10x6_KHR;\n        if (e === Ro) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : r.COMPRESSED_RGBA_ASTC_10x8_KHR;\n        if (e === Co) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : r.COMPRESSED_RGBA_ASTC_10x10_KHR;\n        if (e === Eo) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : r.COMPRESSED_RGBA_ASTC_12x10_KHR;\n        if (e === wo) return t === q ? r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : r.COMPRESSED_RGBA_ASTC_12x12_KHR;\n      } else\n        return null;\n    if (e === wi)\n      if (r = n.get(\"EXT_texture_compression_bptc\"), r !== null) {\n        if (e === wi) return t === q ? r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : r.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n      } else\n        return null;\n    if (e === Dg || e === Eu || e === wu || e === Mu)\n      if (r = n.get(\"EXT_texture_compression_rgtc\"), r !== null) {\n        if (e === wi) return r.COMPRESSED_RED_RGTC1_EXT;\n        if (e === Eu) return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n        if (e === wu) return r.COMPRESSED_RED_GREEN_RGTC2_EXT;\n        if (e === Mu) return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n      } else\n        return null;\n    return e === ei ? s.UNSIGNED_INT_24_8 : s[e] !== void 0 ? s[e] : null;\n  }\n  _clientWaitAsync() {\n    const { gl: e } = this, t = e.fenceSync(e.SYNC_GPU_COMMANDS_COMPLETE, 0);\n    return e.flush(), new Promise((s, n) => {\n      function r() {\n        const i = e.clientWaitSync(t, e.SYNC_FLUSH_COMMANDS_BIT, 0);\n        if (i === e.WAIT_FAILED) {\n          e.deleteSync(t), n();\n          return;\n        }\n        if (i === e.TIMEOUT_EXPIRED) {\n          requestAnimationFrame(r);\n          return;\n        }\n        e.deleteSync(t), s();\n      }\n      r();\n    });\n  }\n}\nlet wc = !1, Nr, io, Mc;\nclass mA {\n  constructor(e) {\n    this.backend = e, this.gl = e.gl, this.extensions = e.extensions, this.defaultTextures = {}, wc === !1 && (this._init(this.gl), wc = !0);\n  }\n  _init(e) {\n    Nr = {\n      [ti]: e.REPEAT,\n      [ra]: e.CLAMP_TO_EDGE,\n      [si]: e.MIRRORED_REPEAT\n    }, io = {\n      [pt]: e.NEAREST,\n      [Mo]: e.NEAREST_MIPMAP_NEAREST,\n      [Hs]: e.NEAREST_MIPMAP_LINEAR,\n      [Lt]: e.LINEAR,\n      [Bo]: e.LINEAR_MIPMAP_NEAREST,\n      [ds]: e.LINEAR_MIPMAP_LINEAR\n    }, Mc = {\n      [gl]: e.NEVER,\n      [ml]: e.ALWAYS,\n      [ia]: e.LESS,\n      [yl]: e.LEQUAL,\n      [xl]: e.EQUAL,\n      [Tl]: e.GEQUAL,\n      [_l]: e.GREATER,\n      [Nl]: e.NOTEQUAL\n    };\n  }\n  filterFallback(e) {\n    const { gl: t } = this;\n    return e === pt || e === Mo || e === Hs ? t.NEAREST : t.LINEAR;\n  }\n  getGLTextureType(e) {\n    const { gl: t } = this;\n    let s;\n    return e.isCubeTexture === !0 ? s = t.TEXTURE_CUBE_MAP : e.isDataArrayTexture === !0 || e.isCompressedArrayTexture === !0 ? s = t.TEXTURE_2D_ARRAY : e.isData3DTexture === !0 ? s = t.TEXTURE_3D : s = t.TEXTURE_2D, s;\n  }\n  getInternalFormat(e, t, s, n, r = !1) {\n    const { gl: i, extensions: a } = this;\n    if (e !== null) {\n      if (i[e] !== void 0) return i[e];\n      console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\" + e + \"'\");\n    }\n    let u = t;\n    return t === i.RED && (s === i.FLOAT && (u = i.R32F), s === i.HALF_FLOAT && (u = i.R16F), s === i.UNSIGNED_BYTE && (u = i.R8), s === i.UNSIGNED_SHORT && (u = i.R16), s === i.UNSIGNED_INT && (u = i.R32UI), s === i.BYTE && (u = i.R8I), s === i.SHORT && (u = i.R16I), s === i.INT && (u = i.R32I)), t === i.RED_INTEGER && (s === i.UNSIGNED_BYTE && (u = i.R8UI), s === i.UNSIGNED_SHORT && (u = i.R16UI), s === i.UNSIGNED_INT && (u = i.R32UI), s === i.BYTE && (u = i.R8I), s === i.SHORT && (u = i.R16I), s === i.INT && (u = i.R32I)), t === i.RG && (s === i.FLOAT && (u = i.RG32F), s === i.HALF_FLOAT && (u = i.RG16F), s === i.UNSIGNED_BYTE && (u = i.RG8), s === i.UNSIGNED_SHORT && (u = i.RG16), s === i.UNSIGNED_INT && (u = i.RG32UI), s === i.BYTE && (u = i.RG8I), s === i.SHORT && (u = i.RG16I), s === i.INT && (u = i.RG32I)), t === i.RG_INTEGER && (s === i.UNSIGNED_BYTE && (u = i.RG8UI), s === i.UNSIGNED_SHORT && (u = i.RG16UI), s === i.UNSIGNED_INT && (u = i.RG32UI), s === i.BYTE && (u = i.RG8I), s === i.SHORT && (u = i.RG16I), s === i.INT && (u = i.RG32I)), t === i.RGB && (s === i.FLOAT && (u = i.RGB32F), s === i.HALF_FLOAT && (u = i.RGB16F), s === i.UNSIGNED_BYTE && (u = i.RGB8), s === i.UNSIGNED_SHORT && (u = i.RGB16), s === i.UNSIGNED_INT && (u = i.RGB32UI), s === i.BYTE && (u = i.RGB8I), s === i.SHORT && (u = i.RGB16I), s === i.INT && (u = i.RGB32I), s === i.UNSIGNED_BYTE && (u = n === q && r === !1 ? i.SRGB8 : i.RGB8), s === i.UNSIGNED_SHORT_5_6_5 && (u = i.RGB565), s === i.UNSIGNED_SHORT_5_5_5_1 && (u = i.RGB5_A1), s === i.UNSIGNED_SHORT_4_4_4_4 && (u = i.RGB4), s === i.UNSIGNED_INT_5_9_9_9_REV && (u = i.RGB9_E5)), t === i.RGB_INTEGER && (s === i.UNSIGNED_BYTE && (u = i.RGB8UI), s === i.UNSIGNED_SHORT && (u = i.RGB16UI), s === i.UNSIGNED_INT && (u = i.RGB32UI), s === i.BYTE && (u = i.RGB8I), s === i.SHORT && (u = i.RGB16I), s === i.INT && (u = i.RGB32I)), t === i.RGBA && (s === i.FLOAT && (u = i.RGBA32F), s === i.HALF_FLOAT && (u = i.RGBA16F), s === i.UNSIGNED_BYTE && (u = i.RGBA8), s === i.UNSIGNED_SHORT && (u = i.RGBA16), s === i.UNSIGNED_INT && (u = i.RGBA32UI), s === i.BYTE && (u = i.RGBA8I), s === i.SHORT && (u = i.RGBA16I), s === i.INT && (u = i.RGBA32I), s === i.UNSIGNED_BYTE && (u = n === q && r === !1 ? i.SRGB8_ALPHA8 : i.RGBA8), s === i.UNSIGNED_SHORT_4_4_4_4 && (u = i.RGBA4), s === i.UNSIGNED_SHORT_5_5_5_1 && (u = i.RGB5_A1)), t === i.RGBA_INTEGER && (s === i.UNSIGNED_BYTE && (u = i.RGBA8UI), s === i.UNSIGNED_SHORT && (u = i.RGBA16UI), s === i.UNSIGNED_INT && (u = i.RGBA32UI), s === i.BYTE && (u = i.RGBA8I), s === i.SHORT && (u = i.RGBA16I), s === i.INT && (u = i.RGBA32I)), t === i.DEPTH_COMPONENT && (s === i.UNSIGNED_INT && (u = i.DEPTH24_STENCIL8), s === i.FLOAT && (u = i.DEPTH_COMPONENT32F)), t === i.DEPTH_STENCIL && s === i.UNSIGNED_INT_24_8 && (u = i.DEPTH24_STENCIL8), (u === i.R16F || u === i.R32F || u === i.RG16F || u === i.RG32F || u === i.RGBA16F || u === i.RGBA32F) && a.get(\"EXT_color_buffer_float\"), u;\n  }\n  setTextureParameters(e, t) {\n    const { gl: s, extensions: n, backend: r } = this;\n    s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL, t.flipY), s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL, t.premultiplyAlpha), s.pixelStorei(s.UNPACK_ALIGNMENT, t.unpackAlignment), s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL, s.NONE), s.texParameteri(e, s.TEXTURE_WRAP_S, Nr[t.wrapS]), s.texParameteri(e, s.TEXTURE_WRAP_T, Nr[t.wrapT]), (e === s.TEXTURE_3D || e === s.TEXTURE_2D_ARRAY) && s.texParameteri(e, s.TEXTURE_WRAP_R, Nr[t.wrapR]), s.texParameteri(e, s.TEXTURE_MAG_FILTER, io[t.magFilter]);\n    const i = t.mipmaps !== void 0 && t.mipmaps.length > 0, a = t.minFilter === Lt && i ? ds : t.minFilter;\n    if (s.texParameteri(e, s.TEXTURE_MIN_FILTER, io[a]), t.compareFunction && (s.texParameteri(e, s.TEXTURE_COMPARE_MODE, s.COMPARE_REF_TO_TEXTURE), s.texParameteri(e, s.TEXTURE_COMPARE_FUNC, Mc[t.compareFunction])), n.has(\"EXT_texture_filter_anisotropic\") === !0) {\n      if (t.magFilter === pt || t.minFilter !== Hs && t.minFilter !== ds || t.type === st && n.has(\"OES_texture_float_linear\") === !1) return;\n      if (t.anisotropy > 1) {\n        const u = n.get(\"EXT_texture_filter_anisotropic\");\n        s.texParameterf(e, u.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(t.anisotropy, r.getMaxAnisotropy()));\n      }\n    }\n  }\n  createDefaultTexture(e) {\n    const { gl: t, backend: s, defaultTextures: n } = this, r = this.getGLTextureType(e);\n    let i = n[r];\n    i === void 0 && (i = t.createTexture(), s.state.bindTexture(r, i), t.texParameteri(r, t.TEXTURE_MIN_FILTER, t.NEAREST), t.texParameteri(r, t.TEXTURE_MAG_FILTER, t.NEAREST), n[r] = i), s.set(e, {\n      textureGPU: i,\n      glTextureType: r,\n      isDefault: !0\n    });\n  }\n  createTexture(e, t) {\n    const { gl: s, backend: n } = this, { levels: r, width: i, height: a, depth: u } = t, c = n.utils.convert(e.format, e.colorSpace), l = n.utils.convert(e.type), d = this.getInternalFormat(e.internalFormat, c, l, e.colorSpace, e.isVideoTexture), h = s.createTexture(), p = this.getGLTextureType(e);\n    n.state.bindTexture(p, h), this.setTextureParameters(p, e), e.isDataArrayTexture || e.isCompressedArrayTexture ? s.texStorage3D(s.TEXTURE_2D_ARRAY, r, d, i, a, u) : e.isData3DTexture ? s.texStorage3D(s.TEXTURE_3D, r, d, i, a, u) : e.isVideoTexture || s.texStorage2D(p, r, d, i, a), n.set(e, {\n      textureGPU: h,\n      glTextureType: p,\n      glFormat: c,\n      glType: l,\n      glInternalFormat: d\n    });\n  }\n  copyBufferToTexture(e, t) {\n    const { gl: s, backend: n } = this, { textureGPU: r, glTextureType: i, glFormat: a, glType: u } = n.get(t), { width: c, height: l } = t.source.data;\n    s.bindBuffer(s.PIXEL_UNPACK_BUFFER, e), n.state.bindTexture(i, r), s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL, !1), s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1), s.texSubImage2D(i, 0, 0, 0, c, l, a, u, 0), s.bindBuffer(s.PIXEL_UNPACK_BUFFER, null), n.state.unbindTexture();\n  }\n  updateTexture(e, t) {\n    const { gl: s } = this, { width: n, height: r } = t, { textureGPU: i, glTextureType: a, glFormat: u, glType: c, glInternalFormat: l } = this.backend.get(e);\n    if (e.isRenderTargetTexture || i === void 0)\n      return;\n    const d = (h) => h.isDataTexture ? h.image.data : typeof HTMLImageElement < \"u\" && h instanceof HTMLImageElement || typeof HTMLCanvasElement < \"u\" && h instanceof HTMLCanvasElement || typeof ImageBitmap < \"u\" && h instanceof ImageBitmap || h instanceof OffscreenCanvas ? h : h.data;\n    if (this.backend.state.bindTexture(a, i), this.setTextureParameters(a, e), e.isCompressedTexture) {\n      const h = e.mipmaps, p = t.image;\n      for (let f = 0; f < h.length; f++) {\n        const m = h[f];\n        e.isCompressedArrayTexture ? e.format !== s.RGBA ? u !== null ? s.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY, f, 0, 0, 0, m.width, m.height, p.depth, u, m.data) : console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\") : s.texSubImage3D(s.TEXTURE_2D_ARRAY, f, 0, 0, 0, m.width, m.height, p.depth, u, c, m.data) : u !== null ? s.compressedTexSubImage2D(s.TEXTURE_2D, f, 0, 0, m.width, m.height, u, m.data) : console.warn(\"Unsupported compressed texture format\");\n      }\n    } else if (e.isCubeTexture) {\n      const h = t.images;\n      for (let p = 0; p < 6; p++) {\n        const f = d(h[p]);\n        s.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X + p, 0, 0, 0, n, r, u, c, f);\n      }\n    } else if (e.isDataArrayTexture) {\n      const h = t.image;\n      s.texSubImage3D(s.TEXTURE_2D_ARRAY, 0, 0, 0, 0, h.width, h.height, h.depth, u, c, h.data);\n    } else if (e.isData3DTexture) {\n      const h = t.image;\n      s.texSubImage3D(s.TEXTURE_3D, 0, 0, 0, 0, h.width, h.height, h.depth, u, c, h.data);\n    } else if (e.isVideoTexture)\n      e.update(), s.texImage2D(a, 0, l, u, c, t.image);\n    else {\n      const h = d(t.image);\n      s.texSubImage2D(a, 0, 0, 0, n, r, u, c, h);\n    }\n  }\n  generateMipmaps(e) {\n    const { gl: t, backend: s } = this, { textureGPU: n, glTextureType: r } = s.get(e);\n    s.state.bindTexture(r, n), t.generateMipmap(r);\n  }\n  deallocateRenderBuffers(e) {\n    const { gl: t, backend: s } = this;\n    if (e) {\n      const n = s.get(e);\n      if (n.renderBufferStorageSetup = void 0, n.framebuffers) {\n        for (const r in n.framebuffers)\n          t.deleteFramebuffer(n.framebuffers[r]);\n        delete n.framebuffers;\n      }\n      if (n.depthRenderbuffer && (t.deleteRenderbuffer(n.depthRenderbuffer), delete n.depthRenderbuffer), n.stencilRenderbuffer && (t.deleteRenderbuffer(n.stencilRenderbuffer), delete n.stencilRenderbuffer), n.msaaFrameBuffer && (t.deleteFramebuffer(n.msaaFrameBuffer), delete n.msaaFrameBuffer), n.msaaRenderbuffers) {\n        for (let r = 0; r < n.msaaRenderbuffers.length; r++)\n          t.deleteRenderbuffer(n.msaaRenderbuffers[r]);\n        delete n.msaaRenderbuffers;\n      }\n    }\n  }\n  destroyTexture(e) {\n    const { gl: t, backend: s } = this, { textureGPU: n, renderTarget: r } = s.get(e);\n    this.deallocateRenderBuffers(r), t.deleteTexture(n), s.delete(e);\n  }\n  copyTextureToTexture(e, t, s = null, n = null, r = 0) {\n    const { gl: i, backend: a } = this, { state: u } = this.backend, { textureGPU: c, glTextureType: l, glType: d, glFormat: h } = a.get(t);\n    let p, f, m, _, S, A;\n    s !== null ? (p = s.max.x - s.min.x, f = s.max.y - s.min.y, m = s.min.x, _ = s.min.y) : (p = e.image.width, f = e.image.height, m = 0, _ = 0), n !== null ? (S = n.x, A = n.y) : (S = 0, A = 0), u.bindTexture(l, c), i.pixelStorei(i.UNPACK_ALIGNMENT, t.unpackAlignment), i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, t.flipY), i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, t.premultiplyAlpha), i.pixelStorei(i.UNPACK_ALIGNMENT, t.unpackAlignment);\n    const M = i.getParameter(i.UNPACK_ROW_LENGTH), F = i.getParameter(i.UNPACK_IMAGE_HEIGHT), D = i.getParameter(i.UNPACK_SKIP_PIXELS), P = i.getParameter(i.UNPACK_SKIP_ROWS), V = i.getParameter(i.UNPACK_SKIP_IMAGES), k = e.isCompressedTexture ? e.mipmaps[r] : e.image;\n    if (i.pixelStorei(i.UNPACK_ROW_LENGTH, k.width), i.pixelStorei(i.UNPACK_IMAGE_HEIGHT, k.height), i.pixelStorei(i.UNPACK_SKIP_PIXELS, m), i.pixelStorei(i.UNPACK_SKIP_ROWS, _), e.isRenderTargetTexture || e.isDepthTexture) {\n      const ie = a.get(e), me = a.get(t), ne = a.get(ie.renderTarget), Ke = a.get(me.renderTarget), Ye = ne.framebuffers[ie.cacheKey], wt = Ke.framebuffers[me.cacheKey];\n      u.bindFramebuffer(i.READ_FRAMEBUFFER, Ye), u.bindFramebuffer(i.DRAW_FRAMEBUFFER, wt);\n      let vs = i.COLOR_BUFFER_BIT;\n      e.isDepthTexture && (vs = i.DEPTH_BUFFER_BIT), i.blitFramebuffer(m, _, p, f, S, A, p, f, vs, i.NEAREST), u.bindFramebuffer(i.READ_FRAMEBUFFER, null), u.bindFramebuffer(i.DRAW_FRAMEBUFFER, null);\n    } else\n      e.isDataTexture ? i.texSubImage2D(i.TEXTURE_2D, r, S, A, p, f, h, d, k.data) : e.isCompressedTexture ? i.compressedTexSubImage2D(i.TEXTURE_2D, r, S, A, k.width, k.height, h, k.data) : i.texSubImage2D(i.TEXTURE_2D, r, S, A, p, f, h, d, k);\n    i.pixelStorei(i.UNPACK_ROW_LENGTH, M), i.pixelStorei(i.UNPACK_IMAGE_HEIGHT, F), i.pixelStorei(i.UNPACK_SKIP_PIXELS, D), i.pixelStorei(i.UNPACK_SKIP_ROWS, P), i.pixelStorei(i.UNPACK_SKIP_IMAGES, V), r === 0 && t.generateMipmaps && i.generateMipmap(i.TEXTURE_2D), u.unbindTexture();\n  }\n  copyFramebufferToTexture(e, t, s) {\n    const { gl: n } = this, { state: r } = this.backend, { textureGPU: i } = this.backend.get(e), { x: a, y: u, z: c, w: l } = s, d = e.isDepthTexture === !0 || t.renderTarget && t.renderTarget.samples > 0, h = t.renderTarget ? t.renderTarget.height : this.backend.getDrawingBufferSize().y;\n    if (d) {\n      const p = a !== 0 || u !== 0;\n      let f, m;\n      if (e.isDepthTexture === !0 ? (f = n.DEPTH_BUFFER_BIT, m = n.DEPTH_ATTACHMENT, t.stencil && (f |= n.STENCIL_BUFFER_BIT)) : (f = n.COLOR_BUFFER_BIT, m = n.COLOR_ATTACHMENT0), p) {\n        const _ = this.backend.get(t.renderTarget), S = _.framebuffers[t.getCacheKey()], A = _.msaaFrameBuffer;\n        r.bindFramebuffer(n.DRAW_FRAMEBUFFER, S), r.bindFramebuffer(n.READ_FRAMEBUFFER, A);\n        const M = h - u - l;\n        n.blitFramebuffer(a, M, a + c, M + l, a, M, a + c, M + l, f, n.NEAREST), r.bindFramebuffer(n.READ_FRAMEBUFFER, S), r.bindTexture(n.TEXTURE_2D, i), n.copyTexSubImage2D(n.TEXTURE_2D, 0, 0, 0, a, M, c, l), r.unbindTexture();\n      } else {\n        const _ = n.createFramebuffer();\n        r.bindFramebuffer(n.DRAW_FRAMEBUFFER, _), n.framebufferTexture2D(n.DRAW_FRAMEBUFFER, m, n.TEXTURE_2D, i, 0), n.blitFramebuffer(0, 0, c, l, 0, 0, c, l, f, n.NEAREST), n.deleteFramebuffer(_);\n      }\n    } else\n      r.bindTexture(n.TEXTURE_2D, i), n.copyTexSubImage2D(n.TEXTURE_2D, 0, 0, 0, a, h - l - u, c, l), r.unbindTexture();\n    e.generateMipmaps && this.generateMipmaps(e), this.backend._setFramebuffer(t);\n  }\n  // Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n  setupRenderBufferStorage(e, t) {\n    const { gl: s } = this, n = t.renderTarget, { samples: r, depthTexture: i, depthBuffer: a, stencilBuffer: u, width: c, height: l } = n;\n    if (s.bindRenderbuffer(s.RENDERBUFFER, e), a && !u) {\n      let d = s.DEPTH_COMPONENT24;\n      r > 0 ? (i && i.isDepthTexture && i.type === s.FLOAT && (d = s.DEPTH_COMPONENT32F), s.renderbufferStorageMultisample(s.RENDERBUFFER, r, d, c, l)) : s.renderbufferStorage(s.RENDERBUFFER, d, c, l), s.framebufferRenderbuffer(s.FRAMEBUFFER, s.DEPTH_ATTACHMENT, s.RENDERBUFFER, e);\n    } else a && u && (r > 0 ? s.renderbufferStorageMultisample(s.RENDERBUFFER, r, s.DEPTH24_STENCIL8, c, l) : s.renderbufferStorage(s.RENDERBUFFER, s.DEPTH_STENCIL, c, l), s.framebufferRenderbuffer(s.FRAMEBUFFER, s.DEPTH_STENCIL_ATTACHMENT, s.RENDERBUFFER, e));\n  }\n  async copyTextureToBuffer(e, t, s, n, r, i) {\n    const { backend: a, gl: u } = this, { textureGPU: c, glFormat: l, glType: d } = this.backend.get(e), h = u.createFramebuffer();\n    u.bindFramebuffer(u.READ_FRAMEBUFFER, h);\n    const p = e.isCubeTexture ? u.TEXTURE_CUBE_MAP_POSITIVE_X + i : u.TEXTURE_2D;\n    u.framebufferTexture2D(u.READ_FRAMEBUFFER, u.COLOR_ATTACHMENT0, p, c, 0);\n    const f = this._getTypedArrayType(d), m = this._getBytesPerTexel(d, l), S = n * r * m, A = u.createBuffer();\n    u.bindBuffer(u.PIXEL_PACK_BUFFER, A), u.bufferData(u.PIXEL_PACK_BUFFER, S, u.STREAM_READ), u.readPixels(t, s, n, r, l, d, 0), u.bindBuffer(u.PIXEL_PACK_BUFFER, null), await a.utils._clientWaitAsync();\n    const M = new f(S / f.BYTES_PER_ELEMENT);\n    return u.bindBuffer(u.PIXEL_PACK_BUFFER, A), u.getBufferSubData(u.PIXEL_PACK_BUFFER, 0, M), u.bindBuffer(u.PIXEL_PACK_BUFFER, null), u.deleteFramebuffer(h), M;\n  }\n  _getTypedArrayType(e) {\n    const { gl: t } = this;\n    if (e === t.UNSIGNED_BYTE) return Uint8Array;\n    if (e === t.UNSIGNED_SHORT_4_4_4_4 || e === t.UNSIGNED_SHORT_5_5_5_1 || e === t.UNSIGNED_SHORT_5_6_5 || e === t.UNSIGNED_SHORT) return Uint16Array;\n    if (e === t.UNSIGNED_INT) return Uint32Array;\n    if (e === t.HALF_FLOAT) return Uint16Array;\n    if (e === t.FLOAT) return Float32Array;\n    throw new Error(`Unsupported WebGL type: ${e}`);\n  }\n  _getBytesPerTexel(e, t) {\n    const { gl: s } = this;\n    let n = 0;\n    if (e === s.UNSIGNED_BYTE && (n = 1), (e === s.UNSIGNED_SHORT_4_4_4_4 || e === s.UNSIGNED_SHORT_5_5_5_1 || e === s.UNSIGNED_SHORT_5_6_5 || e === s.UNSIGNED_SHORT || e === s.HALF_FLOAT) && (n = 2), (e === s.UNSIGNED_INT || e === s.FLOAT) && (n = 4), t === s.RGBA) return n * 4;\n    if (t === s.RGB) return n * 3;\n    if (t === s.ALPHA) return n;\n  }\n}\nclass yA {\n  constructor(e) {\n    this.backend = e, this.gl = this.backend.gl, this.availableExtensions = this.gl.getSupportedExtensions(), this.extensions = {};\n  }\n  get(e) {\n    let t = this.extensions[e];\n    return t === void 0 && (t = this.gl.getExtension(e), this.extensions[e] = t), t;\n  }\n  has(e) {\n    return this.availableExtensions.includes(e);\n  }\n}\nclass xA {\n  constructor(e) {\n    this.backend = e, this.maxAnisotropy = null;\n  }\n  getMaxAnisotropy() {\n    if (this.maxAnisotropy !== null) return this.maxAnisotropy;\n    const e = this.backend.gl, t = this.backend.extensions;\n    if (t.has(\"EXT_texture_filter_anisotropic\") === !0) {\n      const s = t.get(\"EXT_texture_filter_anisotropic\");\n      this.maxAnisotropy = e.getParameter(s.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n    } else\n      this.maxAnisotropy = 0;\n    return this.maxAnisotropy;\n  }\n}\nconst Bc = {\n  WEBGL_multi_draw: \"WEBGL_multi_draw\",\n  WEBGL_compressed_texture_astc: \"texture-compression-astc\",\n  WEBGL_compressed_texture_etc: \"texture-compression-etc2\",\n  WEBGL_compressed_texture_etc1: \"texture-compression-etc1\",\n  WEBGL_compressed_texture_pvrtc: \"texture-compression-pvrtc\",\n  WEBKIT_WEBGL_compressed_texture_pvrtc: \"texture-compression-pvrtc\",\n  WEBGL_compressed_texture_s3tc: \"texture-compression-bc\",\n  EXT_texture_compression_bptc: \"texture-compression-bptc\",\n  EXT_disjoint_timer_query_webgl2: \"timestamp-query\"\n};\nclass TA {\n  constructor(e) {\n    this.gl = e.gl, this.extensions = e.extensions, this.info = e.renderer.info, this.mode = null, this.index = 0, this.type = null, this.object = null;\n  }\n  render(e, t) {\n    const { gl: s, mode: n, object: r, type: i, info: a, index: u } = this;\n    u !== 0 ? s.drawElements(n, t, i, e) : s.drawArrays(n, e, t), a.update(r, t, n, 1);\n  }\n  renderInstances(e, t, s) {\n    const { gl: n, mode: r, type: i, index: a, object: u, info: c } = this;\n    s !== 0 && (a !== 0 ? n.drawElementsInstanced(r, t, i, e, s) : n.drawArraysInstanced(r, e, t, s), c.update(u, t, r, s));\n  }\n  renderMultiDraw(e, t, s) {\n    const { extensions: n, mode: r, object: i, info: a } = this;\n    if (s === 0) return;\n    const u = n.get(\"WEBGL_multi_draw\");\n    if (u === null)\n      for (let c = 0; c < s; c++)\n        this.render(e[c], t[c]);\n    else {\n      this.index !== 0 ? u.multiDrawElementsWEBGL(r, t, 0, this.type, e, 0, s) : u.multiDrawArraysWEBGL(r, e, 0, t, 0, s);\n      let c = 0;\n      for (let l = 0; l < s; l++)\n        c += t[l];\n      a.update(i, c, r, 1);\n    }\n  }\n  renderMultiDrawInstances(e, t, s, n) {\n    const { extensions: r, mode: i, object: a, info: u } = this;\n    if (s === 0) return;\n    const c = r.get(\"WEBGL_multi_draw\");\n    if (c === null)\n      for (let l = 0; l < s; l++)\n        this.renderInstances(e[l], t[l], n[l]);\n    else {\n      this.index !== 0 ? c.multiDrawElementsInstancedWEBGL(i, t, 0, this.type, e, 0, n, 0, s) : c.multiDrawArraysInstancedWEBGL(i, e, 0, t, 0, n, 0, s);\n      let l = 0;\n      for (let d = 0; d < s; d++)\n        l += t[d] * n[d];\n      u.update(a, l, i, 1);\n    }\n  }\n  //\n}\nclass Fc extends sg {\n  /**\n   * Constructs a new WebGPU backend.\n   *\n   * @param {Object} parameters - The configuration parameter.\n   * @param {Boolean} [parameters.logarithmicDepthBuffer=false] - Whether logarithmic depth buffer is enabled or not.\n   * @param {Boolean} [parameters.alpha=true] - Whether the default framebuffer (which represents the final contents of the canvas) should be transparent or opaque.\n   * @param {Boolean} [parameters.depth=true] - Whether the default framebuffer should have a depth buffer or not.\n   * @param {Boolean} [parameters.stencil=false] - Whether the default framebuffer should have a stencil buffer or not.\n   * @param {Boolean} [parameters.antialias=false] - Whether MSAA as the default anti-aliasing should be enabled or not.\n   * @param {Number} [parameters.samples=0] - When `antialias` is `true`, `4` samples are used by default. Set this parameter to any other integer value than 0 to overwrite the default.\n   * @param {Boolean} [parameters.forceWebGL=false] - If set to `true`, the renderer uses it WebGL 2 backend no matter if WebGPU is supported or not.\n   * @param {WebGL2RenderingContext} [parameters.context=undefined] - A WebGL 2 rendering context.\n   */\n  constructor(e = {}) {\n    super(e), this.isWebGLBackend = !0, this.attributeUtils = null, this.extensions = null, this.capabilities = null, this.textureUtils = null, this.bufferRenderer = null, this.gl = null, this.state = null, this.utils = null, this.vaoCache = {}, this.transformFeedbackCache = {}, this.discard = !1, this.disjoint = null, this.parallel = null, this.trackTimestamp = e.trackTimestamp === !0, this._currentContext = null, this._knownBindings = /* @__PURE__ */ new WeakSet();\n  }\n  /**\n   * Initializes the backend so it is ready for usage.\n   *\n   * @param {Renderer} renderer - The renderer.\n   */\n  init(e) {\n    super.init(e);\n    const t = this.parameters, s = t.context !== void 0 ? t.context : e.domElement.getContext(\"webgl2\");\n    function n(r) {\n      r.preventDefault();\n      const i = {\n        api: \"WebGL\",\n        message: r.statusMessage || \"Unknown reason\",\n        reason: null,\n        originalEvent: r\n      };\n      e.onDeviceLost(i);\n    }\n    this._onContextLost = n, e.domElement.addEventListener(\"webglcontextlost\", n, !1), this.gl = s, this.extensions = new yA(this), this.capabilities = new xA(this), this.attributeUtils = new pA(this), this.textureUtils = new mA(this), this.bufferRenderer = new TA(this), this.state = new fA(this), this.utils = new gA(this), this.extensions.get(\"EXT_color_buffer_float\"), this.extensions.get(\"WEBGL_clip_cull_distance\"), this.extensions.get(\"OES_texture_float_linear\"), this.extensions.get(\"EXT_color_buffer_half_float\"), this.extensions.get(\"WEBGL_multisampled_render_to_texture\"), this.extensions.get(\"WEBGL_render_shared_exponent\"), this.extensions.get(\"WEBGL_multi_draw\"), this.disjoint = this.extensions.get(\"EXT_disjoint_timer_query_webgl2\"), this.parallel = this.extensions.get(\"KHR_parallel_shader_compile\");\n  }\n  /**\n   * The coordinate system of the backend.\n   *\n   * @type {Number}\n   * @readonly\n   */\n  get coordinateSystem() {\n    return En;\n  }\n  /**\n   * Transfers buffer data from a storage buffer attribute\n   * from the GPU to the CPU in context of compute shaders.\n   *\n   * @async\n   * @param {StorageBufferAttribute} attribute - The storage buffer attribute.\n   * @return {Promise<ArrayBuffer>} A promise that resolves with the buffer data when the data are ready.\n   */\n  async getArrayBufferAsync(e) {\n    return await this.attributeUtils.getArrayBufferAsync(e);\n  }\n  /**\n   * Can be used to synchronize CPU operations with GPU tasks. So when this method is called,\n   * the CPU waits for the GPU to complete its operation (e.g. a compute task).\n   *\n   * @async\n   * @return {Promise} A Promise that resolves when synchronization has been finished.\n   */\n  async waitForGPU() {\n    await this.utils._clientWaitAsync();\n  }\n  /**\n   * Inits a time stamp query for the given render context.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  initTimestampQuery(e) {\n    if (!this.disjoint || !this.trackTimestamp) return;\n    const t = this.get(e);\n    if (this.queryRunning) {\n      t.queryQueue || (t.queryQueue = []), t.queryQueue.push(e);\n      return;\n    }\n    t.activeQuery && (this.gl.endQuery(this.disjoint.TIME_ELAPSED_EXT), t.activeQuery = null), t.activeQuery = this.gl.createQuery(), t.activeQuery !== null && (this.gl.beginQuery(this.disjoint.TIME_ELAPSED_EXT, t.activeQuery), this.queryRunning = !0);\n  }\n  // timestamp utils\n  /**\n   * Prepares the timestamp buffer.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  prepareTimestampBuffer(e) {\n    if (!this.disjoint || !this.trackTimestamp) return;\n    const t = this.get(e);\n    if (t.activeQuery && (this.gl.endQuery(this.disjoint.TIME_ELAPSED_EXT), t.gpuQueries || (t.gpuQueries = []), t.gpuQueries.push({ query: t.activeQuery }), t.activeQuery = null, this.queryRunning = !1, t.queryQueue && t.queryQueue.length > 0)) {\n      const s = t.queryQueue.shift();\n      this.initTimestampQuery(s);\n    }\n  }\n  /**\n   * Resolves the time stamp for the given render context and type.\n   *\n   * @async\n   * @param {RenderContext} renderContext - The render context.\n   * @param {String} type - The render context.\n   * @return {Promise} A Promise that resolves when the time stamp has been computed.\n   */\n  async resolveTimestampAsync(e, t = \"render\") {\n    if (!this.disjoint || !this.trackTimestamp) return;\n    const s = this.get(e);\n    s.gpuQueries || (s.gpuQueries = []);\n    for (let n = 0; n < s.gpuQueries.length; n++) {\n      const r = s.gpuQueries[n], i = this.gl.getQueryParameter(r.query, this.gl.QUERY_RESULT_AVAILABLE), a = this.gl.getParameter(this.disjoint.GPU_DISJOINT_EXT);\n      if (i && !a) {\n        const u = this.gl.getQueryParameter(r.query, this.gl.QUERY_RESULT), c = Number(u) / 1e6;\n        this.gl.deleteQuery(r.query), s.gpuQueries.splice(n, 1), n--, this.renderer.info.updateTimestamp(t, c);\n      }\n    }\n  }\n  /**\n   * Returns the backend's rendering context.\n   *\n   * @return {WebGL2RenderingContext} The rendering context.\n   */\n  getContext() {\n    return this.gl;\n  }\n  /**\n   * This method is executed at the beginning of a render call and prepares\n   * the WebGL state for upcoming render calls\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  beginRender(e) {\n    const { gl: t } = this, s = this.get(e);\n    if (this.initTimestampQuery(e), s.previousContext = this._currentContext, this._currentContext = e, this._setFramebuffer(e), this.clear(e.clearColor, e.clearDepth, e.clearStencil, e, !1), e.viewport ? this.updateViewport(e) : t.viewport(0, 0, t.drawingBufferWidth, t.drawingBufferHeight), e.scissor) {\n      const { x: r, y: i, width: a, height: u } = e.scissorValue;\n      t.scissor(r, e.height - u - i, a, u);\n    }\n    const n = e.occlusionQueryCount;\n    n > 0 && (s.currentOcclusionQueries = s.occlusionQueries, s.currentOcclusionQueryObjects = s.occlusionQueryObjects, s.lastOcclusionObject = null, s.occlusionQueries = new Array(n), s.occlusionQueryObjects = new Array(n), s.occlusionQueryIndex = 0);\n  }\n  /**\n   * This method is executed at the end of a render call and finalizes work\n   * after draw calls.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  finishRender(e) {\n    const { gl: t, state: s } = this, n = this.get(e), r = n.previousContext, i = e.occlusionQueryCount;\n    i > 0 && (i > n.occlusionQueryIndex && t.endQuery(t.ANY_SAMPLES_PASSED), this.resolveOccludedAsync(e));\n    const a = e.textures;\n    if (a !== null)\n      for (let u = 0; u < a.length; u++) {\n        const c = a[u];\n        c.generateMipmaps && this.generateMipmaps(c);\n      }\n    if (this._currentContext = r, e.textures !== null && e.renderTarget) {\n      const u = this.get(e.renderTarget), { samples: c } = e.renderTarget;\n      if (c > 0) {\n        const l = u.framebuffers[e.getCacheKey()], d = t.COLOR_BUFFER_BIT, h = u.msaaFrameBuffer, p = e.textures;\n        s.bindFramebuffer(t.READ_FRAMEBUFFER, h), s.bindFramebuffer(t.DRAW_FRAMEBUFFER, l);\n        for (let f = 0; f < p.length; f++)\n          if (e.scissor) {\n            const { x: m, y: _, width: S, height: A } = e.scissorValue, M = e.height - A - _;\n            t.blitFramebuffer(m, M, m + S, M + A, m, M, m + S, M + A, d, t.NEAREST), t.invalidateSubFramebuffer(t.READ_FRAMEBUFFER, u.invalidationArray, m, M, S, A);\n          } else\n            t.blitFramebuffer(0, 0, e.width, e.height, 0, 0, e.width, e.height, d, t.NEAREST), t.invalidateFramebuffer(t.READ_FRAMEBUFFER, u.invalidationArray);\n      }\n    }\n    r !== null && (this._setFramebuffer(r), r.viewport ? this.updateViewport(r) : t.viewport(0, 0, t.drawingBufferWidth, t.drawingBufferHeight)), this.prepareTimestampBuffer(e);\n  }\n  /**\n   * This method processes the result of occlusion queries and writes it\n   * into render context data.\n   *\n   * @async\n   * @param {RenderContext} renderContext - The render context.\n   */\n  resolveOccludedAsync(e) {\n    const t = this.get(e), { currentOcclusionQueries: s, currentOcclusionQueryObjects: n } = t;\n    if (s && n) {\n      const r = /* @__PURE__ */ new WeakSet(), { gl: i } = this;\n      t.currentOcclusionQueryObjects = null, t.currentOcclusionQueries = null;\n      const a = () => {\n        let u = 0;\n        for (let c = 0; c < s.length; c++) {\n          const l = s[c];\n          l !== null && i.getQueryParameter(l, i.QUERY_RESULT_AVAILABLE) && (i.getQueryParameter(l, i.QUERY_RESULT) > 0 && r.add(n[c]), s[c] = null, i.deleteQuery(l), u++);\n        }\n        u < s.length ? requestAnimationFrame(a) : t.occluded = r;\n      };\n      a();\n    }\n  }\n  /**\n   * Returns `true` if the given 3D object is fully occluded by other\n   * 3D objects in the scene.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   * @param {Object3D} object - The 3D object to test.\n   * @return {Boolean} Whether the 3D object is fully occluded or not.\n   */\n  isOccluded(e, t) {\n    const s = this.get(e);\n    return s.occluded && s.occluded.has(t);\n  }\n  /**\n   * Updates the viewport with the values from the given render context.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  updateViewport(e) {\n    const t = this.gl, { x: s, y: n, width: r, height: i } = e.viewportValue;\n    t.viewport(s, e.height - i - n, r, i);\n  }\n  /**\n   * Defines the scissor test.\n   *\n   * @param {Boolean} boolean - Whether the scissor test should be enabled or not.\n   */\n  setScissorTest(e) {\n    const t = this.gl;\n    e ? t.enable(t.SCISSOR_TEST) : t.disable(t.SCISSOR_TEST);\n  }\n  /**\n   * Performs a clear operation.\n   *\n   * @param {Boolean} color - Whether the color buffer should be cleared or not.\n   * @param {Boolean} depth - Whether the depth buffer should be cleared or not.\n   * @param {Boolean} stencil - Whether the stencil buffer should be cleared or not.\n   * @param {Object?} [descriptor=null] - The render context of the current set render target.\n   * @param {Boolean} [setFrameBuffer=true] - TODO.\n   */\n  clear(e, t, s, n = null, r = !0) {\n    const { gl: i } = this;\n    if (n === null) {\n      const u = this.getClearColor();\n      u.r *= u.a, u.g *= u.a, u.b *= u.a, n = {\n        textures: null,\n        clearColorValue: u\n      };\n    }\n    let a = 0;\n    if (e && (a |= i.COLOR_BUFFER_BIT), t && (a |= i.DEPTH_BUFFER_BIT), s && (a |= i.STENCIL_BUFFER_BIT), a !== 0) {\n      let u;\n      if (n.clearColorValue ? u = n.clearColorValue : (u = this.getClearColor(), u.r *= u.a, u.g *= u.a, u.b *= u.a), t && this.state.setDepthMask(!0), n.textures === null)\n        i.clearColor(u.r, u.g, u.b, u.a), i.clear(a);\n      else {\n        if (r && this._setFramebuffer(n), e)\n          for (let c = 0; c < n.textures.length; c++)\n            i.clearBufferfv(i.COLOR, c, [u.r, u.g, u.b, u.a]);\n        t && s ? i.clearBufferfi(i.DEPTH_STENCIL, 0, 1, 0) : t ? i.clearBufferfv(i.DEPTH, 0, [1]) : s && i.clearBufferiv(i.STENCIL, 0, [0]);\n      }\n    }\n  }\n  /**\n   * This method is executed at the beginning of a compute call and\n   * prepares the state for upcoming compute tasks.\n   *\n   * @param {Node|Array<Node>} computeGroup - The compute node(s).\n   */\n  beginCompute(e) {\n    const { state: t, gl: s } = this;\n    t.bindFramebuffer(s.FRAMEBUFFER, null), this.initTimestampQuery(e);\n  }\n  /**\n   * Executes a compute command for the given compute node.\n   *\n   * @param {Node|Array<Node>} computeGroup - The group of compute nodes of a compute call. Can be a single compute node.\n   * @param {Node} computeNode - The compute node.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   * @param {ComputePipeline} pipeline - The compute pipeline.\n   */\n  compute(e, t, s, n) {\n    const { state: r, gl: i } = this;\n    this.discard === !1 && (i.enable(i.RASTERIZER_DISCARD), this.discard = !0);\n    const { programGPU: a, transformBuffers: u, attributes: c } = this.get(n), l = this._getVaoKey(null, c), d = this.vaoCache[l];\n    d === void 0 ? this._createVao(null, c) : i.bindVertexArray(d), r.useProgram(a), this._bindUniforms(s);\n    const h = this._getTransformFeedback(u);\n    i.bindTransformFeedback(i.TRANSFORM_FEEDBACK, h), i.beginTransformFeedback(i.POINTS), c[0].isStorageInstancedBufferAttribute ? i.drawArraysInstanced(i.POINTS, 0, 1, t.count) : i.drawArrays(i.POINTS, 0, t.count), i.endTransformFeedback(), i.bindTransformFeedback(i.TRANSFORM_FEEDBACK, null);\n    for (let p = 0; p < u.length; p++) {\n      const f = u[p];\n      f.pbo && this.textureUtils.copyBufferToTexture(f.transformBuffer, f.pbo), f.switchBuffers();\n    }\n  }\n  /**\n   * This method is executed at the end of a compute call and\n   * finalizes work after compute tasks.\n   *\n   * @param {Node|Array<Node>} computeGroup - The compute node(s).\n   */\n  finishCompute(e) {\n    const t = this.gl;\n    this.discard = !1, t.disable(t.RASTERIZER_DISCARD), this.prepareTimestampBuffer(e), this._currentContext && this._setFramebuffer(this._currentContext);\n  }\n  /**\n   * Executes a draw command for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object to draw.\n   * @param {Info} info - Holds a series of statistical information about the GPU memory and the rendering process.\n   */\n  draw(e) {\n    const { object: t, pipeline: s, material: n, context: r, hardwareClippingPlanes: i } = e, { programGPU: a } = this.get(s), { gl: u, state: c } = this, l = this.get(r), d = e.getDrawParameters();\n    if (d === null) return;\n    this._bindUniforms(e.getBindings());\n    const h = t.isMesh && t.matrixWorld.determinant() < 0;\n    c.setMaterial(n, h, i), c.useProgram(a);\n    const p = this.get(e);\n    let f = p.staticVao;\n    if (f === void 0 || p.geometryId !== e.geometry.id) {\n      const D = this._getVaoKey(e.getIndex(), e.getAttributes());\n      if (f = this.vaoCache[D], f === void 0) {\n        let P;\n        ({ vaoGPU: f, staticVao: P } = this._createVao(e.getIndex(), e.getAttributes())), P && (p.staticVao = f, p.geometryId = e.geometry.id);\n      }\n    }\n    u.bindVertexArray(f);\n    const m = e.getIndex(), _ = l.lastOcclusionObject;\n    if (_ !== t && _ !== void 0) {\n      if (_ !== null && _.occlusionTest === !0 && (u.endQuery(u.ANY_SAMPLES_PASSED), l.occlusionQueryIndex++), t.occlusionTest === !0) {\n        const D = u.createQuery();\n        u.beginQuery(u.ANY_SAMPLES_PASSED, D), l.occlusionQueries[l.occlusionQueryIndex] = D, l.occlusionQueryObjects[l.occlusionQueryIndex] = t;\n      }\n      l.lastOcclusionObject = t;\n    }\n    const S = this.bufferRenderer;\n    t.isPoints ? S.mode = u.POINTS : t.isLineSegments ? S.mode = u.LINES : t.isLine ? S.mode = u.LINE_STRIP : t.isLineLoop ? S.mode = u.LINE_LOOP : n.wireframe === !0 ? (c.setLineWidth(n.wireframeLinewidth * this.renderer.getPixelRatio()), S.mode = u.LINES) : S.mode = u.TRIANGLES;\n    const { vertexCount: A, instanceCount: M } = d;\n    let { firstVertex: F } = d;\n    if (S.object = t, m !== null) {\n      F *= m.array.BYTES_PER_ELEMENT;\n      const D = this.get(m);\n      S.index = m.count, S.type = D.type;\n    } else\n      S.index = 0;\n    t.isBatchedMesh ? t._multiDrawInstances !== null ? S.renderMultiDrawInstances(t._multiDrawStarts, t._multiDrawCounts, t._multiDrawCount, t._multiDrawInstances) : this.hasFeature(\"WEBGL_multi_draw\") ? S.renderMultiDraw(t._multiDrawStarts, t._multiDrawCounts, t._multiDrawCount) : cg(\"THREE.WebGLRenderer: WEBGL_multi_draw not supported.\") : M > 1 ? S.renderInstances(F, A, M) : S.render(F, A), u.bindVertexArray(null);\n  }\n  /**\n   * Explain why always null is returned.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether the render pipeline requires an update or not.\n   */\n  needsRenderUpdate() {\n    return !1;\n  }\n  /**\n   * Explain why no cache key is computed.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {String} The cache key.\n   */\n  getRenderCacheKey() {\n    return \"\";\n  }\n  // textures\n  /**\n   * Creates a default texture for the given texture that can be used\n   * as a placeholder until the actual texture is ready for usage.\n   *\n   * @param {Texture} texture - The texture to create a default texture for.\n   */\n  createDefaultTexture(e) {\n    this.textureUtils.createDefaultTexture(e);\n  }\n  /**\n   * Defines a texture on the GPU for the given texture object.\n   *\n   * @param {Texture} texture - The texture.\n   * @param {Object} [options={}] - Optional configuration parameter.\n   */\n  createTexture(e, t) {\n    this.textureUtils.createTexture(e, t);\n  }\n  /**\n   * Uploads the updated texture data to the GPU.\n   *\n   * @param {Texture} texture - The texture.\n   * @param {Object} [options={}] - Optional configuration parameter.\n   */\n  updateTexture(e, t) {\n    this.textureUtils.updateTexture(e, t);\n  }\n  /**\n   * Generates mipmaps for the given texture\n   *\n   * @param {Texture} texture - The texture.\n   */\n  generateMipmaps(e) {\n    this.textureUtils.generateMipmaps(e);\n  }\n  /**\n   * Destroys the GPU data for the given texture object.\n   *\n   * @param {Texture} texture - The texture.\n   */\n  destroyTexture(e) {\n    this.textureUtils.destroyTexture(e);\n  }\n  /**\n   * Returns texture data as a typed array.\n   *\n   * @param {Texture} texture - The texture to copy.\n   * @param {Number} x - The x coordinate of the copy origin.\n   * @param {Number} y - The y coordinate of the copy origin.\n   * @param {Number} width - The width of the copy.\n   * @param {Number} height - The height of the copy.\n   * @param {Number} faceIndex - The face index.\n   * @return {TypedArray} The texture data as a typed array.\n   */\n  copyTextureToBuffer(e, t, s, n, r, i) {\n    return this.textureUtils.copyTextureToBuffer(e, t, s, n, r, i);\n  }\n  /**\n   * This method does nothing since WebGL 2 has no concept of samplers.\n   *\n   * @param {Texture} texture - The texture to create the sampler for.\n   */\n  createSampler() {\n  }\n  /**\n   * This method does nothing since WebGL 2 has no concept of samplers.\n   *\n   * @param {Texture} texture - The texture to destroy the sampler for.\n   */\n  destroySampler() {\n  }\n  // node builder\n  /**\n   * Returns a node builder for the given render object.\n   *\n   * @param {RenderObject} object - The render object.\n   * @param {Renderer} renderer - The renderer.\n   * @return {GLSLNodeBuilder} The node builder.\n   */\n  createNodeBuilder(e, t) {\n    return new lA(e, t);\n  }\n  // program\n  /**\n   * Creates a shader program from the given programmable stage.\n   *\n   * @param {ProgrammableStage} program - The programmable stage.\n   */\n  createProgram(e) {\n    const t = this.gl, { stage: s, code: n } = e, r = s === \"fragment\" ? t.createShader(t.FRAGMENT_SHADER) : t.createShader(t.VERTEX_SHADER);\n    t.shaderSource(r, n), t.compileShader(r), this.set(e, {\n      shaderGPU: r\n    });\n  }\n  /**\n   * Destroys the shader program of the given programmable stage.\n   *\n   * @param {ProgrammableStage} program - The programmable stage.\n   */\n  destroyProgram(e) {\n    this.delete(e);\n  }\n  /**\n   * Creates a render pipeline for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @param {Array<Promise>} promises - An array of compilation promises which are used in `compileAsync()`.\n   */\n  createRenderPipeline(e, t) {\n    const s = this.gl, n = e.pipeline, { fragmentProgram: r, vertexProgram: i } = n, a = s.createProgram(), u = this.get(r).shaderGPU, c = this.get(i).shaderGPU;\n    if (s.attachShader(a, u), s.attachShader(a, c), s.linkProgram(a), this.set(n, {\n      programGPU: a,\n      fragmentShader: u,\n      vertexShader: c\n    }), t !== null && this.parallel) {\n      const l = new Promise((d) => {\n        const h = this.parallel, p = () => {\n          s.getProgramParameter(a, h.COMPLETION_STATUS_KHR) ? (this._completeCompile(e, n), d()) : requestAnimationFrame(p);\n        };\n        p();\n      });\n      t.push(l);\n      return;\n    }\n    this._completeCompile(e, n);\n  }\n  /**\n   * Formats the source code of error messages.\n   *\n   * @private\n   * @param {String} string - The code.\n   * @param {Number} errorLine - The error line.\n   * @return {String} The formatted code.\n   */\n  _handleSource(e, t) {\n    const s = e.split(`\n`), n = [], r = Math.max(t - 6, 0), i = Math.min(t + 6, s.length);\n    for (let a = r; a < i; a++) {\n      const u = a + 1;\n      n.push(`${u === t ? \">\" : \" \"} ${u}: ${s[a]}`);\n    }\n    return n.join(`\n`);\n  }\n  /**\n   * Gets the shader compilation errors from the info log.\n   *\n   * @private\n   * @param {WebGL2RenderingContext} gl - The rendering context.\n   * @param {WebGLShader} shader - The WebGL shader object.\n   * @param {String} type - The shader type.\n   * @return {String} The shader errors.\n   */\n  _getShaderErrors(e, t, s) {\n    const n = e.getShaderParameter(t, e.COMPILE_STATUS), r = e.getShaderInfoLog(t).trim();\n    if (n && r === \"\") return \"\";\n    const i = /ERROR: 0:(\\d+)/.exec(r);\n    if (i) {\n      const a = parseInt(i[1]);\n      return s.toUpperCase() + `\n\n` + r + `\n\n` + this._handleSource(e.getShaderSource(t), a);\n    } else\n      return r;\n  }\n  /**\n   * Logs shader compilation errors.\n   *\n   * @private\n   * @param {WebGLProgram} programGPU - The WebGL program.\n   * @param {WebGLShader} glFragmentShader - The fragment shader as a native WebGL shader object.\n   * @param {WebGLShader} glVertexShader - The vertex shader as a native WebGL shader object.\n   */\n  _logProgramError(e, t, s) {\n    if (this.renderer.debug.checkShaderErrors) {\n      const n = this.gl, r = n.getProgramInfoLog(e).trim();\n      if (n.getProgramParameter(e, n.LINK_STATUS) === !1)\n        if (typeof this.renderer.debug.onShaderError == \"function\")\n          this.renderer.debug.onShaderError(n, e, s, t);\n        else {\n          const i = this._getShaderErrors(n, s, \"vertex\"), a = this._getShaderErrors(n, t, \"fragment\");\n          console.error(\n            \"THREE.WebGLProgram: Shader Error \" + n.getError() + \" - VALIDATE_STATUS \" + n.getProgramParameter(e, n.VALIDATE_STATUS) + `\n\nProgram Info Log: ` + r + `\n` + i + `\n` + a\n          );\n        }\n      else r !== \"\" && console.warn(\"THREE.WebGLProgram: Program Info Log:\", r);\n    }\n  }\n  /**\n   * Completes the shader program setup for the given render object.\n   *\n   * @private\n   * @param {RenderObject} renderObject - The render object.\n   * @param {RenderPipeline} pipeline - The render pipeline.\n   */\n  _completeCompile(e, t) {\n    const { state: s, gl: n } = this, r = this.get(t), { programGPU: i, fragmentShader: a, vertexShader: u } = r;\n    n.getProgramParameter(i, n.LINK_STATUS) === !1 && this._logProgramError(i, a, u), s.useProgram(i);\n    const c = e.getBindings();\n    this._setupBindings(c, i), this.set(t, {\n      programGPU: i\n    });\n  }\n  /**\n   * Creates a compute pipeline for the given compute node.\n   *\n   * @param {ComputePipeline} computePipeline - The compute pipeline.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   */\n  createComputePipeline(e, t) {\n    const { state: s, gl: n } = this, r = {\n      stage: \"fragment\",\n      code: `#version 300 es\nprecision highp float;\nvoid main() {}`\n    };\n    this.createProgram(r);\n    const { computeProgram: i } = e, a = n.createProgram(), u = this.get(r).shaderGPU, c = this.get(i).shaderGPU, l = i.transforms, d = [], h = [];\n    for (let _ = 0; _ < l.length; _++) {\n      const S = l[_];\n      d.push(S.varyingName), h.push(S.attributeNode);\n    }\n    n.attachShader(a, u), n.attachShader(a, c), n.transformFeedbackVaryings(\n      a,\n      d,\n      n.SEPARATE_ATTRIBS\n    ), n.linkProgram(a), n.getProgramParameter(a, n.LINK_STATUS) === !1 && this._logProgramError(a, u, c), s.useProgram(a), this._setupBindings(t, a);\n    const p = i.attributes, f = [], m = [];\n    for (let _ = 0; _ < p.length; _++) {\n      const S = p[_].node.attribute;\n      f.push(S), this.has(S) || this.attributeUtils.createAttribute(S, n.ARRAY_BUFFER);\n    }\n    for (let _ = 0; _ < h.length; _++) {\n      const S = h[_].attribute;\n      this.has(S) || this.attributeUtils.createAttribute(S, n.ARRAY_BUFFER);\n      const A = this.get(S);\n      m.push(A);\n    }\n    this.set(e, {\n      programGPU: a,\n      transformBuffers: m,\n      attributes: f\n    });\n  }\n  /**\n   * Creates bindings from the given bind group definition.\n   *\n   * @param {BindGroup} bindGroup - The bind group.\n   * @param {Array<BindGroup>} bindings - Array of bind groups.\n   * @param {Number} cacheIndex - The cache index.\n   * @param {Number} version - The version.\n   */\n  createBindings(e, t) {\n    if (this._knownBindings.has(t) === !1) {\n      this._knownBindings.add(t);\n      let s = 0, n = 0;\n      for (const r of t) {\n        this.set(r, {\n          textures: n,\n          uniformBuffers: s\n        });\n        for (const i of r.bindings)\n          i.isUniformBuffer && s++, i.isSampledTexture && n++;\n      }\n    }\n    this.updateBindings(e, t);\n  }\n  /**\n   * Updates the given bind group definition.\n   *\n   * @param {BindGroup} bindGroup - The bind group.\n   * @param {Array<BindGroup>} bindings - Array of bind groups.\n   * @param {Number} cacheIndex - The cache index.\n   * @param {Number} version - The version.\n   */\n  updateBindings(e) {\n    const { gl: t } = this, s = this.get(e);\n    let n = s.uniformBuffers, r = s.textures;\n    for (const i of e.bindings)\n      if (i.isUniformsGroup || i.isUniformBuffer) {\n        const a = i.buffer, u = t.createBuffer();\n        t.bindBuffer(t.UNIFORM_BUFFER, u), t.bufferData(t.UNIFORM_BUFFER, a, t.DYNAMIC_DRAW), this.set(i, {\n          index: n++,\n          bufferGPU: u\n        });\n      } else if (i.isSampledTexture) {\n        const { textureGPU: a, glTextureType: u } = this.get(i.texture);\n        this.set(i, {\n          index: r++,\n          textureGPU: a,\n          glTextureType: u\n        });\n      }\n  }\n  /**\n   * Updates a buffer binding.\n   *\n   *  @param {Buffer} binding - The buffer binding to update.\n   */\n  updateBinding(e) {\n    const t = this.gl;\n    if (e.isUniformsGroup || e.isUniformBuffer) {\n      const n = this.get(e).bufferGPU, r = e.buffer;\n      t.bindBuffer(t.UNIFORM_BUFFER, n), t.bufferData(t.UNIFORM_BUFFER, r, t.DYNAMIC_DRAW);\n    }\n  }\n  // attributes\n  /**\n   * Creates the buffer of an indexed shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The indexed buffer attribute.\n   */\n  createIndexAttribute(e) {\n    const t = this.gl;\n    this.attributeUtils.createAttribute(e, t.ELEMENT_ARRAY_BUFFER);\n  }\n  /**\n   * Creates the buffer of a shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  createAttribute(e) {\n    if (this.has(e)) return;\n    const t = this.gl;\n    this.attributeUtils.createAttribute(e, t.ARRAY_BUFFER);\n  }\n  /**\n   * Creates the buffer of a storage attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  createStorageAttribute(e) {\n    if (this.has(e)) return;\n    const t = this.gl;\n    this.attributeUtils.createAttribute(e, t.ARRAY_BUFFER);\n  }\n  /**\n   * Updates the buffer of a shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute to update.\n   */\n  updateAttribute(e) {\n    this.attributeUtils.updateAttribute(e);\n  }\n  /**\n   * Destroys the buffer of a shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute to destroy.\n   */\n  destroyAttribute(e) {\n    this.attributeUtils.destroyAttribute(e);\n  }\n  /**\n   * Checks if the given feature is supported  by the backend.\n   *\n   * @param {String} name - The feature's name.\n   * @return {Boolean} Whether the feature is supported or not.\n   */\n  hasFeature(e) {\n    const t = Object.keys(Bc).filter((n) => Bc[n] === e), s = this.extensions;\n    for (let n = 0; n < t.length; n++)\n      if (s.has(t[n])) return !0;\n    return !1;\n  }\n  /**\n   * Returns the maximum anisotropy texture filtering value.\n   *\n   * @return {Number} The maximum anisotropy texture filtering value.\n   */\n  getMaxAnisotropy() {\n    return this.capabilities.getMaxAnisotropy();\n  }\n  /**\n   * Copies data of the given source texture to the given destination texture.\n   *\n   * @param {Texture} srcTexture - The source texture.\n   * @param {Texture} dstTexture - The destination texture.\n   * @param {Vector4?} [srcRegion=null] - The region of the source texture to copy.\n   * @param {(Vector2|Vector3)?} [dstPosition=null] - The destination position of the copy.\n   * @param {Number} [level=0] - The mip level to copy.\n   */\n  copyTextureToTexture(e, t, s = null, n = null, r = 0) {\n    this.textureUtils.copyTextureToTexture(e, t, s, n, r);\n  }\n  /**\n   * Copies the current bound framebuffer to the given texture.\n   *\n   * @param {Texture} texture - The destination texture.\n   * @param {RenderContext} renderContext - The render context.\n   * @param {Vector4} rectangle - A four dimensional vector defining the origin and dimension of the copy.\n   */\n  copyFramebufferToTexture(e, t, s) {\n    this.textureUtils.copyFramebufferToTexture(e, t, s);\n  }\n  /**\n   * Configures the active framebuffer from the given render context.\n   *\n   * @private\n   * @param {RenderContext} descriptor - The render context.\n   */\n  _setFramebuffer(e) {\n    const { gl: t, state: s } = this;\n    let n = null;\n    if (e.textures !== null) {\n      const r = e.renderTarget, i = this.get(r), { samples: a, depthBuffer: u, stencilBuffer: c } = r, l = r.isWebGLCubeRenderTarget === !0, d = r.isRenderTarget3D === !0, h = r.isRenderTargetArray === !0;\n      let p = i.msaaFrameBuffer, f = i.depthRenderbuffer;\n      const m = Qp(e);\n      let _;\n      if (l ? (i.cubeFramebuffers || (i.cubeFramebuffers = {}), _ = i.cubeFramebuffers[m]) : (i.framebuffers || (i.framebuffers = {}), _ = i.framebuffers[m]), _ === void 0) {\n        _ = t.createFramebuffer(), s.bindFramebuffer(t.FRAMEBUFFER, _);\n        const S = e.textures;\n        if (l) {\n          i.cubeFramebuffers[m] = _;\n          const { textureGPU: A } = this.get(S[0]), M = this.renderer._activeCubeFace;\n          t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_CUBE_MAP_POSITIVE_X + M, A, 0);\n        } else {\n          i.framebuffers[m] = _;\n          for (let A = 0; A < S.length; A++) {\n            const M = S[A], F = this.get(M);\n            F.renderTarget = e.renderTarget, F.cacheKey = m;\n            const D = t.COLOR_ATTACHMENT0 + A;\n            if (d || h) {\n              const P = this.renderer._activeCubeFace;\n              t.framebufferTextureLayer(t.FRAMEBUFFER, D, F.textureGPU, 0, P);\n            } else\n              t.framebufferTexture2D(t.FRAMEBUFFER, D, t.TEXTURE_2D, F.textureGPU, 0);\n          }\n          s.drawBuffers(e, _);\n        }\n        if (e.depthTexture !== null) {\n          const A = this.get(e.depthTexture), M = c ? t.DEPTH_STENCIL_ATTACHMENT : t.DEPTH_ATTACHMENT;\n          A.renderTarget = e.renderTarget, A.cacheKey = m, t.framebufferTexture2D(t.FRAMEBUFFER, M, t.TEXTURE_2D, A.textureGPU, 0);\n        }\n      }\n      if (a > 0) {\n        if (p === void 0) {\n          const S = [];\n          p = t.createFramebuffer(), s.bindFramebuffer(t.FRAMEBUFFER, p);\n          const A = [], M = e.textures;\n          for (let F = 0; F < M.length; F++) {\n            if (A[F] = t.createRenderbuffer(), t.bindRenderbuffer(t.RENDERBUFFER, A[F]), S.push(t.COLOR_ATTACHMENT0 + F), u) {\n              const V = c ? t.DEPTH_STENCIL_ATTACHMENT : t.DEPTH_ATTACHMENT;\n              S.push(V);\n            }\n            const D = e.textures[F], P = this.get(D);\n            t.renderbufferStorageMultisample(t.RENDERBUFFER, a, P.glInternalFormat, e.width, e.height), t.framebufferRenderbuffer(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0 + F, t.RENDERBUFFER, A[F]);\n          }\n          if (i.msaaFrameBuffer = p, i.msaaRenderbuffers = A, f === void 0) {\n            f = t.createRenderbuffer(), this.textureUtils.setupRenderBufferStorage(f, e), i.depthRenderbuffer = f;\n            const F = c ? t.DEPTH_STENCIL_ATTACHMENT : t.DEPTH_ATTACHMENT;\n            S.push(F);\n          }\n          i.invalidationArray = S;\n        }\n        n = i.msaaFrameBuffer;\n      } else\n        n = _;\n    }\n    s.bindFramebuffer(t.FRAMEBUFFER, n);\n  }\n  /**\n   * Computes the VAO key for the given index and attributes.\n   *\n   * @private\n   * @param {BufferAttribute?} index - The index. `null` for non-indexed geometries.\n   * @param {Array<BufferAttribute>} attributes - An array of buffer attributes.\n   * @return {String} The VAO key.\n   */\n  _getVaoKey(e, t) {\n    let s = \"\";\n    if (e !== null) {\n      const n = this.get(e);\n      s += \":\" + n.id;\n    }\n    for (let n = 0; n < t.length; n++) {\n      const r = this.get(t[n]);\n      s += \":\" + r.id;\n    }\n    return s;\n  }\n  /**\n   * Creates a VAO from the index and attributes.\n   *\n   * @private\n   * @param {BufferAttribute?} index - The index. `null` for non-indexed geometries.\n   * @param {Array<BufferAttribute>} attributes - An array of buffer attributes.\n   * @return {Object} The VAO data.\n   */\n  _createVao(e, t) {\n    const { gl: s } = this, n = s.createVertexArray();\n    let r = \"\", i = !0;\n    if (s.bindVertexArray(n), e !== null) {\n      const a = this.get(e);\n      s.bindBuffer(s.ELEMENT_ARRAY_BUFFER, a.bufferGPU), r += \":\" + a.id;\n    }\n    for (let a = 0; a < t.length; a++) {\n      const u = t[a], c = this.get(u);\n      r += \":\" + c.id, s.bindBuffer(s.ARRAY_BUFFER, c.bufferGPU), s.enableVertexAttribArray(a), (u.isStorageBufferAttribute || u.isStorageInstancedBufferAttribute) && (i = !1);\n      let l, d;\n      u.isInterleavedBufferAttribute === !0 ? (l = u.data.stride * c.bytesPerElement, d = u.offset * c.bytesPerElement) : (l = 0, d = 0), c.isInteger ? s.vertexAttribIPointer(a, u.itemSize, c.type, l, d) : s.vertexAttribPointer(a, u.itemSize, c.type, u.normalized, l, d), u.isInstancedBufferAttribute && !u.isInterleavedBufferAttribute ? s.vertexAttribDivisor(a, u.meshPerAttribute) : u.isInterleavedBufferAttribute && u.data.isInstancedInterleavedBuffer && s.vertexAttribDivisor(a, u.data.meshPerAttribute);\n    }\n    return s.bindBuffer(s.ARRAY_BUFFER, null), this.vaoCache[r] = n, { vaoGPU: n, staticVao: i };\n  }\n  /**\n   * Creates a tranform feedback from the given transform buffers.\n   *\n   * @private\n   * @param {Array<DualAttributeData>} transformBuffers - The tranform buffers.\n   * @return {WebGLTransformFeedback} The tranform feedback.\n   */\n  _getTransformFeedback(e) {\n    let t = \"\";\n    for (let r = 0; r < e.length; r++)\n      t += \":\" + e[r].id;\n    let s = this.transformFeedbackCache[t];\n    if (s !== void 0)\n      return s;\n    const { gl: n } = this;\n    s = n.createTransformFeedback(), n.bindTransformFeedback(n.TRANSFORM_FEEDBACK, s);\n    for (let r = 0; r < e.length; r++) {\n      const i = e[r];\n      n.bindBufferBase(n.TRANSFORM_FEEDBACK_BUFFER, r, i.transformBuffer);\n    }\n    return n.bindTransformFeedback(n.TRANSFORM_FEEDBACK, null), this.transformFeedbackCache[t] = s, s;\n  }\n  /**\n   * Setups the given bindings.\n   *\n   * @private\n   * @param {Array<BindGroup>} bindings - The bindings.\n   * @param {WebGLProgram} programGPU - The WebGL program.\n   */\n  _setupBindings(e, t) {\n    const s = this.gl;\n    for (const n of e)\n      for (const r of n.bindings) {\n        const a = this.get(r).index;\n        if (r.isUniformsGroup || r.isUniformBuffer) {\n          const u = s.getUniformBlockIndex(t, r.name);\n          s.uniformBlockBinding(t, u, a);\n        } else if (r.isSampledTexture) {\n          const u = s.getUniformLocation(t, r.name);\n          s.uniform1i(u, a);\n        }\n      }\n  }\n  /**\n   * Binds the given uniforms.\n   *\n   * @private\n   * @param {Array<BindGroup>} bindings - The bindings.\n   */\n  _bindUniforms(e) {\n    const { gl: t, state: s } = this;\n    for (const n of e)\n      for (const r of n.bindings) {\n        const i = this.get(r), a = i.index;\n        r.isUniformsGroup || r.isUniformBuffer ? s.bindBufferBase(t.UNIFORM_BUFFER, a, i.bufferGPU) : r.isSampledTexture && s.bindTexture(i.glTextureType, i.textureGPU, t.TEXTURE0 + a);\n      }\n  }\n  /**\n   * Frees internal resources.\n   */\n  dispose() {\n    this.renderer.domElement.removeEventListener(\"webglcontextlost\", this._onContextLost);\n  }\n}\nconst ks = {\n  PointList: \"point-list\",\n  LineList: \"line-list\",\n  LineStrip: \"line-strip\",\n  TriangleList: \"triangle-list\",\n  TriangleStrip: \"triangle-strip\"\n}, we = {\n  Never: \"never\",\n  Less: \"less\",\n  Equal: \"equal\",\n  LessEqual: \"less-equal\",\n  Greater: \"greater\",\n  NotEqual: \"not-equal\",\n  GreaterEqual: \"greater-equal\",\n  Always: \"always\"\n}, Fe = {\n  Store: \"store\",\n  Discard: \"discard\"\n}, ye = {\n  Load: \"load\",\n  Clear: \"clear\"\n}, oo = {\n  CCW: \"ccw\",\n  CW: \"cw\"\n}, ao = {\n  None: \"none\",\n  Front: \"front\",\n  Back: \"back\"\n}, tn = {\n  Uint16: \"uint16\",\n  Uint32: \"uint32\"\n}, x = {\n  // 8-bit formats\n  R8Unorm: \"r8unorm\",\n  R8Snorm: \"r8snorm\",\n  R8Uint: \"r8uint\",\n  R8Sint: \"r8sint\",\n  // 16-bit formats\n  R16Uint: \"r16uint\",\n  R16Sint: \"r16sint\",\n  R16Float: \"r16float\",\n  RG8Unorm: \"rg8unorm\",\n  RG8Snorm: \"rg8snorm\",\n  RG8Uint: \"rg8uint\",\n  RG8Sint: \"rg8sint\",\n  // 32-bit formats\n  R32Uint: \"r32uint\",\n  R32Sint: \"r32sint\",\n  R32Float: \"r32float\",\n  RG16Uint: \"rg16uint\",\n  RG16Sint: \"rg16sint\",\n  RG16Float: \"rg16float\",\n  RGBA8Unorm: \"rgba8unorm\",\n  RGBA8UnormSRGB: \"rgba8unorm-srgb\",\n  RGBA8Snorm: \"rgba8snorm\",\n  RGBA8Uint: \"rgba8uint\",\n  RGBA8Sint: \"rgba8sint\",\n  BGRA8Unorm: \"bgra8unorm\",\n  BGRA8UnormSRGB: \"bgra8unorm-srgb\",\n  // Packed 32-bit formats\n  RGB9E5UFloat: \"rgb9e5ufloat\",\n  RGB10A2Unorm: \"rgb10a2unorm\",\n  RG11B10uFloat: \"rgb10a2unorm\",\n  // 64-bit formats\n  RG32Uint: \"rg32uint\",\n  RG32Sint: \"rg32sint\",\n  RG32Float: \"rg32float\",\n  RGBA16Uint: \"rgba16uint\",\n  RGBA16Sint: \"rgba16sint\",\n  RGBA16Float: \"rgba16float\",\n  // 128-bit formats\n  RGBA32Uint: \"rgba32uint\",\n  RGBA32Sint: \"rgba32sint\",\n  RGBA32Float: \"rgba32float\",\n  // Depth and stencil formats\n  Stencil8: \"stencil8\",\n  Depth16Unorm: \"depth16unorm\",\n  Depth24Plus: \"depth24plus\",\n  Depth24PlusStencil8: \"depth24plus-stencil8\",\n  Depth32Float: \"depth32float\",\n  // 'depth32float-stencil8' extension\n  Depth32FloatStencil8: \"depth32float-stencil8\",\n  // BC compressed formats usable if 'texture-compression-bc' is both\n  // supported by the device/user agent and enabled in requestDevice.\n  BC1RGBAUnorm: \"bc1-rgba-unorm\",\n  BC1RGBAUnormSRGB: \"bc1-rgba-unorm-srgb\",\n  BC2RGBAUnorm: \"bc2-rgba-unorm\",\n  BC2RGBAUnormSRGB: \"bc2-rgba-unorm-srgb\",\n  BC3RGBAUnorm: \"bc3-rgba-unorm\",\n  BC3RGBAUnormSRGB: \"bc3-rgba-unorm-srgb\",\n  BC4RUnorm: \"bc4-r-unorm\",\n  BC4RSnorm: \"bc4-r-snorm\",\n  BC5RGUnorm: \"bc5-rg-unorm\",\n  BC5RGSnorm: \"bc5-rg-snorm\",\n  BC6HRGBUFloat: \"bc6h-rgb-ufloat\",\n  BC6HRGBFloat: \"bc6h-rgb-float\",\n  BC7RGBAUnorm: \"bc7-rgba-unorm\",\n  BC7RGBAUnormSRGB: \"bc7-rgba-srgb\",\n  // ETC2 compressed formats usable if 'texture-compression-etc2' is both\n  // supported by the device/user agent and enabled in requestDevice.\n  ETC2RGB8Unorm: \"etc2-rgb8unorm\",\n  ETC2RGB8UnormSRGB: \"etc2-rgb8unorm-srgb\",\n  ETC2RGB8A1Unorm: \"etc2-rgb8a1unorm\",\n  ETC2RGB8A1UnormSRGB: \"etc2-rgb8a1unorm-srgb\",\n  ETC2RGBA8Unorm: \"etc2-rgba8unorm\",\n  ETC2RGBA8UnormSRGB: \"etc2-rgba8unorm-srgb\",\n  EACR11Unorm: \"eac-r11unorm\",\n  EACR11Snorm: \"eac-r11snorm\",\n  EACRG11Unorm: \"eac-rg11unorm\",\n  EACRG11Snorm: \"eac-rg11snorm\",\n  // ASTC compressed formats usable if 'texture-compression-astc' is both\n  // supported by the device/user agent and enabled in requestDevice.\n  ASTC4x4Unorm: \"astc-4x4-unorm\",\n  ASTC4x4UnormSRGB: \"astc-4x4-unorm-srgb\",\n  ASTC5x4Unorm: \"astc-5x4-unorm\",\n  ASTC5x4UnormSRGB: \"astc-5x4-unorm-srgb\",\n  ASTC5x5Unorm: \"astc-5x5-unorm\",\n  ASTC5x5UnormSRGB: \"astc-5x5-unorm-srgb\",\n  ASTC6x5Unorm: \"astc-6x5-unorm\",\n  ASTC6x5UnormSRGB: \"astc-6x5-unorm-srgb\",\n  ASTC6x6Unorm: \"astc-6x6-unorm\",\n  ASTC6x6UnormSRGB: \"astc-6x6-unorm-srgb\",\n  ASTC8x5Unorm: \"astc-8x5-unorm\",\n  ASTC8x5UnormSRGB: \"astc-8x5-unorm-srgb\",\n  ASTC8x6Unorm: \"astc-8x6-unorm\",\n  ASTC8x6UnormSRGB: \"astc-8x6-unorm-srgb\",\n  ASTC8x8Unorm: \"astc-8x8-unorm\",\n  ASTC8x8UnormSRGB: \"astc-8x8-unorm-srgb\",\n  ASTC10x5Unorm: \"astc-10x5-unorm\",\n  ASTC10x5UnormSRGB: \"astc-10x5-unorm-srgb\",\n  ASTC10x6Unorm: \"astc-10x6-unorm\",\n  ASTC10x6UnormSRGB: \"astc-10x6-unorm-srgb\",\n  ASTC10x8Unorm: \"astc-10x8-unorm\",\n  ASTC10x8UnormSRGB: \"astc-10x8-unorm-srgb\",\n  ASTC10x10Unorm: \"astc-10x10-unorm\",\n  ASTC10x10UnormSRGB: \"astc-10x10-unorm-srgb\",\n  ASTC12x10Unorm: \"astc-12x10-unorm\",\n  ASTC12x10UnormSRGB: \"astc-12x10-unorm-srgb\",\n  ASTC12x12Unorm: \"astc-12x12-unorm\",\n  ASTC12x12UnormSRGB: \"astc-12x12-unorm-srgb\"\n}, uo = {\n  ClampToEdge: \"clamp-to-edge\",\n  Repeat: \"repeat\",\n  MirrorRepeat: \"mirror-repeat\"\n}, os = {\n  Linear: \"linear\",\n  Nearest: \"nearest\"\n}, W = {\n  Zero: \"zero\",\n  One: \"one\",\n  Src: \"src\",\n  OneMinusSrc: \"one-minus-src\",\n  SrcAlpha: \"src-alpha\",\n  OneMinusSrcAlpha: \"one-minus-src-alpha\",\n  Dst: \"dst\",\n  OneMinusDstColor: \"one-minus-dst\",\n  DstAlpha: \"dst-alpha\",\n  OneMinusDstAlpha: \"one-minus-dst-alpha\",\n  SrcAlphaSaturated: \"src-alpha-saturated\",\n  Constant: \"constant\",\n  OneMinusConstant: \"one-minus-constant\"\n}, ns = {\n  Add: \"add\",\n  Subtract: \"subtract\",\n  ReverseSubtract: \"reverse-subtract\",\n  Min: \"min\",\n  Max: \"max\"\n}, Uc = {\n  None: 0,\n  Red: 1,\n  Green: 2,\n  Blue: 4,\n  Alpha: 8,\n  All: 15\n}, Wt = {\n  Keep: \"keep\",\n  Zero: \"zero\",\n  Replace: \"replace\",\n  Invert: \"invert\",\n  IncrementClamp: \"increment-clamp\",\n  DecrementClamp: \"decrement-clamp\",\n  IncrementWrap: \"increment-wrap\",\n  DecrementWrap: \"decrement-wrap\"\n}, co = {\n  Uniform: \"uniform\",\n  Storage: \"storage\",\n  ReadOnlyStorage: \"read-only-storage\"\n}, lo = {\n  WriteOnly: \"write-only\",\n  ReadOnly: \"read-only\",\n  ReadWrite: \"read-write\"\n}, Bs = {\n  Float: \"float\",\n  UnfilterableFloat: \"unfilterable-float\",\n  Depth: \"depth\",\n  SInt: \"sint\",\n  UInt: \"uint\"\n}, Pc = {\n  OneD: \"1d\",\n  TwoD: \"2d\",\n  ThreeD: \"3d\"\n}, Oe = {\n  OneD: \"1d\",\n  TwoD: \"2d\",\n  TwoDArray: \"2d-array\",\n  Cube: \"cube\",\n  CubeArray: \"cube-array\",\n  ThreeD: \"3d\"\n}, _A = {\n  All: \"all\",\n  StencilOnly: \"stencil-only\",\n  DepthOnly: \"depth-only\"\n}, br = {\n  Vertex: \"vertex\",\n  Instance: \"instance\"\n}, Qo = {\n  DepthClipControl: \"depth-clip-control\",\n  Depth32FloatStencil8: \"depth32float-stencil8\",\n  TextureCompressionBC: \"texture-compression-bc\",\n  TextureCompressionETC2: \"texture-compression-etc2\",\n  TextureCompressionASTC: \"texture-compression-astc\",\n  TimestampQuery: \"timestamp-query\",\n  IndirectFirstInstance: \"indirect-first-instance\",\n  ShaderF16: \"shader-f16\",\n  RG11B10UFloat: \"rg11b10ufloat-renderable\",\n  BGRA8UNormStorage: \"bgra8unorm-storage\",\n  Float32Filterable: \"float32-filterable\",\n  ClipDistances: \"clip-distances\",\n  DualSourceBlending: \"dual-source-blending\",\n  Subgroups: \"subgroups\"\n};\nclass NA extends Nu {\n  /**\n   * Constructs a new sampler.\n   *\n   * @param {String} name - The samplers's name.\n   * @param {Texture?} texture - The texture this binding is referring to.\n   */\n  constructor(e, t) {\n    super(e), this.texture = t, this.version = t ? t.version : 0, this.isSampler = !0;\n  }\n}\nclass bA extends NA {\n  /**\n   * Constructs a new node-based sampler.\n   *\n   * @param {String} name - The samplers's name.\n   * @param {TextureNode} textureNode - The texture node.\n   * @param {UniformGroupNode} groupNode - The uniform group node.\n   */\n  constructor(e, t, s) {\n    super(e, t ? t.value : null), this.textureNode = t, this.groupNode = s;\n  }\n  /**\n   * Updates the texture value of this sampler.\n   */\n  update() {\n    this.texture = this.textureNode.value;\n  }\n}\nclass SA extends jf {\n  /**\n   * Constructs a new uniform buffer.\n   *\n   * @param {String} name - The buffer's name.\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  constructor(e, t) {\n    super(e, t ? t.array : null), this.attribute = t, this.isStorageBuffer = !0;\n  }\n}\nlet vA = 0;\nclass AA extends SA {\n  /**\n   * Constructs a new node-based storage buffer.\n   *\n   * @param {StorageBufferNode} nodeUniform - The storage buffer node.\n   * @param {UniformGroupNode} groupNode - The uniform group node.\n   */\n  constructor(e, t) {\n    super(\"StorageBuffer_\" + vA++, e ? e.value : null), this.nodeUniform = e, this.access = e ? e.access : De.READ_WRITE, this.groupNode = t;\n  }\n  /**\n   * The storage buffer.\n   *\n   * @type {BufferAttribute}\n   */\n  get buffer() {\n    return this.nodeUniform.value;\n  }\n}\nclass RA extends Jt {\n  constructor(e) {\n    super(), this.device = e;\n    const t = `\nstruct VarysStruct {\n\t@builtin( position ) Position: vec4<f32>,\n\t@location( 0 ) vTex : vec2<f32>\n};\n\n@vertex\nfn main( @builtin( vertex_index ) vertexIndex : u32 ) -> VarysStruct {\n\n\tvar Varys : VarysStruct;\n\n\tvar pos = array< vec2<f32>, 4 >(\n\t\tvec2<f32>( -1.0,  1.0 ),\n\t\tvec2<f32>(  1.0,  1.0 ),\n\t\tvec2<f32>( -1.0, -1.0 ),\n\t\tvec2<f32>(  1.0, -1.0 )\n\t);\n\n\tvar tex = array< vec2<f32>, 4 >(\n\t\tvec2<f32>( 0.0, 0.0 ),\n\t\tvec2<f32>( 1.0, 0.0 ),\n\t\tvec2<f32>( 0.0, 1.0 ),\n\t\tvec2<f32>( 1.0, 1.0 )\n\t);\n\n\tVarys.vTex = tex[ vertexIndex ];\n\tVarys.Position = vec4<f32>( pos[ vertexIndex ], 0.0, 1.0 );\n\n\treturn Varys;\n\n}\n`, s = `\n@group( 0 ) @binding( 0 )\nvar imgSampler : sampler;\n\n@group( 0 ) @binding( 1 )\nvar img : texture_2d<f32>;\n\n@fragment\nfn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {\n\n\treturn textureSample( img, imgSampler, vTex );\n\n}\n`, n = `\n@group( 0 ) @binding( 0 )\nvar imgSampler : sampler;\n\n@group( 0 ) @binding( 1 )\nvar img : texture_2d<f32>;\n\n@fragment\nfn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {\n\n\treturn textureSample( img, imgSampler, vec2( vTex.x, 1.0 - vTex.y ) );\n\n}\n`;\n    this.mipmapSampler = e.createSampler({ minFilter: os.Linear }), this.flipYSampler = e.createSampler({ minFilter: os.Nearest }), this.transferPipelines = {}, this.flipYPipelines = {}, this.mipmapVertexShaderModule = e.createShaderModule({\n      label: \"mipmapVertex\",\n      code: t\n    }), this.mipmapFragmentShaderModule = e.createShaderModule({\n      label: \"mipmapFragment\",\n      code: s\n    }), this.flipYFragmentShaderModule = e.createShaderModule({\n      label: \"flipYFragment\",\n      code: n\n    });\n  }\n  getTransferPipeline(e) {\n    let t = this.transferPipelines[e];\n    return t === void 0 && (t = this.device.createRenderPipeline({\n      label: `mipmap-${e}`,\n      vertex: {\n        module: this.mipmapVertexShaderModule,\n        entryPoint: \"main\"\n      },\n      fragment: {\n        module: this.mipmapFragmentShaderModule,\n        entryPoint: \"main\",\n        targets: [{ format: e }]\n      },\n      primitive: {\n        topology: ks.TriangleStrip,\n        stripIndexFormat: tn.Uint32\n      },\n      layout: \"auto\"\n    }), this.transferPipelines[e] = t), t;\n  }\n  getFlipYPipeline(e) {\n    let t = this.flipYPipelines[e];\n    return t === void 0 && (t = this.device.createRenderPipeline({\n      label: `flipY-${e}`,\n      vertex: {\n        module: this.mipmapVertexShaderModule,\n        entryPoint: \"main\"\n      },\n      fragment: {\n        module: this.flipYFragmentShaderModule,\n        entryPoint: \"main\",\n        targets: [{ format: e }]\n      },\n      primitive: {\n        topology: ks.TriangleStrip,\n        stripIndexFormat: tn.Uint32\n      },\n      layout: \"auto\"\n    }), this.flipYPipelines[e] = t), t;\n  }\n  flipY(e, t, s = 0) {\n    const n = t.format, { width: r, height: i } = t.size, a = this.getTransferPipeline(n), u = this.getFlipYPipeline(n), c = this.device.createTexture({\n      size: { width: r, height: i, depthOrArrayLayers: 1 },\n      format: n,\n      usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING\n    }), l = e.createView({\n      baseMipLevel: 0,\n      mipLevelCount: 1,\n      dimension: Oe.TwoD,\n      baseArrayLayer: s\n    }), d = c.createView({\n      baseMipLevel: 0,\n      mipLevelCount: 1,\n      dimension: Oe.TwoD,\n      baseArrayLayer: 0\n    }), h = this.device.createCommandEncoder({}), p = (f, m, _) => {\n      const S = f.getBindGroupLayout(0), A = this.device.createBindGroup({\n        layout: S,\n        entries: [{\n          binding: 0,\n          resource: this.flipYSampler\n        }, {\n          binding: 1,\n          resource: m\n        }]\n      }), M = h.beginRenderPass({\n        colorAttachments: [{\n          view: _,\n          loadOp: ye.Clear,\n          storeOp: Fe.Store,\n          clearValue: [0, 0, 0, 0]\n        }]\n      });\n      M.setPipeline(f), M.setBindGroup(0, A), M.draw(4, 1, 0, 0), M.end();\n    };\n    p(a, l, d), p(u, d, l), this.device.queue.submit([h.finish()]), c.destroy();\n  }\n  generateMipmaps(e, t, s = 0) {\n    const n = this.get(e);\n    n.useCount === void 0 && (n.useCount = 0, n.layers = []);\n    const r = n.layers[s] || this._mipmapCreateBundles(e, t, s), i = this.device.createCommandEncoder({});\n    this._mipmapRunBundles(i, r), this.device.queue.submit([i.finish()]), n.useCount !== 0 && (n.layers[s] = r), n.useCount++;\n  }\n  _mipmapCreateBundles(e, t, s) {\n    const n = this.getTransferPipeline(t.format), r = n.getBindGroupLayout(0);\n    let i = e.createView({\n      baseMipLevel: 0,\n      mipLevelCount: 1,\n      dimension: Oe.TwoD,\n      baseArrayLayer: s\n    });\n    const a = [];\n    for (let u = 1; u < t.mipLevelCount; u++) {\n      const c = this.device.createBindGroup({\n        layout: r,\n        entries: [{\n          binding: 0,\n          resource: this.mipmapSampler\n        }, {\n          binding: 1,\n          resource: i\n        }]\n      }), l = e.createView({\n        baseMipLevel: u,\n        mipLevelCount: 1,\n        dimension: Oe.TwoD,\n        baseArrayLayer: s\n      }), d = {\n        colorAttachments: [{\n          view: l,\n          loadOp: ye.Clear,\n          storeOp: Fe.Store,\n          clearValue: [0, 0, 0, 0]\n        }]\n      }, h = this.device.createRenderBundleEncoder({\n        colorFormats: [t.format]\n      });\n      h.setPipeline(n), h.setBindGroup(0, c), h.draw(4, 1, 0, 0), a.push({\n        renderBundles: [h.finish()],\n        passDescriptor: d\n      }), i = l;\n    }\n    return a;\n  }\n  _mipmapRunBundles(e, t) {\n    const s = t.length;\n    for (let n = 0; n < s; n++) {\n      const r = t[n], i = e.beginRenderPass(r.passDescriptor);\n      i.executeBundles(r.renderBundles), i.end();\n    }\n  }\n}\nconst CA = {\n  [gl]: \"never\",\n  [ia]: \"less\",\n  [xl]: \"equal\",\n  [yl]: \"less-equal\",\n  [_l]: \"greater\",\n  [Tl]: \"greater-equal\",\n  [ml]: \"always\",\n  [Nl]: \"not-equal\"\n}, EA = [0, 1, 3, 2, 4, 5];\nclass wA {\n  constructor(e) {\n    this.backend = e, this._passUtils = null, this.defaultTexture = {}, this.defaultCubeTexture = {}, this.defaultVideoFrame = null, this.colorBuffer = null, this.depthTexture = new ys(), this.depthTexture.name = \"depthBuffer\";\n  }\n  createSampler(e) {\n    const t = this.backend, s = t.device, n = t.get(e), r = {\n      addressModeU: this._convertAddressMode(e.wrapS),\n      addressModeV: this._convertAddressMode(e.wrapT),\n      addressModeW: this._convertAddressMode(e.wrapR),\n      magFilter: this._convertFilterMode(e.magFilter),\n      minFilter: this._convertFilterMode(e.minFilter),\n      mipmapFilter: this._convertFilterMode(e.minFilter),\n      maxAnisotropy: 1\n    };\n    r.magFilter === os.Linear && r.minFilter === os.Linear && r.mipmapFilter === os.Linear && (r.maxAnisotropy = e.anisotropy), e.isDepthTexture && e.compareFunction !== null && (r.compare = CA[e.compareFunction]), n.sampler = s.createSampler(r);\n  }\n  createDefaultTexture(e) {\n    let t;\n    const s = Zo(e);\n    e.isCubeTexture ? t = this._getDefaultCubeTextureGPU(s) : e.isVideoTexture ? this.backend.get(e).externalTexture = this._getDefaultVideoFrame() : t = this._getDefaultTextureGPU(s), this.backend.get(e).texture = t;\n  }\n  createTexture(e, t = {}) {\n    const s = this.backend, n = s.get(e);\n    if (n.initialized)\n      throw new Error(\"WebGPUTextureUtils: Texture already initialized.\");\n    t.needsMipmaps === void 0 && (t.needsMipmaps = !1), t.levels === void 0 && (t.levels = 1), t.depth === void 0 && (t.depth = 1);\n    const { width: r, height: i, depth: a, levels: u } = t;\n    e.isFramebufferTexture && (t.renderTarget ? t.format = this.backend.utils.getCurrentColorFormat(t.renderTarget) : t.format = this.backend.utils.getPreferredCanvasFormat());\n    const c = this._getDimension(e), l = e.internalFormat || t.format || Zo(e, s.device);\n    n.format = l;\n    const { samples: d, primarySamples: h, isMSAA: p } = s.utils.getTextureSampleData(e);\n    let f = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC;\n    e.isStorageTexture === !0 && (f |= GPUTextureUsage.STORAGE_BINDING), e.isCompressedTexture !== !0 && e.isCompressedArrayTexture !== !0 && (f |= GPUTextureUsage.RENDER_ATTACHMENT);\n    const m = {\n      label: e.name,\n      size: {\n        width: r,\n        height: i,\n        depthOrArrayLayers: a\n      },\n      mipLevelCount: u,\n      sampleCount: h,\n      dimension: c,\n      format: l,\n      usage: f\n    };\n    if (e.isVideoTexture) {\n      const _ = e.source.data, S = new VideoFrame(_);\n      m.size.width = S.displayWidth, m.size.height = S.displayHeight, S.close(), n.externalTexture = _;\n    } else {\n      if (l === void 0)\n        return console.warn(\"WebGPURenderer: Texture format not supported.\"), this.createDefaultTexture(e);\n      n.texture = s.device.createTexture(m);\n    }\n    if (p) {\n      const _ = Object.assign({}, m);\n      _.label = _.label + \"-msaa\", _.sampleCount = d, n.msaaTexture = s.device.createTexture(_);\n    }\n    n.initialized = !0, n.textureDescriptorGPU = m;\n  }\n  destroyTexture(e) {\n    const t = this.backend, s = t.get(e);\n    s.texture !== void 0 && s.texture.destroy(), s.msaaTexture !== void 0 && s.msaaTexture.destroy(), t.delete(e);\n  }\n  destroySampler(e) {\n    const s = this.backend.get(e);\n    delete s.sampler;\n  }\n  generateMipmaps(e) {\n    const t = this.backend.get(e);\n    if (e.isCubeTexture)\n      for (let s = 0; s < 6; s++)\n        this._generateMipmaps(t.texture, t.textureDescriptorGPU, s);\n    else {\n      const s = e.image.depth || 1;\n      for (let n = 0; n < s; n++)\n        this._generateMipmaps(t.texture, t.textureDescriptorGPU, n);\n    }\n  }\n  getColorBuffer() {\n    this.colorBuffer && this.colorBuffer.destroy();\n    const e = this.backend, { width: t, height: s } = e.getDrawingBufferSize();\n    return this.colorBuffer = e.device.createTexture({\n      label: \"colorBuffer\",\n      size: {\n        width: t,\n        height: s,\n        depthOrArrayLayers: 1\n      },\n      sampleCount: e.utils.getSampleCount(e.renderer.samples),\n      format: e.utils.getPreferredCanvasFormat(),\n      usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC\n    }), this.colorBuffer;\n  }\n  getDepthBuffer(e = !0, t = !1) {\n    const s = this.backend, { width: n, height: r } = s.getDrawingBufferSize(), i = this.depthTexture, a = s.get(i).texture;\n    let u, c;\n    if (t ? (u = Zr, c = ei) : e && (u = Jr, c = Pe), a !== void 0) {\n      if (i.image.width === n && i.image.height === r && i.format === u && i.type === c)\n        return a;\n      this.destroyTexture(i);\n    }\n    return i.name = \"depthBuffer\", i.format = u, i.type = c, i.image.width = n, i.image.height = r, this.createTexture(i, { width: n, height: r }), s.get(i).texture;\n  }\n  updateTexture(e, t) {\n    const s = this.backend.get(e), { textureDescriptorGPU: n } = s;\n    if (!(e.isRenderTargetTexture || n === void 0)) {\n      if (e.isDataTexture)\n        this._copyBufferToTexture(t.image, s.texture, n, 0, e.flipY);\n      else if (e.isDataArrayTexture || e.isData3DTexture)\n        for (let r = 0; r < t.image.depth; r++)\n          this._copyBufferToTexture(t.image, s.texture, n, r, e.flipY, r);\n      else if (e.isCompressedTexture || e.isCompressedArrayTexture)\n        this._copyCompressedBufferToTexture(e.mipmaps, s.texture, n);\n      else if (e.isCubeTexture)\n        this._copyCubeMapToTexture(t.images, s.texture, n, e.flipY);\n      else if (e.isVideoTexture) {\n        const r = e.source.data;\n        s.externalTexture = r;\n      } else\n        this._copyImageToTexture(t.image, s.texture, n, 0, e.flipY);\n      s.version = e.version, e.onUpdate && e.onUpdate(e);\n    }\n  }\n  async copyTextureToBuffer(e, t, s, n, r, i) {\n    const a = this.backend.device, u = this.backend.get(e), c = u.texture, l = u.textureDescriptorGPU.format, d = this._getBytesPerTexel(l);\n    let h = n * d;\n    h = Math.ceil(h / 256) * 256;\n    const p = a.createBuffer(\n      {\n        size: n * r * d,\n        usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n      }\n    ), f = a.createCommandEncoder();\n    f.copyTextureToBuffer(\n      {\n        texture: c,\n        origin: { x: t, y: s, z: i }\n      },\n      {\n        buffer: p,\n        bytesPerRow: h\n      },\n      {\n        width: n,\n        height: r\n      }\n    );\n    const m = this._getTypedArrayType(l);\n    a.queue.submit([f.finish()]), await p.mapAsync(GPUMapMode.READ);\n    const _ = p.getMappedRange();\n    return new m(_);\n  }\n  _isEnvironmentTexture(e) {\n    const t = e.mapping;\n    return t === Wn || t === Hn || t === Ks || t === Ys;\n  }\n  _getDefaultTextureGPU(e) {\n    let t = this.defaultTexture[e];\n    if (t === void 0) {\n      const s = new vl();\n      s.minFilter = pt, s.magFilter = pt, this.createTexture(s, { width: 1, height: 1, format: e }), this.defaultTexture[e] = t = s;\n    }\n    return this.backend.get(t).texture;\n  }\n  _getDefaultCubeTextureGPU(e) {\n    let t = this.defaultTexture[e];\n    if (t === void 0) {\n      const s = new Sl();\n      s.minFilter = pt, s.magFilter = pt, this.createTexture(s, { width: 1, height: 1, depth: 6 }), this.defaultCubeTexture[e] = t = s;\n    }\n    return this.backend.get(t).texture;\n  }\n  _getDefaultVideoFrame() {\n    let e = this.defaultVideoFrame;\n    if (e === null) {\n      const t = {\n        timestamp: 0,\n        codedWidth: 1,\n        codedHeight: 1,\n        format: \"RGBA\"\n      };\n      this.defaultVideoFrame = e = new VideoFrame(new Uint8Array([0, 0, 0, 255]), t);\n    }\n    return e;\n  }\n  _copyCubeMapToTexture(e, t, s, n) {\n    for (let r = 0; r < 6; r++) {\n      const i = e[r], a = n === !0 ? EA[r] : r;\n      i.isDataTexture ? this._copyBufferToTexture(i.image, t, s, a, n) : this._copyImageToTexture(i, t, s, a, n);\n    }\n  }\n  _copyImageToTexture(e, t, s, n, r) {\n    this.backend.device.queue.copyExternalImageToTexture(\n      {\n        source: e\n      },\n      {\n        texture: t,\n        mipLevel: 0,\n        origin: { x: 0, y: 0, z: n }\n      },\n      {\n        width: e.width,\n        height: e.height,\n        depthOrArrayLayers: 1\n      }\n    ), r === !0 && this._flipY(t, s, n);\n  }\n  _getPassUtils() {\n    let e = this._passUtils;\n    return e === null && (this._passUtils = e = new RA(this.backend.device)), e;\n  }\n  _generateMipmaps(e, t, s = 0) {\n    this._getPassUtils().generateMipmaps(e, t, s);\n  }\n  _flipY(e, t, s = 0) {\n    this._getPassUtils().flipY(e, t, s);\n  }\n  _copyBufferToTexture(e, t, s, n, r, i = 0) {\n    const a = this.backend.device, u = e.data, c = this._getBytesPerTexel(s.format), l = e.width * c;\n    a.queue.writeTexture(\n      {\n        texture: t,\n        mipLevel: 0,\n        origin: { x: 0, y: 0, z: n }\n      },\n      u,\n      {\n        offset: e.width * e.height * c * i,\n        bytesPerRow: l\n      },\n      {\n        width: e.width,\n        height: e.height,\n        depthOrArrayLayers: 1\n      }\n    ), r === !0 && this._flipY(t, s, n);\n  }\n  _copyCompressedBufferToTexture(e, t, s) {\n    const n = this.backend.device, r = this._getBlockData(s.format), i = s.size.depthOrArrayLayers > 1;\n    for (let a = 0; a < e.length; a++) {\n      const u = e[a], c = u.width, l = u.height, d = i ? s.size.depthOrArrayLayers : 1, h = Math.ceil(c / r.width) * r.byteLength, p = h * Math.ceil(l / r.height);\n      for (let f = 0; f < d; f++)\n        n.queue.writeTexture(\n          {\n            texture: t,\n            mipLevel: a,\n            origin: { x: 0, y: 0, z: f }\n          },\n          u.data,\n          {\n            offset: f * p,\n            bytesPerRow: h,\n            rowsPerImage: Math.ceil(l / r.height)\n          },\n          {\n            width: Math.ceil(c / r.width) * r.width,\n            height: Math.ceil(l / r.height) * r.height,\n            depthOrArrayLayers: 1\n          }\n        );\n    }\n  }\n  _getBlockData(e) {\n    if (e === x.BC1RGBAUnorm || e === x.BC1RGBAUnormSRGB) return { byteLength: 8, width: 4, height: 4 };\n    if (e === x.BC2RGBAUnorm || e === x.BC2RGBAUnormSRGB) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.BC3RGBAUnorm || e === x.BC3RGBAUnormSRGB) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.BC4RUnorm || e === x.BC4RSNorm) return { byteLength: 8, width: 4, height: 4 };\n    if (e === x.BC5RGUnorm || e === x.BC5RGSnorm) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.BC6HRGBUFloat || e === x.BC6HRGBFloat) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.BC7RGBAUnorm || e === x.BC7RGBAUnormSRGB) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.ETC2RGB8Unorm || e === x.ETC2RGB8UnormSRGB) return { byteLength: 8, width: 4, height: 4 };\n    if (e === x.ETC2RGB8A1Unorm || e === x.ETC2RGB8A1UnormSRGB) return { byteLength: 8, width: 4, height: 4 };\n    if (e === x.ETC2RGBA8Unorm || e === x.ETC2RGBA8UnormSRGB) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.EACR11Unorm) return { byteLength: 8, width: 4, height: 4 };\n    if (e === x.EACR11Snorm) return { byteLength: 8, width: 4, height: 4 };\n    if (e === x.EACRG11Unorm) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.EACRG11Snorm) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.ASTC4x4Unorm || e === x.ASTC4x4UnormSRGB) return { byteLength: 16, width: 4, height: 4 };\n    if (e === x.ASTC5x4Unorm || e === x.ASTC5x4UnormSRGB) return { byteLength: 16, width: 5, height: 4 };\n    if (e === x.ASTC5x5Unorm || e === x.ASTC5x5UnormSRGB) return { byteLength: 16, width: 5, height: 5 };\n    if (e === x.ASTC6x5Unorm || e === x.ASTC6x5UnormSRGB) return { byteLength: 16, width: 6, height: 5 };\n    if (e === x.ASTC6x6Unorm || e === x.ASTC6x6UnormSRGB) return { byteLength: 16, width: 6, height: 6 };\n    if (e === x.ASTC8x5Unorm || e === x.ASTC8x5UnormSRGB) return { byteLength: 16, width: 8, height: 5 };\n    if (e === x.ASTC8x6Unorm || e === x.ASTC8x6UnormSRGB) return { byteLength: 16, width: 8, height: 6 };\n    if (e === x.ASTC8x8Unorm || e === x.ASTC8x8UnormSRGB) return { byteLength: 16, width: 8, height: 8 };\n    if (e === x.ASTC10x5Unorm || e === x.ASTC10x5UnormSRGB) return { byteLength: 16, width: 10, height: 5 };\n    if (e === x.ASTC10x6Unorm || e === x.ASTC10x6UnormSRGB) return { byteLength: 16, width: 10, height: 6 };\n    if (e === x.ASTC10x8Unorm || e === x.ASTC10x8UnormSRGB) return { byteLength: 16, width: 10, height: 8 };\n    if (e === x.ASTC10x10Unorm || e === x.ASTC10x10UnormSRGB) return { byteLength: 16, width: 10, height: 10 };\n    if (e === x.ASTC12x10Unorm || e === x.ASTC12x10UnormSRGB) return { byteLength: 16, width: 12, height: 10 };\n    if (e === x.ASTC12x12Unorm || e === x.ASTC12x12UnormSRGB) return { byteLength: 16, width: 12, height: 12 };\n  }\n  _convertAddressMode(e) {\n    let t = uo.ClampToEdge;\n    return e === ti ? t = uo.Repeat : e === si && (t = uo.MirrorRepeat), t;\n  }\n  _convertFilterMode(e) {\n    let t = os.Linear;\n    return (e === pt || e === Mo || e === Hs) && (t = os.Nearest), t;\n  }\n  _getBytesPerTexel(e) {\n    if (e === x.R8Unorm || e === x.R8Snorm || e === x.R8Uint || e === x.R8Sint) return 1;\n    if (e === x.R16Uint || e === x.R16Sint || e === x.R16Float || e === x.RG8Unorm || e === x.RG8Snorm || e === x.RG8Uint || e === x.RG8Sint) return 2;\n    if (e === x.R32Uint || e === x.R32Sint || e === x.R32Float || e === x.RG16Uint || e === x.RG16Sint || e === x.RG16Float || e === x.RGBA8Unorm || e === x.RGBA8UnormSRGB || e === x.RGBA8Snorm || e === x.RGBA8Uint || e === x.RGBA8Sint || e === x.BGRA8Unorm || e === x.BGRA8UnormSRGB || // Packed 32-bit formats\n    e === x.RGB9E5UFloat || e === x.RGB10A2Unorm || e === x.RG11B10UFloat || e === x.Depth32Float || e === x.Depth24Plus || e === x.Depth24PlusStencil8 || e === x.Depth32FloatStencil8) return 4;\n    if (e === x.RG32Uint || e === x.RG32Sint || e === x.RG32Float || e === x.RGBA16Uint || e === x.RGBA16Sint || e === x.RGBA16Float) return 8;\n    if (e === x.RGBA32Uint || e === x.RGBA32Sint || e === x.RGBA32Float) return 16;\n  }\n  _getTypedArrayType(e) {\n    if (e === x.R8Uint) return Uint8Array;\n    if (e === x.R8Sint) return Int8Array;\n    if (e === x.R8Unorm) return Uint8Array;\n    if (e === x.R8Snorm) return Int8Array;\n    if (e === x.RG8Uint) return Uint8Array;\n    if (e === x.RG8Sint) return Int8Array;\n    if (e === x.RG8Unorm) return Uint8Array;\n    if (e === x.RG8Snorm) return Int8Array;\n    if (e === x.RGBA8Uint) return Uint8Array;\n    if (e === x.RGBA8Sint) return Int8Array;\n    if (e === x.RGBA8Unorm) return Uint8Array;\n    if (e === x.RGBA8Snorm) return Int8Array;\n    if (e === x.R16Uint) return Uint16Array;\n    if (e === x.R16Sint) return Int16Array;\n    if (e === x.RG16Uint) return Uint16Array;\n    if (e === x.RG16Sint) return Int16Array;\n    if (e === x.RGBA16Uint) return Uint16Array;\n    if (e === x.RGBA16Sint) return Int16Array;\n    if (e === x.R16Float || e === x.RG16Float || e === x.RGBA16Float) return Uint16Array;\n    if (e === x.R32Uint) return Uint32Array;\n    if (e === x.R32Sint) return Int32Array;\n    if (e === x.R32Float) return Float32Array;\n    if (e === x.RG32Uint) return Uint32Array;\n    if (e === x.RG32Sint) return Int32Array;\n    if (e === x.RG32Float) return Float32Array;\n    if (e === x.RGBA32Uint) return Uint32Array;\n    if (e === x.RGBA32Sint) return Int32Array;\n    if (e === x.RGBA32Float) return Float32Array;\n    if (e === x.BGRA8Unorm || e === x.BGRA8UnormSRGB) return Uint8Array;\n    if (e === x.RGB10A2Unorm || e === x.RGB9E5UFloat || e === x.RG11B10UFloat) return Uint32Array;\n    if (e === x.Depth32Float) return Float32Array;\n    if (e === x.Depth24Plus || e === x.Depth24PlusStencil8) return Uint32Array;\n    if (e === x.Depth32FloatStencil8) return Float32Array;\n  }\n  _getDimension(e) {\n    let t;\n    return e.isData3DTexture ? t = Pc.ThreeD : t = Pc.TwoD, t;\n  }\n}\nfunction Zo(o, e = null) {\n  const t = o.format, s = o.type, n = o.colorSpace;\n  let r;\n  if (o.isCompressedTexture === !0 || o.isCompressedArrayTexture === !0)\n    switch (t) {\n      case vr:\n        r = n === q ? x.BC1RGBAUnormSRGB : x.BC1RGBAUnorm;\n        break;\n      case Ar:\n        r = n === q ? x.BC2RGBAUnormSRGB : x.BC2RGBAUnorm;\n        break;\n      case Rr:\n        r = n === q ? x.BC3RGBAUnormSRGB : x.BC3RGBAUnorm;\n        break;\n      case fo:\n        r = n === q ? x.ETC2RGB8UnormSRGB : x.ETC2RGB8Unorm;\n        break;\n      case go:\n        r = n === q ? x.ETC2RGBA8UnormSRGB : x.ETC2RGBA8Unorm;\n        break;\n      case mo:\n        r = n === q ? x.ASTC4x4UnormSRGB : x.ASTC4x4Unorm;\n        break;\n      case yo:\n        r = n === q ? x.ASTC5x4UnormSRGB : x.ASTC5x4Unorm;\n        break;\n      case xo:\n        r = n === q ? x.ASTC5x5UnormSRGB : x.ASTC5x5Unorm;\n        break;\n      case To:\n        r = n === q ? x.ASTC6x5UnormSRGB : x.ASTC6x5Unorm;\n        break;\n      case _o:\n        r = n === q ? x.ASTC6x6UnormSRGB : x.ASTC6x6Unorm;\n        break;\n      case No:\n        r = n === q ? x.ASTC8x5UnormSRGB : x.ASTC8x5Unorm;\n        break;\n      case bo:\n        r = n === q ? x.ASTC8x6UnormSRGB : x.ASTC8x6Unorm;\n        break;\n      case So:\n        r = n === q ? x.ASTC8x8UnormSRGB : x.ASTC8x8Unorm;\n        break;\n      case vo:\n        r = n === q ? x.ASTC10x5UnormSRGB : x.ASTC10x5Unorm;\n        break;\n      case Ao:\n        r = n === q ? x.ASTC10x6UnormSRGB : x.ASTC10x6Unorm;\n        break;\n      case Ro:\n        r = n === q ? x.ASTC10x8UnormSRGB : x.ASTC10x8Unorm;\n        break;\n      case Co:\n        r = n === q ? x.ASTC10x10UnormSRGB : x.ASTC10x10Unorm;\n        break;\n      case Eo:\n        r = n === q ? x.ASTC12x10UnormSRGB : x.ASTC12x10Unorm;\n        break;\n      case wo:\n        r = n === q ? x.ASTC12x12UnormSRGB : x.ASTC12x12Unorm;\n        break;\n      case Xs:\n        r = n === q ? x.RGBA8UnormSRGB : x.RGBA8Unorm;\n        break;\n      default:\n        console.error(\"WebGPURenderer: Unsupported texture format.\", t);\n    }\n  else\n    switch (t) {\n      case Xs:\n        switch (s) {\n          case Tn:\n            r = x.RGBA8Snorm;\n            break;\n          case _n:\n            r = x.RGBA16Sint;\n            break;\n          case Ls:\n            r = x.RGBA16Uint;\n            break;\n          case Pe:\n            r = x.RGBA32Uint;\n            break;\n          case Ve:\n            r = x.RGBA32Sint;\n            break;\n          case ls:\n            r = n === q ? x.RGBA8UnormSRGB : x.RGBA8Unorm;\n            break;\n          case at:\n            r = x.RGBA16Float;\n            break;\n          case st:\n            r = x.RGBA32Float;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with RGBAFormat.\", s);\n        }\n        break;\n      case Jo:\n        switch (s) {\n          case fl:\n            r = x.RGB9E5UFloat;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with RGBFormat.\", s);\n        }\n        break;\n      case ea:\n        switch (s) {\n          case Tn:\n            r = x.R8Snorm;\n            break;\n          case _n:\n            r = x.R16Sint;\n            break;\n          case Ls:\n            r = x.R16Uint;\n            break;\n          case Pe:\n            r = x.R32Uint;\n            break;\n          case Ve:\n            r = x.R32Sint;\n            break;\n          case ls:\n            r = x.R8Unorm;\n            break;\n          case at:\n            r = x.R16Float;\n            break;\n          case st:\n            r = x.R32Float;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with RedFormat.\", s);\n        }\n        break;\n      case Bn:\n        switch (s) {\n          case Tn:\n            r = x.RG8Snorm;\n            break;\n          case _n:\n            r = x.RG16Sint;\n            break;\n          case Ls:\n            r = x.RG16Uint;\n            break;\n          case Pe:\n            r = x.RG32Uint;\n            break;\n          case Ve:\n            r = x.RG32Sint;\n            break;\n          case ls:\n            r = x.RG8Unorm;\n            break;\n          case at:\n            r = x.RG16Float;\n            break;\n          case st:\n            r = x.RG32Float;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with RGFormat.\", s);\n        }\n        break;\n      case Jr:\n        switch (s) {\n          case Ls:\n            r = x.Depth16Unorm;\n            break;\n          case Pe:\n            r = x.Depth24Plus;\n            break;\n          case st:\n            r = x.Depth32Float;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with DepthFormat.\", s);\n        }\n        break;\n      case Zr:\n        switch (s) {\n          case ei:\n            r = x.Depth24PlusStencil8;\n            break;\n          case st:\n            e && e.features.has(Qo.Depth32FloatStencil8) === !1 && console.error('WebGPURenderer: Depth textures with DepthStencilFormat + FloatType can only be used with the \"depth32float-stencil8\" GPU feature.'), r = x.Depth32FloatStencil8;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with DepthStencilFormat.\", s);\n        }\n        break;\n      case ta:\n        switch (s) {\n          case Ve:\n            r = x.R32Sint;\n            break;\n          case Pe:\n            r = x.R32Uint;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with RedIntegerFormat.\", s);\n        }\n        break;\n      case sa:\n        switch (s) {\n          case Ve:\n            r = x.RG32Sint;\n            break;\n          case Pe:\n            r = x.RG32Uint;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with RGIntegerFormat.\", s);\n        }\n        break;\n      case na:\n        switch (s) {\n          case Ve:\n            r = x.RGBA32Sint;\n            break;\n          case Pe:\n            r = x.RGBA32Uint;\n            break;\n          default:\n            console.error(\"WebGPURenderer: Unsupported texture type with RGBAIntegerFormat.\", s);\n        }\n        break;\n      default:\n        console.error(\"WebGPURenderer: Unsupported texture format.\", t);\n    }\n  return r;\n}\nconst MA = /^[fn]*\\s*([a-z_0-9]+)?\\s*\\(([\\s\\S]*?)\\)\\s*[\\-\\>]*\\s*([a-z_0-9]+(?:<[\\s\\S]+?>)?)/i, BA = /([a-z_0-9]+)\\s*:\\s*([a-z_0-9]+(?:<[\\s\\S]+?>)?)/ig, Dc = {\n  f32: \"float\",\n  i32: \"int\",\n  u32: \"uint\",\n  bool: \"bool\",\n  \"vec2<f32>\": \"vec2\",\n  \"vec2<i32>\": \"ivec2\",\n  \"vec2<u32>\": \"uvec2\",\n  \"vec2<bool>\": \"bvec2\",\n  vec2f: \"vec2\",\n  vec2i: \"ivec2\",\n  vec2u: \"uvec2\",\n  vec2b: \"bvec2\",\n  \"vec3<f32>\": \"vec3\",\n  \"vec3<i32>\": \"ivec3\",\n  \"vec3<u32>\": \"uvec3\",\n  \"vec3<bool>\": \"bvec3\",\n  vec3f: \"vec3\",\n  vec3i: \"ivec3\",\n  vec3u: \"uvec3\",\n  vec3b: \"bvec3\",\n  \"vec4<f32>\": \"vec4\",\n  \"vec4<i32>\": \"ivec4\",\n  \"vec4<u32>\": \"uvec4\",\n  \"vec4<bool>\": \"bvec4\",\n  vec4f: \"vec4\",\n  vec4i: \"ivec4\",\n  vec4u: \"uvec4\",\n  vec4b: \"bvec4\",\n  \"mat2x2<f32>\": \"mat2\",\n  mat2x2f: \"mat2\",\n  \"mat3x3<f32>\": \"mat3\",\n  mat3x3f: \"mat3\",\n  \"mat4x4<f32>\": \"mat4\",\n  mat4x4f: \"mat4\",\n  sampler: \"sampler\",\n  texture_1d: \"texture\",\n  texture_2d: \"texture\",\n  texture_2d_array: \"texture\",\n  texture_multisampled_2d: \"cubeTexture\",\n  texture_depth_2d: \"depthTexture\",\n  texture_depth_multisampled_2d: \"depthTexture\",\n  texture_3d: \"texture3D\",\n  texture_cube: \"cubeTexture\",\n  texture_cube_array: \"cubeTexture\",\n  texture_storage_1d: \"storageTexture\",\n  texture_storage_2d: \"storageTexture\",\n  texture_storage_2d_array: \"storageTexture\",\n  texture_storage_3d: \"storageTexture\"\n}, FA = (o) => {\n  o = o.trim();\n  const e = o.match(MA);\n  if (e !== null && e.length === 4) {\n    const t = e[2], s = [];\n    let n = null;\n    for (; (n = BA.exec(t)) !== null; )\n      s.push({ name: n[1], type: n[2] });\n    const r = [];\n    for (let l = 0; l < s.length; l++) {\n      const { name: d, type: h } = s[l];\n      let p = h;\n      p.startsWith(\"ptr\") ? p = \"pointer\" : (p.startsWith(\"texture\") && (p = h.split(\"<\")[0]), p = Dc[p]), r.push(new Tu(p, d));\n    }\n    const i = o.substring(e[0].length), a = e[3] || \"void\", u = e[1] !== void 0 ? e[1] : \"\";\n    return {\n      type: Dc[a] || a,\n      inputs: r,\n      name: u,\n      inputsCode: t,\n      blockCode: i,\n      outputType: a\n    };\n  } else\n    throw new Error(\"FunctionNode: Function is not a WGSL code.\");\n};\nclass UA extends _u {\n  /**\n   * Constructs a new WGSL node function.\n   *\n   * @param {String} source - The WGSL source.\n   */\n  constructor(e) {\n    const { type: t, inputs: s, name: n, inputsCode: r, blockCode: i, outputType: a } = FA(e);\n    super(t, s, n), this.inputsCode = r, this.blockCode = i, this.outputType = a;\n  }\n  /**\n   * This method returns the WGSL code of the node function.\n   *\n   * @param {String} [name=this.name] - The function's name.\n   * @return {String} The shader code.\n   */\n  getCode(e = this.name) {\n    const t = this.outputType !== \"void\" ? \"-> \" + this.outputType : \"\";\n    return `fn ${e} ( ${this.inputsCode.trim()} ) ${t}` + this.blockCode;\n  }\n}\nclass PA extends Kf {\n  /**\n   * The method parses the given WGSL code an returns a node function.\n   *\n   * @param {String} source - The WGSL code.\n   * @return {WGSLNodeFunction} A node function.\n   */\n  parseFunction(e) {\n    return new UA(e);\n  }\n}\nconst Fs = typeof self < \"u\" ? self.GPUShaderStage : { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 }, DA = {\n  [De.READ_ONLY]: \"read\",\n  [De.WRITE_ONLY]: \"write\",\n  [De.READ_WRITE]: \"read_write\"\n}, Ic = {\n  [ti]: \"repeat\",\n  [ra]: \"clamp\",\n  [si]: \"mirror\"\n}, Sr = {\n  vertex: Fs ? Fs.VERTEX : 1,\n  fragment: Fs ? Fs.FRAGMENT : 2,\n  compute: Fs ? Fs.COMPUTE : 4\n}, Lc = {\n  instance: !0,\n  swizzleAssign: !1,\n  storageBuffer: !0\n}, IA = {\n  \"^^\": \"tsl_xor\"\n}, LA = {\n  float: \"f32\",\n  int: \"i32\",\n  uint: \"u32\",\n  bool: \"bool\",\n  color: \"vec3<f32>\",\n  vec2: \"vec2<f32>\",\n  ivec2: \"vec2<i32>\",\n  uvec2: \"vec2<u32>\",\n  bvec2: \"vec2<bool>\",\n  vec3: \"vec3<f32>\",\n  ivec3: \"vec3<i32>\",\n  uvec3: \"vec3<u32>\",\n  bvec3: \"vec3<bool>\",\n  vec4: \"vec4<f32>\",\n  ivec4: \"vec4<i32>\",\n  uvec4: \"vec4<u32>\",\n  bvec4: \"vec4<bool>\",\n  mat2: \"mat2x2<f32>\",\n  mat3: \"mat3x3<f32>\",\n  mat4: \"mat4x4<f32>\"\n}, Vc = {}, tt = {\n  tsl_xor: new be(\"fn tsl_xor( a : bool, b : bool ) -> bool { return ( a || b ) && !( a && b ); }\"),\n  mod_float: new be(\"fn tsl_mod_float( x : f32, y : f32 ) -> f32 { return x - y * floor( x / y ); }\"),\n  mod_vec2: new be(\"fn tsl_mod_vec2( x : vec2f, y : vec2f ) -> vec2f { return x - y * floor( x / y ); }\"),\n  mod_vec3: new be(\"fn tsl_mod_vec3( x : vec3f, y : vec3f ) -> vec3f { return x - y * floor( x / y ); }\"),\n  mod_vec4: new be(\"fn tsl_mod_vec4( x : vec4f, y : vec4f ) -> vec4f { return x - y * floor( x / y ); }\"),\n  equals_bool: new be(\"fn tsl_equals_bool( a : bool, b : bool ) -> bool { return a == b; }\"),\n  equals_bvec2: new be(\"fn tsl_equals_bvec2( a : vec2f, b : vec2f ) -> vec2<bool> { return vec2<bool>( a.x == b.x, a.y == b.y ); }\"),\n  equals_bvec3: new be(\"fn tsl_equals_bvec3( a : vec3f, b : vec3f ) -> vec3<bool> { return vec3<bool>( a.x == b.x, a.y == b.y, a.z == b.z ); }\"),\n  equals_bvec4: new be(\"fn tsl_equals_bvec4( a : vec4f, b : vec4f ) -> vec4<bool> { return vec4<bool>( a.x == b.x, a.y == b.y, a.z == b.z, a.w == b.w ); }\"),\n  repeatWrapping_float: new be(\"fn tsl_repeatWrapping_float( coord: f32 ) -> f32 { return fract( coord ); }\"),\n  mirrorWrapping_float: new be(\"fn tsl_mirrorWrapping_float( coord: f32 ) -> f32 { let mirrored = fract( coord * 0.5 ) * 2.0; return 1.0 - abs( 1.0 - mirrored ); }\"),\n  clampWrapping_float: new be(\"fn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }\"),\n  biquadraticTexture: new be(\n    /* wgsl */\n    `\nfn tsl_biquadraticTexture( map : texture_2d<f32>, coord : vec2f, iRes : vec2u, level : u32 ) -> vec4f {\n\n\tlet res = vec2f( iRes );\n\n\tlet uvScaled = coord * res;\n\tlet uvWrapping = ( ( uvScaled % res ) + res ) % res;\n\n\t// https://www.shadertoy.com/view/WtyXRy\n\n\tlet uv = uvWrapping - 0.5;\n\tlet iuv = floor( uv );\n\tlet f = fract( uv );\n\n\tlet rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, level );\n\tlet rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, level );\n\tlet rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, level );\n\tlet rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, level );\n\n\treturn mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y );\n\n}\n`\n  )\n}, xn = {\n  dFdx: \"dpdx\",\n  dFdy: \"- dpdy\",\n  mod_float: \"tsl_mod_float\",\n  mod_vec2: \"tsl_mod_vec2\",\n  mod_vec3: \"tsl_mod_vec3\",\n  mod_vec4: \"tsl_mod_vec4\",\n  equals_bool: \"tsl_equals_bool\",\n  equals_bvec2: \"tsl_equals_bvec2\",\n  equals_bvec3: \"tsl_equals_bvec3\",\n  equals_bvec4: \"tsl_equals_bvec4\",\n  inversesqrt: \"inverseSqrt\",\n  bitcast: \"bitcast<f32>\"\n};\ntypeof navigator < \"u\" && /Windows/g.test(navigator.userAgent) && (tt.pow_float = new be(\"fn tsl_pow_float( a : f32, b : f32 ) -> f32 { return select( -pow( -a, b ), pow( a, b ), a > 0.0 ); }\"), tt.pow_vec2 = new be(\"fn tsl_pow_vec2( a : vec2f, b : vec2f ) -> vec2f { return vec2f( tsl_pow_float( a.x, b.x ), tsl_pow_float( a.y, b.y ) ); }\", [tt.pow_float]), tt.pow_vec3 = new be(\"fn tsl_pow_vec3( a : vec3f, b : vec3f ) -> vec3f { return vec3f( tsl_pow_float( a.x, b.x ), tsl_pow_float( a.y, b.y ), tsl_pow_float( a.z, b.z ) ); }\", [tt.pow_float]), tt.pow_vec4 = new be(\"fn tsl_pow_vec4( a : vec4f, b : vec4f ) -> vec4f { return vec4f( tsl_pow_float( a.x, b.x ), tsl_pow_float( a.y, b.y ), tsl_pow_float( a.z, b.z ), tsl_pow_float( a.w, b.w ) ); }\", [tt.pow_float]), xn.pow_float = \"tsl_pow_float\", xn.pow_vec2 = \"tsl_pow_vec2\", xn.pow_vec3 = \"tsl_pow_vec3\", xn.pow_vec4 = \"tsl_pow_vec4\");\nlet ng = \"\";\n(typeof navigator < \"u\" && /Firefox|Deno/g.test(navigator.userAgent)) !== !0 && (ng += `diagnostic( off, derivative_uniformity );\n`);\nclass VA extends qf {\n  constructor(e, t) {\n    super(e, t, new PA()), this.uniformGroups = {}, this.builtins = {}, this.directives = {}, this.scopedArrays = /* @__PURE__ */ new Map();\n  }\n  needsToWorkingColorSpace(e) {\n    return e.isVideoTexture === !0 && e.colorSpace !== wn;\n  }\n  _generateTextureSample(e, t, s, n, r = this.shaderStage) {\n    return r === \"fragment\" ? n ? `textureSample( ${t}, ${t}_sampler, ${s}, ${n} )` : `textureSample( ${t}, ${t}_sampler, ${s} )` : this.isFilteredTexture(e) ? this.generateFilteredTexture(e, t, s) : this.generateTextureLod(e, t, s, n, \"0\");\n  }\n  _generateVideoSample(e, t, s = this.shaderStage) {\n    if (s === \"fragment\")\n      return `textureSampleBaseClampToEdge( ${e}, ${e}_sampler, vec2<f32>( ${t}.x, 1.0 - ${t}.y ) )`;\n    console.error(`WebGPURenderer: THREE.VideoTexture does not support ${s} shader.`);\n  }\n  _generateTextureSampleLevel(e, t, s, n, r, i = this.shaderStage) {\n    return (i === \"fragment\" || i === \"compute\") && this.isUnfilterable(e) === !1 ? `textureSampleLevel( ${t}, ${t}_sampler, ${s}, ${n} )` : this.isFilteredTexture(e) ? this.generateFilteredTexture(e, t, s, n) : this.generateTextureLod(e, t, s, r, n);\n  }\n  generateWrapFunction(e) {\n    const t = `tsl_coord_${Ic[e.wrapS]}S_${Ic[e.wrapT]}_${e.isData3DTexture ? \"3d\" : \"2d\"}T`;\n    let s = Vc[t];\n    if (s === void 0) {\n      const n = [], r = e.isData3DTexture ? \"vec3f\" : \"vec2f\";\n      let i = `fn ${t}( coord : ${r} ) -> ${r} {\n\n\treturn ${r}(\n`;\n      const a = (u, c) => {\n        u === ti ? (n.push(tt.repeatWrapping_float), i += `\t\ttsl_repeatWrapping_float( coord.${c} )`) : u === ra ? (n.push(tt.clampWrapping_float), i += `\t\ttsl_clampWrapping_float( coord.${c} )`) : u === si ? (n.push(tt.mirrorWrapping_float), i += `\t\ttsl_mirrorWrapping_float( coord.${c} )`) : (i += `\t\tcoord.${c}`, console.warn(`WebGPURenderer: Unsupported texture wrap type \"${u}\" for vertex shader.`));\n      };\n      a(e.wrapS, \"x\"), i += `,\n`, a(e.wrapT, \"y\"), e.isData3DTexture && (i += `,\n`, a(e.wrapR, \"z\")), i += `\n\t);\n\n}\n`, Vc[t] = s = new be(i, n);\n    }\n    return s.build(this), t;\n  }\n  generateTextureDimension(e, t, s) {\n    const n = this.getDataFromNode(e, this.shaderStage, this.globalCache);\n    n.dimensionsSnippet === void 0 && (n.dimensionsSnippet = {});\n    let r = n.dimensionsSnippet[s];\n    if (n.dimensionsSnippet[s] === void 0) {\n      let i, a;\n      const { primarySamples: u } = this.renderer.backend.utils.getTextureSampleData(e), c = u > 1;\n      e.isData3DTexture ? a = \"vec3<u32>\" : a = \"vec2<u32>\", c || e.isVideoTexture || e.isStorageTexture ? i = t : i = `${t}${s ? `, u32( ${s} )` : \"\"}`, r = new wr(new Mr(`textureDimensions( ${i} )`, a)), n.dimensionsSnippet[s] = r, (e.isDataArrayTexture || e.isData3DTexture) && (n.arrayLayerCount = new wr(\n        new Mr(\n          `textureNumLayers(${t})`,\n          \"u32\"\n        )\n      )), e.isTextureCube && (n.cubeFaceCount = new wr(\n        new Mr(\"6u\", \"u32\")\n      ));\n    }\n    return r.build(this);\n  }\n  generateFilteredTexture(e, t, s, n = \"0u\") {\n    this._include(\"biquadraticTexture\");\n    const r = this.generateWrapFunction(e), i = this.generateTextureDimension(e, t, n);\n    return `tsl_biquadraticTexture( ${t}, ${r}( ${s} ), ${i}, u32( ${n} ) )`;\n  }\n  generateTextureLod(e, t, s, n, r = \"0u\") {\n    const i = this.generateWrapFunction(e), a = this.generateTextureDimension(e, t, r), u = e.isData3DTexture ? \"vec3\" : \"vec2\", c = `${u}<u32>(${i}(${s}) * ${u}<f32>(${a}))`;\n    return this.generateTextureLoad(e, t, c, n, r);\n  }\n  generateTextureLoad(e, t, s, n, r = \"0u\") {\n    return e.isVideoTexture === !0 || e.isStorageTexture === !0 ? `textureLoad( ${t}, ${s} )` : n ? `textureLoad( ${t}, ${s}, ${n}, u32( ${r} ) )` : `textureLoad( ${t}, ${s}, u32( ${r} ) )`;\n  }\n  generateTextureStore(e, t, s, n) {\n    return `textureStore( ${t}, ${s}, ${n} )`;\n  }\n  isSampleCompare(e) {\n    return e.isDepthTexture === !0 && e.compareFunction !== null;\n  }\n  isUnfilterable(e) {\n    return this.getComponentTypeFromTexture(e) !== \"float\" || !this.isAvailable(\"float32Filterable\") && e.isDataTexture === !0 && e.type === st || this.isSampleCompare(e) === !1 && e.minFilter === pt && e.magFilter === pt || this.renderer.backend.utils.getTextureSampleData(e).primarySamples > 1;\n  }\n  generateTexture(e, t, s, n, r = this.shaderStage) {\n    let i = null;\n    return e.isVideoTexture === !0 ? i = this._generateVideoSample(t, s, r) : this.isUnfilterable(e) ? i = this.generateTextureLod(e, t, s, n, \"0\", r) : i = this._generateTextureSample(e, t, s, n, r), i;\n  }\n  generateTextureGrad(e, t, s, n, r, i = this.shaderStage) {\n    if (i === \"fragment\")\n      return `textureSampleGrad( ${t}, ${t}_sampler, ${s},  ${n[0]}, ${n[1]} )`;\n    console.error(`WebGPURenderer: THREE.TextureNode.gradient() does not support ${i} shader.`);\n  }\n  generateTextureCompare(e, t, s, n, r, i = this.shaderStage) {\n    if (i === \"fragment\")\n      return `textureSampleCompare( ${t}, ${t}_sampler, ${s}, ${n} )`;\n    console.error(`WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${i} shader.`);\n  }\n  generateTextureLevel(e, t, s, n, r, i = this.shaderStage) {\n    let a = null;\n    return e.isVideoTexture === !0 ? a = this._generateVideoSample(t, s, i) : a = this._generateTextureSampleLevel(e, t, s, n, r, i), a;\n  }\n  generateTextureBias(e, t, s, n, r, i = this.shaderStage) {\n    if (i === \"fragment\")\n      return `textureSampleBias( ${t}, ${t}_sampler, ${s}, ${n} )`;\n    console.error(`WebGPURenderer: THREE.TextureNode.biasNode does not support ${i} shader.`);\n  }\n  getPropertyName(e, t = this.shaderStage) {\n    if (e.isNodeVarying === !0 && e.needsInterpolation === !0) {\n      if (t === \"vertex\")\n        return `varyings.${e.name}`;\n    } else if (e.isNodeUniform === !0) {\n      const s = e.name, n = e.type;\n      return n === \"texture\" || n === \"cubeTexture\" || n === \"storageTexture\" || n === \"texture3D\" ? s : n === \"buffer\" || n === \"storageBuffer\" || n === \"indirectStorageBuffer\" ? `NodeBuffer_${e.id}.${s}` : e.groupNode.name + \".\" + s;\n    }\n    return super.getPropertyName(e);\n  }\n  getOutputStructName() {\n    return \"output\";\n  }\n  _getUniformGroupCount(e) {\n    return Object.keys(this.uniforms[e]).length;\n  }\n  getFunctionOperator(e) {\n    const t = IA[e];\n    return t !== void 0 ? (this._include(t), t) : null;\n  }\n  getNodeAccess(e, t) {\n    return t !== \"compute\" ? De.READ_ONLY : e.access;\n  }\n  getStorageAccess(e, t) {\n    return DA[this.getNodeAccess(e, t)];\n  }\n  getUniformFromNode(e, t, s, n = null) {\n    const r = super.getUniformFromNode(e, t, s, n), i = this.getDataFromNode(e, s, this.globalCache);\n    if (i.uniformGPU === void 0) {\n      let a;\n      const u = e.groupNode, c = u.name, l = this.getBindGroupArray(c, s);\n      if (t === \"texture\" || t === \"cubeTexture\" || t === \"storageTexture\" || t === \"texture3D\") {\n        let d = null;\n        const h = this.getNodeAccess(e, s);\n        if (t === \"texture\" || t === \"storageTexture\" ? d = new Ci(r.name, r.node, u, h) : t === \"cubeTexture\" ? d = new eg(r.name, r.node, u, h) : t === \"texture3D\" && (d = new tg(r.name, r.node, u, h)), d.store = e.isStorageTextureNode === !0, d.setVisibility(Sr[s]), (s === \"fragment\" || s === \"compute\") && this.isUnfilterable(e.value) === !1 && d.store === !1) {\n          const p = new bA(`${r.name}_sampler`, r.node, u);\n          p.setVisibility(Sr[s]), l.push(p, d), a = [p, d];\n        } else\n          l.push(d), a = [d];\n      } else if (t === \"buffer\" || t === \"storageBuffer\" || t === \"indirectStorageBuffer\") {\n        const d = t === \"buffer\" ? Zf : AA, h = new d(e, u);\n        h.setVisibility(Sr[s]), l.push(h), a = h;\n      } else {\n        const d = this.uniformGroups[s] || (this.uniformGroups[s] = {});\n        let h = d[c];\n        h === void 0 && (h = new Jf(c, u), h.setVisibility(Sr[s]), d[c] = h, l.push(h)), a = this.getNodeUniform(r, t), h.addUniform(a);\n      }\n      i.uniformGPU = a;\n    }\n    return r;\n  }\n  getBuiltin(e, t, s, n = this.shaderStage) {\n    const r = this.builtins[n] || (this.builtins[n] = /* @__PURE__ */ new Map());\n    return r.has(e) === !1 && r.set(e, {\n      name: e,\n      property: t,\n      type: s\n    }), t;\n  }\n  hasBuiltin(e, t = this.shaderStage) {\n    return this.builtins[t] !== void 0 && this.builtins[t].has(e);\n  }\n  getVertexIndex() {\n    return this.shaderStage === \"vertex\" ? this.getBuiltin(\"vertex_index\", \"vertexIndex\", \"u32\", \"attribute\") : \"vertexIndex\";\n  }\n  buildFunctionCode(e) {\n    const t = e.layout, s = this.flowShaderNode(e), n = [];\n    for (const i of t.inputs)\n      n.push(i.name + \" : \" + this.getType(i.type));\n    let r = `fn ${t.name}( ${n.join(\", \")} ) -> ${this.getType(t.type)} {\n${s.vars}\n${s.code}\n`;\n    return s.result && (r += `\treturn ${s.result};\n`), r += `\n}\n`, r;\n  }\n  getInstanceIndex() {\n    return this.shaderStage === \"vertex\" ? this.getBuiltin(\"instance_index\", \"instanceIndex\", \"u32\", \"attribute\") : \"instanceIndex\";\n  }\n  getInvocationLocalIndex() {\n    return this.getBuiltin(\"local_invocation_index\", \"invocationLocalIndex\", \"u32\", \"attribute\");\n  }\n  getSubgroupSize() {\n    return this.enableSubGroups(), this.getBuiltin(\"subgroup_size\", \"subgroupSize\", \"u32\", \"attribute\");\n  }\n  getInvocationSubgroupIndex() {\n    return this.enableSubGroups(), this.getBuiltin(\"subgroup_invocation_id\", \"invocationSubgroupIndex\", \"u32\", \"attribute\");\n  }\n  getSubgroupIndex() {\n    return this.enableSubGroups(), this.getBuiltin(\"subgroup_id\", \"subgroupIndex\", \"u32\", \"attribute\");\n  }\n  getDrawIndex() {\n    return null;\n  }\n  getFrontFacing() {\n    return this.getBuiltin(\"front_facing\", \"isFront\", \"bool\");\n  }\n  getFragCoord() {\n    return this.getBuiltin(\"position\", \"fragCoord\", \"vec4<f32>\") + \".xy\";\n  }\n  getFragDepth() {\n    return \"output.\" + this.getBuiltin(\"frag_depth\", \"depth\", \"f32\", \"output\");\n  }\n  getClipDistance() {\n    return \"varyings.hw_clip_distances\";\n  }\n  isFlipY() {\n    return !1;\n  }\n  enableDirective(e, t = this.shaderStage) {\n    (this.directives[t] || (this.directives[t] = /* @__PURE__ */ new Set())).add(e);\n  }\n  getDirectives(e) {\n    const t = [], s = this.directives[e];\n    if (s !== void 0)\n      for (const n of s)\n        t.push(`enable ${n};`);\n    return t.join(`\n`);\n  }\n  enableSubGroups() {\n    this.enableDirective(\"subgroups\");\n  }\n  enableSubgroupsF16() {\n    this.enableDirective(\"subgroups-f16\");\n  }\n  enableClipDistances() {\n    this.enableDirective(\"clip_distances\");\n  }\n  enableShaderF16() {\n    this.enableDirective(\"f16\");\n  }\n  enableDualSourceBlending() {\n    this.enableDirective(\"dual_source_blending\");\n  }\n  enableHardwareClipping(e) {\n    this.enableClipDistances(), this.getBuiltin(\"clip_distances\", \"hw_clip_distances\", `array<f32, ${e} >`, \"vertex\");\n  }\n  getBuiltins(e) {\n    const t = [], s = this.builtins[e];\n    if (s !== void 0)\n      for (const { name: n, property: r, type: i } of s.values())\n        t.push(`@builtin( ${n} ) ${r} : ${i}`);\n    return t.join(`,\n\t`);\n  }\n  getScopedArray(e, t, s, n) {\n    return this.scopedArrays.has(e) === !1 && this.scopedArrays.set(e, {\n      name: e,\n      scope: t,\n      bufferType: s,\n      bufferCount: n\n    }), e;\n  }\n  getScopedArrays(e) {\n    if (e !== \"compute\")\n      return;\n    const t = [];\n    for (const { name: s, scope: n, bufferType: r, bufferCount: i } of this.scopedArrays.values()) {\n      const a = this.getType(r);\n      t.push(`var<${n}> ${s}: array< ${a}, ${i} >;`);\n    }\n    return t.join(`\n`);\n  }\n  getAttributes(e) {\n    const t = [];\n    if (e === \"compute\" && (this.getBuiltin(\"global_invocation_id\", \"id\", \"vec3<u32>\", \"attribute\"), this.getBuiltin(\"workgroup_id\", \"workgroupId\", \"vec3<u32>\", \"attribute\"), this.getBuiltin(\"local_invocation_id\", \"localId\", \"vec3<u32>\", \"attribute\"), this.getBuiltin(\"num_workgroups\", \"numWorkgroups\", \"vec3<u32>\", \"attribute\"), this.renderer.hasFeature(\"subgroups\") && (this.enableDirective(\"subgroups\", e), this.getBuiltin(\"subgroup_size\", \"subgroupSize\", \"u32\", \"attribute\"))), e === \"vertex\" || e === \"compute\") {\n      const s = this.getBuiltins(\"attribute\");\n      s && t.push(s);\n      const n = this.getAttributesArray();\n      for (let r = 0, i = n.length; r < i; r++) {\n        const a = n[r], u = a.name, c = this.getType(a.type);\n        t.push(`@location( ${r} ) ${u} : ${c}`);\n      }\n    }\n    return t.join(`,\n\t`);\n  }\n  getStructMembers(e) {\n    const t = [], s = e.getMemberTypes();\n    for (let r = 0; r < s.length; r++) {\n      const i = s[r];\n      t.push(`\t@location( ${r} ) m${r} : ${i}<f32>`);\n    }\n    const n = this.getBuiltins(\"output\");\n    return n && t.push(\"\t\" + n), t.join(`,\n`);\n  }\n  getStructs(e) {\n    const t = [], s = this.structs[e];\n    for (let n = 0, r = s.length; n < r; n++) {\n      const i = s[n], a = i.name;\n      let u = `struct ${a} {\n`;\n      u += this.getStructMembers(i), u += `\n}`, t.push(u), t.push(`\nvar<private> output : ${a};\n\n`);\n    }\n    return t.join(`\n\n`);\n  }\n  getVar(e, t) {\n    return `var ${t} : ${this.getType(e)}`;\n  }\n  getVars(e) {\n    const t = [], s = this.vars[e];\n    if (s !== void 0)\n      for (const n of s)\n        t.push(`\t${this.getVar(n.type, n.name)};`);\n    return `\n${t.join(`\n`)}\n`;\n  }\n  getVaryings(e) {\n    const t = [];\n    if (e === \"vertex\" && this.getBuiltin(\"position\", \"Vertex\", \"vec4<f32>\", \"vertex\"), e === \"vertex\" || e === \"fragment\") {\n      const r = this.varyings, i = this.vars[e];\n      for (let a = 0; a < r.length; a++) {\n        const u = r[a];\n        if (u.needsInterpolation) {\n          let c = `@location( ${a} )`;\n          /^(int|uint|ivec|uvec)/.test(u.type) && (c += \" @interpolate( flat )\"), t.push(`${c} ${u.name} : ${this.getType(u.type)}`);\n        } else e === \"vertex\" && i.includes(u) === !1 && i.push(u);\n      }\n    }\n    const s = this.getBuiltins(e);\n    s && t.push(s);\n    const n = t.join(`,\n\t`);\n    return e === \"vertex\" ? this._getWGSLStruct(\"VaryingsStruct\", \"\t\" + n) : n;\n  }\n  getUniforms(e) {\n    const t = this.uniforms[e], s = [], n = [], r = [], i = {};\n    for (const u of t) {\n      const c = u.groupNode.name, l = this.bindingsIndexes[c];\n      if (u.type === \"texture\" || u.type === \"cubeTexture\" || u.type === \"storageTexture\" || u.type === \"texture3D\") {\n        const d = u.node.value;\n        (e === \"fragment\" || e === \"compute\") && this.isUnfilterable(d) === !1 && u.node.isStorageTextureNode !== !0 && (this.isSampleCompare(d) ? s.push(`@binding( ${l.binding++} ) @group( ${l.group} ) var ${u.name}_sampler : sampler_comparison;`) : s.push(`@binding( ${l.binding++} ) @group( ${l.group} ) var ${u.name}_sampler : sampler;`));\n        let h, p = \"\";\n        const { primarySamples: f } = this.renderer.backend.utils.getTextureSampleData(d);\n        if (f > 1 && (p = \"_multisampled\"), d.isCubeTexture === !0)\n          h = \"texture_cube<f32>\";\n        else if (d.isDataArrayTexture === !0 || d.isCompressedArrayTexture === !0)\n          h = \"texture_2d_array<f32>\";\n        else if (d.isDepthTexture === !0)\n          h = `texture_depth${p}_2d`;\n        else if (d.isVideoTexture === !0)\n          h = \"texture_external\";\n        else if (d.isData3DTexture === !0)\n          h = \"texture_3d<f32>\";\n        else if (u.node.isStorageTextureNode === !0) {\n          const m = Zo(d), _ = this.getStorageAccess(u.node, e);\n          h = `texture_storage_2d<${m}, ${_}>`;\n        } else {\n          const m = this.getComponentTypeFromTexture(d).charAt(0);\n          h = `texture${p}_2d<${m}32>`;\n        }\n        s.push(`@binding( ${l.binding++} ) @group( ${l.group} ) var ${u.name} : ${h};`);\n      } else if (u.type === \"buffer\" || u.type === \"storageBuffer\" || u.type === \"indirectStorageBuffer\") {\n        const d = u.node, h = this.getType(d.bufferType), p = d.bufferCount, f = p > 0 && u.type === \"buffer\" ? \", \" + p : \"\", m = d.isAtomic ? `atomic<${h}>` : `${h}`, _ = `\t${u.name} : array< ${m}${f} >\n`, S = d.isStorageBufferNode ? `storage, ${this.getStorageAccess(d, e)}` : \"uniform\";\n        n.push(this._getWGSLStructBinding(\"NodeBuffer_\" + d.id, _, S, l.binding++, l.group));\n      } else {\n        const d = this.getType(this.getVectorType(u.type)), h = u.groupNode.name;\n        (i[h] || (i[h] = {\n          index: l.binding++,\n          id: l.group,\n          snippets: []\n        })).snippets.push(`\t${u.name} : ${d}`);\n      }\n    }\n    for (const u in i) {\n      const c = i[u];\n      r.push(this._getWGSLStructBinding(u, c.snippets.join(`,\n`), \"uniform\", c.index, c.id));\n    }\n    let a = s.join(`\n`);\n    return a += n.join(`\n`), a += r.join(`\n`), a;\n  }\n  buildCode() {\n    const e = this.material !== null ? { fragment: {}, vertex: {} } : { compute: {} };\n    this.sortBindingGroups();\n    for (const t in e) {\n      const s = e[t];\n      s.uniforms = this.getUniforms(t), s.attributes = this.getAttributes(t), s.varyings = this.getVaryings(t), s.structs = this.getStructs(t), s.vars = this.getVars(t), s.codes = this.getCodes(t), s.directives = this.getDirectives(t), s.scopedArrays = this.getScopedArrays(t);\n      let n = `// code\n\n`;\n      n += this.flowCode[t];\n      const r = this.flowNodes[t], i = r[r.length - 1], a = i.outputNode, u = a !== void 0 && a.isOutputStructNode === !0;\n      for (const c of r) {\n        const l = this.getFlowData(\n          c\n          /*, shaderStage*/\n        ), d = c.name;\n        if (d && (n.length > 0 && (n += `\n`), n += `\t// flow -> ${d}\n\t`), n += `${l.code}\n\t`, c === i && t !== \"compute\") {\n          if (n += `// result\n\n\t`, t === \"vertex\")\n            n += `varyings.Vertex = ${l.result};`;\n          else if (t === \"fragment\")\n            if (u)\n              s.returnType = a.nodeType, n += `return ${l.result};`;\n            else {\n              let h = \"\t@location(0) color: vec4<f32>\";\n              const p = this.getBuiltins(\"output\");\n              p && (h += `,\n\t` + p), s.returnType = \"OutputStruct\", s.structs += this._getWGSLStruct(\"OutputStruct\", h), s.structs += `\nvar<private> output : OutputStruct;\n\n`, n += `output.color = ${l.result};\n\n\treturn output;`;\n            }\n        }\n      }\n      s.flow = n;\n    }\n    this.material !== null ? (this.vertexShader = this._getWGSLVertexCode(e.vertex), this.fragmentShader = this._getWGSLFragmentCode(e.fragment)) : this.computeShader = this._getWGSLComputeCode(e.compute, (this.object.workgroupSize || [64]).join(\", \"));\n  }\n  getMethod(e, t = null) {\n    let s;\n    return t !== null && (s = this._getWGSLMethod(e + \"_\" + t)), s === void 0 && (s = this._getWGSLMethod(e)), s || e;\n  }\n  getType(e) {\n    return LA[e] || e;\n  }\n  isAvailable(e) {\n    let t = Lc[e];\n    return t === void 0 && (e === \"float32Filterable\" ? t = this.renderer.hasFeature(\"float32-filterable\") : e === \"clipDistance\" && (t = this.renderer.hasFeature(\"clip-distances\")), Lc[e] = t), t;\n  }\n  _getWGSLMethod(e) {\n    return tt[e] !== void 0 && this._include(e), xn[e];\n  }\n  _include(e) {\n    const t = tt[e];\n    return t.build(this), this.currentFunctionNode !== null && this.currentFunctionNode.includes.push(t), t;\n  }\n  _getWGSLVertexCode(e) {\n    return `${this.getSignature()}\n// directives\n${e.directives}\n\n// uniforms\n${e.uniforms}\n\n// varyings\n${e.varyings}\nvar<private> varyings : VaryingsStruct;\n\n// codes\n${e.codes}\n\n@vertex\nfn main( ${e.attributes} ) -> VaryingsStruct {\n\n\t// vars\n\t${e.vars}\n\n\t// flow\n\t${e.flow}\n\n\treturn varyings;\n\n}\n`;\n  }\n  _getWGSLFragmentCode(e) {\n    return `${this.getSignature()}\n// global\n${ng}\n\n// uniforms\n${e.uniforms}\n\n// structs\n${e.structs}\n\n// codes\n${e.codes}\n\n@fragment\nfn main( ${e.varyings} ) -> ${e.returnType} {\n\n\t// vars\n\t${e.vars}\n\n\t// flow\n\t${e.flow}\n\n}\n`;\n  }\n  _getWGSLComputeCode(e, t) {\n    return `${this.getSignature()}\n// directives\n${e.directives}\n\n// system\nvar<private> instanceIndex : u32;\n\n// locals\n${e.scopedArrays}\n\n// uniforms\n${e.uniforms}\n\n// codes\n${e.codes}\n\n@compute @workgroup_size( ${t} )\nfn main( ${e.attributes} ) {\n\n\t// system\n\tinstanceIndex = id.x + id.y * numWorkgroups.x * u32(${t}) + id.z * numWorkgroups.x * numWorkgroups.y * u32(${t});\n\n\t// vars\n\t${e.vars}\n\n\t// flow\n\t${e.flow}\n\n}\n`;\n  }\n  _getWGSLStruct(e, t) {\n    return `\nstruct ${e} {\n${t}\n};`;\n  }\n  _getWGSLStructBinding(e, t, s, n = 0, r = 0) {\n    const i = e + \"Struct\";\n    return `${this._getWGSLStruct(i, t)}\n@binding( ${n} ) @group( ${r} )\nvar<${s}> ${e} : ${i};`;\n  }\n}\nclass GA {\n  constructor(e) {\n    this.backend = e;\n  }\n  getCurrentDepthStencilFormat(e) {\n    let t;\n    return e.depthTexture !== null ? t = this.getTextureFormatGPU(e.depthTexture) : e.depth && e.stencil ? t = x.Depth24PlusStencil8 : e.depth && (t = x.Depth24Plus), t;\n  }\n  getTextureFormatGPU(e) {\n    return this.backend.get(e).format;\n  }\n  getTextureSampleData(e) {\n    let t;\n    if (e.isFramebufferTexture)\n      t = 1;\n    else if (e.isDepthTexture && !e.renderTarget) {\n      const r = this.backend.renderer, i = r.getRenderTarget();\n      t = i ? i.samples : r.samples;\n    } else e.renderTarget && (t = e.renderTarget.samples);\n    t = t || 1;\n    const s = t > 1 && e.renderTarget !== null && e.isDepthTexture !== !0 && e.isFramebufferTexture !== !0;\n    return { samples: t, primarySamples: s ? 1 : t, isMSAA: s };\n  }\n  getCurrentColorFormat(e) {\n    let t;\n    return e.textures !== null ? t = this.getTextureFormatGPU(e.textures[0]) : t = this.getPreferredCanvasFormat(), t;\n  }\n  getCurrentColorSpace(e) {\n    return e.textures !== null ? e.textures[0].colorSpace : this.backend.renderer.outputColorSpace;\n  }\n  getPrimitiveTopology(e, t) {\n    if (e.isPoints) return ks.PointList;\n    if (e.isLineSegments || e.isMesh && t.wireframe === !0) return ks.LineList;\n    if (e.isLine) return ks.LineStrip;\n    if (e.isMesh) return ks.TriangleList;\n  }\n  getSampleCount(e) {\n    let t = 1;\n    return e > 1 && (t = Math.pow(2, Math.floor(Math.log2(e))), t === 2 && (t = 4)), t;\n  }\n  getSampleCountRenderContext(e) {\n    return e.textures !== null ? this.getSampleCount(e.sampleCount) : this.getSampleCount(this.backend.renderer.samples);\n  }\n  getPreferredCanvasFormat() {\n    return navigator.userAgent.includes(\"Quest\") ? x.BGRA8Unorm : navigator.gpu.getPreferredCanvasFormat();\n  }\n}\nconst OA = /* @__PURE__ */ new Map([\n  [Int8Array, [\"sint8\", \"snorm8\"]],\n  [Uint8Array, [\"uint8\", \"unorm8\"]],\n  [Int16Array, [\"sint16\", \"snorm16\"]],\n  [Uint16Array, [\"uint16\", \"unorm16\"]],\n  [Int32Array, [\"sint32\", \"snorm32\"]],\n  [Uint32Array, [\"uint32\", \"unorm32\"]],\n  [Float32Array, [\"float32\"]]\n]), kA = /* @__PURE__ */ new Map([\n  [Rl, [\"float16\"]]\n]), zA = /* @__PURE__ */ new Map([\n  [Int32Array, \"sint32\"],\n  [Int16Array, \"sint32\"],\n  // patch for INT16\n  [Uint32Array, \"uint32\"],\n  [Uint16Array, \"uint32\"],\n  // patch for UINT16\n  [Float32Array, \"float32\"]\n]);\nclass $A {\n  constructor(e) {\n    this.backend = e;\n  }\n  createAttribute(e, t) {\n    const s = this._getBufferAttribute(e), n = this.backend, r = n.get(s);\n    let i = r.buffer;\n    if (i === void 0) {\n      const a = n.device;\n      let u = s.array;\n      if (e.normalized === !1 && (u.constructor === Int16Array || u.constructor === Uint16Array)) {\n        const l = new Uint32Array(u.length);\n        for (let d = 0; d < u.length; d++)\n          l[d] = u[d];\n        u = l;\n      }\n      if (s.array = u, (s.isStorageBufferAttribute || s.isStorageInstancedBufferAttribute) && s.itemSize === 3) {\n        u = new u.constructor(s.count * 4);\n        for (let l = 0; l < s.count; l++)\n          u.set(s.array.subarray(l * 3, l * 3 + 3), l * 4);\n        s.itemSize = 4, s.array = u;\n      }\n      const c = u.byteLength + (4 - u.byteLength % 4) % 4;\n      i = a.createBuffer({\n        label: s.name,\n        size: c,\n        usage: t,\n        mappedAtCreation: !0\n      }), new u.constructor(i.getMappedRange()).set(u), i.unmap(), r.buffer = i;\n    }\n  }\n  updateAttribute(e) {\n    const t = this._getBufferAttribute(e), s = this.backend, n = s.device, r = s.get(t).buffer, i = t.array, a = this._isTypedArray(i), u = t.updateRanges;\n    if (u.length === 0)\n      n.queue.writeBuffer(\n        r,\n        0,\n        i,\n        0\n      );\n    else {\n      const c = a ? 1 : i.BYTES_PER_ELEMENT;\n      for (let l = 0, d = u.length; l < d; l++) {\n        const h = u[l], p = h.start * c, f = h.count * c;\n        n.queue.writeBuffer(\n          r,\n          0,\n          i,\n          p,\n          f\n        );\n      }\n      t.clearUpdateRanges();\n    }\n  }\n  createShaderVertexBuffers(e) {\n    const t = e.getAttributes(), s = /* @__PURE__ */ new Map();\n    for (let n = 0; n < t.length; n++) {\n      const r = t[n], i = r.array.BYTES_PER_ELEMENT, a = this._getBufferAttribute(r);\n      let u = s.get(a);\n      if (u === void 0) {\n        let d, h;\n        r.isInterleavedBufferAttribute === !0 ? (d = r.data.stride * i, h = r.data.isInstancedInterleavedBuffer ? br.Instance : br.Vertex) : (d = r.itemSize * i, h = r.isInstancedBufferAttribute ? br.Instance : br.Vertex), r.normalized === !1 && (r.array.constructor === Int16Array || r.array.constructor === Uint16Array) && (d = 4), u = {\n          arrayStride: d,\n          attributes: [],\n          stepMode: h\n        }, s.set(a, u);\n      }\n      const c = this._getVertexFormat(r), l = r.isInterleavedBufferAttribute === !0 ? r.offset * i : 0;\n      u.attributes.push({\n        shaderLocation: n,\n        offset: l,\n        format: c\n      });\n    }\n    return Array.from(s.values());\n  }\n  destroyAttribute(e) {\n    const t = this.backend;\n    t.get(this._getBufferAttribute(e)).buffer.destroy(), t.delete(e);\n  }\n  async getArrayBufferAsync(e) {\n    const t = this.backend, s = t.device, r = t.get(this._getBufferAttribute(e)).buffer, i = r.size, a = s.createBuffer({\n      label: `${e.name}_readback`,\n      size: i,\n      usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n    }), u = s.createCommandEncoder({\n      label: `readback_encoder_${e.name}`\n    });\n    u.copyBufferToBuffer(\n      r,\n      0,\n      a,\n      0,\n      i\n    );\n    const c = u.finish();\n    s.queue.submit([c]), await a.mapAsync(GPUMapMode.READ);\n    const l = a.getMappedRange(), d = new e.array.constructor(l.slice(0));\n    return a.unmap(), d.buffer;\n  }\n  _getVertexFormat(e) {\n    const { itemSize: t, normalized: s } = e, n = e.array.constructor, r = e.constructor;\n    let i;\n    if (t === 1)\n      i = zA.get(n);\n    else {\n      const u = (kA.get(r) || OA.get(n))[s ? 1 : 0];\n      if (u) {\n        const c = n.BYTES_PER_ELEMENT * t, d = Math.floor((c + 3) / 4) * 4 / n.BYTES_PER_ELEMENT;\n        if (d % 1)\n          throw new Error(\"THREE.WebGPUAttributeUtils: Bad vertex format item size.\");\n        i = `${u}x${d}`;\n      }\n    }\n    return i || console.error(\"THREE.WebGPUAttributeUtils: Vertex format not supported yet.\"), i;\n  }\n  _isTypedArray(e) {\n    return ArrayBuffer.isView(e) && !(e instanceof DataView);\n  }\n  _getBufferAttribute(e) {\n    return e.isInterleavedBufferAttribute && (e = e.data), e;\n  }\n}\nclass WA {\n  constructor(e) {\n    this.backend = e, this.bindGroupLayoutCache = /* @__PURE__ */ new WeakMap();\n  }\n  createBindingsLayout(e) {\n    const t = this.backend, s = t.device, n = [];\n    let r = 0;\n    for (const i of e.bindings) {\n      const a = {\n        binding: r++,\n        visibility: i.visibility\n      };\n      if (i.isUniformBuffer || i.isStorageBuffer) {\n        const u = {};\n        i.isStorageBuffer && (i.visibility & 4 && (i.access === De.READ_WRITE || i.access === De.WRITE_ONLY) ? u.type = co.Storage : u.type = co.ReadOnlyStorage), a.buffer = u;\n      } else if (i.isSampler) {\n        const u = {};\n        i.texture.isDepthTexture && i.texture.compareFunction !== null && (u.type = \"comparison\"), a.sampler = u;\n      } else if (i.isSampledTexture && i.texture.isVideoTexture)\n        a.externalTexture = {};\n      else if (i.isSampledTexture && i.store) {\n        const u = {};\n        u.format = this.backend.get(i.texture).texture.format;\n        const c = i.access;\n        c === De.READ_WRITE ? u.access = lo.ReadWrite : c === De.WRITE_ONLY ? u.access = lo.WriteOnly : u.access = lo.ReadOnly, a.storageTexture = u;\n      } else if (i.isSampledTexture) {\n        const u = {}, { primarySamples: c } = t.utils.getTextureSampleData(i.texture);\n        if (c > 1 && (u.multisampled = !0, i.texture.isDepthTexture || (u.sampleType = Bs.UnfilterableFloat)), i.texture.isDepthTexture)\n          u.sampleType = Bs.Depth;\n        else if (i.texture.isDataTexture || i.texture.isDataArrayTexture || i.texture.isData3DTexture) {\n          const l = i.texture.type;\n          l === Ve ? u.sampleType = Bs.SInt : l === Pe ? u.sampleType = Bs.UInt : l === st && (this.backend.hasFeature(\"float32-filterable\") ? u.sampleType = Bs.Float : u.sampleType = Bs.UnfilterableFloat);\n        }\n        i.isSampledCubeTexture ? u.viewDimension = Oe.Cube : i.texture.isDataArrayTexture || i.texture.isCompressedArrayTexture ? u.viewDimension = Oe.TwoDArray : i.isSampledTexture3D && (u.viewDimension = Oe.ThreeD), a.texture = u;\n      } else\n        console.error(`WebGPUBindingUtils: Unsupported binding \"${i}\".`);\n      n.push(a);\n    }\n    return s.createBindGroupLayout({ entries: n });\n  }\n  createBindings(e, t, s, n = 0) {\n    const { backend: r, bindGroupLayoutCache: i } = this, a = r.get(e);\n    let u = i.get(e.bindingsReference);\n    u === void 0 && (u = this.createBindingsLayout(e), i.set(e.bindingsReference, u));\n    let c;\n    s > 0 && (a.groups === void 0 && (a.groups = [], a.versions = []), a.versions[s] === n && (c = a.groups[s])), c === void 0 && (c = this.createBindGroup(e, u), s > 0 && (a.groups[s] = c, a.versions[s] = n)), a.group = c, a.layout = u;\n  }\n  updateBinding(e) {\n    const t = this.backend, s = t.device, n = e.buffer, r = t.get(e).buffer;\n    s.queue.writeBuffer(r, 0, n, 0);\n  }\n  createBindGroup(e, t) {\n    const s = this.backend, n = s.device;\n    let r = 0;\n    const i = [];\n    for (const a of e.bindings) {\n      if (a.isUniformBuffer) {\n        const u = s.get(a);\n        if (u.buffer === void 0) {\n          const c = a.byteLength, l = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, d = n.createBuffer({\n            label: \"bindingBuffer_\" + a.name,\n            size: c,\n            usage: l\n          });\n          u.buffer = d;\n        }\n        i.push({ binding: r, resource: { buffer: u.buffer } });\n      } else if (a.isStorageBuffer) {\n        const u = s.get(a);\n        if (u.buffer === void 0) {\n          const c = a.attribute;\n          u.buffer = s.get(c).buffer;\n        }\n        i.push({ binding: r, resource: { buffer: u.buffer } });\n      } else if (a.isSampler) {\n        const u = s.get(a.texture);\n        i.push({ binding: r, resource: u.sampler });\n      } else if (a.isSampledTexture) {\n        const u = s.get(a.texture);\n        let c;\n        if (u.externalTexture !== void 0)\n          c = n.importExternalTexture({ source: u.externalTexture });\n        else {\n          const l = a.store ? 1 : u.texture.mipLevelCount, d = `view-${u.texture.width}-${u.texture.height}-${l}`;\n          if (c = u[d], c === void 0) {\n            const h = _A.All;\n            let p;\n            a.isSampledCubeTexture ? p = Oe.Cube : a.isSampledTexture3D ? p = Oe.ThreeD : a.texture.isDataArrayTexture || a.texture.isCompressedArrayTexture ? p = Oe.TwoDArray : p = Oe.TwoD, c = u[d] = u.texture.createView({ aspect: h, dimension: p, mipLevelCount: l });\n          }\n        }\n        i.push({ binding: r, resource: c });\n      }\n      r++;\n    }\n    return n.createBindGroup({\n      label: \"bindGroup_\" + e.name,\n      layout: t,\n      entries: i\n    });\n  }\n}\nclass HA {\n  constructor(e) {\n    this.backend = e;\n  }\n  _getSampleCount(e) {\n    return this.backend.utils.getSampleCountRenderContext(e);\n  }\n  createRenderPipeline(e, t) {\n    const { object: s, material: n, geometry: r, pipeline: i } = e, { vertexProgram: a, fragmentProgram: u } = i, c = this.backend, l = c.device, d = c.utils, h = c.get(i), p = [];\n    for (const Ye of e.getBindings()) {\n      const wt = c.get(Ye);\n      p.push(wt.layout);\n    }\n    const f = c.attributeUtils.createShaderVertexBuffers(e);\n    let m;\n    n.transparent === !0 && n.blending !== Mn && (m = this._getBlending(n));\n    let _ = {};\n    n.stencilWrite === !0 && (_ = {\n      compare: this._getStencilCompare(n),\n      failOp: this._getStencilOperation(n.stencilFail),\n      depthFailOp: this._getStencilOperation(n.stencilZFail),\n      passOp: this._getStencilOperation(n.stencilZPass)\n    });\n    const S = this._getColorWriteMask(n), A = [];\n    if (e.context.textures !== null) {\n      const Ye = e.context.textures;\n      for (let wt = 0; wt < Ye.length; wt++) {\n        const vs = d.getTextureFormatGPU(Ye[wt]);\n        A.push({\n          format: vs,\n          blend: m,\n          writeMask: S\n        });\n      }\n    } else {\n      const Ye = d.getCurrentColorFormat(e.context);\n      A.push({\n        format: Ye,\n        blend: m,\n        writeMask: S\n      });\n    }\n    const M = c.get(a).module, F = c.get(u).module, D = this._getPrimitiveState(s, r, n), P = this._getDepthCompare(n), V = d.getCurrentDepthStencilFormat(e.context), k = this._getSampleCount(e.context), ie = {\n      label: `renderPipeline_${n.name || n.type}_${n.id}`,\n      vertex: Object.assign({}, M, { buffers: f }),\n      fragment: Object.assign({}, F, { targets: A }),\n      primitive: D,\n      multisample: {\n        count: k,\n        alphaToCoverageEnabled: n.alphaToCoverage && k > 1\n      },\n      layout: l.createPipelineLayout({\n        bindGroupLayouts: p\n      })\n    }, me = {}, ne = e.context.depth, Ke = e.context.stencil;\n    if ((ne === !0 || Ke === !0) && (ne === !0 && (me.format = V, me.depthWriteEnabled = n.depthWrite, me.depthCompare = P), Ke === !0 && (me.stencilFront = _, me.stencilBack = {}, me.stencilReadMask = n.stencilFuncMask, me.stencilWriteMask = n.stencilWriteMask), ie.depthStencil = me), t === null)\n      h.pipeline = l.createRenderPipeline(ie);\n    else {\n      const Ye = new Promise((wt) => {\n        l.createRenderPipelineAsync(ie).then((vs) => {\n          h.pipeline = vs, wt();\n        });\n      });\n      t.push(Ye);\n    }\n  }\n  createBundleEncoder(e) {\n    const t = this.backend, { utils: s, device: n } = t, r = s.getCurrentDepthStencilFormat(e), i = s.getCurrentColorFormat(e), a = this._getSampleCount(e), u = {\n      label: \"renderBundleEncoder\",\n      colorFormats: [i],\n      depthStencilFormat: r,\n      sampleCount: a\n    };\n    return n.createRenderBundleEncoder(u);\n  }\n  createComputePipeline(e, t) {\n    const s = this.backend, n = s.device, r = s.get(e.computeProgram).module, i = s.get(e), a = [];\n    for (const u of t) {\n      const c = s.get(u);\n      a.push(c.layout);\n    }\n    i.pipeline = n.createComputePipeline({\n      compute: r,\n      layout: n.createPipelineLayout({\n        bindGroupLayouts: a\n      })\n    });\n  }\n  _getBlending(e) {\n    let t, s;\n    const n = e.blending, r = e.blendSrc, i = e.blendDst, a = e.blendEquation;\n    if (n === il) {\n      const u = e.blendSrcAlpha !== null ? e.blendSrcAlpha : r, c = e.blendDstAlpha !== null ? e.blendDstAlpha : i, l = e.blendEquationAlpha !== null ? e.blendEquationAlpha : a;\n      t = {\n        srcFactor: this._getBlendFactor(r),\n        dstFactor: this._getBlendFactor(i),\n        operation: this._getBlendOperation(a)\n      }, s = {\n        srcFactor: this._getBlendFactor(u),\n        dstFactor: this._getBlendFactor(c),\n        operation: this._getBlendOperation(l)\n      };\n    } else {\n      const u = e.premultipliedAlpha, c = (l, d, h, p) => {\n        t = {\n          srcFactor: l,\n          dstFactor: d,\n          operation: ns.Add\n        }, s = {\n          srcFactor: h,\n          dstFactor: p,\n          operation: ns.Add\n        };\n      };\n      if (u)\n        switch (n) {\n          case zs:\n            c(W.One, W.OneMinusSrcAlpha, W.One, W.OneMinusSrcAlpha);\n            break;\n          case Lr:\n            c(W.One, W.One, W.One, W.One);\n            break;\n          case Ir:\n            c(W.Zero, W.OneMinusSrc, W.Zero, W.One);\n            break;\n          case Dr:\n            c(W.Zero, W.Src, W.Zero, W.SrcAlpha);\n            break;\n        }\n      else\n        switch (n) {\n          case zs:\n            c(W.SrcAlpha, W.OneMinusSrcAlpha, W.One, W.OneMinusSrcAlpha);\n            break;\n          case Lr:\n            c(W.SrcAlpha, W.One, W.SrcAlpha, W.One);\n            break;\n          case Ir:\n            c(W.Zero, W.OneMinusSrc, W.Zero, W.One);\n            break;\n          case Dr:\n            c(W.Zero, W.Src, W.Zero, W.Src);\n            break;\n        }\n    }\n    if (t !== void 0 && s !== void 0)\n      return { color: t, alpha: s };\n    console.error(\"THREE.WebGPURenderer: Invalid blending: \", n);\n  }\n  _getBlendFactor(e) {\n    let t;\n    switch (e) {\n      case Kc:\n        t = W.Zero;\n        break;\n      case Yc:\n        t = W.One;\n        break;\n      case jc:\n        t = W.Src;\n        break;\n      case tl:\n        t = W.OneMinusSrc;\n        break;\n      case Qc:\n        t = W.SrcAlpha;\n        break;\n      case sl:\n        t = W.OneMinusSrcAlpha;\n        break;\n      case Jc:\n        t = W.Dst;\n        break;\n      case nl:\n        t = W.OneMinusDstColor;\n        break;\n      case el:\n        t = W.DstAlpha;\n        break;\n      case rl:\n        t = W.OneMinusDstAlpha;\n        break;\n      case Zc:\n        t = W.SrcAlphaSaturated;\n        break;\n      case t_:\n        t = W.Constant;\n        break;\n      case s_:\n        t = W.OneMinusConstant;\n        break;\n      default:\n        console.error(\"THREE.WebGPURenderer: Blend factor not supported.\", e);\n    }\n    return t;\n  }\n  _getStencilCompare(e) {\n    let t;\n    const s = e.stencilFunc;\n    switch (s) {\n      case lm:\n        t = we.Never;\n        break;\n      case cm:\n        t = we.Always;\n        break;\n      case um:\n        t = we.Less;\n        break;\n      case am:\n        t = we.LessEqual;\n        break;\n      case om:\n        t = we.Equal;\n        break;\n      case im:\n        t = we.GreaterEqual;\n        break;\n      case rm:\n        t = we.Greater;\n        break;\n      case nm:\n        t = we.NotEqual;\n        break;\n      default:\n        console.error(\"THREE.WebGPURenderer: Invalid stencil function.\", s);\n    }\n    return t;\n  }\n  _getStencilOperation(e) {\n    let t;\n    switch (e) {\n      case xm:\n        t = Wt.Keep;\n        break;\n      case ym:\n        t = Wt.Zero;\n        break;\n      case mm:\n        t = Wt.Replace;\n        break;\n      case gm:\n        t = Wt.Invert;\n        break;\n      case fm:\n        t = Wt.IncrementClamp;\n        break;\n      case pm:\n        t = Wt.DecrementClamp;\n        break;\n      case hm:\n        t = Wt.IncrementWrap;\n        break;\n      case dm:\n        t = Wt.DecrementWrap;\n        break;\n      default:\n        console.error(\"THREE.WebGPURenderer: Invalid stencil operation.\", t);\n    }\n    return t;\n  }\n  _getBlendOperation(e) {\n    let t;\n    switch (e) {\n      case Us:\n        t = ns.Add;\n        break;\n      case qc:\n        t = ns.Subtract;\n        break;\n      case Xc:\n        t = ns.ReverseSubtract;\n        break;\n      case _m:\n        t = ns.Min;\n        break;\n      case Tm:\n        t = ns.Max;\n        break;\n      default:\n        console.error(\"THREE.WebGPUPipelineUtils: Blend equation not supported.\", e);\n    }\n    return t;\n  }\n  _getPrimitiveState(e, t, s) {\n    const n = {}, r = this.backend.utils;\n    switch (n.topology = r.getPrimitiveTopology(e, s), t.index !== null && e.isLine === !0 && e.isLineSegments !== !0 && (n.stripIndexFormat = t.index.array instanceof Uint16Array ? tn.Uint16 : tn.Uint32), s.side) {\n      case ho:\n        n.frontFace = oo.CCW, n.cullMode = ao.Back;\n        break;\n      case Tt:\n        n.frontFace = oo.CCW, n.cullMode = ao.Front;\n        break;\n      case Ws:\n        n.frontFace = oo.CCW, n.cullMode = ao.None;\n        break;\n      default:\n        console.error(\"THREE.WebGPUPipelineUtils: Unknown material.side value.\", s.side);\n        break;\n    }\n    return n;\n  }\n  _getColorWriteMask(e) {\n    return e.colorWrite === !0 ? Uc.All : Uc.None;\n  }\n  _getDepthCompare(e) {\n    let t;\n    if (e.depthTest === !1)\n      t = we.Always;\n    else {\n      const s = e.depthFunc;\n      switch (s) {\n        case pl:\n          t = we.Never;\n          break;\n        case hl:\n          t = we.Always;\n          break;\n        case dl:\n          t = we.Less;\n          break;\n        case ll:\n          t = we.LessEqual;\n          break;\n        case cl:\n          t = we.Equal;\n          break;\n        case ul:\n          t = we.GreaterEqual;\n          break;\n        case al:\n          t = we.Greater;\n          break;\n        case ol:\n          t = we.NotEqual;\n          break;\n        default:\n          console.error(\"THREE.WebGPUPipelineUtils: Invalid depth function.\", s);\n      }\n    }\n    return t;\n  }\n}\nclass qA extends sg {\n  /**\n   * Constructs a new WebGPU backend.\n   *\n   * @param {Object} parameters - The configuration parameter.\n   * @param {Boolean} [parameters.logarithmicDepthBuffer=false] - Whether logarithmic depth buffer is enabled or not.\n   * @param {Boolean} [parameters.alpha=true] - Whether the default framebuffer (which represents the final contents of the canvas) should be transparent or opaque.\n   * @param {Boolean} [parameters.depth=true] - Whether the default framebuffer should have a depth buffer or not.\n   * @param {Boolean} [parameters.stencil=false] - Whether the default framebuffer should have a stencil buffer or not.\n   * @param {Boolean} [parameters.antialias=false] - Whether MSAA as the default anti-aliasing should be enabled or not.\n   * @param {Number} [parameters.samples=0] - When `antialias` is `true`, `4` samples are used by default. Set this parameter to any other integer value than 0 to overwrite the default.\n   * @param {Boolean} [parameters.forceWebGL=false] - If set to `true`, the renderer uses it WebGL 2 backend no matter if WebGPU is supported or not.\n   * @param {Boolean} [parameters.trackTimestamp=false] - Whether to track timestamps with a Timestamp Query API or not.\n   * @param {String?} [parameters.powerPreference=null] - The power preference.\n   * @param {String?} [parameters.requiredLimits={}] - Specifies the limits that are required by the device request.\n   * The request will fail if the adapter cannot provide these limits.\n   */\n  constructor(e = {}) {\n    super(e), this.isWebGPUBackend = !0, this.parameters.alpha = e.alpha === void 0 ? !0 : e.alpha, this.parameters.requiredLimits = e.requiredLimits === void 0 ? {} : e.requiredLimits, this.trackTimestamp = e.trackTimestamp === !0, this.device = null, this.context = null, this.colorBuffer = null, this.defaultRenderPassdescriptor = null, this.utils = new GA(this), this.attributeUtils = new $A(this), this.bindingUtils = new WA(this), this.pipelineUtils = new HA(this), this.textureUtils = new wA(this), this.occludedResolveCache = /* @__PURE__ */ new Map();\n  }\n  /**\n   * Initializes the backend so it is ready for usage.\n   *\n   * @async\n   * @param {Renderer} renderer - The renderer.\n   * @return {Promise} A Promise that resolves when the backend has been initialized.\n   */\n  async init(e) {\n    await super.init(e);\n    const t = this.parameters;\n    let s;\n    if (t.device === void 0) {\n      const i = {\n        powerPreference: t.powerPreference\n      }, a = typeof navigator < \"u\" ? await navigator.gpu.requestAdapter(i) : null;\n      if (a === null)\n        throw new Error(\"WebGPUBackend: Unable to create WebGPU adapter.\");\n      const u = Object.values(Qo), c = [];\n      for (const d of u)\n        a.features.has(d) && c.push(d);\n      const l = {\n        requiredFeatures: c,\n        requiredLimits: t.requiredLimits\n      };\n      s = await a.requestDevice(l);\n    } else\n      s = t.device;\n    s.lost.then((i) => {\n      const a = {\n        api: \"WebGPU\",\n        message: i.message || \"Unknown reason\",\n        reason: i.reason || null,\n        originalEvent: i\n      };\n      e.onDeviceLost(a);\n    });\n    const n = t.context !== void 0 ? t.context : e.domElement.getContext(\"webgpu\");\n    this.device = s, this.context = n;\n    const r = t.alpha ? \"premultiplied\" : \"opaque\";\n    this.trackTimestamp = this.trackTimestamp && this.hasFeature(Qo.TimestampQuery), this.context.configure({\n      device: this.device,\n      format: this.utils.getPreferredCanvasFormat(),\n      usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC,\n      alphaMode: r\n    }), this.updateSize();\n  }\n  /**\n   * The coordinate system of the backend.\n   *\n   * @type {Number}\n   * @readonly\n   */\n  get coordinateSystem() {\n    return sn;\n  }\n  /**\n   * Transfers buffer data from a storage buffer attribute\n   * from the GPU to the CPU in context of compute shaders.\n   *\n   * @async\n   * @param {StorageBufferAttribute} attribute - The storage buffer attribute.\n   * @return {Promise<ArrayBuffer>} A promise that resolves with the buffer data when the data are ready.\n   */\n  async getArrayBufferAsync(e) {\n    return await this.attributeUtils.getArrayBufferAsync(e);\n  }\n  /**\n   * Returns the backend's rendering context.\n   *\n   * @return {GPUCanvasContext} The rendering context.\n   */\n  getContext() {\n    return this.context;\n  }\n  /**\n   * Returns the default render pass descriptor.\n   *\n   * In WebGPU, the default framebuffer must be configured\n   * like custom fraemebuffers so the backend needs a render\n   * pass descriptor even when rendering directly to screen.\n   *\n   * @private\n   * @return {Object} The render pass descriptor.\n   */\n  _getDefaultRenderPassDescriptor() {\n    let e = this.defaultRenderPassdescriptor;\n    if (e === null) {\n      const s = this.renderer;\n      e = {\n        colorAttachments: [{\n          view: null\n        }]\n      }, (this.renderer.depth === !0 || this.renderer.stencil === !0) && (e.depthStencilAttachment = {\n        view: this.textureUtils.getDepthBuffer(s.depth, s.stencil).createView()\n      });\n      const n = e.colorAttachments[0];\n      this.renderer.samples > 0 ? n.view = this.colorBuffer.createView() : n.resolveTarget = void 0, this.defaultRenderPassdescriptor = e;\n    }\n    const t = e.colorAttachments[0];\n    return this.renderer.samples > 0 ? t.resolveTarget = this.context.getCurrentTexture().createView() : t.view = this.context.getCurrentTexture().createView(), e;\n  }\n  /**\n   * Returns the render pass descriptor for the given render context.\n   *\n   * @private\n   * @param {RenderContext} renderContext - The render context.\n   * @param {Object} colorAttachmentsConfig - Configuration object for the color attachments.\n   * @return {Object} The render pass descriptor.\n   */\n  _getRenderPassDescriptor(e, t = {}) {\n    const s = e.renderTarget, n = this.get(s);\n    let r = n.descriptors;\n    if (r === void 0 || n.width !== s.width || n.height !== s.height || n.dimensions !== s.dimensions || n.activeMipmapLevel !== s.activeMipmapLevel || n.activeCubeFace !== e.activeCubeFace || n.samples !== s.samples || n.loadOp !== t.loadOp) {\n      r = {}, n.descriptors = r;\n      const u = () => {\n        s.removeEventListener(\"dispose\", u), this.delete(s);\n      };\n      s.addEventListener(\"dispose\", u);\n    }\n    const i = e.getCacheKey();\n    let a = r[i];\n    if (a === void 0) {\n      const u = e.textures, c = [];\n      let l;\n      for (let d = 0; d < u.length; d++) {\n        const h = this.get(u[d]), p = {\n          label: `colorAttachment_${d}`,\n          baseMipLevel: e.activeMipmapLevel,\n          mipLevelCount: 1,\n          baseArrayLayer: e.activeCubeFace,\n          arrayLayerCount: 1,\n          dimension: Oe.TwoD\n        };\n        s.isRenderTarget3D ? (l = e.activeCubeFace, p.baseArrayLayer = 0, p.dimension = Oe.ThreeD, p.depthOrArrayLayers = u[d].image.depth) : s.isRenderTargetArray && (p.dimension = Oe.TwoDArray, p.depthOrArrayLayers = u[d].image.depth);\n        const f = h.texture.createView(p);\n        let m, _;\n        h.msaaTexture !== void 0 ? (m = h.msaaTexture.createView(), _ = f) : (m = f, _ = void 0), c.push({\n          view: m,\n          depthSlice: l,\n          resolveTarget: _,\n          loadOp: ye.Load,\n          storeOp: Fe.Store,\n          ...t\n        });\n      }\n      if (a = {\n        colorAttachments: c\n      }, e.depth) {\n        const h = {\n          view: this.get(e.depthTexture).texture.createView()\n        };\n        a.depthStencilAttachment = h;\n      }\n      r[i] = a, n.width = s.width, n.height = s.height, n.samples = s.samples, n.activeMipmapLevel = e.activeMipmapLevel, n.activeCubeFace = e.activeCubeFace, n.dimensions = s.dimensions, n.depthSlice = l, n.loadOp = c[0].loadOp;\n    }\n    return a;\n  }\n  /**\n   * This method is executed at the beginning of a render call and prepares\n   * the WebGPU state for upcoming render calls\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  beginRender(e) {\n    const t = this.get(e), s = this.device, n = e.occlusionQueryCount;\n    let r;\n    n > 0 && (t.currentOcclusionQuerySet && t.currentOcclusionQuerySet.destroy(), t.currentOcclusionQueryBuffer && t.currentOcclusionQueryBuffer.destroy(), t.currentOcclusionQuerySet = t.occlusionQuerySet, t.currentOcclusionQueryBuffer = t.occlusionQueryBuffer, t.currentOcclusionQueryObjects = t.occlusionQueryObjects, r = s.createQuerySet({ type: \"occlusion\", count: n, label: `occlusionQuerySet_${e.id}` }), t.occlusionQuerySet = r, t.occlusionQueryIndex = 0, t.occlusionQueryObjects = new Array(n), t.lastOcclusionObject = null);\n    let i;\n    e.textures === null ? i = this._getDefaultRenderPassDescriptor() : i = this._getRenderPassDescriptor(e, { loadOp: ye.Load }), this.initTimestampQuery(e, i), i.occlusionQuerySet = r;\n    const a = i.depthStencilAttachment;\n    if (e.textures !== null) {\n      const l = i.colorAttachments;\n      for (let d = 0; d < l.length; d++) {\n        const h = l[d];\n        e.clearColor ? (h.clearValue = d === 0 ? e.clearColorValue : { r: 0, g: 0, b: 0, a: 1 }, h.loadOp = ye.Clear, h.storeOp = Fe.Store) : (h.loadOp = ye.Load, h.storeOp = Fe.Store);\n      }\n    } else {\n      const l = i.colorAttachments[0];\n      e.clearColor ? (l.clearValue = e.clearColorValue, l.loadOp = ye.Clear, l.storeOp = Fe.Store) : (l.loadOp = ye.Load, l.storeOp = Fe.Store);\n    }\n    e.depth && (e.clearDepth ? (a.depthClearValue = e.clearDepthValue, a.depthLoadOp = ye.Clear, a.depthStoreOp = Fe.Store) : (a.depthLoadOp = ye.Load, a.depthStoreOp = Fe.Store)), e.stencil && (e.clearStencil ? (a.stencilClearValue = e.clearStencilValue, a.stencilLoadOp = ye.Clear, a.stencilStoreOp = Fe.Store) : (a.stencilLoadOp = ye.Load, a.stencilStoreOp = Fe.Store));\n    const u = s.createCommandEncoder({ label: \"renderContext_\" + e.id }), c = u.beginRenderPass(i);\n    if (t.descriptor = i, t.encoder = u, t.currentPass = c, t.currentSets = { attributes: {}, bindingGroups: [], pipeline: null, index: null }, t.renderBundles = [], e.viewport && this.updateViewport(e), e.scissor) {\n      const { x: l, y: d, width: h, height: p } = e.scissorValue;\n      c.setScissorRect(l, d, h, p);\n    }\n  }\n  /**\n   * This method is executed at the end of a render call and finalizes work\n   * after draw calls.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  finishRender(e) {\n    const t = this.get(e), s = e.occlusionQueryCount;\n    if (t.renderBundles.length > 0 && t.currentPass.executeBundles(t.renderBundles), s > t.occlusionQueryIndex && t.currentPass.endOcclusionQuery(), t.currentPass.end(), s > 0) {\n      const n = s * 8;\n      let r = this.occludedResolveCache.get(n);\n      r === void 0 && (r = this.device.createBuffer(\n        {\n          size: n,\n          usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.COPY_SRC\n        }\n      ), this.occludedResolveCache.set(n, r));\n      const i = this.device.createBuffer(\n        {\n          size: n,\n          usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n        }\n      );\n      t.encoder.resolveQuerySet(t.occlusionQuerySet, 0, s, r, 0), t.encoder.copyBufferToBuffer(r, 0, i, 0, n), t.occlusionQueryBuffer = i, this.resolveOccludedAsync(e);\n    }\n    if (this.prepareTimestampBuffer(e, t.encoder), this.device.queue.submit([t.encoder.finish()]), e.textures !== null) {\n      const n = e.textures;\n      for (let r = 0; r < n.length; r++) {\n        const i = n[r];\n        i.generateMipmaps === !0 && this.textureUtils.generateMipmaps(i);\n      }\n    }\n  }\n  /**\n   * Returns `true` if the given 3D object is fully occluded by other\n   * 3D objects in the scene.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   * @param {Object3D} object - The 3D object to test.\n   * @return {Boolean} Whether the 3D object is fully occluded or not.\n   */\n  isOccluded(e, t) {\n    const s = this.get(e);\n    return s.occluded && s.occluded.has(t);\n  }\n  /**\n   * This method processes the result of occlusion queries and writes it\n   * into render context data.\n   *\n   * @async\n   * @param {RenderContext} renderContext - The render context.\n   */\n  async resolveOccludedAsync(e) {\n    const t = this.get(e), { currentOcclusionQueryBuffer: s, currentOcclusionQueryObjects: n } = t;\n    if (s && n) {\n      const r = /* @__PURE__ */ new WeakSet();\n      t.currentOcclusionQueryObjects = null, t.currentOcclusionQueryBuffer = null, await s.mapAsync(GPUMapMode.READ);\n      const i = s.getMappedRange(), a = new BigUint64Array(i);\n      for (let u = 0; u < n.length; u++)\n        a[u] !== BigInt(0) && r.add(n[u]);\n      s.destroy(), t.occluded = r;\n    }\n  }\n  /**\n   * Updates the viewport with the values from the given render context.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  updateViewport(e) {\n    const { currentPass: t } = this.get(e), { x: s, y: n, width: r, height: i, minDepth: a, maxDepth: u } = e.viewportValue;\n    t.setViewport(s, n, r, i, a, u);\n  }\n  /**\n   * Performs a clear operation.\n   *\n   * @param {Boolean} color - Whether the color buffer should be cleared or not.\n   * @param {Boolean} depth - Whether the depth buffer should be cleared or not.\n   * @param {Boolean} stencil - Whether the stencil buffer should be cleared or not.\n   * @param {RenderContext?} [renderTargetContext=null] - The render context of the current set render target.\n   */\n  clear(e, t, s, n = null) {\n    const r = this.device, i = this.renderer;\n    let a = [], u, c, l, d;\n    if (e) {\n      const f = this.getClearColor();\n      if (this.renderer.alpha === !0) {\n        const m = f.a;\n        c = { r: f.r * m, g: f.g * m, b: f.b * m, a: m };\n      } else\n        c = { r: f.r, g: f.g, b: f.b, a: f.a };\n    }\n    if (n === null) {\n      l = i.depth, d = i.stencil;\n      const f = this._getDefaultRenderPassDescriptor();\n      if (e) {\n        a = f.colorAttachments;\n        const m = a[0];\n        m.clearValue = c, m.loadOp = ye.Clear, m.storeOp = Fe.Store;\n      }\n      (l || d) && (u = f.depthStencilAttachment);\n    } else\n      l = n.depth, d = n.stencil, e && (a = this._getRenderPassDescriptor(n, { loadOp: ye.Clear }).colorAttachments), (l || d) && (u = {\n        view: this.get(n.depthTexture).texture.createView()\n      });\n    l && (t ? (u.depthLoadOp = ye.Clear, u.depthClearValue = i.getClearDepth(), u.depthStoreOp = Fe.Store) : (u.depthLoadOp = ye.Load, u.depthStoreOp = Fe.Store)), d && (s ? (u.stencilLoadOp = ye.Clear, u.stencilClearValue = i.getClearStencil(), u.stencilStoreOp = Fe.Store) : (u.stencilLoadOp = ye.Load, u.stencilStoreOp = Fe.Store));\n    const h = r.createCommandEncoder({});\n    h.beginRenderPass({\n      colorAttachments: a,\n      depthStencilAttachment: u\n    }).end(), r.queue.submit([h.finish()]);\n  }\n  // compute\n  /**\n   * This method is executed at the beginning of a compute call and\n   * prepares the state for upcoming compute tasks.\n   *\n   * @param {Node|Array<Node>} computeGroup - The compute node(s).\n   */\n  beginCompute(e) {\n    const t = this.get(e), s = {};\n    this.initTimestampQuery(e, s), t.cmdEncoderGPU = this.device.createCommandEncoder(), t.passEncoderGPU = t.cmdEncoderGPU.beginComputePass(s);\n  }\n  /**\n   * Executes a compute command for the given compute node.\n   *\n   * @param {Node|Array<Node>} computeGroup - The group of compute nodes of a compute call. Can be a single compute node.\n   * @param {Node} computeNode - The compute node.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   * @param {ComputePipeline} pipeline - The compute pipeline.\n   */\n  compute(e, t, s, n) {\n    const { passEncoderGPU: r } = this.get(e), i = this.get(n).pipeline;\n    r.setPipeline(i);\n    for (let l = 0, d = s.length; l < d; l++) {\n      const h = s[l], p = this.get(h);\n      r.setBindGroup(l, p.group);\n    }\n    const a = this.device.limits.maxComputeWorkgroupsPerDimension, u = this.get(t);\n    u.dispatchSize === void 0 && (u.dispatchSize = { x: 0, y: 1, z: 1 });\n    const { dispatchSize: c } = u;\n    t.dispatchCount > a ? (c.x = Math.min(t.dispatchCount, a), c.y = Math.ceil(t.dispatchCount / a)) : c.x = t.dispatchCount, r.dispatchWorkgroups(\n      c.x,\n      c.y,\n      c.z\n    );\n  }\n  /**\n   * This method is executed at the end of a compute call and\n   * finalizes work after compute tasks.\n   *\n   * @param {Node|Array<Node>} computeGroup - The compute node(s).\n   */\n  finishCompute(e) {\n    const t = this.get(e);\n    t.passEncoderGPU.end(), this.prepareTimestampBuffer(e, t.cmdEncoderGPU), this.device.queue.submit([t.cmdEncoderGPU.finish()]);\n  }\n  /**\n   * Can be used to synchronize CPU operations with GPU tasks. So when this method is called,\n   * the CPU waits for the GPU to complete its operation (e.g. a compute task).\n   *\n   * @async\n   * @return {Promise} A Promise that resolves when synchronization has been finished.\n   */\n  async waitForGPU() {\n    await this.device.queue.onSubmittedWorkDone();\n  }\n  // render object\n  /**\n   * Executes a draw command for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object to draw.\n   * @param {Info} info - Holds a series of statistical information about the GPU memory and the rendering process.\n   */\n  draw(e, t) {\n    const { object: s, context: n, pipeline: r } = e, i = e.getBindings(), a = this.get(n), u = this.get(r).pipeline, c = a.currentSets, l = a.currentPass, d = e.getDrawParameters();\n    if (d === null) return;\n    c.pipeline !== u && (l.setPipeline(u), c.pipeline = u);\n    const h = c.bindingGroups;\n    for (let _ = 0, S = i.length; _ < S; _++) {\n      const A = i[_], M = this.get(A);\n      h[A.index] !== A.id && (l.setBindGroup(A.index, M.group), h[A.index] = A.id);\n    }\n    const p = e.getIndex(), f = p !== null;\n    if (f === !0 && c.index !== p) {\n      const _ = this.get(p).buffer, S = p.array instanceof Uint16Array ? tn.Uint16 : tn.Uint32;\n      l.setIndexBuffer(_, S), c.index = p;\n    }\n    const m = e.getVertexBuffers();\n    for (let _ = 0, S = m.length; _ < S; _++) {\n      const A = m[_];\n      if (c.attributes[_] !== A) {\n        const M = this.get(A).buffer;\n        l.setVertexBuffer(_, M), c.attributes[_] = A;\n      }\n    }\n    if (a.occlusionQuerySet !== void 0) {\n      const _ = a.lastOcclusionObject;\n      _ !== s && (_ !== null && _.occlusionTest === !0 && (l.endOcclusionQuery(), a.occlusionQueryIndex++), s.occlusionTest === !0 && (l.beginOcclusionQuery(a.occlusionQueryIndex), a.occlusionQueryObjects[a.occlusionQueryIndex] = s), a.lastOcclusionObject = s);\n    }\n    if (s.isBatchedMesh === !0) {\n      const _ = s._multiDrawStarts, S = s._multiDrawCounts, A = s._multiDrawCount, M = s._multiDrawInstances;\n      for (let F = 0; F < A; F++) {\n        const D = M ? M[F] : 1, P = D > 1 ? 0 : F;\n        f === !0 ? l.drawIndexed(S[F], D, _[F] / p.array.BYTES_PER_ELEMENT, 0, P) : l.draw(S[F], D, _[F], P);\n      }\n    } else if (f === !0) {\n      const { vertexCount: _, instanceCount: S, firstVertex: A } = d, M = e.getIndirect();\n      if (M !== null) {\n        const F = this.get(M).buffer;\n        l.drawIndexedIndirect(F, 0);\n      } else\n        l.drawIndexed(_, S, A, 0, 0);\n      t.update(s, _, S);\n    } else {\n      const { vertexCount: _, instanceCount: S, firstVertex: A } = d, M = e.getIndirect();\n      if (M !== null) {\n        const F = this.get(M).buffer;\n        l.drawIndirect(F, 0);\n      } else\n        l.draw(_, S, A, 0);\n      t.update(s, _, S);\n    }\n  }\n  // cache key\n  /**\n   * Returns `true` if the render pipeline requires an update.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {Boolean} Whether the render pipeline requires an update or not.\n   */\n  needsRenderUpdate(e) {\n    const t = this.get(e), { object: s, material: n } = e, r = this.utils, i = r.getSampleCountRenderContext(e.context), a = r.getCurrentColorSpace(e.context), u = r.getCurrentColorFormat(e.context), c = r.getCurrentDepthStencilFormat(e.context), l = r.getPrimitiveTopology(s, n);\n    let d = !1;\n    return (t.material !== n || t.materialVersion !== n.version || t.transparent !== n.transparent || t.blending !== n.blending || t.premultipliedAlpha !== n.premultipliedAlpha || t.blendSrc !== n.blendSrc || t.blendDst !== n.blendDst || t.blendEquation !== n.blendEquation || t.blendSrcAlpha !== n.blendSrcAlpha || t.blendDstAlpha !== n.blendDstAlpha || t.blendEquationAlpha !== n.blendEquationAlpha || t.colorWrite !== n.colorWrite || t.depthWrite !== n.depthWrite || t.depthTest !== n.depthTest || t.depthFunc !== n.depthFunc || t.stencilWrite !== n.stencilWrite || t.stencilFunc !== n.stencilFunc || t.stencilFail !== n.stencilFail || t.stencilZFail !== n.stencilZFail || t.stencilZPass !== n.stencilZPass || t.stencilFuncMask !== n.stencilFuncMask || t.stencilWriteMask !== n.stencilWriteMask || t.side !== n.side || t.alphaToCoverage !== n.alphaToCoverage || t.sampleCount !== i || t.colorSpace !== a || t.colorFormat !== u || t.depthStencilFormat !== c || t.primitiveTopology !== l || t.clippingContextCacheKey !== e.clippingContextCacheKey) && (t.material = n, t.materialVersion = n.version, t.transparent = n.transparent, t.blending = n.blending, t.premultipliedAlpha = n.premultipliedAlpha, t.blendSrc = n.blendSrc, t.blendDst = n.blendDst, t.blendEquation = n.blendEquation, t.blendSrcAlpha = n.blendSrcAlpha, t.blendDstAlpha = n.blendDstAlpha, t.blendEquationAlpha = n.blendEquationAlpha, t.colorWrite = n.colorWrite, t.depthWrite = n.depthWrite, t.depthTest = n.depthTest, t.depthFunc = n.depthFunc, t.stencilWrite = n.stencilWrite, t.stencilFunc = n.stencilFunc, t.stencilFail = n.stencilFail, t.stencilZFail = n.stencilZFail, t.stencilZPass = n.stencilZPass, t.stencilFuncMask = n.stencilFuncMask, t.stencilWriteMask = n.stencilWriteMask, t.side = n.side, t.alphaToCoverage = n.alphaToCoverage, t.sampleCount = i, t.colorSpace = a, t.colorFormat = u, t.depthStencilFormat = c, t.primitiveTopology = l, t.clippingContextCacheKey = e.clippingContextCacheKey, d = !0), d;\n  }\n  /**\n   * Returns a cache key that is used to identify render pipelines.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @return {String} The cache key.\n   */\n  getRenderCacheKey(e) {\n    const { object: t, material: s } = e, n = this.utils, r = e.context;\n    return [\n      s.transparent,\n      s.blending,\n      s.premultipliedAlpha,\n      s.blendSrc,\n      s.blendDst,\n      s.blendEquation,\n      s.blendSrcAlpha,\n      s.blendDstAlpha,\n      s.blendEquationAlpha,\n      s.colorWrite,\n      s.depthWrite,\n      s.depthTest,\n      s.depthFunc,\n      s.stencilWrite,\n      s.stencilFunc,\n      s.stencilFail,\n      s.stencilZFail,\n      s.stencilZPass,\n      s.stencilFuncMask,\n      s.stencilWriteMask,\n      s.side,\n      n.getSampleCountRenderContext(r),\n      n.getCurrentColorSpace(r),\n      n.getCurrentColorFormat(r),\n      n.getCurrentDepthStencilFormat(r),\n      n.getPrimitiveTopology(t, s),\n      e.getGeometryCacheKey(),\n      e.clippingContextCacheKey\n    ].join();\n  }\n  // textures\n  /**\n   * Creates a sampler for the given texture.\n   *\n   * @param {Texture} texture - The texture to create the sampler for.\n   */\n  createSampler(e) {\n    this.textureUtils.createSampler(e);\n  }\n  /**\n   * Destroys the sampler for the given texture.\n   *\n   * @param {Texture} texture - The texture to destroy the sampler for.\n   */\n  destroySampler(e) {\n    this.textureUtils.destroySampler(e);\n  }\n  /**\n   * Creates a default texture for the given texture that can be used\n   * as a placeholder until the actual texture is ready for usage.\n   *\n   * @param {Texture} texture - The texture to create a default texture for.\n   */\n  createDefaultTexture(e) {\n    this.textureUtils.createDefaultTexture(e);\n  }\n  /**\n   * Defines a texture on the GPU for the given texture object.\n   *\n   * @param {Texture} texture - The texture.\n   * @param {Object} [options={}] - Optional configuration parameter.\n   */\n  createTexture(e, t) {\n    this.textureUtils.createTexture(e, t);\n  }\n  /**\n   * Uploads the updated texture data to the GPU.\n   *\n   * @param {Texture} texture - The texture.\n   * @param {Object} [options={}] - Optional configuration parameter.\n   */\n  updateTexture(e, t) {\n    this.textureUtils.updateTexture(e, t);\n  }\n  /**\n   * Generates mipmaps for the given texture\n   *\n   * @param {Texture} texture - The texture.\n   */\n  generateMipmaps(e) {\n    this.textureUtils.generateMipmaps(e);\n  }\n  /**\n   * Destroys the GPU data for the given texture object.\n   *\n   * @param {Texture} texture - The texture.\n   */\n  destroyTexture(e) {\n    this.textureUtils.destroyTexture(e);\n  }\n  /**\n   * Returns texture data as a typed array.\n   *\n   * @param {Texture} texture - The texture to copy.\n   * @param {Number} x - The x coordinate of the copy origin.\n   * @param {Number} y - The y coordinate of the copy origin.\n   * @param {Number} width - The width of the copy.\n   * @param {Number} height - The height of the copy.\n   * @param {Number} faceIndex - The face index.\n   * @return {TypedArray} The texture data as a typed array.\n   */\n  copyTextureToBuffer(e, t, s, n, r, i) {\n    return this.textureUtils.copyTextureToBuffer(e, t, s, n, r, i);\n  }\n  /**\n   * Inits a time stamp query for the given render context.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   * @param {Object} descriptor - The query descriptor.\n   */\n  initTimestampQuery(e, t) {\n    if (!this.trackTimestamp) return;\n    const s = this.get(e);\n    if (!s.timeStampQuerySet) {\n      const n = e.isComputeNode ? \"compute\" : \"render\", r = this.device.createQuerySet({ type: \"timestamp\", count: 2, label: `timestamp_${n}_${e.id}` });\n      Object.assign(t, { timestampWrites: {\n        querySet: r,\n        beginningOfPassWriteIndex: 0,\n        // Write timestamp in index 0 when pass begins.\n        endOfPassWriteIndex: 1\n        // Write timestamp in index 1 when pass ends.\n      } }), s.timeStampQuerySet = r;\n    }\n  }\n  /**\n   * Prepares the timestamp buffer.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   * @param {GPUCommandEncoder} encoder - The command encoder.\n   */\n  prepareTimestampBuffer(e, t) {\n    if (!this.trackTimestamp) return;\n    const s = this.get(e), n = 2 * BigInt64Array.BYTES_PER_ELEMENT;\n    s.currentTimestampQueryBuffers === void 0 && (s.currentTimestampQueryBuffers = {\n      resolveBuffer: this.device.createBuffer({\n        label: \"timestamp resolve buffer\",\n        size: n,\n        usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.COPY_SRC\n      }),\n      resultBuffer: this.device.createBuffer({\n        label: \"timestamp result buffer\",\n        size: n,\n        usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n      })\n    });\n    const { resolveBuffer: r, resultBuffer: i } = s.currentTimestampQueryBuffers;\n    t.resolveQuerySet(s.timeStampQuerySet, 0, 2, r, 0), i.mapState === \"unmapped\" && t.copyBufferToBuffer(r, 0, i, 0, n);\n  }\n  /**\n   * Resolves the time stamp for the given render context and type.\n   *\n   * @async\n   * @param {RenderContext} renderContext - The render context.\n   * @param {String} type - The render context.\n   * @return {Promise} A Promise that resolves when the time stamp has been computed.\n   */\n  async resolveTimestampAsync(e, t = \"render\") {\n    if (!this.trackTimestamp) return;\n    const s = this.get(e);\n    if (s.currentTimestampQueryBuffers === void 0) return;\n    const { resultBuffer: n } = s.currentTimestampQueryBuffers;\n    n.mapState === \"unmapped\" && n.mapAsync(GPUMapMode.READ).then(() => {\n      const r = new BigUint64Array(n.getMappedRange()), i = Number(r[1] - r[0]) / 1e6;\n      this.renderer.info.updateTimestamp(t, i), n.unmap();\n    });\n  }\n  // node builder\n  /**\n   * Returns a node builder for the given render object.\n   *\n   * @param {RenderObject} object - The render object.\n   * @param {Renderer} renderer - The renderer.\n   * @return {WGSLNodeBuilder} The node builder.\n   */\n  createNodeBuilder(e, t) {\n    return new VA(e, t);\n  }\n  // program\n  /**\n   * Creates a shader program from the given programmable stage.\n   *\n   * @param {ProgrammableStage} program - The programmable stage.\n   */\n  createProgram(e) {\n    const t = this.get(e);\n    t.module = {\n      module: this.device.createShaderModule({ code: e.code, label: e.stage + (e.name !== \"\" ? `_${e.name}` : \"\") }),\n      entryPoint: \"main\"\n    };\n  }\n  /**\n   * Destroys the shader program of the given programmable stage.\n   *\n   * @param {ProgrammableStage} program - The programmable stage.\n   */\n  destroyProgram(e) {\n    this.delete(e);\n  }\n  // pipelines\n  /**\n   * Creates a render pipeline for the given render object.\n   *\n   * @param {RenderObject} renderObject - The render object.\n   * @param {Array<Promise>} promises - An array of compilation promises which are used in `compileAsync()`.\n   */\n  createRenderPipeline(e, t) {\n    this.pipelineUtils.createRenderPipeline(e, t);\n  }\n  /**\n   * Creates a compute pipeline for the given compute node.\n   *\n   * @param {ComputePipeline} computePipeline - The compute pipeline.\n   * @param {Array<BindGroup>} bindings - The bindings.\n   */\n  createComputePipeline(e, t) {\n    this.pipelineUtils.createComputePipeline(e, t);\n  }\n  /**\n   * Prepares the state for encoding render bundles.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   */\n  beginBundle(e) {\n    const t = this.get(e);\n    t._currentPass = t.currentPass, t._currentSets = t.currentSets, t.currentSets = { attributes: {}, bindingGroups: [], pipeline: null, index: null }, t.currentPass = this.pipelineUtils.createBundleEncoder(e);\n  }\n  /**\n   * After processing render bundles this method finalizes related work.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   * @param {RenderBundle} bundle - The render bundle.\n   */\n  finishBundle(e, t) {\n    const s = this.get(e), r = s.currentPass.finish();\n    this.get(t).bundleGPU = r, s.currentSets = s._currentSets, s.currentPass = s._currentPass;\n  }\n  /**\n   * Adds a render bundle to the render context data.\n   *\n   * @param {RenderContext} renderContext - The render context.\n   * @param {RenderBundle} bundle - The render bundle to add.\n   */\n  addBundle(e, t) {\n    this.get(e).renderBundles.push(this.get(t).bundleGPU);\n  }\n  // bindings\n  /**\n   * Creates bindings from the given bind group definition.\n   *\n   * @param {BindGroup} bindGroup - The bind group.\n   * @param {Array<BindGroup>} bindings - Array of bind groups.\n   * @param {Number} cacheIndex - The cache index.\n   * @param {Number} version - The version.\n   */\n  createBindings(e, t, s, n) {\n    this.bindingUtils.createBindings(e, t, s, n);\n  }\n  /**\n   * Updates the given bind group definition.\n   *\n   * @param {BindGroup} bindGroup - The bind group.\n   * @param {Array<BindGroup>} bindings - Array of bind groups.\n   * @param {Number} cacheIndex - The cache index.\n   * @param {Number} version - The version.\n   */\n  updateBindings(e, t, s, n) {\n    this.bindingUtils.createBindings(e, t, s, n);\n  }\n  /**\n   * Updates a buffer binding.\n   *\n   *  @param {Buffer} binding - The buffer binding to update.\n   */\n  updateBinding(e) {\n    this.bindingUtils.updateBinding(e);\n  }\n  // attributes\n  /**\n   * Creates the buffer of an indexed shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The indexed buffer attribute.\n   */\n  createIndexAttribute(e) {\n    this.attributeUtils.createAttribute(e, GPUBufferUsage.INDEX | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST);\n  }\n  /**\n   * Creates the buffer of a shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  createAttribute(e) {\n    this.attributeUtils.createAttribute(e, GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST);\n  }\n  /**\n   * Creates the buffer of a storage attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  createStorageAttribute(e) {\n    this.attributeUtils.createAttribute(e, GPUBufferUsage.STORAGE | GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST);\n  }\n  /**\n   * Creates the buffer of an indirect storage attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute.\n   */\n  createIndirectStorageAttribute(e) {\n    this.attributeUtils.createAttribute(e, GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST);\n  }\n  /**\n   * Updates the buffer of a shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute to update.\n   */\n  updateAttribute(e) {\n    this.attributeUtils.updateAttribute(e);\n  }\n  /**\n   * Destroys the buffer of a shader attribute.\n   *\n   * @param {BufferAttribute} attribute - The buffer attribute to destroy.\n   */\n  destroyAttribute(e) {\n    this.attributeUtils.destroyAttribute(e);\n  }\n  // canvas\n  /**\n   * Triggers an update of the default render pass descriptor.\n   */\n  updateSize() {\n    this.colorBuffer = this.textureUtils.getColorBuffer(), this.defaultRenderPassdescriptor = null;\n  }\n  // utils public\n  /**\n   * Returns the maximum anisotropy texture filtering value.\n   *\n   * @return {Number} The maximum anisotropy texture filtering value.\n   */\n  getMaxAnisotropy() {\n    return 16;\n  }\n  /**\n   * Checks if the given feature is supported  by the backend.\n   *\n   * @param {String} name - The feature's name.\n   * @return {Boolean} Whether the feature is supported or not.\n   */\n  hasFeature(e) {\n    return this.device.features.has(e);\n  }\n  /**\n   * Copies data of the given source texture to the given destination texture.\n   *\n   * @param {Texture} srcTexture - The source texture.\n   * @param {Texture} dstTexture - The destination texture.\n   * @param {Vector4?} [srcRegion=null] - The region of the source texture to copy.\n   * @param {(Vector2|Vector3)?} [dstPosition=null] - The destination position of the copy.\n   * @param {Number} [level=0] - The mip level to copy.\n   */\n  copyTextureToTexture(e, t, s = null, n = null, r = 0) {\n    let i = 0, a = 0, u = 0, c = 0, l = 0, d = 0, h = e.image.width, p = e.image.height;\n    s !== null && (c = s.x, l = s.y, d = s.z || 0, h = s.width, p = s.height), n !== null && (i = n.x, a = n.y, u = n.z || 0);\n    const f = this.device.createCommandEncoder({ label: \"copyTextureToTexture_\" + e.id + \"_\" + t.id }), m = this.get(e).texture, _ = this.get(t).texture;\n    f.copyTextureToTexture(\n      {\n        texture: m,\n        mipLevel: r,\n        origin: { x: c, y: l, z: d }\n      },\n      {\n        texture: _,\n        mipLevel: r,\n        origin: { x: i, y: a, z: u }\n      },\n      [\n        h,\n        p,\n        1\n      ]\n    ), this.device.queue.submit([f.finish()]);\n  }\n  /**\n   * Copies the current bound framebuffer to the given texture.\n   *\n   * @param {Texture} texture - The destination texture.\n   * @param {RenderContext} renderContext - The render context.\n   * @param {Vector4} rectangle - A four dimensional vector defining the origin and dimension of the copy.\n   */\n  copyFramebufferToTexture(e, t, s) {\n    const n = this.get(t);\n    let r = null;\n    t.renderTarget ? e.isDepthTexture ? r = this.get(t.depthTexture).texture : r = this.get(t.textures[0]).texture : e.isDepthTexture ? r = this.textureUtils.getDepthBuffer(t.depth, t.stencil) : r = this.context.getCurrentTexture();\n    const i = this.get(e).texture;\n    if (r.format !== i.format) {\n      console.error(\"WebGPUBackend: copyFramebufferToTexture: Source and destination formats do not match.\", r.format, i.format);\n      return;\n    }\n    let a;\n    if (n.currentPass ? (n.currentPass.end(), a = n.encoder) : a = this.device.createCommandEncoder({ label: \"copyFramebufferToTexture_\" + e.id }), a.copyTextureToTexture(\n      {\n        texture: r,\n        origin: [s.x, s.y, 0]\n      },\n      {\n        texture: i\n      },\n      [\n        s.z,\n        s.w\n      ]\n    ), e.generateMipmaps && this.textureUtils.generateMipmaps(e), n.currentPass) {\n      const { descriptor: u } = n;\n      for (let c = 0; c < u.colorAttachments.length; c++)\n        u.colorAttachments[c].loadOp = ye.Load;\n      if (t.depth && (u.depthStencilAttachment.depthLoadOp = ye.Load), t.stencil && (u.depthStencilAttachment.stencilLoadOp = ye.Load), n.currentPass = a.beginRenderPass(u), n.currentSets = { attributes: {}, bindingGroups: [], pipeline: null, index: null }, t.viewport && this.updateViewport(t), t.scissor) {\n        const { x: c, y: l, width: d, height: h } = t.scissorValue;\n        n.currentPass.setScissorRect(c, l, d, h);\n      }\n    } else\n      this.device.queue.submit([a.finish()]);\n  }\n}\nclass XA extends kc {\n  constructor(e, t, s, n, r, i) {\n    super(e, t, s, n, r, i), this.iesMap = null;\n  }\n  copy(e, t) {\n    return super.copy(e, t), this.iesMap = e.iesMap, this;\n  }\n}\nclass KA extends Yf {\n  /**\n   * Constructs a new standard node library.\n   */\n  constructor() {\n    super(), this.addMaterial(Jx, \"MeshPhongMaterial\"), this.addMaterial(Xp, \"MeshStandardMaterial\"), this.addMaterial(BT, \"MeshPhysicalMaterial\"), this.addMaterial(DT, \"MeshToonMaterial\"), this.addMaterial(qx, \"MeshBasicMaterial\"), this.addMaterial(Qx, \"MeshLambertMaterial\"), this.addMaterial(Ox, \"MeshNormalMaterial\"), this.addMaterial(VT, \"MeshMatcapMaterial\"), this.addMaterial(Ux, \"LineBasicMaterial\"), this.addMaterial(Dx, \"LineDashedMaterial\"), this.addMaterial(OT, \"PointsMaterial\"), this.addMaterial($T, \"SpriteMaterial\"), this.addMaterial(qT, \"ShadowMaterial\"), this.addLight(Kb, lg), this.addLight(Lv, dg), this.addLight(Vv, hg), this.addLight(Xf, kc), this.addLight(Ov, pg), this.addLight(kv, fg), this.addLight(zv, gg), this.addLight(Gv, XA), this.addToneMapping(gf, mg), this.addToneMapping(mf, yg), this.addToneMapping(yf, xg), this.addToneMapping(xf, Tg), this.addToneMapping(Tf, _g), this.addToneMapping(_f, Ng);\n  }\n}\nclass ZA extends Jv {\n  /**\n   * Constructs a new WebGPU renderer.\n   *\n   * @param {Object} parameters - The configuration parameter.\n   * @param {Boolean} [parameters.logarithmicDepthBuffer=false] - Whether logarithmic depth buffer is enabled or not.\n   * @param {Boolean} [parameters.alpha=true] - Whether the default framebuffer (which represents the final contents of the canvas) should be transparent or opaque.\n   * @param {Boolean} [parameters.depth=true] - Whether the default framebuffer should have a depth buffer or not.\n   * @param {Boolean} [parameters.stencil=false] - Whether the default framebuffer should have a stencil buffer or not.\n   * @param {Boolean} [parameters.antialias=false] - Whether MSAA as the default anti-aliasing should be enabled or not.\n   * @param {Number} [parameters.samples=0] - When `antialias` is `true`, `4` samples are used by default. Set this parameter to any other integer value than 0\n   * to overwrite the default.\n   * @param {Boolean} [parameters.forceWebGL=false] - If set to `true`, the renderer uses it\n   * WebGL 2 backend no matter if WebGPU is supported or not.\n   */\n  constructor(e = {}) {\n    let t;\n    e.forceWebGL ? t = Fc : (t = qA, e.getFallback = () => (console.warn(\"THREE.WebGPURenderer: WebGPU is not available, running under WebGL2 backend.\"), new Fc(e)));\n    const s = new t(e);\n    super(s, e), this.library = new KA(), this.isWebGPURenderer = !0;\n  }\n}\nexport {\n  Tg as ACESFilmicToneMapping,\n  px as AONode,\n  Us as AddEquation,\n  rg as AddOperation,\n  Lr as AdditiveBlending,\n  _g as AgXToneMapping,\n  Fg as AlphaFormat,\n  ml as AlwaysCompare,\n  hl as AlwaysDepth,\n  cm as AlwaysStencilFunc,\n  pg as AmbientLight,\n  Ov as AmbientLightNode,\n  bs as AnalyticLightNode,\n  Ts as ArrayElementNode,\n  Zm as AssignNode,\n  xh as AttributeNode,\n  Tt as BackSide,\n  Qa as BasicEnvironmentNode,\n  Am as BasicShadowMap,\n  ox as BatchNode,\n  tR as Box3,\n  Cl as BoxGeometry,\n  Cr as BufferAttribute,\n  hy as BufferAttributeNode,\n  El as BufferGeometry,\n  Ga as BufferNode,\n  Zy as BumpMapNode,\n  gy as BypassNode,\n  Tn as ByteType,\n  fy as CacheNode,\n  sR as Camera,\n  xg as CineonToneMapping,\n  ra as ClampToEdgeWrapping,\n  be as CodeNode,\n  Ct as Color,\n  ht as ColorManagement,\n  Yn as ColorSpaceNode,\n  py as ComputeNode,\n  ct as ConstNode,\n  jd as ContextNode,\n  Gl as ConvertNode,\n  vm as CubeCamera,\n  Ks as CubeReflectionMapping,\n  Ys as CubeRefractionMapping,\n  Sl as CubeTexture,\n  Ly as CubeTextureNode,\n  po as CubeUVReflectionMapping,\n  Eg as CullFaceBack,\n  wg as CullFaceFront,\n  Cg as CullFaceNone,\n  il as CustomBlending,\n  bm as DataArrayTexture,\n  Ag as DataTexture,\n  pm as DecrementStencilOp,\n  dm as DecrementWrapStencilOp,\n  Jr as DepthFormat,\n  Zr as DepthStencilFormat,\n  ys as DepthTexture,\n  dg as DirectionalLight,\n  Lv as DirectionalLightNode,\n  Ws as DoubleSide,\n  el as DstAlphaFactor,\n  Jc as DstColorFactor,\n  Is as DynamicDrawUsage,\n  CT as EnvironmentNode,\n  xl as EqualCompare,\n  cl as EqualDepth,\n  om as EqualStencilFunc,\n  kx as EquirectUVNode,\n  Wn as EquirectangularReflectionMapping,\n  Hn as EquirectangularRefractionMapping,\n  bg as Euler,\n  zc as EventDispatcher,\n  Mr as ExpressionNode,\n  Rl as Float16BufferAttribute,\n  Uu as Float32BufferAttribute,\n  st as FloatType,\n  bl as FramebufferTexture,\n  Iy as FrontFacingNode,\n  ho as FrontSide,\n  vg as Frustum,\n  Jm as FunctionCallNode,\n  Nf as FunctionNode,\n  M_ as FunctionOverloadingNode,\n  Xv as GLSLNodeParser,\n  _l as GreaterCompare,\n  al as GreaterDepth,\n  Tl as GreaterEqualCompare,\n  ul as GreaterEqualDepth,\n  im as GreaterEqualStencilFunc,\n  rm as GreaterStencilFunc,\n  at as HalfFloatType,\n  fg as HemisphereLight,\n  kv as HemisphereLightNode,\n  XA as IESSpotLight,\n  Gv as IESSpotLightNode,\n  nR as ImageUtils,\n  fm as IncrementStencilOp,\n  hm as IncrementWrapStencilOp,\n  ae as IndexNode,\n  yp as InstanceNode,\n  oa as InstancedBufferAttribute,\n  Gg as InstancedInterleavedBuffer,\n  ix as InstancedMeshNode,\n  Ve as IntType,\n  Lg as InterleavedBuffer,\n  Nm as InterleavedBufferAttribute,\n  gm as InvertStencilOp,\n  gx as IrradianceNode,\n  Fm as JoinNode,\n  xm as KeepStencilOp,\n  rR as Layers,\n  ia as LessCompare,\n  dl as LessDepth,\n  yl as LessEqualCompare,\n  ll as LessEqualDepth,\n  am as LessEqualStencilFunc,\n  um as LessStencilFunc,\n  iR as Light,\n  gg as LightProbe,\n  zv as LightProbeNode,\n  Zv as Lighting,\n  fx as LightingContextNode,\n  Ni as LightingModel,\n  on as LightingNode,\n  hu as LightsNode,\n  Og as LineBasicMaterial,\n  Ux as LineBasicNodeMaterial,\n  kg as LineDashedMaterial,\n  Dx as LineDashedNodeMaterial,\n  Lt as LinearFilter,\n  tm as LinearMipMapLinearFilter,\n  ds as LinearMipmapLinearFilter,\n  Bo as LinearMipmapNearestFilter,\n  cs as LinearSRGBColorSpace,\n  mg as LinearToneMapping,\n  oR as LinearTransfer,\n  ux as LoopNode,\n  Pg as LuminanceAlphaFormat,\n  Ug as LuminanceFormat,\n  S_ as MRTNode,\n  IT as MatcapUVNode,\n  bu as Material,\n  v as MaterialNode,\n  ky as MaterialReferenceNode,\n  $c as MathUtils,\n  $n as Matrix3,\n  Ue as Matrix4,\n  Tm as MaxEquation,\n  _y as MaxMipLevelNode,\n  js as Mesh,\n  Gc as MeshBasicMaterial,\n  qx as MeshBasicNodeMaterial,\n  $g as MeshLambertMaterial,\n  Qx as MeshLambertNodeMaterial,\n  Kg as MeshMatcapMaterial,\n  VT as MeshMatcapNodeMaterial,\n  zg as MeshNormalMaterial,\n  Ox as MeshNormalNodeMaterial,\n  Wg as MeshPhongMaterial,\n  Jx as MeshPhongNodeMaterial,\n  qg as MeshPhysicalMaterial,\n  BT as MeshPhysicalNodeMaterial,\n  Hg as MeshStandardMaterial,\n  Xp as MeshStandardNodeMaterial,\n  Xg as MeshToonMaterial,\n  DT as MeshToonNodeMaterial,\n  _m as MinEquation,\n  si as MirroredRepeatWrapping,\n  ig as MixOperation,\n  St as ModelNode,\n  hx as MorphNode,\n  Dr as MultiplyBlending,\n  og as MultiplyOperation,\n  pt as NearestFilter,\n  Hs as NearestMipmapLinearFilter,\n  Mo as NearestMipmapNearestFilter,\n  Ng as NeutralToneMapping,\n  gl as NeverCompare,\n  pl as NeverDepth,\n  lm as NeverStencilFunc,\n  Mn as NoBlending,\n  wn as NoColorSpace,\n  $s as NoToneMapping,\n  G as Node,\n  De as NodeAccess,\n  fc as NodeAttribute,\n  qf as NodeBuilder,\n  Xi as NodeCache,\n  fv as NodeCode,\n  bc as NodeFrame,\n  Tu as NodeFunctionInput,\n  ge as NodeMaterial,\n  Em as NodeMaterialObserver,\n  Fo as NodeShaderStage,\n  Mm as NodeType,\n  hv as NodeUniform,\n  z as NodeUpdateType,\n  Hf as NodeVar,\n  pv as NodeVarying,\n  zs as NormalBlending,\n  Yy as NormalMapNode,\n  Nl as NotEqualCompare,\n  ol as NotEqualDepth,\n  nm as NotEqualStencilFunc,\n  em as Object3D,\n  j as Object3DNode,\n  Vg as ObjectSpaceNormalMap,\n  Yc as OneFactor,\n  rl as OneMinusDstAlphaFactor,\n  nl as OneMinusDstColorFactor,\n  sl as OneMinusSrcAlphaFactor,\n  tl as OneMinusSrcColorFactor,\n  Al as OrthographicCamera,\n  Jp as OutputStructNode,\n  ug as PCFShadowMap,\n  Uv as PMREMGenerator,\n  vT as PMREMNode,\n  Zp as ParameterNode,\n  Rt as PassNode,\n  Rm as PerspectiveCamera,\n  Pp as PhongLightingModel,\n  $p as PhysicalLightingModel,\n  Oc as Plane,\n  lg as PointLight,\n  Kb as PointLightNode,\n  fN as PointUVNode,\n  Yg as PointsMaterial,\n  OT as PointsNodeMaterial,\n  FN as PosterizeNode,\n  ee as PropertyNode,\n  ru as QuadMesh,\n  aR as Quaternion,\n  wu as RED_GREEN_RGTC2_Format,\n  Dg as RED_RGTC1_Format,\n  Hc as REVISION,\n  Xs as RGBAFormat,\n  na as RGBAIntegerFormat,\n  Co as RGBA_ASTC_10x10_Format,\n  vo as RGBA_ASTC_10x5_Format,\n  Ao as RGBA_ASTC_10x6_Format,\n  Ro as RGBA_ASTC_10x8_Format,\n  Eo as RGBA_ASTC_12x10_Format,\n  wo as RGBA_ASTC_12x12_Format,\n  mo as RGBA_ASTC_4x4_Format,\n  yo as RGBA_ASTC_5x4_Format,\n  xo as RGBA_ASTC_5x5_Format,\n  To as RGBA_ASTC_6x5_Format,\n  _o as RGBA_ASTC_6x6_Format,\n  No as RGBA_ASTC_8x5_Format,\n  bo as RGBA_ASTC_8x6_Format,\n  So as RGBA_ASTC_8x8_Format,\n  wi as RGBA_BPTC_Format,\n  go as RGBA_ETC2_EAC_Format,\n  Ru as RGBA_PVRTC_2BPPV1_Format,\n  Au as RGBA_PVRTC_4BPPV1_Format,\n  vr as RGBA_S3TC_DXT1_Format,\n  Ar as RGBA_S3TC_DXT3_Format,\n  Rr as RGBA_S3TC_DXT5_Format,\n  Jo as RGBFormat,\n  sm as RGBIntegerFormat,\n  Cu as RGB_ETC1_Format,\n  fo as RGB_ETC2_Format,\n  vu as RGB_PVRTC_2BPPV1_Format,\n  Su as RGB_PVRTC_4BPPV1_Format,\n  Ei as RGB_S3TC_DXT1_Format,\n  Bn as RGFormat,\n  sa as RGIntegerFormat,\n  eN as RTTNode,\n  tb as RangeNode,\n  uR as Ray,\n  hg as RectAreaLight,\n  Vv as RectAreaLightNode,\n  ea as RedFormat,\n  ta as RedIntegerFormat,\n  xi as ReferenceNode,\n  nu as ReflectorNode,\n  yg as ReinhardToneMapping,\n  ph as RemapNode,\n  yy as RenderOutputNode,\n  ms as RenderTarget,\n  ly as RendererReferenceNode,\n  ti as RepeatWrapping,\n  mm as ReplaceStencilOp,\n  Xc as ReverseSubtractEquation,\n  kT as RotateNode,\n  Mu as SIGNED_RED_GREEN_RGTC2_Format,\n  Eu as SIGNED_RED_RGTC1_Format,\n  q as SRGBColorSpace,\n  Bu as SRGBTransfer,\n  Wc as Scene,\n  ze as SceneNode,\n  Se as ScreenNode,\n  QN as ScriptableNode,\n  YN as ScriptableValueNode,\n  Pm as SetNode,\n  cR as ShaderMaterial,\n  Cb as ShadowBaseNode,\n  Qg as ShadowMaterial,\n  Bf as ShadowNode,\n  qT as ShadowNodeMaterial,\n  _n as ShortType,\n  _p as SkinningNode,\n  lR as Source,\n  dR as Sphere,\n  Sg as SphereGeometry,\n  hR as SphericalHarmonics3,\n  Do as SplitNode,\n  kc as SpotLight,\n  Xf as SpotLightNode,\n  jg as SpriteMaterial,\n  $T as SpriteNodeMaterial,\n  W_ as SpriteSheetUVNode,\n  Qc as SrcAlphaFactor,\n  Zc as SrcAlphaSaturateFactor,\n  jc as SrcColorFactor,\n  N_ as StackNode,\n  Ig as StaticDrawUsage,\n  oN as StorageArrayElementNode,\n  iN as StorageBufferAttribute,\n  uN as StorageBufferNode,\n  rN as StorageInstancedBufferAttribute,\n  mN as StorageTextureNode,\n  qc as SubtractEquation,\n  Ir as SubtractiveBlending,\n  QA as TSL,\n  Fu as TangentSpaceNormalMap,\n  Ne as TempNode,\n  vl as Texture,\n  KT as Texture3DNode,\n  bt as TextureNode,\n  Ty as TextureSizeNode,\n  dy as ToneMappingNode,\n  VN as ToonOutlinePassNode,\n  pR as Triangle,\n  q_ as TriplanarTexturesNode,\n  ag as UVMapping,\n  Jg as Uint16BufferAttribute,\n  Zg as Uint32BufferAttribute,\n  Fh as UniformArrayNode,\n  ed as UniformGroupNode,\n  Xn as UniformNode,\n  ls as UnsignedByteType,\n  ei as UnsignedInt248Type,\n  fl as UnsignedInt5999Type,\n  Pe as UnsignedIntType,\n  Mg as UnsignedShort4444Type,\n  Bg as UnsignedShort5551Type,\n  Ls as UnsignedShortType,\n  xN as UserDataNode,\n  or as VSMShadowMap,\n  wr as VarNode,\n  oy as VaryingNode,\n  He as Vector2,\n  Y as Vector3,\n  Ce as Vector4,\n  hN as VertexColorNode,\n  ke as ViewportDepthNode,\n  Nx as ViewportDepthTextureNode,\n  Ix as ViewportSharedTextureNode,\n  _i as ViewportTextureNode,\n  En as WebGLCoordinateSystem,\n  Sm as WebGLCubeRenderTarget,\n  fR as WebGLRenderTarget,\n  sn as WebGPUCoordinateSystem,\n  ZA as WebGPURenderer,\n  Kc as ZeroFactor,\n  ym as ZeroStencilOp,\n  Rg as createCanvasElement,\n  Uo as defaultBuildStages,\n  Vl as defaultShaderStages,\n  Po as shaderStages,\n  xs as vectorComponents\n};\n","import { TSL as t } from \"./three.webgpu.js\";\n/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst e = t.BRDF_GGX, n = t.BRDF_Lambert, s = t.BasicShadowFilter, r = t.Break, c = t.Continue, a = t.DFGApprox, i = t.D_GGX, l = t.Discard, m = t.EPSILON, p = t.F_Schlick, d = t.Fn, u = t.INFINITY, g = t.If, h = t.Loop, f = t.NodeShaderStage, x = t.NodeType, b = t.NodeUpdateType, w = t.NodeAccess, v = t.PCFShadowFilter, S = t.PCFSoftShadowFilter, T = t.PI, _ = t.PI2, V = t.Return, y = t.Schlick_to_F0, D = t.ScriptableNodeResources, M = t.ShaderNode, F = t.TBNViewMatrix, C = t.VSMShadowFilter, I = t.V_GGX_SmithCorrelated, N = t.abs, P = t.acesFilmicToneMapping, R = t.acos, B = t.add, L = t.addNodeElement, k = t.agxToneMapping, A = t.all, G = t.alphaT, O = t.and, W = t.anisotropy, j = t.anisotropyB, U = t.anisotropyT, q = t.any, z = t.append, E = t.arrayBuffer, Z = t.asin, X = t.assign, Y = t.atan, H = t.atan2, J = t.atomicAdd, K = t.atomicAnd, Q = t.atomicFunc, $ = t.atomicMax, tt = t.atomicMin, ot = t.atomicOr, et = t.atomicStore, nt = t.atomicSub, st = t.atomicXor, rt = t.attenuationColor, ct = t.attenuationDistance, at = t.attribute, it = t.attributeArray, lt = t.backgroundBlurriness, mt = t.backgroundIntensity, pt = t.backgroundRotation, dt = t.batch, ut = t.billboarding, gt = t.bitAnd, ht = t.bitNot, ft = t.bitOr, xt = t.bitXor, bt = t.bitangentGeometry, wt = t.bitangentLocal, vt = t.bitangentView, St = t.bitangentWorld, Tt = t.bitcast, _t = t.blendBurn, Vt = t.blendColor, yt = t.blendDodge, Dt = t.blendOverlay, Mt = t.blendScreen, Ft = t.blur, Ct = t.bool, It = t.buffer, Nt = t.bufferAttribute, Pt = t.bumpMap, Rt = t.burn, Bt = t.bvec2, Lt = t.bvec3, kt = t.bvec4, At = t.bypass, Gt = t.cache, Ot = t.call, Wt = t.cameraFar, jt = t.cameraNear, Ut = t.cameraNormalMatrix, qt = t.cameraPosition, zt = t.cameraProjectionMatrix, Et = t.cameraProjectionMatrixInverse, Zt = t.cameraViewMatrix, Xt = t.cameraWorldMatrix, Yt = t.cbrt, Ht = t.cdl, Jt = t.ceil, Kt = t.checker, Qt = t.cineonToneMapping, $t = t.clamp, to = t.clearcoat, oo = t.clearcoatRoughness, eo = t.code, no = t.color, so = t.colorSpaceToWorking, ro = t.colorToDirection, co = t.compute, ao = t.cond, io = t.context, lo = t.convert, mo = t.convertColorSpace, po = t.convertToTexture, uo = t.cos, go = t.cross, ho = t.cubeTexture, fo = t.dFdx, xo = t.dFdy, bo = t.dashSize, wo = t.defaultBuildStages, vo = t.defaultShaderStages, So = t.defined, To = t.degrees, _o = t.deltaTime, Vo = t.densityFog, yo = t.densityFogFactor, Do = t.depth, Mo = t.depthPass, Fo = t.difference, Co = t.diffuseColor, Io = t.directPointLight, No = t.directionToColor, Po = t.dispersion, Ro = t.distance, Bo = t.div, Lo = t.dodge, ko = t.dot, Ao = t.drawIndex, Go = t.dynamicBufferAttribute, Oo = t.element, Wo = t.emissive, jo = t.equal, Uo = t.equals, qo = t.equirectUV, zo = t.exp, Eo = t.exp2, Zo = t.expression, Xo = t.faceDirection, Yo = t.faceForward, Ho = t.faceforward, Jo = t.float, Ko = t.floor, Qo = t.fog, $o = t.fract, te = t.frameGroup, oe = t.frameId, ee = t.frontFacing, ne = t.fwidth, se = t.gain, re = t.gapSize, ce = t.getConstNodeType, ae = t.getCurrentStack, ie = t.getDirection, le = t.getDistanceAttenuation, me = t.getGeometryRoughness, pe = t.getNormalFromDepth, de = t.getParallaxCorrectNormal, ue = t.getRoughness, ge = t.getScreenPosition, he = t.getShIrradianceAt, fe = t.getTextureIndex, xe = t.getViewPosition, be = t.glsl, we = t.glslFn, ve = t.grayscale, Se = t.greaterThan, Te = t.greaterThanEqual, _e = t.hash, Ve = t.highpModelNormalViewMatrix, ye = t.highpModelViewMatrix, De = t.hue, Me = t.instance, Fe = t.instanceIndex, Ce = t.instancedArray, Ie = t.instancedBufferAttribute, Ne = t.instancedDynamicBufferAttribute, Pe = t.instancedMesh, Re = t.int, Be = t.inverseSqrt, Le = t.inversesqrt, ke = t.invocationLocalIndex, Ae = t.invocationSubgroupIndex, Ge = t.ior, Oe = t.iridescence, We = t.iridescenceIOR, je = t.iridescenceThickness, Ue = t.ivec2, qe = t.ivec3, ze = t.ivec4, Ee = t.js, Ze = t.label, Xe = t.length, Ye = t.lengthSq, He = t.lessThan, Je = t.lessThanEqual, Ke = t.lightPosition, Qe = t.lightTargetDirection, $e = t.lightTargetPosition, tn = t.lightViewPosition, on = t.lightingContext, en = t.lights, nn = t.linearDepth, sn = t.linearToneMapping, rn = t.localId, cn = t.log, an = t.log2, ln = t.logarithmicDepthToViewZ, mn = t.loop, pn = t.luminance, dn = t.mediumpModelViewMatrix, un = t.mat2, gn = t.mat3, hn = t.mat4, fn = t.matcapUV, xn = t.materialAO, bn = t.materialAlphaTest, wn = t.materialAnisotropy, vn = t.materialAnisotropyVector, Sn = t.materialAttenuationColor, Tn = t.materialAttenuationDistance, _n = t.materialClearcoat, Vn = t.materialClearcoatNormal, yn = t.materialClearcoatRoughness, Dn = t.materialColor, Mn = t.materialDispersion, Fn = t.materialEmissive, Cn = t.materialIOR, In = t.materialIridescence, Nn = t.materialIridescenceIOR, Pn = t.materialIridescenceThickness, Rn = t.materialLightMap, Bn = t.materialLineDashOffset, Ln = t.materialLineDashSize, kn = t.materialLineGapSize, An = t.materialLineScale, Gn = t.materialLineWidth, On = t.materialMetalness, Wn = t.materialNormal, jn = t.materialOpacity, Un = t.materialPointWidth, qn = t.materialReference, zn = t.materialReflectivity, En = t.materialRefractionRatio, Zn = t.materialRotation, Xn = t.materialRoughness, Yn = t.materialSheen, Hn = t.materialSheenRoughness, Jn = t.materialShininess, Kn = t.materialSpecular, Qn = t.materialSpecularColor, $n = t.materialSpecularIntensity, ts = t.materialSpecularStrength, os = t.materialThickness, es = t.materialTransmission, ns = t.max, ss = t.maxMipLevel, rs = t.metalness, cs = t.min, as = t.mix, is = t.mixElement, ls = t.mod, ms = t.modInt, ps = t.modelDirection, ds = t.modelNormalMatrix, us = t.modelPosition, gs = t.modelScale, hs = t.modelViewMatrix, fs = t.modelViewPosition, xs = t.modelViewProjection, bs = t.modelWorldMatrix, ws = t.modelWorldMatrixInverse, vs = t.morphReference, Ss = t.mrt, Ts = t.mul, _s = t.mx_aastep, Vs = t.mx_cell_noise_float, ys = t.mx_contrast, Ds = t.mx_fractal_noise_float, Ms = t.mx_fractal_noise_vec2, Fs = t.mx_fractal_noise_vec3, Cs = t.mx_fractal_noise_vec4, Is = t.mx_hsvtorgb, Ns = t.mx_noise_float, Ps = t.mx_noise_vec3, Rs = t.mx_noise_vec4, Bs = t.mx_ramplr, Ls = t.mx_ramptb, ks = t.mx_rgbtohsv, As = t.mx_safepower, Gs = t.mx_splitlr, Os = t.mx_splittb, Ws = t.mx_srgb_texture_to_lin_rec709, js = t.mx_transform_uv, Us = t.mx_worley_noise_float, qs = t.mx_worley_noise_vec2, zs = t.mx_worley_noise_vec3, Es = t.negate, Zs = t.neutralToneMapping, Xs = t.nodeArray, Ys = t.nodeImmutable, Hs = t.nodeObject, Js = t.nodeObjects, Ks = t.nodeProxy, Qs = t.normalFlat, $s = t.normalGeometry, tr = t.normalLocal, or = t.normalMap, er = t.normalView, nr = t.normalWorld, sr = t.normalize, rr = t.not, cr = t.notEqual, ar = t.numWorkgroups, ir = t.objectDirection, lr = t.objectGroup, mr = t.objectPosition, pr = t.objectScale, dr = t.objectViewPosition, ur = t.objectWorldMatrix, gr = t.oneMinus, hr = t.or, fr = t.orthographicDepthToViewZ, xr = t.oscSawtooth, br = t.oscSine, wr = t.oscSquare, vr = t.oscTriangle, Sr = t.output, Tr = t.outputStruct, _r = t.overlay, Vr = t.overloadingFn, yr = t.parabola, Dr = t.parallaxDirection, Mr = t.parallaxUV, Fr = t.parameter, Cr = t.pass, Ir = t.passTexture, Nr = t.pcurve, Pr = t.perspectiveDepthToViewZ, Rr = t.pmremTexture, Br = t.pointUV, Lr = t.pointWidth, kr = t.positionGeometry, Ar = t.positionLocal, Gr = t.positionPrevious, Or = t.positionView, Wr = t.positionViewDirection, jr = t.positionWorld, Ur = t.positionWorldDirection, qr = t.posterize, zr = t.pow, Er = t.pow2, Zr = t.pow3, Xr = t.pow4, Yr = t.property, Hr = t.radians, Jr = t.rand, Kr = t.range, Qr = t.rangeFog, $r = t.rangeFogFactor, tc = t.reciprocal, oc = t.reference, ec = t.referenceBuffer, nc = t.reflect, sc = t.reflectVector, rc = t.reflectView, cc = t.reflector, ac = t.refract, ic = t.refractVector, lc = t.refractView, mc = t.reinhardToneMapping, pc = t.remainder, dc = t.remap, uc = t.remapClamp, gc = t.renderGroup, hc = t.renderOutput, fc = t.rendererReference, xc = t.rotate, bc = t.rotateUV, wc = t.roughness, vc = t.round, Sc = t.rtt, Tc = t.sRGBTransferEOTF, _c = t.sRGBTransferOETF, Vc = t.sampler, yc = t.saturate, Dc = t.saturation, Mc = t.screen, Fc = t.screenCoordinate, Cc = t.screenSize, Ic = t.screenUV, Nc = t.scriptable, Pc = t.scriptableValue, Rc = t.select, Bc = t.setCurrentStack, Lc = t.shaderStages, kc = t.shadow, Ac = t.shadowPositionWorld, Gc = t.sharedUniformGroup, Oc = t.sheen, Wc = t.sheenRoughness, jc = t.shiftLeft, Uc = t.shiftRight, qc = t.shininess, zc = t.sign, Ec = t.sin, Zc = t.sinc, Xc = t.skinning, Yc = t.skinningReference, Hc = t.smoothstep, Jc = t.smoothstepElement, Kc = t.specularColor, Qc = t.specularF90, $c = t.spherizeUV, ta = t.split, oa = t.spritesheetUV, ea = t.sqrt, na = t.stack, sa = t.step, ra = t.storage, ca = t.storageBarrier, aa = t.storageObject, ia = t.storageTexture, la = t.string, ma = t.sub, pa = t.subgroupIndex, da = t.subgroupSize, ua = t.tan, ga = t.tangentGeometry, ha = t.tangentLocal, fa = t.tangentView, xa = t.tangentWorld, ba = t.temp, wa = t.texture, va = t.texture3D, Sa = t.textureBarrier, Ta = t.textureBicubic, _a = t.textureCubeUV, Va = t.textureLoad, ya = t.textureSize, Da = t.textureStore, Ma = t.thickness, Fa = t.threshold, Ca = t.time, Ia = t.timerDelta, Na = t.timerGlobal, Pa = t.timerLocal, Ra = t.toOutputColorSpace, Ba = t.toWorkingColorSpace, La = t.toneMapping, ka = t.toneMappingExposure, Aa = t.toonOutlinePass, Ga = t.transformDirection, Oa = t.transformNormal, Wa = t.transformNormalToView, ja = t.transformedBentNormalView, Ua = t.transformedBitangentView, qa = t.transformedBitangentWorld, za = t.transformedClearcoatNormalView, Ea = t.transformedNormalView, Za = t.transformedNormalWorld, Xa = t.transformedTangentView, Ya = t.transformedTangentWorld, Ha = t.transmission, Ja = t.transpose, Ka = t.tri, Qa = t.tri3, $a = t.triNoise3D, ti = t.triplanarTexture, oi = t.triplanarTextures, ei = t.trunc, ni = t.tslFn, si = t.uint, ri = t.uniform, ci = t.uniformArray, ai = t.uniformGroup, ii = t.uniforms, li = t.userData, mi = t.uv, pi = t.uvec2, di = t.uvec3, ui = t.uvec4, gi = t.varying, hi = t.varyingProperty, fi = t.vec2, xi = t.vec3, bi = t.vec4, wi = t.vectorComponents, vi = t.velocity, Si = t.vertexColor, Ti = t.vertexIndex, _i = t.vibrance, Vi = t.viewZToLogarithmicDepth, yi = t.viewZToOrthographicDepth, Di = t.viewZToPerspectiveDepth, Mi = t.viewport, Fi = t.viewportBottomLeft, Ci = t.viewportCoordinate, Ii = t.viewportDepthTexture, Ni = t.viewportLinearDepth, Pi = t.viewportMipTexture, Ri = t.viewportResolution, Bi = t.viewportSafeUV, Li = t.viewportSharedTexture, ki = t.viewportSize, Ai = t.viewportTexture, Gi = t.viewportTopLeft, Oi = t.viewportUV, Wi = t.wgsl, ji = t.wgslFn, Ui = t.workgroupArray, qi = t.workgroupBarrier, zi = t.workgroupId, Ei = t.workingToColorSpace, Zi = t.xor;\nexport {\n  e as BRDF_GGX,\n  n as BRDF_Lambert,\n  s as BasicShadowFilter,\n  r as Break,\n  c as Continue,\n  a as DFGApprox,\n  i as D_GGX,\n  l as Discard,\n  m as EPSILON,\n  p as F_Schlick,\n  d as Fn,\n  u as INFINITY,\n  g as If,\n  h as Loop,\n  w as NodeAccess,\n  f as NodeShaderStage,\n  x as NodeType,\n  b as NodeUpdateType,\n  v as PCFShadowFilter,\n  S as PCFSoftShadowFilter,\n  T as PI,\n  _ as PI2,\n  V as Return,\n  y as Schlick_to_F0,\n  D as ScriptableNodeResources,\n  M as ShaderNode,\n  F as TBNViewMatrix,\n  C as VSMShadowFilter,\n  I as V_GGX_SmithCorrelated,\n  N as abs,\n  P as acesFilmicToneMapping,\n  R as acos,\n  B as add,\n  L as addNodeElement,\n  k as agxToneMapping,\n  A as all,\n  G as alphaT,\n  O as and,\n  W as anisotropy,\n  j as anisotropyB,\n  U as anisotropyT,\n  q as any,\n  z as append,\n  E as arrayBuffer,\n  Z as asin,\n  X as assign,\n  Y as atan,\n  H as atan2,\n  J as atomicAdd,\n  K as atomicAnd,\n  Q as atomicFunc,\n  $ as atomicMax,\n  tt as atomicMin,\n  ot as atomicOr,\n  et as atomicStore,\n  nt as atomicSub,\n  st as atomicXor,\n  rt as attenuationColor,\n  ct as attenuationDistance,\n  at as attribute,\n  it as attributeArray,\n  lt as backgroundBlurriness,\n  mt as backgroundIntensity,\n  pt as backgroundRotation,\n  dt as batch,\n  ut as billboarding,\n  gt as bitAnd,\n  ht as bitNot,\n  ft as bitOr,\n  xt as bitXor,\n  bt as bitangentGeometry,\n  wt as bitangentLocal,\n  vt as bitangentView,\n  St as bitangentWorld,\n  Tt as bitcast,\n  _t as blendBurn,\n  Vt as blendColor,\n  yt as blendDodge,\n  Dt as blendOverlay,\n  Mt as blendScreen,\n  Ft as blur,\n  Ct as bool,\n  It as buffer,\n  Nt as bufferAttribute,\n  Pt as bumpMap,\n  Rt as burn,\n  Bt as bvec2,\n  Lt as bvec3,\n  kt as bvec4,\n  At as bypass,\n  Gt as cache,\n  Ot as call,\n  Wt as cameraFar,\n  jt as cameraNear,\n  Ut as cameraNormalMatrix,\n  qt as cameraPosition,\n  zt as cameraProjectionMatrix,\n  Et as cameraProjectionMatrixInverse,\n  Zt as cameraViewMatrix,\n  Xt as cameraWorldMatrix,\n  Yt as cbrt,\n  Ht as cdl,\n  Jt as ceil,\n  Kt as checker,\n  Qt as cineonToneMapping,\n  $t as clamp,\n  to as clearcoat,\n  oo as clearcoatRoughness,\n  eo as code,\n  no as color,\n  so as colorSpaceToWorking,\n  ro as colorToDirection,\n  co as compute,\n  ao as cond,\n  io as context,\n  lo as convert,\n  mo as convertColorSpace,\n  po as convertToTexture,\n  uo as cos,\n  go as cross,\n  ho as cubeTexture,\n  fo as dFdx,\n  xo as dFdy,\n  bo as dashSize,\n  wo as defaultBuildStages,\n  vo as defaultShaderStages,\n  So as defined,\n  To as degrees,\n  _o as deltaTime,\n  Vo as densityFog,\n  yo as densityFogFactor,\n  Do as depth,\n  Mo as depthPass,\n  Fo as difference,\n  Co as diffuseColor,\n  Io as directPointLight,\n  No as directionToColor,\n  Po as dispersion,\n  Ro as distance,\n  Bo as div,\n  Lo as dodge,\n  ko as dot,\n  Ao as drawIndex,\n  Go as dynamicBufferAttribute,\n  Oo as element,\n  Wo as emissive,\n  jo as equal,\n  Uo as equals,\n  qo as equirectUV,\n  zo as exp,\n  Eo as exp2,\n  Zo as expression,\n  Xo as faceDirection,\n  Yo as faceForward,\n  Ho as faceforward,\n  Jo as float,\n  Ko as floor,\n  Qo as fog,\n  $o as fract,\n  te as frameGroup,\n  oe as frameId,\n  ee as frontFacing,\n  ne as fwidth,\n  se as gain,\n  re as gapSize,\n  ce as getConstNodeType,\n  ae as getCurrentStack,\n  ie as getDirection,\n  le as getDistanceAttenuation,\n  me as getGeometryRoughness,\n  pe as getNormalFromDepth,\n  de as getParallaxCorrectNormal,\n  ue as getRoughness,\n  ge as getScreenPosition,\n  he as getShIrradianceAt,\n  fe as getTextureIndex,\n  xe as getViewPosition,\n  be as glsl,\n  we as glslFn,\n  ve as grayscale,\n  Se as greaterThan,\n  Te as greaterThanEqual,\n  _e as hash,\n  Ve as highpModelNormalViewMatrix,\n  ye as highpModelViewMatrix,\n  De as hue,\n  Me as instance,\n  Fe as instanceIndex,\n  Ce as instancedArray,\n  Ie as instancedBufferAttribute,\n  Ne as instancedDynamicBufferAttribute,\n  Pe as instancedMesh,\n  Re as int,\n  Be as inverseSqrt,\n  Le as inversesqrt,\n  ke as invocationLocalIndex,\n  Ae as invocationSubgroupIndex,\n  Ge as ior,\n  Oe as iridescence,\n  We as iridescenceIOR,\n  je as iridescenceThickness,\n  Ue as ivec2,\n  qe as ivec3,\n  ze as ivec4,\n  Ee as js,\n  Ze as label,\n  Xe as length,\n  Ye as lengthSq,\n  He as lessThan,\n  Je as lessThanEqual,\n  Ke as lightPosition,\n  Qe as lightTargetDirection,\n  $e as lightTargetPosition,\n  tn as lightViewPosition,\n  on as lightingContext,\n  en as lights,\n  nn as linearDepth,\n  sn as linearToneMapping,\n  rn as localId,\n  cn as log,\n  an as log2,\n  ln as logarithmicDepthToViewZ,\n  mn as loop,\n  pn as luminance,\n  un as mat2,\n  gn as mat3,\n  hn as mat4,\n  fn as matcapUV,\n  xn as materialAO,\n  bn as materialAlphaTest,\n  wn as materialAnisotropy,\n  vn as materialAnisotropyVector,\n  Sn as materialAttenuationColor,\n  Tn as materialAttenuationDistance,\n  _n as materialClearcoat,\n  Vn as materialClearcoatNormal,\n  yn as materialClearcoatRoughness,\n  Dn as materialColor,\n  Mn as materialDispersion,\n  Fn as materialEmissive,\n  Cn as materialIOR,\n  In as materialIridescence,\n  Nn as materialIridescenceIOR,\n  Pn as materialIridescenceThickness,\n  Rn as materialLightMap,\n  Bn as materialLineDashOffset,\n  Ln as materialLineDashSize,\n  kn as materialLineGapSize,\n  An as materialLineScale,\n  Gn as materialLineWidth,\n  On as materialMetalness,\n  Wn as materialNormal,\n  jn as materialOpacity,\n  Un as materialPointWidth,\n  qn as materialReference,\n  zn as materialReflectivity,\n  En as materialRefractionRatio,\n  Zn as materialRotation,\n  Xn as materialRoughness,\n  Yn as materialSheen,\n  Hn as materialSheenRoughness,\n  Jn as materialShininess,\n  Kn as materialSpecular,\n  Qn as materialSpecularColor,\n  $n as materialSpecularIntensity,\n  ts as materialSpecularStrength,\n  os as materialThickness,\n  es as materialTransmission,\n  ns as max,\n  ss as maxMipLevel,\n  dn as mediumpModelViewMatrix,\n  rs as metalness,\n  cs as min,\n  as as mix,\n  is as mixElement,\n  ls as mod,\n  ms as modInt,\n  ps as modelDirection,\n  ds as modelNormalMatrix,\n  us as modelPosition,\n  gs as modelScale,\n  hs as modelViewMatrix,\n  fs as modelViewPosition,\n  xs as modelViewProjection,\n  bs as modelWorldMatrix,\n  ws as modelWorldMatrixInverse,\n  vs as morphReference,\n  Ss as mrt,\n  Ts as mul,\n  _s as mx_aastep,\n  Vs as mx_cell_noise_float,\n  ys as mx_contrast,\n  Ds as mx_fractal_noise_float,\n  Ms as mx_fractal_noise_vec2,\n  Fs as mx_fractal_noise_vec3,\n  Cs as mx_fractal_noise_vec4,\n  Is as mx_hsvtorgb,\n  Ns as mx_noise_float,\n  Ps as mx_noise_vec3,\n  Rs as mx_noise_vec4,\n  Bs as mx_ramplr,\n  Ls as mx_ramptb,\n  ks as mx_rgbtohsv,\n  As as mx_safepower,\n  Gs as mx_splitlr,\n  Os as mx_splittb,\n  Ws as mx_srgb_texture_to_lin_rec709,\n  js as mx_transform_uv,\n  Us as mx_worley_noise_float,\n  qs as mx_worley_noise_vec2,\n  zs as mx_worley_noise_vec3,\n  Es as negate,\n  Zs as neutralToneMapping,\n  Xs as nodeArray,\n  Ys as nodeImmutable,\n  Hs as nodeObject,\n  Js as nodeObjects,\n  Ks as nodeProxy,\n  Qs as normalFlat,\n  $s as normalGeometry,\n  tr as normalLocal,\n  or as normalMap,\n  er as normalView,\n  nr as normalWorld,\n  sr as normalize,\n  rr as not,\n  cr as notEqual,\n  ar as numWorkgroups,\n  ir as objectDirection,\n  lr as objectGroup,\n  mr as objectPosition,\n  pr as objectScale,\n  dr as objectViewPosition,\n  ur as objectWorldMatrix,\n  gr as oneMinus,\n  hr as or,\n  fr as orthographicDepthToViewZ,\n  xr as oscSawtooth,\n  br as oscSine,\n  wr as oscSquare,\n  vr as oscTriangle,\n  Sr as output,\n  Tr as outputStruct,\n  _r as overlay,\n  Vr as overloadingFn,\n  yr as parabola,\n  Dr as parallaxDirection,\n  Mr as parallaxUV,\n  Fr as parameter,\n  Cr as pass,\n  Ir as passTexture,\n  Nr as pcurve,\n  Pr as perspectiveDepthToViewZ,\n  Rr as pmremTexture,\n  Br as pointUV,\n  Lr as pointWidth,\n  kr as positionGeometry,\n  Ar as positionLocal,\n  Gr as positionPrevious,\n  Or as positionView,\n  Wr as positionViewDirection,\n  jr as positionWorld,\n  Ur as positionWorldDirection,\n  qr as posterize,\n  zr as pow,\n  Er as pow2,\n  Zr as pow3,\n  Xr as pow4,\n  Yr as property,\n  Hr as radians,\n  Jr as rand,\n  Kr as range,\n  Qr as rangeFog,\n  $r as rangeFogFactor,\n  tc as reciprocal,\n  oc as reference,\n  ec as referenceBuffer,\n  nc as reflect,\n  sc as reflectVector,\n  rc as reflectView,\n  cc as reflector,\n  ac as refract,\n  ic as refractVector,\n  lc as refractView,\n  mc as reinhardToneMapping,\n  pc as remainder,\n  dc as remap,\n  uc as remapClamp,\n  gc as renderGroup,\n  hc as renderOutput,\n  fc as rendererReference,\n  xc as rotate,\n  bc as rotateUV,\n  wc as roughness,\n  vc as round,\n  Sc as rtt,\n  Tc as sRGBTransferEOTF,\n  _c as sRGBTransferOETF,\n  Vc as sampler,\n  yc as saturate,\n  Dc as saturation,\n  Mc as screen,\n  Fc as screenCoordinate,\n  Cc as screenSize,\n  Ic as screenUV,\n  Nc as scriptable,\n  Pc as scriptableValue,\n  Rc as select,\n  Bc as setCurrentStack,\n  Lc as shaderStages,\n  kc as shadow,\n  Ac as shadowPositionWorld,\n  Gc as sharedUniformGroup,\n  Oc as sheen,\n  Wc as sheenRoughness,\n  jc as shiftLeft,\n  Uc as shiftRight,\n  qc as shininess,\n  zc as sign,\n  Ec as sin,\n  Zc as sinc,\n  Xc as skinning,\n  Yc as skinningReference,\n  Hc as smoothstep,\n  Jc as smoothstepElement,\n  Kc as specularColor,\n  Qc as specularF90,\n  $c as spherizeUV,\n  ta as split,\n  oa as spritesheetUV,\n  ea as sqrt,\n  na as stack,\n  sa as step,\n  ra as storage,\n  ca as storageBarrier,\n  aa as storageObject,\n  ia as storageTexture,\n  la as string,\n  ma as sub,\n  pa as subgroupIndex,\n  da as subgroupSize,\n  ua as tan,\n  ga as tangentGeometry,\n  ha as tangentLocal,\n  fa as tangentView,\n  xa as tangentWorld,\n  ba as temp,\n  wa as texture,\n  va as texture3D,\n  Sa as textureBarrier,\n  Ta as textureBicubic,\n  _a as textureCubeUV,\n  Va as textureLoad,\n  ya as textureSize,\n  Da as textureStore,\n  Ma as thickness,\n  Fa as threshold,\n  Ca as time,\n  Ia as timerDelta,\n  Na as timerGlobal,\n  Pa as timerLocal,\n  Ra as toOutputColorSpace,\n  Ba as toWorkingColorSpace,\n  La as toneMapping,\n  ka as toneMappingExposure,\n  Aa as toonOutlinePass,\n  Ga as transformDirection,\n  Oa as transformNormal,\n  Wa as transformNormalToView,\n  ja as transformedBentNormalView,\n  Ua as transformedBitangentView,\n  qa as transformedBitangentWorld,\n  za as transformedClearcoatNormalView,\n  Ea as transformedNormalView,\n  Za as transformedNormalWorld,\n  Xa as transformedTangentView,\n  Ya as transformedTangentWorld,\n  Ha as transmission,\n  Ja as transpose,\n  Ka as tri,\n  Qa as tri3,\n  $a as triNoise3D,\n  ti as triplanarTexture,\n  oi as triplanarTextures,\n  ei as trunc,\n  ni as tslFn,\n  si as uint,\n  ri as uniform,\n  ci as uniformArray,\n  ai as uniformGroup,\n  ii as uniforms,\n  li as userData,\n  mi as uv,\n  pi as uvec2,\n  di as uvec3,\n  ui as uvec4,\n  gi as varying,\n  hi as varyingProperty,\n  fi as vec2,\n  xi as vec3,\n  bi as vec4,\n  wi as vectorComponents,\n  vi as velocity,\n  Si as vertexColor,\n  Ti as vertexIndex,\n  _i as vibrance,\n  Vi as viewZToLogarithmicDepth,\n  yi as viewZToOrthographicDepth,\n  Di as viewZToPerspectiveDepth,\n  Mi as viewport,\n  Fi as viewportBottomLeft,\n  Ci as viewportCoordinate,\n  Ii as viewportDepthTexture,\n  Ni as viewportLinearDepth,\n  Pi as viewportMipTexture,\n  Ri as viewportResolution,\n  Bi as viewportSafeUV,\n  Li as viewportSharedTexture,\n  ki as viewportSize,\n  Ai as viewportTexture,\n  Gi as viewportTopLeft,\n  Oi as viewportUV,\n  Wi as wgsl,\n  ji as wgslFn,\n  Ui as workgroupArray,\n  qi as workgroupBarrier,\n  zi as workgroupId,\n  Ei as workingToColorSpace,\n  Zi as xor\n};\n","import * as d from \"../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nconst {\n  vec2: t,\n  uv: i,\n  viewportSize: u\n} = d, x = (e = t(0, 0)) => {\n  const r = u, o = r.x.div(r.y), c = i(), n = t(0.5, 0.5), s = t(c.x.add(e.x), c.y.add(e.y));\n  return {\n    correctedUV: t(s.x.mul(o), s.y),\n    correctedCenter: t(n.x.mul(o), n.y)\n  };\n};\nexport {\n  x as getAspectCorrectedCoordinates\n};\n","import * as s from \"../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nconst {\n  vec2: n,\n  fract: r,\n  sin: c,\n  dot: e\n} = s, m = (t) => r(c(e(t, n(12.12345, 78.12345))).mul(40000.12345)), i = (t = 0.03) => (o) => m(o).mul(t).mul(0.10012345);\nexport {\n  i as grain,\n  m as noise\n};\n","import * as h from \"../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nconst { vec2: x } = h, w = (o = x(0), i = 0.02, t = 1, d = 1) => {\n  const {\n    vec2: l,\n    sin: m,\n    cos: a,\n    time: s\n  } = h, c = d * 1.618033988749895, n = d * 2.718281828459045, u = (Math.sin(d) + 2) * 5, r = (Math.cos(d) + 2) * 5, f = l(\n    m(o.x.mul(t).mul(u).add(s.mul(0.1)).add(c)),\n    a(o.y.mul(t).mul(u).add(s.mul(0.1)).add(n))\n  ), p = l(\n    m(o.y.mul(t).mul(r).add(s.mul(0.05)).add(n)),\n    a(o.x.mul(t).mul(r).add(s.mul(0.05)).add(c))\n  ), M = f.add(p).mul(i);\n  return o.add(M);\n};\nexport {\n  w as distort\n};\n","import * as a from \"../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nconst p = (t, n, s = 0.6, e = 0.3, o = 1) => {\n  const {\n    max: m,\n    smoothstep: u\n  } = a, g = m(m(t.r, t.g), t.b), r = u(\n    s,\n    // Start of glow\n    s + e,\n    // End of glow transition\n    g\n    // Current brightness\n  ).mul(o).mul(1);\n  return t.add(n.mul(r));\n};\nexport {\n  p as glow\n};\n","import * as r from \"../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nconst b = (l = {}) => {\n  const {\n    inset: t = 0.4,\n    softness: o = 0.5,\n    offsetX: n = 0,\n    offsetY: d = 0\n  } = l, {\n    float: s,\n    smoothstep: c,\n    uv: f\n  } = r, a = f(), u = a.x.sub(0.5).sub(s(n)).mul(2), e = a.y.sub(0.5).add(s(d)).mul(2), m = u.mul(u).add(e.mul(e)).sqrt();\n  return s(1).sub(c(\n    s(1).sub(s(t)),\n    s(1).sub(s(t)).add(s(o)),\n    m.mul(s(1).add(s(o)))\n  ));\n};\nexport {\n  b as default,\n  b as edgeMask\n};\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic1\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: O,\n      time: T,\n      mix: n,\n      sin: d,\n      float: o,\n      pow: c,\n      uv: f,\n      color: t\n    } = J, l = t(\"#0a638a\"), r = t(\"#dfb036\"), N = t(\"#aaa832\"), u = t(\"#2b84ff\"), C = t(\"#299fd1\"), S = t(\"#ffc607\"), p = 0.2, I = 1, R = -0.1, D = 0.1, G = 0.12, A = 0.5, L = 10, g = 0.7, b = 0.03, Y = 0.55, F = 0.5, v = 0.2, w = 1, x = 1, U = 0.05, B = 0.02, s = f(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(l, o(2.2)), h = c(r, o(2.2)), y = c(N, o(2.2)), k = c(u, o(2.2)), H = n(\n      W,\n      h,\n      s.x\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.y\n    ), a = _.x.sub(0.5), i = _.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(g).mul(\n        d(\n          M.add(T.mul(m.speed.uniform).mul(0.025)).div(b)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = E(e, e, e).mul(Q).mul(Y), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = O(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic10\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: O,\n      time: T,\n      mix: n,\n      sin: d,\n      float: o,\n      pow: c,\n      uv: l,\n      color: t\n    } = J, f = t(\"#3ee3bd\"), r = t(\"#40f1eb\"), N = t(\"#aaa832\"), u = t(\"#472bff\"), C = t(\"#299fd1\"), S = t(\"#122573\"), p = 0.8, I = 1, R = 0, D = 0, G = 0.8, A = 0.2, L = 82, b = 0.7, g = 0.08, Y = 0.4, F = 0.5, v = 0.15, w = 0.6, x = 1.5, U = 0.05, B = 0.1, s = l(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(f, o(2.2)), h = c(r, o(2.2)), y = c(N, o(2.2)), k = c(u, o(2.2)), H = n(\n      W,\n      h,\n      s.x\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.y\n    ), a = _.x.sub(0.5), i = _.y.sub(0.5), M = i.mul(a).add(a.mul(i)).negate(), e = o(1).add(\n      o(b).mul(\n        d(\n          M.add(T.mul(m.speed.uniform).mul(0.025)).div(g)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = E(e, e, e).mul(Q).mul(Y), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = O(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic10';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic2\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: d,\n      vec4: E,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: c,\n      uv: f,\n      color: t\n    } = J, l = t(\"#33b351\"), N = t(\"#36df39\"), u = t(\"#3274aa\"), r = t(\"#2b84ff\"), C = t(\"#29d1d1\"), S = t(\"#0739ff\"), p = 0.5, I = 0.5, R = 0, D = 0.1, G = 0.1, A = 0.5, L = 21, g = 0.7, b = 0.03, Y = 0.5, F = 0.5, v = 0.1, w = 0.6, x = 1, U = 0.05, B = 0.02, s = f(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(l, o(2.2)), h = c(N, o(2.2)), y = c(u, o(2.2)), k = c(r, o(2.2)), H = n(\n      W,\n      h,\n      s.y\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.x\n    ), a = _.x.sub(0.3), i = _.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(g).mul(\n        T(\n          M.add(O.mul(m.speed.uniform).mul(0.025)).div(b)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = d(e, e, e).mul(Q).mul(Y), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = E(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic3\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: f,\n      vec4: E,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: c,\n      uv: d,\n      color: t\n    } = J, r = t(\"#d150ff\"), l = t(\"#36b8df\"), N = t(\"#e023f4\"), u = t(\"#2b80ff\"), C = t(\"#0051ff\"), S = t(\"#5aa7e6\"), p = 0.5, I = 0.5, R = 0, D = -0.1, G = 0.12, A = 0.5, L = 30, g = 0.8, b = 0.03, Y = 0.5, F = 0.5, v = 0.6, w = 1, x = 2, U = 0.02, B = 0.1, s = d(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(r, o(2.2)), h = c(l, o(2.2)), y = c(N, o(2.2)), k = c(u, o(2.2)), H = n(\n      W,\n      h,\n      s.y\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.x\n    ), a = _.x.sub(0.3), i = _.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(g).mul(\n        T(\n          M.add(O.mul(m.speed.uniform).mul(0.025)).div(b)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = f(e, e, e).mul(Q).mul(Y), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = E(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic4\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: O,\n      time: T,\n      mix: n,\n      sin: d,\n      float: o,\n      pow: c,\n      uv: l,\n      color: t\n    } = J, f = t(\"#8e7925\"), N = t(\"#917929\"), u = t(\"#c9caa1\"), r = t(\"#ff832b\"), C = t(\"#988d62\"), S = t(\"#a85e99\"), p = 0.5, I = 0.5, R = -0.05, D = -0.1, G = 0.2, A = 0.5, L = 54, g = 0.8, Y = 0.03, b = 0.5, F = 0.5, v = 0.1, w = 0.5, x = 1, U = 0.2, B = 0.1, s = l(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(f, o(2.2)), h = c(N, o(2.2)), y = c(u, o(2.2)), k = c(r, o(2.2)), H = n(\n      W,\n      h,\n      s.y\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.x\n    ), a = _.x.sub(0.3), i = _.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(g).mul(\n        d(\n          M.add(T.mul(m.speed.uniform).mul(0.025)).div(Y)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = E(e, e, e).mul(Q).mul(b), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = O(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic5\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: d,\n      vec4: E,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: c,\n      uv: l,\n      color: t\n    } = J, f = t(\"#2e9c33\"), N = t(\"#37d15a\"), r = t(\"#9e8c15\"), u = t(\"#bbdf1a\"), C = t(\"#5b6e5d\"), S = t(\"#6c7780\"), p = 0.6, I = 0.8, R = -0, D = 0.2, G = 0.1, A = 0.3, L = 36, b = 0.9, g = 0.02, Y = 0.8, F = 0.5, v = 0.2, w = 0.3, x = 1, U = 0.8, B = 0.01, s = l(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(f, o(2.2)), h = c(N, o(2.2)), y = c(r, o(2.2)), k = c(u, o(2.2)), H = n(\n      W,\n      h,\n      s.y\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.x\n    ), a = _.x.sub(0.3), i = _.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(b).mul(\n        T(\n          M.add(O.mul(m.speed.uniform).mul(0.025)).div(g)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = d(e, e, e).mul(Q).mul(Y), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = E(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic6\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: O,\n      time: T,\n      mix: n,\n      sin: d,\n      float: o,\n      pow: c,\n      uv: l,\n      color: t\n    } = J, f = t(\"#525a5c\"), N = t(\"#3d4147\"), u = t(\"#2c3037\"), C = t(\"#7e7e7e\"), S = t(\"#2a3337\"), p = t(\"#2d2f37\"), I = 0.7, R = 0.5, D = 0, G = 0, A = 0.3, L = 0.2, g = 44, Y = 1, F = 0.015, b = 1.5, v = 0.4, w = 0.02, x = 0.3, U = 10, B = 0.8, V = 0.2, s = l(), { correctedUV: W } = Z(), r = oo(s, A, L, g), h = c(f, o(2.2)), y = c(N, o(2.2)), k = c(u, o(2.2)), H = c(C, o(2.2)), P = n(\n      h,\n      y,\n      s.y\n    ), K = n(\n      H,\n      k,\n      s.x\n    ), _ = n(\n      P,\n      K,\n      s.x\n    ), a = r.x.sub(0.3), i = r.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(Y).mul(\n        d(\n          M.add(T.mul(m.speed.uniform).mul(0.02)).div(F)\n        )\n      )\n    ), Q = so({\n      inset: I,\n      softness: R,\n      offsetX: D,\n      offsetY: G\n    }), X = E(e, e, e).mul(Q).mul(b), z = n(\n      p.mul(V),\n      S.mul(B),\n      s.y.mul(s.x)\n    ), j = $(v)(W), q = O(\n      z.add(_.mul(X)).sub(j),\n      1\n    );\n    return to(q, _, w, x, U);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic7\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: O,\n      time: T,\n      mix: n,\n      sin: d,\n      float: o,\n      pow: c,\n      uv: l,\n      color: t\n    } = J, f = t(\"#33689c\"), r = t(\"#29af9b\"), N = t(\"#8232aa\"), u = t(\"#999c36\"), C = t(\"#d12975\"), S = t(\"#e6ff07\"), p = 0.4, I = 1, R = 0.2, D = -0.1, G = 0.12, A = 0.5, L = 50, g = 0.5, Y = 0.025, b = 1.5, F = 0.5, v = 0.15, w = 0.3, x = 2, U = 0.1, B = 0.01, s = l(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(f, o(2.2)), h = c(r, o(2.2)), y = c(N, o(2.2)), k = c(u, o(2.2)), H = n(\n      W,\n      h,\n      s.x\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.y\n    ), a = _.x.sub(0.5), i = _.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(g).mul(\n        d(\n          M.add(T.mul(m.speed.uniform).mul(0.025)).div(Y)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = E(e, e, e).mul(Q).mul(b), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = O(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic8\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: d,\n      vec4: E,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: c,\n      uv: l,\n      color: t\n    } = J, r = t(\"#dfbb43\"), f = t(\"#e12c86\"), N = t(\"#e64a9d\"), u = t(\"#999c36\"), C = t(\"#253b81\"), S = t(\"#ff07de\"), p = 0.3, I = 2, R = -0.1, D = 0.1, G = 0.15, A = 0.6, L = 56, b = 0.9, g = 0.022, Y = 1, F = 0.5, v = 0.6, w = 0.8, x = 1, U = 0.3, B = 0.01, s = l(), { correctedUV: V } = Z(), _ = oo(s, G, A, L), W = c(r, o(2.2)), h = c(f, o(2.2)), y = c(N, o(2.2)), k = c(u, o(2.2)), H = n(\n      W,\n      h,\n      s.x\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.y\n    ), a = _.x.sub(0.5), i = _.y.sub(0.5), M = i.mul(a).add(i.mul(a)).negate(), e = o(1).add(\n      o(b).mul(\n        T(\n          M.add(O.mul(m.speed.uniform).mul(0.02)).div(g)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = d(e, e, e).mul(Q).mul(Y), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = E(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, r, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as J from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as so } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"Chromatic9\",\n  collection: \"chromatic\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (i) => {\n    const {\n      vec3: E,\n      vec4: O,\n      time: T,\n      mix: n,\n      sin: l,\n      float: o,\n      pow: c,\n      uv: d,\n      color: t\n    } = J, _ = t(\"#efc539\"), f = t(\"#4acd3a\"), N = t(\"#0c4bbf\"), u = t(\"#1f45a6\"), C = t(\"#253b81\"), S = t(\"#2f5c22\"), p = 1.7, I = 2, R = 0.05, D = -0.1, G = 0.3, A = 0.6, L = 70, b = 0.9, g = 0.022, Y = 2, F = 0.5, v = 0.15, w = 0.3, x = 2, U = 0.3, B = 0.1, s = d(), { correctedUV: V } = Z(), a = oo(s, G, A, L), W = c(_, o(2.2)), h = c(f, o(2.2)), y = c(N, o(2.2)), k = c(u, o(2.2)), H = n(\n      W,\n      h,\n      s.x\n    ), P = n(\n      k,\n      y,\n      s.x\n    ), K = n(\n      H,\n      P,\n      s.y\n    ), e = a.x.sub(0.5), m = a.y.sub(0.5), M = e.mul(e.mul(m)).add(m.mul(e)).negate(), r = o(1).add(\n      o(b).mul(\n        l(\n          M.add(T.mul(i.speed.uniform).mul(0.02)).div(g)\n        )\n      )\n    ), Q = so({\n      inset: p,\n      softness: I,\n      offsetX: R,\n      offsetY: D\n    }), X = E(r, r, r).mul(Q).mul(Y), z = n(\n      S.mul(B),\n      C.mul(U),\n      s.y.mul(s.x)\n    ), j = $(F)(V), q = O(\n      z.add(K.mul(X)).sub(j),\n      1\n    );\n    return to(q, _, v, w, x);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromatic9';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as P from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as no } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"ChromaticSoft1\",\n  collection: \"chromatic-soft\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: l,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: c,\n      uv: N,\n      color: t\n    } = P, S = t(\"#c68c21\"), _ = t(\"#ffb700\"), p = t(\"#ba23f6\"), u = t(\"#2b84ff\"), C = t(\"#657dfa\"), R = t(\"#9051ad\"), D = 0, G = 2, I = 0, L = 0, g = 0.2, A = 0.5, b = 2, F = 0.2, v = 0.05, w = 1, U = 0.6, Y = 0.5, x = 1, V = 1, s = N(), { correctedUV: W } = Z(), a = oo(s, g, A, b), h = c(S, o(2.2)), y = c(_, o(2.2)), B = c(p, o(2.2)), k = c(u, o(2.2)), H = n(\n      h,\n      y,\n      s.x\n    ), K = n(\n      k,\n      B,\n      s.x\n    ), Q = n(\n      H,\n      K,\n      s.y\n    ), d = a.x.sub(0.5), i = a.y.sub(0.5), X = i.mul(d).add(i.mul(d)).negate(), r = o(1).add(\n      o(F).mul(\n        T(\n          X.add(O.mul(m.speed.uniform).mul(0.025)).div(v)\n        )\n      )\n    ), z = no({\n      inset: D,\n      softness: G,\n      offsetX: I,\n      offsetY: L\n    }), M = E(r, r, r).mul(z).mul(w), j = n(\n      R,\n      C,\n      s.y\n    ), f = $(U)(W), e = Q.mul(M).add(f), q = e.r.add(e.g).add(e.b), J = l(\n      n(j.add(f), e, q),\n      1\n    );\n    return to(J, _, Y, x, V);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromaticSoft1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as P from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as no } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"ChromaticSoft2\",\n  collection: \"chromatic-soft\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: l,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: c,\n      uv: N,\n      color: t\n    } = P, _ = t(\"#8d7cff\"), S = t(\"#3c7f93\"), p = t(\"#84dfff\"), u = t(\"#2b4eff\"), C = t(\"#28a8bf\"), R = t(\"#5e36f1\"), D = -0.5, G = 2, I = 0, L = 0, g = 0.2, A = 0.5, b = 3, F = 0.2, v = 0.05, w = 1, U = 0.6, Y = 0.5, x = 1, V = 2, s = N(), { correctedUV: W } = Z(), a = oo(s, g, A, b), h = c(_, o(2.2)), y = c(S, o(2.2)), B = c(p, o(2.2)), k = c(u, o(2.2)), H = n(\n      h,\n      y,\n      s.x\n    ), K = n(\n      k,\n      B,\n      s.x\n    ), Q = n(\n      H,\n      K,\n      s.y\n    ), f = a.x.sub(0.5), d = a.y.sub(0.5), X = d.mul(f).add(d.mul(f)).negate(), r = o(1).add(\n      o(F).mul(\n        T(\n          X.add(O.mul(m.speed.uniform).mul(0.025)).div(v)\n        )\n      )\n    ), z = no({\n      inset: D,\n      softness: G,\n      offsetX: I,\n      offsetY: L\n    }), M = E(r, r, r).mul(z).mul(w), j = n(\n      R,\n      C,\n      s.y\n    ), i = $(U)(W), e = Q.mul(M).add(i), q = e.r.add(e.g).add(e.b), J = l(\n      n(j.add(i), e, q),\n      1\n    );\n    return to(J, _, Y, x, V);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromaticSoft2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as P from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as no } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"ChromaticSoft3\",\n  collection: \"chromatic-soft\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: l,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: c,\n      uv: N,\n      color: t\n    } = P, _ = t(\"#ff7c94\"), S = t(\"#f1987d\"), p = t(\"#eadb73\"), u = t(\"#ffd895\"), C = t(\"#bf2828\"), R = t(\"#f18a36\"), D = -0.5, G = 2, I = 0, L = 0, g = 0.2, A = 0.5, b = 4, F = 0.1, v = 0.05, w = 1, U = 0.6, Y = 0.5, x = 1, V = 2, s = N(), { correctedUV: W } = Z(), a = oo(s, g, A, b), h = c(_, o(2.2)), y = c(S, o(2.2)), B = c(p, o(2.2)), k = c(u, o(2.2)), H = n(\n      h,\n      y,\n      s.x\n    ), K = n(\n      k,\n      B,\n      s.x\n    ), Q = n(\n      H,\n      K,\n      s.y\n    ), d = a.x.sub(0.5), f = a.y.sub(0.5), X = f.mul(d).add(f.mul(d)).negate(), r = o(1).add(\n      o(F).mul(\n        T(\n          X.add(O.mul(m.speed.uniform).mul(0.025)).div(v)\n        )\n      )\n    ), z = no({\n      inset: D,\n      softness: G,\n      offsetX: I,\n      offsetY: L\n    }), M = E(r, r, r).mul(z).mul(w), j = n(\n      R,\n      C,\n      s.y\n    ), i = $(U)(W), e = Q.mul(M).add(i), q = e.r.add(e.g).add(e.b), J = l(\n      n(j.add(i), e, q),\n      1\n    );\n    return to(J, _, Y, x, V);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromaticSoft3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as P from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as no } from \"../../helpers/edgeMask.js\";\nconst ao = {\n  name: \"ChromaticSoft4\",\n  collection: \"chromatic-soft\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (m) => {\n    const {\n      vec3: E,\n      vec4: l,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: s,\n      uv: N,\n      color: t\n    } = P, _ = t(\"#7cfffb\"), S = t(\"#3c5fea\"), p = t(\"#73e0ea\"), u = t(\"#228ddc\"), C = t(\"#283cbf\"), R = t(\"#369df1\"), D = -0.5, G = 2, I = 0, L = 0, g = 0.2, A = 0.5, b = 9, F = 0.2, v = 0.05, w = 1, U = 0.6, Y = 0.5, x = 1, V = 1, c = N(), { correctedUV: W } = Z(), a = oo(c, g, A, b), h = s(_, o(2.2)), y = s(S, o(2.2)), B = s(p, o(2.2)), k = s(u, o(2.2)), H = n(\n      h,\n      y,\n      c.x\n    ), K = n(\n      k,\n      B,\n      c.x\n    ), Q = n(\n      H,\n      K,\n      c.y\n    ), d = a.x.sub(0.5), i = a.y.sub(0.5), X = i.mul(d).add(i.mul(d)).negate(), r = o(1).add(\n      o(F).mul(\n        T(\n          X.add(O.mul(m.speed.uniform).mul(0.025)).div(v)\n        )\n      )\n    ), z = no({\n      inset: D,\n      softness: G,\n      offsetX: I,\n      offsetY: L\n    }), M = E(r, r, r).mul(z).mul(w), j = n(\n      R,\n      C,\n      c.y\n    ), f = $(U)(W), e = Q.mul(M).add(f), q = e.r.add(e.g).add(e.b), J = l(\n      n(j.add(f), e, q),\n      1\n    );\n    return to(J, _, Y, x, V);\n  }\n};\nexport {\n  ao as componentDefinition,\n  ao as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromaticSoft4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as P from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as Z } from \"../../utilities/uv.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as oo } from \"../../helpers/distort.js\";\nimport { glow as to } from \"../../helpers/glow.js\";\nimport { edgeMask as no } from \"../../helpers/edgeMask.js\";\nconst _o = {\n  name: \"ChromaticSoft5\",\n  collection: \"chromatic-soft\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the wave effect.\"\n    }\n  },\n  fragmentNode: (f) => {\n    const {\n      vec3: E,\n      vec4: l,\n      time: O,\n      mix: n,\n      sin: T,\n      float: o,\n      pow: s,\n      uv: N,\n      color: t\n    } = P, a = t(\"#dcff49\"), S = t(\"#8ae64c\"), p = t(\"#99e47a\"), u = t(\"#7bbc50\"), C = t(\"#5adc4b\"), R = t(\"#3a9833\"), D = -0.5, G = 1, I = 0, L = 0, g = 0.2, A = 0.5, b = 20, F = 0.2, v = 0.05, w = 1, U = 0.6, Y = 0.4, x = 1, V = 1, c = N(), { correctedUV: W } = Z(), _ = oo(c, g, A, b), h = s(a, o(2.2)), y = s(S, o(2.2)), B = s(p, o(2.2)), k = s(u, o(2.2)), H = n(\n      h,\n      y,\n      c.x\n    ), K = n(\n      k,\n      B,\n      c.x\n    ), Q = n(\n      H,\n      K,\n      c.y\n    ), d = _.x.sub(0.5), i = _.y.sub(0.5), X = i.mul(d).add(i.mul(d)).negate(), r = o(1).add(\n      o(F).mul(\n        T(\n          X.add(O.mul(f.speed.uniform).mul(0.025)).div(v)\n        )\n      )\n    ), z = no({\n      inset: D,\n      softness: G,\n      offsetX: I,\n      offsetY: L\n    }), M = E(r, r, r).mul(z).mul(w), j = n(\n      R,\n      C,\n      c.y\n    ), m = $(U)(W), e = Q.mul(M).add(m), q = e.r.add(e.g).add(e.b), J = l(\n      n(j.add(m), e, q),\n      1\n    );\n    return to(J, a, Y, x, V);\n  }\n};\nexport {\n  _o as componentDefinition,\n  _o as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/chromaticSoft5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import { Color as t } from \"three\";\nimport * as e from \"../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nconst { vec3: n } = e, l = (o) => o ? 1 : -1, m = (o) => {\n  const r = new t(o);\n  return n(r.r, r.g, r.b).value;\n};\nexport {\n  l as transformBoolean,\n  m as transformColor\n};\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon1\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = 0, V = 0, A = 0.15, R = 0.5, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon2\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = 0, V = -0.2, A = 0.2, R = 0.5, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon3\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = 0.6, V = 0.2, A = 0.15, R = 0.6, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon4\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = -0.6, V = 0.2, A = 0.15, R = 0.6, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon5\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = -0.6, V = 0.9, A = 0.2, R = 0.6, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon6\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = 0.6, V = 0.9, A = 0.2, R = 0.6, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon7\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = 0, V = 1, A = 0.25, R = 0.3, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon8\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = 0, V = 0.22, A = 2, R = 0.06, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as Y from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as m } from \"../../utilities/transformations.js\";\nimport { grain as j } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst W = {\n  name: \"Horizon9\",\n  collection: \"horizon\",\n  tags: [\"gradient\", \"color\", \"fade\", \"mask\"],\n  props: {\n    color1: {\n      type: String,\n      default: \"#42a3d8\",\n      transform: m,\n      description: \"The first color of the horizon gradient.\"\n    },\n    color2: {\n      type: String,\n      default: \"#5500ff\",\n      transform: m,\n      description: \"The second color of the horizon gradient.\"\n    },\n    color3: {\n      type: String,\n      default: \"#ff05d5\",\n      transform: m,\n      description: \"The third color of the horizon gradient.\"\n    },\n    color4: {\n      type: String,\n      default: \"#6b1ebf\",\n      transform: m,\n      description: \"The fourth color of the horizon gradient.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0b1229\",\n      transform: m,\n      description: \"The background color.\"\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: n,\n      vec3: T,\n      vec4: _,\n      mix: c,\n      sin: u,\n      cos: y,\n      time: f,\n      fract: x,\n      dot: i,\n      floor: F,\n      smoothstep: k,\n      PI: v,\n      uv: S,\n      float: b,\n      length: U\n    } = Y, E = 0, V = 0.8, A = 2, R = 0.06, g = (t = n(0)) => {\n      const o = x(T(t.x, t.x, t.y));\n      return o.add(i(o, o.yzx.add(200))), x(o.xx.add(o.yz).mul(o.zy));\n    }, M = (t) => {\n      const o = F(t), s = x(t), r = s.mul(s).mul(s.mul(-5).add(6)), e = g(o), a = g(o.add(n(1, 0))), l = g(o.add(n(0, 1))), p = g(o.add(n(1, 1)));\n      return c(\n        c(\n          i(e.sub(3).mul(2), s),\n          i(a.sub(3).mul(2), s.sub(n(1, 0))),\n          r.x\n        ),\n        c(\n          i(l.sub(3).mul(2), s.sub(n(0, 1))),\n          i(p.sub(3).mul(2), s.sub(n(1, 1))),\n          r.x\n        ),\n        r.y\n      ).mul(0.1).add(3);\n    }, D = () => {\n      const o = S().sub(0.5), r = M(\n        n(\n          f.mul(0.02),\n          o.x.mul(o.y)\n        )\n      ).sub(0.5).mul(400).add(90).mul(v.div(180)).add(f.mul(0.8)), e = n(\n        o.x.mul(y(r)).sub(o.y.mul(u(r))),\n        o.x.mul(u(r)).add(o.y.mul(y(r)))\n      ), a = 12, l = b(200), p = f;\n      return n(\n        e.x.add(\n          u(e.x.mul(a).add(p)).div(l)\n        ),\n        e.y.add(\n          u(e.y.mul(a).mul(1.5).add(p)).div(l.mul(5e3))\n        )\n      );\n    }, H = (t = n(0)) => {\n      const o = k(\n        -0.3,\n        0.3,\n        t.x.mul(y(v.div(360))).sub(t.x.mul(u(v.div(360))))\n      ), s = k(\n        0.3,\n        -0.3,\n        t.y\n      ), r = c(\n        d.color1.uniform,\n        d.color2.uniform,\n        o\n      ), e = c(\n        d.color3.uniform,\n        d.color4.uniform,\n        o\n      );\n      return c(r, e, s);\n    }, z = (t) => {\n      const o = n(b(0.5).add(E), V), s = U(S().sub(o)), r = b(R).add(u(f.mul(0.5)).mul(0.02).mul(t)), e = r.mul(b(A).mul(t)), a = r.sub(e), l = r.add(e);\n      return k(\n        l,\n        a,\n        s\n      );\n    }, I = D(), C = H(I), L = z(2), O = z(1), P = z(0.5), { correctedUV: q } = B(), h = j(0.3)(q), G = c(\n      d.backgroundColor.uniform.sub(h.mul(0.7)),\n      C.sub(h),\n      L\n    ), N = c(\n      c(G, d.backgroundColor.uniform, 0.6),\n      C.sub(h),\n      O\n    ), X = c(\n      N,\n      C.sub(h.mul(2)),\n      P\n    );\n    return _(X, 1);\n  }\n};\nexport {\n  W as componentDefinition,\n  W as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/horizon9';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl1\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#316d8c\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#a57cb5\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#a59e9e\",\n      transform: h\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: i,\n      smoothstep: f,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 5, s = t(0.5), l = t(0.075), A = 1, U = t(0.25), B = t(1), y = 0.2, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(d.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        i(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), c = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        i(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(c);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), c = a.mul(0.5), O = c.add(t(e).mul(p.mul(0.5))), Z = u(\n        i(O),\n        r(O.add(r(c.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(d.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let b = t(0), _ = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = f(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), c = f(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        f(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      b = N(b, n), _ = N(_, c);\n    }\n    const w = $(1)(g).mul(0.7), T = _.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(d.colorA.uniform, d.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      d.backgroundColor.uniform,\n      G,\n      P(R(b.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl2\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#318c39\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#7ca4b5\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#9ea4a5\",\n      transform: h\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: i,\n      smoothstep: f,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 4, s = t(0.5), l = t(0.075), A = 4, U = t(0.25), B = t(1), y = 0.2, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(d.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        i(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), c = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        i(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(c);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), c = a.mul(0.5), O = c.add(t(e).mul(p.mul(0.5))), Z = u(\n        i(O),\n        r(O.add(r(c.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(d.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let b = t(0), _ = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = f(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), c = f(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        f(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      b = N(b, n), _ = N(_, c);\n    }\n    const w = $(1)(g).mul(0.7), T = _.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(d.colorA.uniform, d.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      d.backgroundColor.uniform,\n      G,\n      P(R(b.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl3\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#ca7844\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#f867a7\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#6262a6\",\n      transform: h\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: i,\n      smoothstep: f,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 4, s = t(0.5), l = t(0.075), A = 8, U = t(0.5), B = t(1), y = 0.2, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(d.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        i(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), c = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        i(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(c);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), c = a.mul(0.5), O = c.add(t(e).mul(p.mul(0.5))), Z = u(\n        i(O),\n        r(O.add(r(c.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(d.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let _ = t(0), b = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = f(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), c = f(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        f(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      _ = N(_, n), b = N(b, c);\n    }\n    const w = $(1)(g).mul(0.7), T = b.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(d.colorA.uniform, d.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      d.backgroundColor.uniform,\n      G,\n      P(R(_.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl4\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#d59a0f\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#98c184\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#9562a6\",\n      transform: h\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: i,\n      smoothstep: f,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 5, s = t(0.5), l = t(0.075), A = 9, U = t(0.25), B = t(1), y = 0.2, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(d.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        i(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), c = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        i(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(c);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), c = a.mul(0.5), O = c.add(t(e).mul(p.mul(0.5))), Z = u(\n        i(O),\n        r(O.add(r(c.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(d.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let _ = t(0), b = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = f(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), c = f(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        f(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      _ = N(_, n), b = N(b, c);\n    }\n    const w = $(1)(g).mul(0.7), T = b.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(d.colorA.uniform, d.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      d.backgroundColor.uniform,\n      G,\n      P(R(_.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl5\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#290fd5\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#8499c1\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#1d1420\",\n      transform: h\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: i,\n      smoothstep: f,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 3, s = t(0.5), l = t(0.075), A = 10, U = t(0.25), B = t(1), y = 0.2, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(d.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        i(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), c = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        i(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(c);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), c = a.mul(0.5), O = c.add(t(e).mul(p.mul(0.5))), Z = u(\n        i(O),\n        r(O.add(r(c.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(d.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let _ = t(0), b = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = f(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), c = f(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        f(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      _ = N(_, n), b = N(b, c);\n    }\n    const w = $(1)(g).mul(0.7), T = b.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(d.colorA.uniform, d.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      d.backgroundColor.uniform,\n      G,\n      P(R(_.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl6\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#d647d4\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#2b9a79\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#8da7bc\",\n      transform: h\n    }\n  },\n  fragmentNode: (c) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: i,\n      smoothstep: f,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 3, s = t(0.5), l = t(0.075), A = 12, U = t(0.4), B = t(1), y = 0.2, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(c.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        i(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), d = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        i(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(d);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), d = a.mul(0.5), O = d.add(t(e).mul(p.mul(0.5))), Z = u(\n        i(O),\n        r(O.add(r(d.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(c.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let b = t(0), _ = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = f(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), d = f(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        f(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      b = N(b, n), _ = N(_, d);\n    }\n    const w = $(1)(g).mul(0.7), T = _.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(c.colorA.uniform, c.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      c.backgroundColor.uniform,\n      G,\n      P(R(b.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl7\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#ff8f1c\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#e89f4b\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#959cc1\",\n      transform: h\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: i,\n      smoothstep: f,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 3, s = t(0.5), l = t(0.075), A = 18, U = t(0.3), B = t(1), y = 0.5, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(d.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        i(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), c = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        i(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(c);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), c = a.mul(0.5), O = c.add(t(e).mul(p.mul(0.5))), Z = u(\n        i(O),\n        r(O.add(r(c.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(d.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let b = t(0), _ = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = f(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), c = f(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        f(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      b = N(b, n), _ = N(_, c);\n    }\n    const w = $(1)(g).mul(0.7), T = _.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(d.colorA.uniform, d.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      d.backgroundColor.uniform,\n      G,\n      P(R(b.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as K from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { getAspectCorrectedCoordinates as X } from \"../../utilities/uv.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as $ } from \"../../helpers/grain.js\";\nimport { distort as x } from \"../../helpers/distort.js\";\nconst st = {\n  name: \"Pearl8\",\n  collection: \"pearl\",\n  tags: [\"blobs\", \"organic\", \"prism\"],\n  props: {\n    speed: {\n      type: Number,\n      description: \"The movement speed of the pearl effect.\",\n      default: 0.15\n    },\n    colorA: {\n      type: String,\n      description: \"The first color of the foreground.\",\n      default: \"#1cffd5\",\n      transform: h\n    },\n    colorB: {\n      type: String,\n      description: \"The second color of the foreground.\",\n      default: \"#554be8\",\n      transform: h\n    },\n    backgroundColor: {\n      type: String,\n      description: \"The background color behind the pearl effect.\",\n      default: \"#cfcfcf\",\n      transform: h\n    }\n  },\n  fragmentNode: (d) => {\n    const {\n      vec2: u,\n      vec3: D,\n      vec4: S,\n      time: a,\n      length: I,\n      sin: r,\n      cos: f,\n      smoothstep: i,\n      float: t,\n      add: N,\n      PI: p,\n      mix: E,\n      min: R,\n      pow: P\n    } = K, C = 3, s = t(0.5), l = t(0.075), A = 30, U = t(0.3), B = t(1), y = 0.4, F = 1, L = t(1), M = t(1), { correctedUV: g, correctedCenter: k } = X(), v = g.sub(k), V = (o) => {\n      const e = a.mul(t(3).mul(d.speed.uniform)).add(t(A).mul(100)), n = u(\n        r(e.mul(0.23).add(t(o).mul(1.7))),\n        f(e.mul(0.37).add(t(o).mul(1.3)))\n      ).mul(0.3), c = u(\n        r(e.mul(0.17).add(t(o).mul(2.3))),\n        f(e.mul(0.29).add(t(o).mul(1.9)))\n      ).mul(0.1);\n      return n.add(c);\n    }, Y = (o = u(0), m, e) => {\n      const n = I(o.sub(m)), c = a.mul(0.5), O = c.add(t(e).mul(p.mul(0.5))), Z = u(\n        f(O),\n        r(O.add(r(c.mul(0.3))))\n        // Add oscillation to direction\n      ), j = x(o, y, F, A), q = o.sub(Z.mul(B)).mul(j), z = I(q.sub(m)), J = r(\n        n.mul(3).add(a.mul(0.7).mul(d.speed.uniform)).add(t(e).mul(2.5))\n      ).mul(U);\n      return n.add(J).mul(0.15).add(z.mul(0.05));\n    };\n    let b = t(0), _ = t(0);\n    for (let o = 0; o < C; o++) {\n      const m = V(o), e = Y(v, m, o), n = i(\n        l.add(s),\n        l.sub(s),\n        e.mul(6)\n        // Increased multiplier for sharper transition\n      ).mul(t(C).greaterThan(o)), c = i(\n        l.add(s.mul(1.2)),\n        l.add(s.mul(0.8)),\n        e.mul(7)\n      ).sub(\n        i(\n          l.sub(s.mul(0.8)),\n          l.sub(s.mul(1.2)),\n          e.mul(7)\n        )\n      );\n      b = N(b, n), _ = N(_, c);\n    }\n    const w = $(1)(g).mul(0.7), T = _.mul(L), H = D(\n      r(T.mul(2)).add(1).mul(0.5),\n      r(T.mul(2.2).add(p.mul(0.33))).add(1).mul(0.5),\n      r(T.mul(2.4).add(p.mul(0.66))).add(1).mul(0.5)\n    ), W = E(d.colorA.uniform, d.colorB.uniform, g.x), G = S(\n      W.mul(H),\n      1\n    ), Q = E(\n      d.backgroundColor.uniform,\n      G,\n      P(R(b.mul(1.2), 0.8), M)\n      // Sharper transition\n    ).sub(w.mul(0.6));\n    return S(Q);\n  }\n};\nexport {\n  st as componentDefinition,\n  st as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/pearl8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as E } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Satin1\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#543ee6\",\n      transform: h,\n      description: \"The primary color of the effect\"\n    },\n    colorB: {\n      type: String,\n      default: \"#0050d5\",\n      transform: h,\n      description: \"The highlight color in the top-right\"\n    },\n    brightness: {\n      type: Number,\n      default: 1.2,\n      description: \"The overall brightness\"\n    },\n    contrast: {\n      type: Number,\n      default: 1,\n      description: \"The overall contrast, mostly in the darker areas\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the satin surface motion\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: y,\n      mix: u,\n      sin: i,\n      cos: l,\n      time: g,\n      uv: c,\n      oneMinus: b\n    } = _, d = 2, S = 2, x = 1, v = c().mul(S), f = (t = n(0), e) => n(\n      t.x.mul(i(e)).sub(t.y.mul(l(e))),\n      t.x.mul(i(e)).add(t.y.mul(l(e)))\n    );\n    let s = n(0), r = n(0), a = 7.5, m = v;\n    for (let t = 0; t < 10; t++) {\n      m = f(m, d), r = f(r, d);\n      const e = m.mul(a).add(t).add(r).sub(g.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(i(e)), s = s.add(\n        l(e).mul(0.5).add(0.5).div(a)\n      ), a *= 1.22;\n    }\n    const p = s.x.add(s.y), A = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), C = u(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(x)\n    ), { correctedUV: N } = B(), T = E(0.8)(N);\n    return y(\n      u(\n        o.colorA.uniform.mul(b(o.contrast.uniform.mul(0.5))).sub(T.mul(0.2)),\n        C,\n        A\n      ),\n      1\n    );\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as E } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Satin2\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#f4733c\",\n      transform: h,\n      description: \"The primary color of the effect\"\n    },\n    colorB: {\n      type: String,\n      default: \"#F5DD90\",\n      transform: h,\n      description: \"The highlight color in the top-right\"\n    },\n    brightness: {\n      type: Number,\n      default: 1,\n      description: \"The overall brightness\"\n    },\n    contrast: {\n      type: Number,\n      default: 0.2,\n      description: \"The overall contrast, mostly in the darker areas\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the satin surface motion\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: y,\n      mix: u,\n      sin: i,\n      cos: l,\n      time: g,\n      uv: c,\n      oneMinus: b\n    } = _, d = 5, S = 2, x = 0.5, v = c().mul(S), f = (t = n(0), e) => n(\n      t.x.mul(i(e)).sub(t.y.mul(l(e))),\n      t.x.mul(i(e)).add(t.y.mul(l(e)))\n    );\n    let s = n(0), r = n(0), a = 7.5, m = v;\n    for (let t = 0; t < 10; t++) {\n      m = f(m, d), r = f(r, d);\n      const e = m.mul(a).add(t).add(r).sub(g.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(i(e)), s = s.add(\n        l(e).mul(0.5).add(0.5).div(a)\n      ), a *= 1.22;\n    }\n    const p = s.x.add(s.y), A = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), C = u(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(x)\n    ), { correctedUV: N } = B(), T = E(0.8)(N);\n    return y(\n      u(\n        o.colorA.uniform.mul(b(o.contrast.uniform.mul(0.5))).sub(T.mul(0.2)),\n        C,\n        A\n      ),\n      1\n    );\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as E } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Satin3\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#43b526\",\n      transform: h,\n      description: \"The primary color of the effect\"\n    },\n    colorB: {\n      type: String,\n      default: \"#9edc21\",\n      transform: h,\n      description: \"The highlight color in the top-right\"\n    },\n    brightness: {\n      type: Number,\n      default: 1,\n      description: \"The overall brightness\"\n    },\n    contrast: {\n      type: Number,\n      default: 0.3,\n      description: \"The overall contrast, mostly in the darker areas\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the satin surface motion\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: y,\n      mix: u,\n      sin: i,\n      cos: l,\n      time: b,\n      uv: c,\n      oneMinus: g\n    } = _, d = 30, S = 1.5, x = 1.5, v = c().mul(S), f = (t = n(0), e) => n(\n      t.x.mul(i(e)).sub(t.y.mul(l(e))),\n      t.x.mul(i(e)).add(t.y.mul(l(e)))\n    );\n    let s = n(0), r = n(0), a = 7.5, m = v;\n    for (let t = 0; t < 10; t++) {\n      m = f(m, d), r = f(r, d);\n      const e = m.mul(a).add(t).add(r).sub(b.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(i(e)), s = s.add(\n        l(e).mul(0.5).add(0.5).div(a)\n      ), a *= 1.22;\n    }\n    const p = s.x.add(s.y), A = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), C = u(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(x)\n    ), { correctedUV: N } = B(), T = E(0.8)(N);\n    return y(\n      u(\n        o.colorA.uniform.mul(g(o.contrast.uniform.mul(0.5))).sub(T.mul(0.2)),\n        C,\n        A\n      ),\n      1\n    );\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as B from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as y } from \"../../utilities/transformations.js\";\nimport { grain as h } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as w } from \"../../utilities/uv.js\";\nconst R = {\n  name: \"Satin4\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#1170cf\",\n      transform: y\n    },\n    colorB: {\n      type: String,\n      default: \"#ff9621\",\n      transform: y\n    },\n    brightness: {\n      type: Number,\n      default: 1\n    },\n    contrast: {\n      type: Number,\n      default: 0.3\n    },\n    speed: {\n      type: Number,\n      default: 1\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: b,\n      mix: i,\n      sin: s,\n      cos: u,\n      time: S,\n      uv: c,\n      oneMinus: g\n    } = B, d = 68, x = 2, A = 0.5, C = c().mul(x), f = (t = n(0), e) => n(\n      t.x.mul(s(e)).sub(t.y.mul(u(e))),\n      t.x.mul(s(e)).add(t.y.mul(u(e)))\n    );\n    let l = n(0), r = n(0), m = 7.5, a = C;\n    for (let t = 0; t < 10; t++) {\n      a = f(a, d), r = f(r, d);\n      const e = a.mul(m).add(t).add(r).sub(S.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(s(e)), l = l.add(\n        u(e).mul(0.5).add(0.5).div(m)\n      ), m *= 1.22;\n    }\n    const p = l.x.add(l.y), N = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), _ = i(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(A)\n    ), { correctedUV: E } = w(), v = h(0.8)(E);\n    return b(\n      i(\n        o.colorA.uniform.mul(g(o.contrast.uniform.mul(0.5))).sub(v.mul(0.2)),\n        _,\n        N\n      ),\n      1\n    );\n  }\n};\nexport {\n  R as componentDefinition,\n  R as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as T from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as _ } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst L = {\n  name: \"Satin5\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#46dae3\",\n      transform: h,\n      description: \"The primary color of the effect\"\n    },\n    colorB: {\n      type: String,\n      default: \"#D3FFE9\",\n      transform: h,\n      description: \"The highlight color in the top-right\"\n    },\n    brightness: {\n      type: Number,\n      default: 0.8,\n      description: \"The overall brightness\"\n    },\n    contrast: {\n      type: Number,\n      default: 0.5,\n      description: \"The overall contrast, mostly in the darker areas\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the satin surface motion\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: y,\n      mix: u,\n      sin: i,\n      cos: l,\n      time: g,\n      uv: c,\n      oneMinus: b\n    } = T, d = 43, S = 1.5, x = 1, v = c().mul(S), f = (t = n(0), e) => n(\n      t.x.mul(i(e)).sub(t.y.mul(l(e))),\n      t.x.mul(i(e)).add(t.y.mul(l(e)))\n    );\n    let s = n(0), r = n(0), a = 7.5, m = v;\n    for (let t = 0; t < 10; t++) {\n      m = f(m, d), r = f(r, d);\n      const e = m.mul(a).add(t).add(r).sub(g.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(i(e)), s = s.add(\n        l(e).mul(0.5).add(0.5).div(a)\n      ), a *= 1.22;\n    }\n    const p = s.x.add(s.y), A = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), C = u(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(x)\n    ), { correctedUV: E } = B(), N = _(0.8)(E);\n    return y(\n      u(\n        o.colorA.uniform.mul(b(o.contrast.uniform.mul(0.5))).sub(N.mul(0.2)),\n        C,\n        A\n      ),\n      1\n    );\n  }\n};\nexport {\n  L as componentDefinition,\n  L as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as E } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Satin6\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#b543e4\",\n      transform: h,\n      description: \"The primary color of the effect\"\n    },\n    colorB: {\n      type: String,\n      default: \"#3775d1\",\n      transform: h,\n      description: \"The highlight color in the top-right\"\n    },\n    brightness: {\n      type: Number,\n      default: 1.1,\n      description: \"The overall brightness\"\n    },\n    contrast: {\n      type: Number,\n      default: 0.7,\n      description: \"The overall contrast, mostly in the darker areas\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the satin surface motion\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: y,\n      mix: u,\n      sin: i,\n      cos: l,\n      time: b,\n      uv: c,\n      oneMinus: g\n    } = _, d = 46, S = 2, x = 1, v = c().mul(S), f = (t = n(0), e) => n(\n      t.x.mul(i(e)).sub(t.y.mul(l(e))),\n      t.x.mul(i(e)).add(t.y.mul(l(e)))\n    );\n    let s = n(0), r = n(0), a = 7.5, m = v;\n    for (let t = 0; t < 10; t++) {\n      m = f(m, d), r = f(r, d);\n      const e = m.mul(a).add(t).add(r).sub(b.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(i(e)), s = s.add(\n        l(e).mul(0.5).add(0.5).div(a)\n      ), a *= 1.22;\n    }\n    const p = s.x.add(s.y), A = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), C = u(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(x)\n    ), { correctedUV: N } = B(), T = E(0.8)(N);\n    return y(\n      u(\n        o.colorA.uniform.mul(g(o.contrast.uniform.mul(0.5))).sub(T.mul(0.2)),\n        C,\n        A\n      ),\n      1\n    );\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as E } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Satin7\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#5c35d1\",\n      transform: h,\n      description: \"The primary color of the effect\"\n    },\n    colorB: {\n      type: String,\n      default: \"#7d59aa\",\n      transform: h,\n      description: \"The highlight color in the top-right\"\n    },\n    brightness: {\n      type: Number,\n      default: 1.1,\n      description: \"The overall brightness\"\n    },\n    contrast: {\n      type: Number,\n      default: 0.7,\n      description: \"The overall contrast, mostly in the darker areas\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the satin surface motion\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: y,\n      mix: u,\n      sin: i,\n      cos: l,\n      time: g,\n      uv: c,\n      oneMinus: b\n    } = _, d = 49, S = 2, x = 1, v = c().mul(S), f = (t = n(0), e) => n(\n      t.x.mul(i(e)).sub(t.y.mul(l(e))),\n      t.x.mul(i(e)).add(t.y.mul(l(e)))\n    );\n    let s = n(0), r = n(0), a = 7.5, m = v;\n    for (let t = 0; t < 10; t++) {\n      m = f(m, d), r = f(r, d);\n      const e = m.mul(a).add(t).add(r).sub(g.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(i(e)), s = s.add(\n        l(e).mul(0.5).add(0.5).div(a)\n      ), a *= 1.22;\n    }\n    const p = s.x.add(s.y), A = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), C = u(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(x)\n    ), { correctedUV: N } = B(), T = E(0.8)(N);\n    return y(\n      u(\n        o.colorA.uniform.mul(b(o.contrast.uniform.mul(0.5))).sub(T.mul(0.2)),\n        C,\n        A\n      ),\n      1\n    );\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as h } from \"../../utilities/transformations.js\";\nimport { grain as E } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as B } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Satin8\",\n  collection: \"satin\",\n  tags: [\"noise\", \"organic\", \"flow\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#ca2727\",\n      transform: h,\n      description: \"The primary color of the effect\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ff2424\",\n      transform: h,\n      description: \"The highlight color in the top-right\"\n    },\n    brightness: {\n      type: Number,\n      default: 1,\n      description: \"The overall brightness\"\n    },\n    contrast: {\n      type: Number,\n      default: 0.8,\n      description: \"The overall contrast, mostly in the darker areas\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the satin surface motion\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec2: n,\n      vec4: y,\n      mix: u,\n      sin: i,\n      cos: l,\n      time: g,\n      uv: c,\n      oneMinus: b\n    } = _, d = 90, S = 1.5, x = 1, v = c().mul(S), f = (t = n(0), e) => n(\n      t.x.mul(i(e)).sub(t.y.mul(l(e))),\n      t.x.mul(i(e)).add(t.y.mul(l(e)))\n    );\n    let s = n(0), r = n(0), a = 7.5, m = v;\n    for (let t = 0; t < 10; t++) {\n      m = f(m, d), r = f(r, d);\n      const e = m.mul(a).add(t).add(r).sub(g.mul(o.speed.uniform.mul(0.2)));\n      r = r.add(i(e)), s = s.add(\n        l(e).mul(0.5).add(0.5).div(a)\n      ), a *= 1.22;\n    }\n    const p = s.x.add(s.y), A = p.mul(o.brightness.uniform.mul(1.8)).pow(3).add(p.pow(4)).sub(o.contrast.uniform.mul(0.5)).max(0), C = u(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      c().x.mul(c().y).mul(x)\n    ), { correctedUV: N } = B(), T = E(0.8)(N);\n    return y(\n      u(\n        o.colorA.uniform.mul(b(o.contrast.uniform.mul(0.5))).sub(T.mul(0.2)),\n        C,\n        A\n      ),\n      1\n    );\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/satin8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral1\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = 0, d = 0, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral2\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = 0.3, d = -0.3, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral3\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = -0.3, d = -0.3, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral4\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = -0.3, d = 0.3, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral5\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = 0.3, d = 0.3, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral6\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = 0.3, d = 0, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral7\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = -0.3, d = 0, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral8\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = 0, d = -0.3, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as u from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as r, transformBoolean as h } from \"../../utilities/transformations.js\";\nimport { getAspectCorrectedCoordinates as y } from \"../../utilities/uv.js\";\nconst C = {\n  name: \"Spiral9\",\n  collection: \"spiral\",\n  tags: [\"two-tone\", \"spiral\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#fbcec4\",\n      transform: r,\n      description: \"The first color of the spiral\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ef729a\",\n      transform: r,\n      description: \"The second color of the spiral\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the spiral\"\n    },\n    intensity: {\n      type: Number,\n      default: 1,\n      description: \"The intensity of bands in the spiral\"\n    },\n    clockwise: {\n      type: Boolean,\n      default: !1,\n      transform: h,\n      description: \"Whether the spiral should spin clockwise or not\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: n,\n      time: s,\n      length: i,\n      atan2: l,\n      mix: c,\n      vec2: a\n    } = u, p = 0, d = 0.3, { correctedUV: t, correctedCenter: o } = y(a(p, d)), m = i(t.sub(o)), f = l(\n      t.y.sub(o.y),\n      t.x.sub(o.x)\n    ).add(m.mul(e.intensity.uniform).mul(20)).mul(1).add(s.mul(e.speed.uniform).mul(e.clockwise.uniform)).sin().mul(0.5).add(0.5);\n    return n(\n      c(\n        e.colorA.uniform,\n        e.colorB.uniform,\n        f\n      ),\n      1\n    );\n  }\n};\nexport {\n  C as componentDefinition,\n  C as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/spiral9';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as N from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as V } from \"../../helpers/distort.js\";\nimport { grain as W } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as x } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis1\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#16b8cc\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#5302ff\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#ff3366\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"#ff9900\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.2,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = N, i = 0.05, l = 0.03, m = 1.2, g = 4, y = 0, o = V(h(), 0.08, 1, 3), _ = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), b = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(g))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(y), v = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), T = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), w = a(o.y.sub(_)).add(o.y.mul(l)), E = a(o.y.sub(b)).add(o.y.mul(l)), f = c(\n      e.smoothness.uniform,\n      0,\n      w\n    ), u = c(\n      e.smoothness.uniform,\n      0,\n      E\n    ), { correctedUV: C } = x(), S = W(0.8)(C), A = d(\n      v.mul(f),\n      T.mul(u)\n    ).mul(m).sub(S.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        A,\n        d(f, u).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis10\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#150e7e\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#9edee6\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#c6b873\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"rgba(69,78,131,0.53)\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.25,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = A, i = 0.05, l = 0.03, m = 1.5, g = 4, _ = 0.1, o = I(h(), 0.08, 1, 35), y = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), T = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(g))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(_), b = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), E = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), v = a(o.y.sub(y)).add(o.y.mul(l)), S = a(o.y.sub(T)).add(o.y.mul(l)), u = c(\n      e.smoothness.uniform,\n      0,\n      v\n    ), f = c(\n      e.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      b.mul(u),\n      E.mul(f)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        N,\n        d(u, f).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis10';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis2\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#53cc16\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ffd502\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#33ffb8\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"#0004ff\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.2,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: c,\n      smoothstep: a,\n      add: d\n    } = A, i = 0.05, l = 0.03, m = 1.2, _ = 4, g = 0, e = I(h(), 0.08, 1, 4), y = s(\n      e.x.mul(o.frequency.uniform).mul(Math.PI * 2).add(n.mul(o.speed.uniform))\n    ).mul(o.amplitude.uniform).add(0.5).sub(i), T = s(\n      e.x.mul(o.frequency.uniform).mul(Math.PI * 2).add(n.mul(o.speed.uniform).add(_))\n    ).mul(o.amplitude.uniform).add(0.5).sub(i).add(g), E = r(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      e.x\n    ), b = r(\n      o.colorC.uniform,\n      o.colorD.uniform,\n      e.x\n    ), v = c(e.y.sub(y)).add(e.y.mul(l)), S = c(e.y.sub(T)).add(e.y.mul(l)), f = a(\n      o.smoothness.uniform,\n      0,\n      v\n    ), u = a(\n      o.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      E.mul(f),\n      b.mul(u)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        o.backgroundColor.uniform,\n        N,\n        d(f, u).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis3\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#7416cc\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#ff025b\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#ffb833\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"#ff0008\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.25,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: c,\n      smoothstep: a,\n      add: d\n    } = A, i = 0.03, l = 0.03, m = 1.2, _ = 4, g = 0, e = I(h(), 0.08, 1, 10), y = s(\n      e.x.mul(o.frequency.uniform).mul(Math.PI * 2).add(n.mul(o.speed.uniform))\n    ).mul(o.amplitude.uniform).add(0.5).sub(i), T = s(\n      e.x.mul(o.frequency.uniform).mul(Math.PI * 2).add(n.mul(o.speed.uniform).add(_))\n    ).mul(o.amplitude.uniform).add(0.5).sub(i).add(g), b = r(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      e.x\n    ), E = r(\n      o.colorC.uniform,\n      o.colorD.uniform,\n      e.x\n    ), v = c(e.y.sub(y)).add(e.y.mul(l)), S = c(e.y.sub(T)).add(e.y.mul(l)), f = a(\n      o.smoothness.uniform,\n      0,\n      v\n    ), u = a(\n      o.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      b.mul(f),\n      E.mul(u)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        o.backgroundColor.uniform,\n        N,\n        d(f, u).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis4\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#14ea26\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#391ac3\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#6d33ff\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"#a66ecc\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.3,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = A, i = -0.1, l = 0.02, m = 1.2, _ = 4, g = 0.1, o = I(h(), 0.08, 1, 17), y = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), T = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(_))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(g), E = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), v = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), S = a(o.y.sub(y)).add(o.y.mul(l)), b = a(o.y.sub(T)).add(o.y.mul(l)), u = c(\n      e.smoothness.uniform,\n      0,\n      S\n    ), f = c(\n      e.smoothness.uniform,\n      0,\n      b\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      E.mul(u),\n      v.mul(f)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        N,\n        d(u, f).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis5\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#d5b73f\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#f49be5\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#ff3333\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"#2e00b6\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.3,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = A, i = 0, l = 0.04, m = 1.2, _ = 4, g = 0, o = I(h(), 0.08, 1, 24), y = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), T = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(_))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(g), b = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), E = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), v = a(o.y.sub(y)).add(o.y.mul(l)), S = a(o.y.sub(T)).add(o.y.mul(l)), u = c(\n      e.smoothness.uniform,\n      0,\n      v\n    ), f = c(\n      e.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      b.mul(u),\n      E.mul(f)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        N,\n        d(u, f).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis6\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#3900e3\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#1a00bd\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#ffa033\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"#d3a646\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.25,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = A, i = 0.2, l = 0.04, m = 1.2, _ = 4, g = 0, o = I(h(), 0.08, 1, 28), y = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), T = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(_))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(g), E = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), b = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), v = a(o.y.sub(y)).add(o.y.mul(l)), S = a(o.y.sub(T)).add(o.y.mul(l)), u = c(\n      e.smoothness.uniform,\n      0,\n      v\n    ), f = c(\n      e.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      E.mul(u),\n      b.mul(f)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        N,\n        d(u, f).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis7\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#3900e3\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#bdb400\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#33e7ff\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"#9f46d3\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.2,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = A, i = -0.1, l = 0.04, m = 1.2, _ = 4, g = 0, o = I(h(), 0.08, 1, 29), y = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), T = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(_))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(g), b = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), E = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), v = a(o.y.sub(y)).add(o.y.mul(l)), S = a(o.y.sub(T)).add(o.y.mul(l)), u = c(\n      e.smoothness.uniform,\n      0,\n      v\n    ), f = c(\n      e.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      b.mul(u),\n      E.mul(f)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        N,\n        d(u, f).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis8\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#150e7e\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#4e619f\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#73c1c6\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"rgba(69,78,131,0.53)\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.2,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = A, i = 0, l = 0.03, m = 1.5, g = 4, _ = 0.01, o = I(h(), 0.08, 1, 32), y = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), T = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(g))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(_), E = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), b = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), v = a(o.y.sub(y)).add(o.y.mul(l)), S = a(o.y.sub(T)).add(o.y.mul(l)), u = c(\n      e.smoothness.uniform,\n      0,\n      v\n    ), f = c(\n      e.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      E.mul(u),\n      b.mul(f)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        N,\n        d(u, f).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as t } from \"../../utilities/transformations.js\";\nimport { distort as I } from \"../../helpers/distort.js\";\nimport { grain as O } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as D } from \"../../utilities/uv.js\";\nconst q = {\n  name: \"Synthesis9\",\n  collection: \"synthesis\",\n  tags: [\"wave\", \"gradient\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#150e7e\",\n      transform: t,\n      description: \"The left color of the first wave\"\n    },\n    colorB: {\n      type: String,\n      default: \"#9f4e83\",\n      transform: t,\n      description: \"The right color of the first wave\"\n    },\n    colorC: {\n      type: String,\n      default: \"#c6b873\",\n      transform: t,\n      description: \"The left color of the second wave\"\n    },\n    colorD: {\n      type: String,\n      default: \"rgba(69,78,131,0.53)\",\n      transform: t,\n      description: \"The right color of the second wave\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#0a1029\",\n      transform: t,\n      description: \"The background color\"\n    },\n    frequency: {\n      type: Number,\n      default: 1,\n      description: \"The frequency of the waves\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    },\n    amplitude: {\n      type: Number,\n      default: 0.07,\n      description: \"The amplitude of the waves\"\n    },\n    smoothness: {\n      type: Number,\n      default: 0.2,\n      description: \"How soft the edges of the waves are\"\n    }\n  },\n  fragmentNode: (e) => {\n    const {\n      vec4: p,\n      uv: h,\n      time: n,\n      sin: s,\n      mix: r,\n      abs: a,\n      smoothstep: c,\n      add: d\n    } = A, i = 0.05, l = 0.03, m = 1.5, g = 4, _ = -0.01, o = I(h(), 0.08, 1, 34), y = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i), T = s(\n      o.x.mul(e.frequency.uniform).mul(Math.PI * 2).add(n.mul(e.speed.uniform).add(g))\n    ).mul(e.amplitude.uniform).add(0.5).sub(i).add(_), b = r(\n      e.colorA.uniform,\n      e.colorB.uniform,\n      o.x\n    ), E = r(\n      e.colorC.uniform,\n      e.colorD.uniform,\n      o.x\n    ), v = a(o.y.sub(y)).add(o.y.mul(l)), S = a(o.y.sub(T)).add(o.y.mul(l)), u = c(\n      e.smoothness.uniform,\n      0,\n      v\n    ), f = c(\n      e.smoothness.uniform,\n      0,\n      S\n    ), { correctedUV: w } = D(), C = O(0.8)(w), N = d(\n      b.mul(u),\n      E.mul(f)\n    ).mul(m).sub(C.mul(m));\n    return p(\n      r(\n        e.backgroundColor.uniform,\n        N,\n        d(u, f).min(1)\n      ),\n      1\n    );\n  }\n};\nexport {\n  q as componentDefinition,\n  q as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/synthesis9';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as w } from \"../../helpers/distort.js\";\nimport { grain as C } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as E } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Vapor1\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#bbfb4a\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#24d6e6\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: d,\n      smoothstep: f,\n      blendOverlay: p,\n      color: r,\n      float: n\n    } = _, u = 0.1, F = 1, v = 1.1, t = w(m(), 0.1, 1, F), b = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), g = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), h = d(t.y.sub(b)).mul(2), s = f(\n      n(0.5),\n      0,\n      h.mul(n(0.5))\n    ), { correctedUV: T } = E(), y = C(1)(T), A = g.mul(s).sub(y);\n    return p(a(\n      e(\n        r(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as w } from \"../../helpers/distort.js\";\nimport { grain as C } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as E } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Vapor10\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#f3bfbd\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#afbeef\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: f,\n      smoothstep: d,\n      blendOverlay: p,\n      color: r,\n      float: n\n    } = _, u = 0.1, F = 34, v = 1.3, t = w(m(), 0.1, 1, F), b = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), g = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), h = f(t.y.sub(b)).mul(2), s = d(\n      n(0.5),\n      0,\n      h.mul(n(0.5))\n    ), { correctedUV: T } = E(), y = C(1)(T), A = g.mul(s).sub(y);\n    return p(a(\n      e(\n        r(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor10';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as _ } from \"../../helpers/distort.js\";\nimport { grain as w } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as C } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Vapor2\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#F78E69\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#F7EF99\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: p,\n      smoothstep: d,\n      blendOverlay: f,\n      color: r,\n      float: n\n    } = A, u = 0.1, F = 2, v = 1.1, t = _(m(), 0.1, 1, F), g = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), h = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), b = p(t.y.sub(g)).mul(2), s = d(\n      n(0.5),\n      0,\n      b.mul(n(0.5))\n    ), { correctedUV: E } = C(), T = w(1)(E), y = h.mul(s).sub(T);\n    return f(a(\n      e(\n        r(\"#FFFFFF\"),\n        y,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as C from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as E } from \"../../helpers/distort.js\";\nimport { grain as _ } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as w } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Vapor3\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#593C8F\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#8EF9F3\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: p,\n      smoothstep: d,\n      blendOverlay: f,\n      color: r,\n      float: n\n    } = C, u = 0.1, F = 4, v = 1.1, t = E(m(), 0.1, 1, F), g = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), h = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), b = p(t.y.sub(g)).mul(2), s = d(\n      n(0.5),\n      0,\n      b.mul(n(0.5))\n    ), { correctedUV: T } = w(), y = _(1)(T), A = h.mul(s).sub(y);\n    return f(a(\n      e(\n        r(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as w } from \"../../helpers/distort.js\";\nimport { grain as C } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as E } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Vapor4\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#d59ce4\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#cf9095\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: d,\n      smoothstep: f,\n      blendOverlay: p,\n      color: r,\n      float: n\n    } = _, u = 0.1, F = 6, v = 1.1, t = w(m(), 0.1, 1, F), g = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), h = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), b = d(t.y.sub(g)).mul(2), s = f(\n      n(0.5),\n      0,\n      b.mul(n(0.5))\n    ), { correctedUV: T } = E(), y = C(1)(T), A = h.mul(s).sub(y);\n    return p(a(\n      e(\n        r(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as _ from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as w } from \"../../helpers/distort.js\";\nimport { grain as C } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as E } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Vapor5\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#e1b47a\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#8acab9\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: p,\n      smoothstep: d,\n      blendOverlay: f,\n      color: r,\n      float: n\n    } = _, u = 0.1, F = 10, v = 1.1, t = w(m(), 0.1, 1, F), b = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), g = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), h = p(t.y.sub(b)).mul(2), s = d(\n      n(0.5),\n      0,\n      h.mul(n(0.5))\n    ), { correctedUV: T } = E(), y = C(1)(T), A = g.mul(s).sub(y);\n    return f(a(\n      e(\n        r(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as C from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as E } from \"../../helpers/distort.js\";\nimport { grain as _ } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as w } from \"../../utilities/uv.js\";\nconst x = {\n  name: \"Vapor6\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#D0BCD5\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#7FEFBD\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: p,\n      smoothstep: d,\n      blendOverlay: f,\n      color: r,\n      float: n\n    } = C, u = 0.1, F = 11, v = 1.2, t = E(m(), 0.1, 1, F), g = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), h = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), b = p(t.y.sub(g)).mul(2), s = d(\n      n(0.5),\n      0,\n      b.mul(n(0.5))\n    ), { correctedUV: T } = w(), y = _(1)(T), A = h.mul(s).sub(y);\n    return f(a(\n      e(\n        r(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  x as componentDefinition,\n  x as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as C from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as _ } from \"../../helpers/distort.js\";\nimport { grain as w } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as E } from \"../../utilities/uv.js\";\nconst N = {\n  name: \"Vapor7\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"rgba(177,110,216,0.58)\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#C0D684\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: r,\n      abs: p,\n      smoothstep: d,\n      blendOverlay: f,\n      color: e,\n      float: n\n    } = C, u = 0.1, F = 23, v = 1, t = _(m(), 0.1, 1, F), g = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), b = r(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), h = p(t.y.sub(g)).mul(2), s = d(\n      n(0.5),\n      0,\n      h.mul(n(0.5))\n    ), { correctedUV: T } = E(), y = w(1)(T), A = b.mul(s).sub(y);\n    return f(a(\n      r(\n        e(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), e(\"#FFFFFF\"));\n  }\n};\nexport {\n  N as componentDefinition,\n  N as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as C from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as _ } from \"../../helpers/distort.js\";\nimport { grain as w } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as E } from \"../../utilities/uv.js\";\nconst O = {\n  name: \"Vapor8\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#0075C4\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#a24ad5\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: d,\n      smoothstep: p,\n      blendOverlay: f,\n      color: r,\n      float: n\n    } = C, u = 0.1, F = 29, v = 0.9, t = _(m(), 0.1, 1, F), g = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), h = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), b = d(t.y.sub(g)).mul(2), s = p(\n      n(0.5),\n      0,\n      b.mul(n(0.5))\n    ), { correctedUV: T } = E(), y = w(1)(T), A = h.mul(s).sub(y);\n    return f(a(\n      e(\n        r(\"#FFFFFF\"),\n        A,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  O as componentDefinition,\n  O as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as E from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as c } from \"../../utilities/transformations.js\";\nimport { distort as _ } from \"../../helpers/distort.js\";\nimport { grain as w } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as C } from \"../../utilities/uv.js\";\nconst D = {\n  name: \"Vapor9\",\n  collection: \"vapor\",\n  tags: [\"wave\", \"gradient\", \"colorful\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#D65108\",\n      transform: c,\n      description: \"The first color of the vapor wave.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#EFA00B\",\n      transform: c,\n      description: \"The second color of the vapor wave.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the waves\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: a,\n      uv: m,\n      time: l,\n      sin: i,\n      mix: e,\n      abs: p,\n      smoothstep: d,\n      blendOverlay: f,\n      color: r,\n      float: n\n    } = E, u = 0.1, F = 30, v = 0.9, t = _(m(), 0.1, 1, F), g = i(\n      t.y.mul(1.5).mul(Math.PI).sub(l.mul(o.speed.uniform).mul(0.5))\n    ).mul(0.2).add(0.5).sub(u), h = e(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      t.x\n    ), b = p(t.y.sub(g)).mul(2), s = d(\n      n(0.5),\n      0,\n      b.mul(n(0.5))\n    ), { correctedUV: A } = C(), T = w(1)(A), y = h.mul(s).sub(T);\n    return f(a(\n      e(\n        r(\"#FFFFFF\"),\n        y,\n        s.mul(v)\n      ),\n      1\n    ), r(\"#FFFFFF\"));\n  }\n};\nexport {\n  D as componentDefinition,\n  D as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/vapor9';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as B } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper1\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#c5fff9\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#a22fef\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#3062cf\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: e,\n      uv: d,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: f,\n      smoothstep: p,\n      oneMinus: g\n    } = A, r = d(), h = u(s(\n      r.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), b = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      r.y\n    ), C = f(r.x.sub(h)), a = p(\n      0.5,\n      0,\n      C\n    ), l = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(r.y)\n    ), { correctedUV: y } = T(), k = B(0.8)(y), v = b.mul(a).mul(1).sub(k.mul(1)), w = ((i = e(0), m = e(0)) => i.add(m).sub(i.mul(m)))(l, v);\n    return e(\n      t(\n        l,\n        w,\n        a\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper1';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as B } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper2\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#ef798a\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#7c98b3\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#7e2e84\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: r,\n      uv: d,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: p,\n      smoothstep: f,\n      oneMinus: g\n    } = A, e = d(), h = u(s(\n      e.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), b = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      e.y\n    ), C = p(e.x.sub(h)), a = f(\n      0.5,\n      0,\n      C\n    ), l = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(e.y)\n    ), { correctedUV: y } = T(), k = B(0.8)(y), v = b.mul(a).mul(1).sub(k.mul(1)), w = ((i = r(0), m = r(0)) => i.add(m).sub(i.mul(m)))(l, v);\n    return r(\n      t(\n        l,\n        w,\n        a\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper2';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as B } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper3\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#87bba2\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#f6efca\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#87bba2\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: e,\n      uv: d,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: p,\n      smoothstep: f,\n      oneMinus: g\n    } = A, r = d(), b = u(s(\n      r.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), h = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      r.y\n    ), C = p(r.x.sub(b)), a = f(\n      0.5,\n      0,\n      C\n    ), l = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(r.y)\n    ), { correctedUV: y } = T(), k = B(0.8)(y), v = h.mul(a).mul(1).sub(k.mul(1)), w = ((i = e(0), m = e(0)) => i.add(m).sub(i.mul(m)))(l, v);\n    return e(\n      t(\n        l,\n        w,\n        a\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper3';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as B } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper4\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#7a56ff\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#eeeef7\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#5ab1aa\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: r,\n      uv: d,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: f,\n      smoothstep: p,\n      oneMinus: g\n    } = A, e = d(), h = u(s(\n      e.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), b = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      e.y\n    ), C = f(e.x.sub(h)), a = p(\n      0.6,\n      0,\n      C\n    ), l = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(e.y)\n    ), { correctedUV: y } = T(), k = B(0.8)(y), v = b.mul(a).mul(1).sub(k.mul(1)), w = ((i = r(0), m = r(0)) => i.add(m).sub(i.mul(m)))(l, v);\n    return r(\n      t(\n        l,\n        w,\n        a\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper4';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as w from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as A } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper5\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#3CBBB1\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#5353b5\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#493697\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: e,\n      uv: d,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: p,\n      smoothstep: f,\n      oneMinus: g\n    } = w, r = d(), h = u(s(\n      r.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), b = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      r.y\n    ), C = p(r.x.sub(h)), l = f(\n      0.6,\n      0,\n      C\n    ), a = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(r.y)\n    ), { correctedUV: y } = T(), B = A(0.8)(y), k = b.mul(l).mul(1).sub(B.mul(1)), v = ((i = e(0), m = e(0)) => i.add(m).sub(i.mul(m)))(a, k);\n    return e(\n      t(\n        a,\n        v,\n        l\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper5';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as B } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper6\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#87bba2\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#f0f7ee\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#5d737e\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: r,\n      uv: d,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: p,\n      smoothstep: f,\n      oneMinus: g\n    } = A, e = d(), h = u(s(\n      e.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), b = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      e.y\n    ), C = p(e.x.sub(h)), a = f(\n      0.6,\n      0,\n      C\n    ), l = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(e.y)\n    ), { correctedUV: y } = T(), k = B(0.8)(y), v = b.mul(a).mul(1).sub(k.mul(1)), w = ((i = r(0), m = r(0)) => i.add(m).sub(i.mul(m)))(l, v);\n    return r(\n      t(\n        l,\n        w,\n        a\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper6';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as B } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper7\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#df83b7\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#edd19f\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#f8b65d\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: e,\n      uv: m,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: f,\n      smoothstep: p,\n      oneMinus: g\n    } = A, r = m(), h = u(s(\n      r.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), b = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      r.y\n    ), C = f(r.x.sub(h)), d = p(\n      0.6,\n      0,\n      C\n    ), l = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(r.y)\n    ), { correctedUV: y } = T(), k = B(0.8)(y), v = b.mul(d).mul(1).sub(k.mul(1)), w = ((a = e(0), i = e(0)) => a.add(i).sub(a.mul(i)))(l, v);\n    return e(\n      t(\n        l,\n        w,\n        d\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper7';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n","import * as A from \"../../node_modules/.pnpm/three@0.172.0/node_modules/three/build/three.tsl.js\";\nimport { transformColor as n } from \"../../utilities/transformations.js\";\nimport { grain as B } from \"../../helpers/grain.js\";\nimport { getAspectCorrectedCoordinates as T } from \"../../utilities/uv.js\";\nconst U = {\n  name: \"Whisper8\",\n  collection: \"whisper\",\n  tags: [\"wave\", \"gradient\", \"soft\"],\n  props: {\n    colorA: {\n      type: String,\n      default: \"#f9ffa6\",\n      transform: n,\n      description: \"The primary color of the light.\"\n    },\n    colorB: {\n      type: String,\n      default: \"#4649ff\",\n      transform: n,\n      description: \"An accent color.\"\n    },\n    backgroundColor: {\n      type: String,\n      default: \"#ed8eab\",\n      transform: n,\n      description: \"The background color.\"\n    },\n    speed: {\n      type: Number,\n      default: 1,\n      description: \"The speed of the light waves.\"\n    }\n  },\n  fragmentNode: (o) => {\n    const {\n      vec4: e,\n      uv: d,\n      time: c,\n      sin: u,\n      cos: s,\n      mix: t,\n      abs: f,\n      smoothstep: p,\n      oneMinus: g\n    } = A, r = d(), h = u(s(\n      r.y.mul(Math.PI * 2).add(c.mul(o.speed.uniform).mul(0.2))\n    ).mul(0.3).mul(s(c.mul(0.3)))).add(0.5), b = t(\n      o.colorA.uniform,\n      o.colorB.uniform,\n      r.y\n    ), C = f(r.x.sub(h)), a = p(\n      0.6,\n      0,\n      C\n    ), l = t(\n      o.backgroundColor.uniform.mul(2),\n      o.backgroundColor.uniform.mul(0.5),\n      g(r.y)\n    ), { correctedUV: y } = T(), k = B(0.8)(y), v = b.mul(a).mul(1).sub(k.mul(1)), w = ((i = e(0), m = e(0)) => i.add(m).sub(i.mul(m)))(l, v);\n    return e(\n      t(\n        l,\n        w,\n        a\n      ),\n      1\n    );\n  }\n};\nexport {\n  U as componentDefinition,\n  U as default\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\r\nimport {\r\n    ombreRenderer,\r\n    type UniformsMap,\r\n    createUniformsMap\r\n} from '@ombre-ui/core';\r\n// @ts-ignore - replaced at build time\r\nimport { componentDefinition, type ComponentProps } from '@ombre-ui/core/whisper8';\r\n\r\n/**\r\n * Tells us the shape of the props we accept:\r\n * - partial overrides from the shader definition\r\n * - optional children\r\n * - optional ref for advanced usage in React 19\r\n */\r\ntype OmbreComponentProps = Partial<ComponentProps> & {\r\n    children?: React.ReactNode;\r\n    ref?: React.Ref<any>;\r\n};\r\n\r\n/**\r\n * Merges the default props and any explicit user props together into one object.\r\n */\r\nfunction computeEffectiveProps(\r\n    props: OmbreComponentProps,\r\n    defaultProps: Record<string, any>\r\n): Record<string, any> {\r\n    let baseProps = { ...defaultProps };\r\n\r\n    for (const [key, value] of Object.entries(props)) {\r\n        if (key !== 'children' && key !== 'ref' && value !== undefined) {\r\n            baseProps[key] = value;\r\n        }\r\n    }\r\n\r\n    return baseProps;\r\n}\r\n\r\n// Store default props safely to avoid errors in different React versions\r\nlet defaultProps: Record<string, any> = {};\r\ntry {\r\n    // Safely extract default values from shader definition\r\n    if (componentDefinition && componentDefinition.props) {\r\n        defaultProps = Object.entries(componentDefinition.props).reduce(\r\n            (acc, [key, config]) => {\r\n                if (config && typeof config === 'object' && 'default' in config) {\r\n                    acc[key] = (config as any).default;\r\n                }\r\n                return acc;\r\n            },\r\n            {} as Record<string, any>\r\n        );\r\n    }\r\n} catch (e) {\r\n    console.warn('Error extracting default props:', e);\r\n}\r\n\r\n/**\r\n * The main React wrapper component\r\n * This component is compatible with both React 18 and 19\r\n */\r\nexport const OmbreComponent: React.FC<OmbreComponentProps> = (props) => {\r\n    // Create a unique ID for this instance (used in createUniformsMap, if needed)\r\n    const instanceId = useMemo(() => {\r\n        return Math.random().toString(36).substring(7);\r\n    }, []);\r\n\r\n    // Compute final props, identical to the Vue version's `effectiveProps`\r\n    const effectiveProps = useMemo(() => {\r\n        return computeEffectiveProps(props, defaultProps);\r\n    }, [props]);\r\n\r\n    // References to the DOM elements\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // We'll store the renderer and uniforms in refs so we can mutate them\r\n    const rendererRef = useRef<ReturnType<typeof ombreRenderer> | null>(null);\r\n    const uniformsRef = useRef<UniformsMap | null>(null);\r\n\r\n    /**\r\n     * 1) Set up the renderer once, on mount.\r\n     *    In React's Strict Mode dev environment, this effect may be run in a\r\n     *    \"test\" mount/unmount cycle, but by default we only initialize once\r\n     *    (we do not re-run on prop changes).\r\n     */\r\n    useEffect(() => {\r\n        // Skip initialization if elements aren't ready\r\n        if (!canvasRef.current || !containerRef.current) return;\r\n\r\n        // Skip if component definition isn't properly available\r\n        if (!componentDefinition || typeof componentDefinition.fragmentNode !== 'function') {\r\n            console.warn('Component definition not properly initialized');\r\n            return;\r\n        }\r\n\r\n        // Create a new renderer and store it\r\n        const renderer = ombreRenderer();\r\n        rendererRef.current = renderer;\r\n\r\n        try {\r\n            // Create the initial uniforms map from effective props\r\n            uniformsRef.current = createUniformsMap(\r\n                componentDefinition,\r\n                effectiveProps,\r\n                instanceId\r\n            );\r\n\r\n            // Create the fragment node using the uniforms\r\n            const fragmentNode = componentDefinition.fragmentNode(\r\n                uniformsRef.current\r\n            );\r\n\r\n            // Now initialize the renderer, hooking up the canvas, container, etc.\r\n            renderer\r\n                .initialize({\r\n                    canvas: canvasRef.current,\r\n                    container: containerRef.current,\r\n                    fragmentNode\r\n                })\r\n                .catch((error) => {\r\n                    console.error('Failed to initialize ombreRenderer:', error);\r\n                });\r\n        } catch (error) {\r\n            console.error('Error during renderer setup:', error);\r\n        }\r\n\r\n        // Cleanup on unmount\r\n        return () => {\r\n            if (rendererRef.current) {\r\n                try {\r\n                    rendererRef.current.cleanup();\r\n                } catch (error) {\r\n                    console.warn('Cleanup error:', error);\r\n                }\r\n                rendererRef.current = null;\r\n            }\r\n            uniformsRef.current = null;\r\n        };\r\n        // Empty dependency array => run only on first mount/unmount\r\n    }, []);\r\n\r\n    /**\r\n     * 2) Whenever effectiveProps changes, we update the uniforms in place\r\n     *    (rather than re-initializing the renderer).\r\n     *    This is equivalent to the Vue watchers for each prop that sets\r\n     *    the corresponding uniform value.\r\n     */\r\n    useEffect(() => {\r\n        if (!uniformsRef.current) return;\r\n\r\n        try {\r\n            // Update each uniform with the new value from effectiveProps\r\n            for (const [propName, uniformData] of Object.entries(uniformsRef.current)) {\r\n                if (!uniformData || typeof uniformData !== 'object') continue;\r\n\r\n                const { uniform, transform } = uniformData;\r\n\r\n                if (uniform?.value !== undefined && propName in effectiveProps) {\r\n                    const newValue = effectiveProps[propName];\r\n                    uniform.value = transform ? transform(newValue) : newValue;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.error('Error updating uniforms:', error);\r\n        }\r\n    }, [effectiveProps]);\r\n\r\n    // For React 18 compatibility, explicitly handle the ref if provided\r\n    // but don't use forwardRef directly as it can cause issues\r\n    if (props.ref && typeof props.ref === 'function' && canvasRef.current) {\r\n        try {\r\n            // Attempt to call the ref function with the canvas element\r\n            props.ref(canvasRef.current);\r\n        } catch (e) {\r\n            // Silently ignore ref errors to prevent breaking in React 18\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div\r\n            ref={containerRef}\r\n            style={{\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                width: '100%',\r\n                height: '100%',\r\n                overflow: 'clip'\r\n            }}\r\n        >\r\n            <canvas\r\n                data-renderer=\"ombre\"\r\n                ref={canvasRef}\r\n                style={{\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    left: 0,\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    display: 'block'\r\n                }}\r\n            />\r\n            {props.children}\r\n        </div>\r\n    );\r\n};\r\n\r\n// Simple export without any version detection - using the most compatible approach\r\nexport default OmbreComponent;\r\n"],"names":["ze","Ws","qs","Xs","An","En","kn","In","Xn","Hn","Qn","Kn","tr","ir","fr","Zr","Jr","Ae","et","ie","ee","Fi","ma","ba","Sa","_a","za","si$1","t","i","e","s","n","r","V","se","ti","ei","mt","p","T","Ji","ke","Ie","ii","De","Pe","Le","Oe","Ne","Ve","We","Ue","qe","je","Ge","Xe","He","Ye","h","a","o","l","c","u","d","m","q","z","Aa","C$b","C","xt$2","xt","y","x","g","w","b","M","S","F","_","Ti","Ze","Zi","re","ae","Je","ft","Yt","Q","Dt","$e$2","Qe","Fe$1","Ci","$e","Ke","Z","si","Fe","j$2","j","A","ni$2","f$1","f","he","Bi","ni","ri$2","K","oi","Zt","li","Pt","Lt","Ot","Mt","wt","Tt","vi","ci","ot","ri","Ct","es","Jt","Ri","$i$1","lt","Ei","ui","bt","ki","pi","Ii","ss$2","O$f","O","Nt","ns","rs","X","St","di","R","E","k","nt","I","rt","at","kt","Ft","gt","L","N","G","tt","oe","le","ht$1","ht","as$2","hs","ce","Vt","ct","mi","$t","os","ls","ue","pe","de","me","cs","Wt","Di","P","as","it","ut","Pi","pt","Ut","qt","fe","Li","Oi","Ni","Vi","Wi","Ui","st$9","st","Te","_t","fi","qi","B$2","W","B","us","$","v","xi","yt$2","yt","ys","J","ji","jt","Y","Qt","D","ai","fs","ms","Rt","$i","ye","Bt","ss","gi","xe","Mi","wi","bi","Gi","Si","ge","_i","ps","zi","gs","As$1","U","ve$2","ve","Xi","Fs","Ts","Ht$2","Be","As","Cm","Em","Fn","wl","aa","Ml","Vr","wm","Pu","Bl","Fl","Pl","Ce","$n","Ll","Dl","Il","Fo","Mm","Vl","Uo","Po","xs","Bm","zc","$c","Gl","Fm","Um","Pm","Dm","ua","Qs","Vs","Ol","Du","kl","qn","Do","Iu","Im","Io","Lm","Vm","Gm","Om","km","zm","$m","Wm","Hm","zl","ca","la","da","Lu","qm","Un","$l","Nn","Xm","Pn","ha","H","Wl","Hl","ql","Xl","Kl","nn","pa","Yl","jl","Ql","Km","Ym","Zl","Jl","jm","ed","td","fa","sd","ga","nd","Dn","Lo","Gr","Ln","ya","Or","Ht","bn","Vn","kr","Gn","Er","Vo","Qm","Sn","zr","xa","Ta","Na","Zm","rd","Jm","id","_e","od","ad","ud","cd","ld","dd","hd","pd","fd","gd","md","yd","xd","Td","_d","Nd","Gt","sn","bd","ey","$r","ty","va","Sd","vd","Ad","Zs","Et","Ra","Rd","Cd","Ed","Ca","On","wd","Md","Ea","wa","Bd","Fd","Ma","Ud","Pd","sy","Dd","Ba","Id","Ld","Vd","hi","Fa","Gd","Od","kd","zd","$d","Wd","Ua","Pa","Hd","qd","Xd","Kd","ny","ry","iy","Me","Yd","jd","Qd","Zd","wr","Jd","oy","eh","th","sh","Da","Bu","nh","Yn","rh","ih","Ia","ay","uy","oh","ly","ah","dy","ch","$s","uh","hy","Ig","Lg","Nm","jn","lh","Is","Wr","Go","py","dh","fy","vn","gy","hh","ph","fh","gh","Mr","mh","my","yy","wn","yh","xy","xh","Ty","_y","Th","Ny","Xt","_s","by","Sy","vy","_h","Ay","Ry","Nh","Cy","Ey","wy","My","By","Fy","bh","Uy","rn","Sh","Py","Dy","Hr","It","La","Iy","vh","Ah","Va","yi","Gs","Rh","Ch","Eh","wh","Mh","Bh","Ly","Ks","Ys","Js","Zn","Ga","Vy","Fh","Gy","Oy","te","Oo","ky","Jn","er","Uh","Oa","zy","$y","Wy","Ph","Hy","Dh","qy","Ih","Xy","Lh","Ky","Yy","Fu","Vg","ko","jy","Qy","Zy","Vh","Vu","Ps","Gh","Oh","kh","zh","ka","$h","zo","Wh","Br","Hh","qh","Xh","Kh","Yh","jh","Qh","Zh","Jh","ep","tp","sp","np","rp","ip","op","ap","up","cp","lp","dp","Jy","hp","ex","pp","fp","$a","gp","sr","tx","sx","nx","mp","yp","Gg","oa","rx","ix","xp","ox","Tp","Gu","_p","ax","Np","ux","cx","bp","lx","Ou","dx","bm","hx","Sp","px","on","fx","vp","gx","un","cn","Se","nr","vt","Wa","Ap","Rp","mx","yx","xx","Tx","ln","bl","ds","_x","Ha","Nx","qa","Ep","Cp","Xa","bx","Ka","Sx","Ya","qr","vx","Ax","Rx","Cx","Ex","wx","Mx","ku","zu","Bx","bu","zs","Ix","Lx","wp","Vx","kx","ja","en","Dp","Za","Ip","eT","Lp","tT","sT","$o","Ja","Gp","Op","Wo","kp","Ho","Hu","qu","Xu","Ku","Yu","zp","ec","qo","ur","cr","lr","tc","yT","sc","xT","TT","_T","NT","Wp","Hp","Xo","qp","Xr","nc","bT","ST","AT","RT","vT","vl","eu","IT","Kp","kT","tu","XT","KT","YT","Zp","__","N_","Fr","Jp","b_","ef","S_","tf","v_","Ko","A_","R_","C_","E_","w_","M_","B_","Ns","sf","F_","U_","P_","D_","I_","L_","V_","G_","O_","k_","z_","$_","W_","H_","q_","nf","X_","Rs","Oc","Cs","dn","dr","hn","hr","pn","pr","Kr","K_","nu","Y_","em","tm","j_","Al","Q_","El","Uu","Z_","ru","js","J_","eN","rf","tN","Ds","sN","nN","rN","iN","Cr","oN","aN","uN","cN","lN","dN","hN","pN","fN","gN","fn","bg","ag","of","Yo","af","mN","uf","yN","xN","TN","cc","_N","lc","cf","NN","lf","df","hf","pf","bN","SN","vN","AN","RN","CN","iu","EN","wN","MN","BN","FN","UN","PN","ff","dc","DN","IN","LN","VN","GN","gf","mf","yf","ON","xf","kN","zN","$N","Tf","_f","be","WN","HN","qN","Nf","bf","XN","KN","YN","Ur","Sf","jN","Pr","QN","ZN","vf","ou","au","zn","JN","eb","ts","tb","sb","nb","Ai","rb","ib","ob","ab","ub","uu","cb","lb","db","hb","pb","fb","Ee","gb","zt","mb","yb","xb","Tb","_b","Nb","bb","Sb","rr","cu","Af","lu","Rf","du","vb","Ab","Hi","hu","Rb","Cb","pu","Eb","wb","Mb","Bb","Fb","Ub","Pb","Db","hc","Ib","Lb","Vb","Cf","Ef","wf","Mf","Gb","Ob","kb","gr","Bf","ia","or","Bn","Ff","fu","Uf","Yb","Cn","Yr","jb","Qb","Pf","Zb","Jb","Df","eS","tS","Re","sS","nS","rS","iS","oS","If","aS","Lf","Vf","uS","cS","lS","dS","hS","pS","fS","gS","mS","gu","yS","xS","mu","TS","_S","NS","bS","SS","vS","AS","RS","CS","Gf","jr","Of","ES","wS","MS","BS","an","FS","US","PS","DS","IS","LS","VS","GS","OS","kS","zS","$S","kf","zf","WS","HS","$f","qS","XS","KS","YS","jS","QS","ZS","JS","ev","tv","sv","nv","rv","iv","ov","av","uv","Wf","QA","dt","At","Kt","to","oo","eo","no","so","ro","co","ao","io","lo","mo","po","uo","go","ho","fo","xo","bo","wo","vo","So","To","_o","yo","Mo","Co","No","Ro","Bo","Ao","jo","Eo","Zo","Jo","Qo","ne","we","tn","mn","gn","xn","Tn","_n","yn","Mn","Rn","Wn","is","bs","ws","vs","Ss","Ms","Bs","Ls","ks","Os","Us","Es","Hs","ar","mr","xr","br","vr","Sr","Tr","_r","yr","Dr","Ir","Nr","Rr","Lr","Ar","Qr","oc","rc","ac","ic","mc","pc","uc","gc","fc","xc","bc","wc","vc","Sc","Tc","_c","Vc","yc","Dc","Mc","Fc","Cc","Ic","Nc","Pc","Rc","Bc","Lc","kc","Ac","Gc","Wc","jc","Uc","qc","Ec","Zc","Xc","Yc","Hc","Jc","Kc","Qc","ta","ea","na","sa","ra","Qa","computeEffectiveProps","props","defaultProps","baseProps","key","value","componentDefinition","acc","config","OmbreComponent","instanceId","useMemo","effectiveProps","containerRef","useRef","canvasRef","rendererRef","uniformsRef","useEffect","renderer","ombreRenderer","createUniformsMap","fragmentNode","error","propName","uniformData","uniform","transform","newValue","jsxs","jsx"],"mappings":"wLAAA;AAAA;AAAA;AAAA;AAAA,GAKK,MAACA,GAAK,MAA+CC,GAAK,EAAWC,GAAK,EAAmBC,GAAK,EAA2RC,GAAK,EAAmDC,GAAK,IAAKC,GAAK,IAAKC,GAAK,IAA0HC,GAAK,KAAMC,GAAK,KAAkDC,GAAK,KAAMC,GAAK,KAAMC,GAAK,KAAMC,GAAK,KAAsJC,GAAK,KAA+YC,GAAK,EAAGC,GAAK,EAAGC,GAAK,GAAIC,GAAK,OAAQC,GAAK,cAAeC,GAAK,SAAUC,GAAK,OAAyLC,GAAK,IAAiEC,GAAK,MAAOC,GAAK,MAAOC,GAAK,IAAKC,GAAK,KACnlD,IAAAC,GAAA,KAAS,CACP,iBAAiBC,EAAGC,EAAG,CACrB,KAAK,aAAe,SAAW,KAAK,WAAa,CAAA,GACjD,MAAMC,EAAI,KAAK,WACfA,EAAEF,CAAC,IAAM,SAAWE,EAAEF,CAAC,EAAI,CAAE,GAAGE,EAAEF,CAAC,EAAE,QAAQC,CAAC,IAAM,IAAMC,EAAEF,CAAC,EAAE,KAAKC,CAAC,CACzE,CACE,iBAAiBD,EAAGC,EAAG,CACrB,GAAI,KAAK,aAAe,OAAQ,MAAO,GACvC,MAAMC,EAAI,KAAK,WACf,OAAOA,EAAEF,CAAC,IAAM,QAAUE,EAAEF,CAAC,EAAE,QAAQC,CAAC,IAAM,EAClD,CACE,oBAAoBD,EAAGC,EAAG,CACxB,GAAI,KAAK,aAAe,OAAQ,OAChC,MAAME,EAAI,KAAK,WAAWH,CAAC,EAC3B,GAAIG,IAAM,OAAQ,CAChB,MAAMC,EAAID,EAAE,QAAQF,CAAC,EACrBG,IAAM,IAAMD,EAAE,OAAOC,EAAG,CAAC,CAC/B,CACA,CACE,cAAcJ,EAAG,CACf,GAAI,KAAK,aAAe,OAAQ,OAChC,MAAME,EAAI,KAAK,WAAWF,EAAE,IAAI,EAChC,GAAIE,IAAM,OAAQ,CAChBF,EAAE,OAAS,KACX,MAAMG,EAAID,EAAE,MAAM,CAAC,EACnB,QAASE,EAAI,EAAGC,EAAIF,EAAE,OAAQC,EAAIC,EAAGD,IACnCD,EAAEC,CAAC,EAAE,KAAK,KAAMJ,CAAC,EACnBA,EAAE,OAAS,IACjB,CACA,CACA,EACA,MAAMM,GAAI,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM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","x_google_ignoreList":[0,1,2]}